Variable-ize some values
parent
07c133419e
commit
5d9a7ba0d9
|
@ -14,15 +14,27 @@ type Game struct {
|
||||||
Images map[string]*ebiten.Image
|
Images map[string]*ebiten.Image
|
||||||
Map Map
|
Map Map
|
||||||
cTiles [][2]int
|
cTiles [][2]int
|
||||||
|
stepRate int
|
||||||
tickDelay int
|
tickDelay int
|
||||||
|
tileWidth int
|
||||||
|
tileHeight int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Game) Init() {
|
func (g *Game) Init() {
|
||||||
|
rand.Seed(time.Now().UnixMilli())
|
||||||
|
|
||||||
g.Images = make(map[string]*ebiten.Image)
|
g.Images = make(map[string]*ebiten.Image)
|
||||||
|
|
||||||
|
g.stepRate = 0
|
||||||
|
|
||||||
data.Init()
|
data.Init()
|
||||||
|
|
||||||
for name, img := range data.Images {
|
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)
|
g.Images[name] = ebiten.NewImageFromImage(img)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,8 +44,9 @@ func (g *Game) Init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Game) ResetMap() {
|
func (g *Game) ResetMap() {
|
||||||
g.Map.Size(24, 24)
|
// Size map according to 1/2 ebiten window.
|
||||||
rand.Seed(time.Now().Unix())
|
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)}}
|
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.
|
// Update updates the game state.
|
||||||
func (g *Game) Update() error {
|
func (g *Game) Update() error {
|
||||||
if ebiten.IsKeyPressed(ebiten.KeyR) {
|
if ebiten.IsKeyPressed(ebiten.KeyR) && len(g.cTiles) == 0 {
|
||||||
g.ResetMap()
|
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.cTiles = g.Map.Iterate(g.cTiles, g.iterFunc)
|
||||||
g.tickDelay = 0
|
g.tickDelay = 0
|
||||||
} else {
|
|
||||||
g.tickDelay++
|
|
||||||
}
|
}
|
||||||
|
g.tickDelay++
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,7 +95,7 @@ func (g *Game) Draw(screen *ebiten.Image) {
|
||||||
for y := range g.Map.tiles[x] {
|
for y := range g.Map.tiles[x] {
|
||||||
if img, ok := g.Images[g.Map.tiles[x][y].tile]; ok {
|
if img, ok := g.Images[g.Map.tiles[x][y].tile]; ok {
|
||||||
op := &ebiten.DrawImageOptions{}
|
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)
|
screen.DrawImage(img, op)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue