fixed higher speed collisions, removed Speed comp, put into Velocity

This commit is contained in:
2024-02-26 12:56:12 +01:00
parent 2e3acf4ec4
commit ffaa5e6129
13 changed files with 525 additions and 37 deletions

View File

@@ -14,7 +14,7 @@ func (grid *Grid) GetSolidNeighborPosition(
return false, nil
}
// set to true, if we are already on the last tile in the current
// set to true if we are already on the last tile in the current
// direction, i.e. on the edge of the grid
edge := true
neighborpos := position.Point()
@@ -44,6 +44,9 @@ func (grid *Grid) GetSolidNeighborPosition(
newpos := components.NewPosition(neighborpos, grid.Tilesize)
// slog.Debug("SolidNeighbor?", "player", position.Point(),
// "neighbor", neighborpos, "edge", edge, "neighbor-solid",
// grid.Map[neighborpos].Solid, "newpos", newpos.Point())
if !edge && grid.Map[neighborpos].Solid {
return true, newpos
}

View File

@@ -29,11 +29,10 @@ func NewGrid(world *ecs.World,
// we use this to turn our tiles into iterable entities, used for
// collision detection, transformation and other things
playermapper := generic.NewMap5[
playermapper := generic.NewMap4[
components.Position,
components.Velocity,
components.Renderable,
components.Speed,
components.Player](world)
solidmapper := generic.NewMap4[
@@ -49,11 +48,10 @@ func NewGrid(world *ecs.World,
components.Renderable,
components.Collectible](world)
obsmapper := generic.NewMap5[
obsmapper := generic.NewMap4[
components.Position,
components.Velocity,
components.Renderable,
components.Speed,
components.Obstacle](world)
transmapper := generic.NewMap3[
@@ -69,7 +67,6 @@ func NewGrid(world *ecs.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
@@ -86,9 +83,9 @@ func NewGrid(world *ecs.World,
pos, render, _, _ = solidmapper.Get(entity)
case tile.Player:
entity := playermapper.New()
pos, _, render, speed, player = playermapper.Get(entity)
pos, vel, render, player = playermapper.Get(entity)
playerobserver.AddEntity(entity)
speed.Value = config.PLAYERSPEED
vel.Speed = config.PLAYERSPEED
player.IsPrimary = tile.IsPrimary
player.Sprites = tile.Tiles
case tile.Collectible:
@@ -96,10 +93,10 @@ func NewGrid(world *ecs.World,
pos, render, _ = colmapper.Get(entity)
case tile.Obstacle:
entity := obsmapper.New()
pos, vel, render, speed, _ = obsmapper.Get(entity)
pos, vel, render, _ = obsmapper.Get(entity)
vel.Direction = tile.Direction
vel.PointingAt = tile.Direction
speed.Value = config.PLAYERSPEED
vel.Speed = config.PLAYERSPEED
obstacleobserver.AddEntity(entity)
case tile.Transient:
entity := transmapper.New()