mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-26 03:38:55 +01:00
examples/isometric: Refactoring
This commit is contained in:
parent
b78aef480e
commit
84f2571ee1
@ -102,6 +102,7 @@ func (g *Game) Update() error {
|
|||||||
if ebiten.IsKeyPressed(ebiten.KeyUp) || ebiten.IsKeyPressed(ebiten.KeyW) {
|
if ebiten.IsKeyPressed(ebiten.KeyUp) || ebiten.IsKeyPressed(ebiten.KeyW) {
|
||||||
g.camY += pan
|
g.camY += pan
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pan camera via mouse.
|
// Pan camera via mouse.
|
||||||
if ebiten.IsMouseButtonPressed(ebiten.MouseButtonRight) {
|
if ebiten.IsMouseButtonPressed(ebiten.MouseButtonRight) {
|
||||||
if g.mousePanX == math.MinInt32 && g.mousePanY == math.MinInt32 {
|
if g.mousePanX == math.MinInt32 && g.mousePanY == math.MinInt32 {
|
||||||
@ -118,13 +119,13 @@ func (g *Game) Update() error {
|
|||||||
// Clamp camera position.
|
// Clamp camera position.
|
||||||
worldWidth := float64(g.currentLevel.w * g.currentLevel.tileSize / 2)
|
worldWidth := float64(g.currentLevel.w * g.currentLevel.tileSize / 2)
|
||||||
worldHeight := float64(g.currentLevel.h * g.currentLevel.tileSize / 2)
|
worldHeight := float64(g.currentLevel.h * g.currentLevel.tileSize / 2)
|
||||||
if g.camX < worldWidth*-1 {
|
if g.camX < -worldWidth {
|
||||||
g.camX = worldWidth * -1
|
g.camX = -worldWidth
|
||||||
} else if g.camX > worldWidth {
|
} else if g.camX > worldWidth {
|
||||||
g.camX = worldWidth
|
g.camX = worldWidth
|
||||||
}
|
}
|
||||||
if g.camY < worldHeight*-1 {
|
if g.camY < -worldHeight {
|
||||||
g.camY = worldHeight * -1
|
g.camY = -worldHeight
|
||||||
} else if g.camY > 0 {
|
} else if g.camY > 0 {
|
||||||
g.camY = 0
|
g.camY = 0
|
||||||
}
|
}
|
||||||
@ -183,7 +184,6 @@ func (g *Game) renderLevel(screen *ebiten.Image) {
|
|||||||
padding := float64(g.currentLevel.tileSize) * g.camScale
|
padding := float64(g.currentLevel.tileSize) * g.camScale
|
||||||
cx, cy := float64(g.w/2), float64(g.h/2)
|
cx, cy := float64(g.w/2), float64(g.h/2)
|
||||||
|
|
||||||
var t *Tile
|
|
||||||
for y := 0; y < g.currentLevel.h; y++ {
|
for y := 0; y < g.currentLevel.h; y++ {
|
||||||
for x := 0; x < g.currentLevel.w; x++ {
|
for x := 0; x < g.currentLevel.w; x++ {
|
||||||
xi, yi := g.cartesianToIso(float64(x), float64(y))
|
xi, yi := g.cartesianToIso(float64(x), float64(y))
|
||||||
@ -194,7 +194,7 @@ func (g *Game) renderLevel(screen *ebiten.Image) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
t = g.currentLevel.tiles[y][x]
|
t := g.currentLevel.tiles[y][x]
|
||||||
if t == nil {
|
if t == nil {
|
||||||
continue // No tile at this position.
|
continue // No tile at this position.
|
||||||
}
|
}
|
||||||
|
@ -32,14 +32,6 @@ func (t *Tile) AddSprite(s *ebiten.Image) {
|
|||||||
t.sprites = append(t.sprites, s)
|
t.sprites = append(t.sprites, s)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ClearSprites removes all sprites from the Tile.
|
|
||||||
func (t *Tile) ClearSprites() {
|
|
||||||
for i := range t.sprites {
|
|
||||||
t.sprites[i] = nil
|
|
||||||
}
|
|
||||||
t.sprites = t.sprites[:0]
|
|
||||||
}
|
|
||||||
|
|
||||||
// Draw draws the Tile on the screen using the provided options.
|
// Draw draws the Tile on the screen using the provided options.
|
||||||
func (t *Tile) Draw(screen *ebiten.Image, options *ebiten.DrawImageOptions) {
|
func (t *Tile) Draw(screen *ebiten.Image, options *ebiten.DrawImageOptions) {
|
||||||
for _, s := range t.sprites {
|
for _, s := range t.sprites {
|
||||||
|
Loading…
Reference in New Issue
Block a user