added hidden doors/destroyable walls, fixed game reloading (tile clone)
This commit is contained in:
20
grid/grid.go
20
grid/grid.go
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user