Respect sprite X and Y offsets
This makes menus display more correctly, and also fixes trees and other objects on the main map, although it messes up bounds clipping (sigh).
This commit is contained in:
@@ -164,10 +164,11 @@ func (e *env) drawRecord(record *menus.Record, screen *ebiten.Image, offset ebit
|
||||
x := float64(record.X)
|
||||
y := float64(record.Y)
|
||||
|
||||
// Theory: we either give spriteid, or y,x,spriteId
|
||||
// Maybe: we either give spriteid, or y,x,spriteId ? Unsure, doesn't seem
|
||||
// to be needed for now
|
||||
if len(record.SpriteId) == 3 {
|
||||
x = x + float64(record.SpriteId[1])
|
||||
y = y + float64(record.SpriteId[0]*2) // FIXME: *2 works, no idea
|
||||
// x = x + float64(record.SpriteId[1])
|
||||
// y = y + float64(record.SpriteId[0])
|
||||
spriteId = record.SpriteId[2]
|
||||
}
|
||||
|
||||
@@ -184,15 +185,21 @@ func (e *env) drawRecord(record *menus.Record, screen *ebiten.Image, offset ebit
|
||||
y = 0.0
|
||||
}
|
||||
|
||||
log.Printf(
|
||||
"Drawing id=%v type=%v spriteid=%v x=%v y=%v desc=%q parent=%p",
|
||||
record.Id, record.Type, spriteId, record.X, record.Y, record.Desc, record.Parent,
|
||||
)
|
||||
|
||||
// FIXME: Need to handle multiple objects
|
||||
obj := e.objects[0]
|
||||
sprite := obj.Sprites[spriteId]
|
||||
|
||||
|
||||
x = x + float64(sprite.XOffset)
|
||||
y = y + float64(sprite.YOffset)
|
||||
// Account for scaling
|
||||
x, y = offset.Apply(x, y)
|
||||
|
||||
log.Printf(
|
||||
"Drawing id=%v type=%v spriteid=%v x=%v(+%v) y=%v(%+v) desc=%q parent=%p",
|
||||
record.Id, record.Type, spriteId, record.X, record.Y, sprite.XOffset, sprite.YOffset, record.Desc, record.Parent,
|
||||
)
|
||||
|
||||
offset.Translate(x, y)
|
||||
screen.DrawImage(sprite.Image, &ebiten.DrawImageOptions{GeoM: offset})
|
||||
|
||||
|
Reference in New Issue
Block a user