diff --git a/cmd/server.go b/cmd/server.go index d53e5ec..6ec619b 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -69,7 +69,7 @@ func resetServer() { _, client := k, clients[k] canvasX += client.w + ClientOffset } - canvasX += level.Width() + //canvasX += level.Width() // adjust client offsets off := 0 for _, k := range clientKeys { diff --git a/data/level.go b/data/level.go index 8f08bff..df47845 100644 --- a/data/level.go +++ b/data/level.go @@ -126,21 +126,32 @@ func (lvl *Level) GetFrame(o, w, maxW, frameNo int) (ret *Frame) { off := 0 switch layer.D { case 4: - off = -(frameNo * layer.S) + o - case 6: off = (frameNo * layer.S) + o + case 6: + off = -(frameNo * layer.S) + o } + + // max width + lW := layer.Width() + if !layer.Repeat { + lW += maxW + off += maxW + } + for off < 0 { - off += layer.Width() + off += lW } - off %= maxW //layer.Width() - if row <= len(layer.Frames[f]) { + off %= lW + log.Println(lW, off, o, w, maxW, frameNo) + if row < len(layer.Frames[f]) { r := layer.Frames[f][row][:] for col := 0; col < w; col++ { - ro := (off + col) % layer.Width() + ro := (off + col) % lW - if (ro) < len(r) && string(r[ro]) != layer.T { + if 0 < ro && ro < len(r) && string(r[ro]) != layer.T { ret.Data[row][col] = r[ro] + } else { + ret.Data[row][col] = rune(' ') } } //for col := 0 diff --git a/levels/locoworld/Manifest.json b/levels/locoworld/Manifest.json index bcc81f2..a2e8be6 100644 --- a/levels/locoworld/Manifest.json +++ b/levels/locoworld/Manifest.json @@ -4,7 +4,7 @@ "Layers" : { "locomotive": { "Z-Index": 0, - "Direction": 6, + "Direction": 4, "Speed": 1, "Repeat": false, "Transparent": "•"