- 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
47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
package entities
|
|
|
|
import (
|
|
"github.com/go-gl/mathgl/mgl64"
|
|
"github.com/hajimehoshi/ebiten/v2"
|
|
)
|
|
|
|
type Tile struct {
|
|
pos mgl64.Vec3
|
|
health int
|
|
Climbable bool
|
|
SideImg *ebiten.Image
|
|
TopImg *ebiten.Image
|
|
}
|
|
|
|
func (t *Tile) Pos() mgl64.Vec3 { return t.pos }
|
|
func (t *Tile) SetPos(pos mgl64.Vec3) { t.pos = pos }
|
|
func (t *Tile) IsBlocking() bool { return !t.Climbable }
|
|
func (t *Tile) IsClimbable() bool { return t.Climbable }
|
|
func (t *Tile) IsMovable() bool { return false }
|
|
func (t *Tile) Move(dx, dy, dz float64) {
|
|
// Not feasible for soil etc.
|
|
}
|
|
func (t *Tile) Damage(am int) { t.health -= am }
|
|
func (t *Tile) Pickup() bool { return false }
|
|
func (t *Tile) GetHealth() int { return t.health }
|
|
|
|
func (t *Tile) DrawSide(screen interface{}, x, y float64, tint, alpha float32) {
|
|
scr := screen.(*ebiten.Image)
|
|
if t.SideImg != nil {
|
|
op := &ebiten.DrawImageOptions{}
|
|
op.GeoM.Translate(x, y)
|
|
op.ColorScale.Scale(tint, tint, tint, alpha)
|
|
scr.DrawImage(t.SideImg, op)
|
|
}
|
|
}
|
|
|
|
func (t *Tile) DrawTop(screen interface{}, x, y float64, tint, alpha float32) {
|
|
scr := screen.(*ebiten.Image)
|
|
if t.TopImg != nil {
|
|
op := &ebiten.DrawImageOptions{}
|
|
op.GeoM.Translate(x, y)
|
|
op.ColorScale.Scale(tint, tint, tint, alpha)
|
|
scr.DrawImage(t.TopImg, op)
|
|
}
|
|
}
|