fixed hiddendoor tiles, now uses destruct shader no spriteset

This commit is contained in:
2024-03-24 19:36:00 +01:00
parent f8c09fda76
commit 5b7c88a1a9
116 changed files with 843 additions and 561 deletions

View File

@@ -23,6 +23,7 @@ type DestroyableSystem struct {
components.Renderable,
components.Tilish,
components.Solid]
Cellsize int
}
type DoorToRemove struct {
@@ -30,7 +31,9 @@ type DoorToRemove struct {
Position *components.Position
}
func NewDestroyableSystem(world *ecs.World, gridcontainer *grid.GridContainer) System {
func NewDestroyableSystem(world *ecs.World, gridcontainer *grid.GridContainer,
cellsize int) System {
solidmapper := generic.NewMap4[
components.Position,
components.Renderable,
@@ -42,6 +45,7 @@ func NewDestroyableSystem(world *ecs.World, gridcontainer *grid.GridContainer) S
World: world,
GridContainer: gridcontainer,
SolidMapper: solidmapper,
Cellsize: cellsize,
}
return system
@@ -81,7 +85,7 @@ func (system *DestroyableSystem) Update() error {
} else {
slog.Debug("activating destroyable", "doorpos", doorposition)
door.Activated = true
renderable.Image = door.GetNext()
renderable.Damaged = 1
}
}
}
@@ -99,14 +103,24 @@ func (system *DestroyableSystem) Update() error {
func (system *DestroyableSystem) Draw(screen *ebiten.Image) {
// write transients (these are no tiles!)
op := &ebiten.DrawImageOptions{}
op := &ebiten.DrawRectShaderOptions{}
query := system.Selector.Query(system.World)
for query.Next() {
pos, render, _ := query.Get()
op.GeoM.Reset()
op.Uniforms = map[string]any{
"Damaged": render.Damaged,
}
op.Images[0] = render.Image
op.Images[1] = render.DamageImage
op.GeoM.Translate(float64(pos.X), float64(pos.Y))
screen.DrawImage(render.Image, op)
screen.DrawRectShader(system.Cellsize, system.Cellsize, render.Shader, op)
}
}