Variable-ize some values

master
kts of kettek 2022-04-19 17:24:47 -07:00
parent 07c133419e
commit 5d9a7ba0d9
1 changed files with 23 additions and 11 deletions

View File

@ -14,15 +14,27 @@ type Game struct {
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)
}
}