Update tileset and game log for improved asset management and debugging

- Modified tileset configuration to include multiple tile images with updated dimensions.
- Enhanced game log to provide detailed startup information and entity loading for room1.
- Updated binary file for the game executable.
added climebol laders
This commit is contained in:
2026-04-26 12:13:55 +02:00
parent a6c8044e4a
commit ef550044ad
15 changed files with 2599 additions and 200354 deletions

View File

@@ -30,6 +30,7 @@ type Player struct {
// Sprites
SpriteRun *ebiten.Image
SpriteJump *ebiten.Image
SpriteIdle *ebiten.Image
SpriteTop *ebiten.Image
AnimationFrame int
@@ -61,16 +62,21 @@ func NewPlayScene() *PlayScene {
if pIdle == nil {
pIdle = pRun
}
pJump, _, _ := ebitenutil.NewImageFromFile("assets/images/Warrior_1/Jump.png")
if pJump == nil {
pJump = pRun
}
pTop := ebiten.NewImage(96, 96)
pTop.Fill(color.RGBA{255, 255, 0, 255})
player := &Player{
Pos: mgl64.Vec3{50.0 * entities.TileSize, 6.0 * entities.TileSize, 50.0 * entities.TileSize},
Width: 96,
Height: 96,
Width: 32,
Height: 32,
SpriteRun: pRun,
SpriteIdle: pIdle,
SpriteJump: pJump,
SpriteTop: pTop,
FacingRight: true,
}
@@ -86,36 +92,85 @@ func NewPlayScene() *PlayScene {
func (s *PlayScene) Update() error {
p := s.player
currentMoveSpeed := MoveSpeed
if ebiten.IsKeyPressed(ebiten.KeyControl) {
currentMoveSpeed = MoveSpeed * 1.8 // Lite snabbare när man springer
}
p.Vel[0] = 0
p.Vel[2] = 0
isMoving := false
if ebiten.IsKeyPressed(ebiten.KeyLeft) || ebiten.IsKeyPressed(ebiten.KeyA) {
p.Vel[0] = -MoveSpeed
p.FacingRight = false
isMoving = true
}
if ebiten.IsKeyPressed(ebiten.KeyRight) || ebiten.IsKeyPressed(ebiten.KeyD) {
p.Vel[0] = MoveSpeed
p.FacingRight = true
isMoving = true
}
if ebiten.IsKeyPressed(ebiten.KeyUp) || ebiten.IsKeyPressed(ebiten.KeyW) {
p.Vel[2] = -MoveSpeed
isMoving = true
}
if ebiten.IsKeyPressed(ebiten.KeyDown) || ebiten.IsKeyPressed(ebiten.KeyS) {
p.Vel[2] = MoveSpeed
isMoving = true
// Kolla om spelaren är i ett klättringsbart objekt
currentGridX := int((p.Pos[0] + p.Width/2) / entities.TileSize)
currentGridY := int((p.Pos[1] + p.Height/2) / entities.TileSize)
currentGridZ := int((p.Pos[2] + p.Width/2) / entities.TileSize)
entIn := s.world.GetEntityAt(currentGridX, currentGridY, currentGridZ)
isClimbing := false
if entIn != nil && entIn.IsClimbable() && ebiten.IsKeyPressed(ebiten.KeyShift) {
isClimbing = true
}
if ebiten.IsKeyPressed(ebiten.KeySpace) && p.IsGrounded {
p.Vel[1] = JumpForce
p.IsGrounded = false
}
if isClimbing {
p.Vel[1] = 0 // Ingen gravitation när man klättrar
if !p.IsGrounded {
p.Vel[1] += Gravity
// W, A, S, D styr X och Y axlar
if ebiten.IsKeyPressed(ebiten.KeyA) {
p.Vel[0] = -currentMoveSpeed
p.FacingRight = false
isMoving = true
}
if ebiten.IsKeyPressed(ebiten.KeyD) {
p.Vel[0] = currentMoveSpeed
p.FacingRight = true
isMoving = true
}
if ebiten.IsKeyPressed(ebiten.KeyW) {
p.Vel[1] = -currentMoveSpeed // Uppåt
isMoving = true
}
if ebiten.IsKeyPressed(ebiten.KeyS) {
p.Vel[1] = currentMoveSpeed // Nedåt
isMoving = true
}
// Upp/ner pilarna styr Z-axeln
if ebiten.IsKeyPressed(ebiten.KeyUp) {
p.Vel[2] = -currentMoveSpeed
isMoving = true
}
if ebiten.IsKeyPressed(ebiten.KeyDown) {
p.Vel[2] = currentMoveSpeed
isMoving = true
}
} else {
if ebiten.IsKeyPressed(ebiten.KeyLeft) || ebiten.IsKeyPressed(ebiten.KeyA) {
p.Vel[0] = -currentMoveSpeed
p.FacingRight = false
isMoving = true
}
if ebiten.IsKeyPressed(ebiten.KeyRight) || ebiten.IsKeyPressed(ebiten.KeyD) {
p.Vel[0] = currentMoveSpeed
p.FacingRight = true
isMoving = true
}
if ebiten.IsKeyPressed(ebiten.KeyUp) || ebiten.IsKeyPressed(ebiten.KeyW) {
p.Vel[2] = -currentMoveSpeed
isMoving = true
}
if ebiten.IsKeyPressed(ebiten.KeyDown) || ebiten.IsKeyPressed(ebiten.KeyS) {
p.Vel[2] = currentMoveSpeed
isMoving = true
}
if ebiten.IsKeyPressed(ebiten.KeySpace) && p.IsGrounded {
p.Vel[1] = JumpForce
p.IsGrounded = false
}
if !p.IsGrounded {
p.Vel[1] += Gravity
}
}
nextX := p.Pos[0] + p.Vel[0]
@@ -295,8 +350,8 @@ func (s *PlayScene) drawPlayerSide(screen *ebiten.Image, camX, camY float64) {
op.GeoM.Translate(96, 0)
}
drawX := p.Pos[0] - camX
drawY := p.Pos[1] - camY
drawX := p.Pos[0] - camX - 32
drawY := p.Pos[1] - camY - 64
op.GeoM.Translate(drawX, drawY)
screen.DrawImage(subImg, op)
@@ -306,8 +361,8 @@ func (s *PlayScene) drawPlayerTop(screen *ebiten.Image, camX, camZ float64) {
p := s.player
op := &ebiten.DrawImageOptions{}
drawX := p.Pos[0] - camX
drawZ := p.Pos[2] - camZ
drawX := p.Pos[0] - camX - 32
drawZ := p.Pos[2] - camZ - 64
op.GeoM.Translate(drawX, drawZ)
screen.DrawImage(p.SpriteTop, op)
}