- use toggle tile for all toggling entities (transient, switch, door)
- get rod of hard coded sprites (exception: particle class, to be
  fixed later)
- changed switch sprite (rect instead of elipse)
This commit is contained in:
2024-03-31 20:16:15 +02:00
parent f6f2172f11
commit faf0fd99c2
24 changed files with 334 additions and 339 deletions

View File

@@ -126,7 +126,7 @@ func NewGrid(world *ecs.World,
case tile.Transient:
entity := transmapper.New()
pos, render, transient = transmapper.Get(entity)
transient.Sprites = tile.TileNames
transient.Wall = tile.ToggleSprite
case tile.Destroyable:
entity := destructiblemapper.New()
@@ -139,16 +139,16 @@ func NewGrid(world *ecs.World,
case tile.Switch:
entity := switchmapper.New()
pos, render, _, switcher = switchmapper.Get(entity)
switcher.CloseSprite = tile.Tiles[0]
switcher.OpenSprite = tile.Tiles[1]
switcher.CloseSprite = tile.Sprite
switcher.OpenSprite = tile.ToggleSprite
switcher.Ref = tile.Ref
switches = append(switches, entity)
case tile.Door:
entity := doormapper.New()
pos, render, _, door = doormapper.Get(entity)
door.CloseSprite = tile.Tiles[0]
door.OpenSprite = tile.Tiles[1]
door.CloseSprite = tile.Sprite
door.OpenSprite = tile.ToggleSprite
door.Id = tile.Id
doors = append(doors, entity)
@@ -156,11 +156,8 @@ func NewGrid(world *ecs.World,
log.Fatalln("unsupported tile type encountered")
}
// FIXME: this image is never being used because it is
// being overwritten in game/levels.go:LevelToSlice(). The
// image is taken from the LDTK map, not from the Tile{}
// definition anymore
render.Image = tile.Sprite
render.Pos = pos
default:
// empty cell, this is where the player[s] move. No
@@ -227,17 +224,5 @@ func (grid *Grid) SetFloorTile(point image.Point) {
}
func (grid *Grid) SetSolidTile(tile *assets.Tile, point image.Point) {
solidmapper := generic.NewMap4[
components.Position,
components.Renderable,
components.Tilish,
components.Solid](grid.World)
grid.Map[point] = tile
entity := solidmapper.New()
pos, render, _, _ := solidmapper.Get(entity)
render.Image = tile.Sprite
pos.Update(point.X*grid.Tilesize, point.Y*grid.Tilesize, grid.Tilesize)
}