Draw isometically using magic formulae, correcting the view
This commit is contained in:
@@ -135,8 +135,8 @@ func (e *env) getSprite(palette []string, ref maps.ObjRef) (*conv.Sprite, *conv.
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
cellWidth = 72.0 // I think, anyway
|
cellWidth = 64.0 // I think, anyway
|
||||||
cellLength = 72.0
|
cellLength = 64.0
|
||||||
)
|
)
|
||||||
|
|
||||||
// TODO: build all the sprites in the set into a single spritesheet so we can
|
// TODO: build all the sprites in the set into a single spritesheet so we can
|
||||||
@@ -158,8 +158,9 @@ func (s *state) present(pWin *pixelgl.Window) {
|
|||||||
|
|
||||||
// TODO: bounds clipping
|
// TODO: bounds clipping
|
||||||
z := int(s.zIdx)
|
z := int(s.zIdx)
|
||||||
for x := int(gameMap.MinWidth); x < int(gameMap.MaxWidth); x++ {
|
for y := int(gameMap.MaxLength - 1); y >= int(gameMap.MinLength); y-- {
|
||||||
for y := int(gameMap.MinLength); y < int(gameMap.MaxLength); y++ {
|
for x := int(gameMap.MaxWidth - 1); x >= int(gameMap.MinWidth); x-- {
|
||||||
|
|
||||||
cell := gameMap.Cells.At(x, y, z)
|
cell := gameMap.Cells.At(x, y, z)
|
||||||
|
|
||||||
surfaceSprite, _ := s.env.getSprite(s.env.set.SurfacePalette, cell.Surface)
|
surfaceSprite, _ := s.env.getSprite(s.env.set.SurfacePalette, cell.Surface)
|
||||||
@@ -175,14 +176,14 @@ func (s *state) present(pWin *pixelgl.Window) {
|
|||||||
// ones \o/
|
// ones \o/
|
||||||
// FIXME: these are off by a bit
|
// FIXME: these are off by a bit
|
||||||
orig := pixel.V(xPos, yPos)
|
orig := pixel.V(xPos, yPos)
|
||||||
rotated := orig.Rotated(s.rot)
|
iso := pixel.V(orig.X-orig.Y, (orig.X+orig.Y)/2.0)
|
||||||
|
|
||||||
if surfaceSprite != nil {
|
if surfaceSprite != nil {
|
||||||
surfaceSprite.Spr.Draw(pWin, pixel.IM.Moved(rotated))
|
surfaceSprite.Spr.Draw(pWin, pixel.IM.Moved(iso))
|
||||||
}
|
}
|
||||||
|
|
||||||
if centerSprite != nil {
|
if centerSprite != nil {
|
||||||
centerSprite.Spr.Draw(pWin, pixel.IM.Moved(rotated))
|
centerSprite.Spr.Draw(pWin, pixel.IM.Moved(iso))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user