From 5d9a7ba0d9534e92bba36549251a1d92502cb958 Mon Sep 17 00:00:00 2001 From: kts of kettek Date: Tue, 19 Apr 2022 17:24:47 -0700 Subject: [PATCH] Variable-ize some values --- internal/gwfc/Game.go | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/internal/gwfc/Game.go b/internal/gwfc/Game.go index b39a294..697f26d 100644 --- a/internal/gwfc/Game.go +++ b/internal/gwfc/Game.go @@ -11,18 +11,30 @@ import ( // Game is our game structure. type Game struct { - Images map[string]*ebiten.Image - Map Map - cTiles [][2]int - tickDelay int + Images map[string]*ebiten.Image + Map Map + cTiles [][2]int + stepRate int + tickDelay int + tileWidth int + tileHeight int } func (g *Game) Init() { + rand.Seed(time.Now().UnixMilli()) + g.Images = make(map[string]*ebiten.Image) + g.stepRate = 0 + data.Init() for name, img := range data.Images { + // Assume tile size is same as first data Image. + if g.tileWidth == 0 || g.tileHeight == 0 { + g.tileWidth = img.Bounds().Dx() + g.tileHeight = img.Bounds().Dy() + } g.Images[name] = ebiten.NewImageFromImage(img) } @@ -32,8 +44,9 @@ func (g *Game) Init() { } func (g *Game) ResetMap() { - g.Map.Size(24, 24) - rand.Seed(time.Now().Unix()) + // Size map according to 1/2 ebiten window. + w, h := ebiten.WindowSize() + g.Map.Size(w/2/g.tileWidth, h/2/g.tileHeight) g.cTiles = [][2]int{{rand.Intn(g.Map.w), rand.Intn(g.Map.h)}} } @@ -64,15 +77,14 @@ func (g *Game) iterFunc(c [2]int, t *Tile) { // Update updates the game state. func (g *Game) Update() error { - if ebiten.IsKeyPressed(ebiten.KeyR) { + if ebiten.IsKeyPressed(ebiten.KeyR) && len(g.cTiles) == 0 { g.ResetMap() } - if g.tickDelay > 2 && len(g.cTiles) > 0 { + if g.tickDelay > g.stepRate && len(g.cTiles) > 0 { g.cTiles = g.Map.Iterate(g.cTiles, g.iterFunc) g.tickDelay = 0 - } else { - g.tickDelay++ } + g.tickDelay++ return nil } @@ -83,7 +95,7 @@ func (g *Game) Draw(screen *ebiten.Image) { for y := range g.Map.tiles[x] { if img, ok := g.Images[g.Map.tiles[x][y].tile]; ok { op := &ebiten.DrawImageOptions{} - op.GeoM.Translate(float64(x*8), float64(y*8)) + op.GeoM.Translate(float64(x*g.tileWidth), float64(y*g.tileHeight)) screen.DrawImage(img, op) } }