added hidden doors/destroyable walls, fixed game reloading (tile clone)

This commit is contained in:
2024-02-25 14:05:44 +01:00
parent ab07bc23e3
commit b0a8060d5b
15 changed files with 271 additions and 39 deletions

View File

@@ -61,12 +61,18 @@ func NewGrid(world *ecs.World,
components.Renderable,
components.Transient](world)
doormapper := generic.NewMap3[
components.Position,
components.Renderable,
components.Destroyable](world)
var pos *components.Position
var vel *components.Velocity
var render *components.Renderable
var speed *components.Speed
var transient *components.Transient
var player *components.Player
var destroyable *components.Destroyable
playerobserver := observers.GetPlayerObserver(world)
obstacleobserver := observers.GetObstacleObserver(world)
@@ -99,6 +105,10 @@ func NewGrid(world *ecs.World,
entity := transmapper.New()
pos, render, transient = transmapper.Get(entity)
transient.Sprites = tile.TileNames
case tile.Destroyable:
entity := doormapper.New()
pos, render, destroyable = doormapper.Get(entity)
destroyable.Sprites = tile.Tiles
default:
log.Fatalln("unsupported tile type encountered")
}
@@ -143,7 +153,15 @@ func (grid *Grid) GetTile(
return tile
}
func (grid *Grid) SetTile(tile *assets.Tile, point image.Point) {
func (grid *Grid) RemoveTile(point image.Point) {
delete(grid.Map, point)
}
func (grid *Grid) SetFloorTile(point image.Point) {
grid.Map[point] = assets.Tiles[' ']
}
func (grid *Grid) SetSolidTile(tile *assets.Tile, point image.Point) {
solidmapper := generic.NewMap4[
components.Position,
components.Renderable,