Fixed motion

This commit is contained in:
tkarrass 2016-02-08 19:13:05 +01:00
parent ce4b362085
commit d2a212d454
3 changed files with 20 additions and 9 deletions

View File

@ -69,7 +69,7 @@ func resetServer() {
_, client := k, clients[k] _, client := k, clients[k]
canvasX += client.w + ClientOffset canvasX += client.w + ClientOffset
} }
canvasX += level.Width() //canvasX += level.Width()
// adjust client offsets // adjust client offsets
off := 0 off := 0
for _, k := range clientKeys { for _, k := range clientKeys {

View File

@ -126,21 +126,32 @@ func (lvl *Level) GetFrame(o, w, maxW, frameNo int) (ret *Frame) {
off := 0 off := 0
switch layer.D { switch layer.D {
case 4: case 4:
off = -(frameNo * layer.S) + o
case 6:
off = (frameNo * layer.S) + o 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 { for off < 0 {
off += layer.Width() off += lW
} }
off %= maxW //layer.Width() off %= lW
if row <= len(layer.Frames[f]) { log.Println(lW, off, o, w, maxW, frameNo)
if row < len(layer.Frames[f]) {
r := layer.Frames[f][row][:] r := layer.Frames[f][row][:]
for col := 0; col < w; col++ { 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] ret.Data[row][col] = r[ro]
} else {
ret.Data[row][col] = rune(' ')
} }
} }
//for col := 0 //for col := 0

View File

@ -4,7 +4,7 @@
"Layers" : { "Layers" : {
"locomotive": { "locomotive": {
"Z-Index": 0, "Z-Index": 0,
"Direction": 6, "Direction": 4,
"Speed": 1, "Speed": 1,
"Repeat": false, "Repeat": false,
"Transparent": "•" "Transparent": "•"