# HG changeset patch # User David Demelier # Date 1605690809 -3600 # Node ID 836bac1419c7b11f45e4bee9d1a50ea018f0eb68 # Parent 33ddbe30440e3fd41053808915ca8df3ea9643ae examples: improve map example diff -r 33ddbe30440e -r 836bac1419c7 examples/assets/maps/map-rebonai.json --- a/examples/assets/maps/map-rebonai.json Wed Nov 18 10:03:27 2020 +0100 +++ b/examples/assets/maps/map-rebonai.json Wed Nov 18 10:13:29 2020 +0100 @@ -10,7 +10,7 @@ "infinite":false, "layers":[ { - "data":[95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95], + "data":[95, 95, 95, 126, 127, 128, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 126, 127, 128, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 126, 127, 128, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 126, 127, 160, 112, 95, 96, 96, 96, 96, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 142, 175, 127, 160, 112, 96, 96, 96, 96, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 142, 175, 127, 128, 96, 96, 96, 96, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 142, 143, 144, 95, 95, 95, 95, 95, 95, 95, 95, 95, 93, 95, 95, 95, 95, 95, 95, 153, 154, 154, 155, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 169, 170, 170, 171, 95, 95, 95, 95, 95, 95, 95, 95, 95, 93, 95, 95, 95, 95, 95, 95, 169, 173, 173, 171, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 169, 173, 173, 171, 95, 95, 95, 95, 153, 170, 170, 170, 155, 95, 95, 95, 95, 95, 95, 95, 169, 173, 173, 171, 95, 95, 95, 95, 185, 188, 173, 190, 187, 95, 95, 95, 95, 95, 95, 95, 169, 173, 173, 158, 154, 154, 155, 153, 154, 156, 173, 171, 95, 95, 95, 95, 95, 95, 95, 95, 185, 188, 170, 170, 170, 170, 158, 156, 170, 170, 170, 171, 95, 95, 95, 95, 95, 95, 95, 95, 95, 185, 186, 186, 186, 188, 173, 170, 190, 186, 186, 187, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 153, 156, 170, 173, 171, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 169, 173, 170, 170, 171, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 169, 173, 173, 170, 171, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 169, 170, 173, 170, 171, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 185, 188, 189, 190, 187, 95, 95, 95, 95, 95, 95, 95], "height":20, "id":1, "name":"background", @@ -22,7 +22,7 @@ "y":0 }, { - "data":[0, 206, 236, 240, 0, 208, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 207, 0, 0, 222, 252, 256, 0, 224, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 223, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 19, 36, 21, 22, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, 52, 53, 54, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 67, 68, 69, 54, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 83, 84, 85, 86, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, 102, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 115, 116, 117, 118, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 131, 132, 133, 134, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 238, 236, 236, 236, 236, 236, 236, 240, 0, 0, 0, 208, 236, 236, 236, 236, 236, 239, 0, 0, 254, 252, 252, 252, 252, 252, 252, 256, 0, 0, 0, 224, 252, 252, 252, 252, 252, 255, 0], + "data":[0, 0, 236, 0, 0, 0, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 0, 0, 0, 222, 252, 256, 0, 224, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 223, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 36, 21, 0, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, 52, 53, 54, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 67, 68, 69, 54, 0, 220, 0, 0, 220, 0, 0, 0, 121, 122, 0, 0, 0, 0, 0, 82, 83, 84, 85, 86, 0, 220, 0, 0, 220, 0, 0, 0, 137, 138, 0, 0, 0, 0, 150, 98, 99, 100, 101, 102, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 114, 115, 116, 117, 118, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 130, 131, 132, 133, 134, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 152, 0, 0, 0, 0, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 168, 0, 0, 0, 0, 0, 220, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 238, 236, 236, 236, 236, 236, 236, 240, 0, 0, 0, 208, 236, 236, 236, 236, 236, 239, 0, 0, 254, 252, 252, 252, 252, 252, 252, 256, 0, 0, 0, 224, 252, 252, 252, 252, 252, 255, 0], "height":20, "id":2, "name":"foreground", @@ -34,7 +34,7 @@ "y":0 }, { - "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "data":[0, 206, 0, 207, 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 105, 106, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 88, 0, 119, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 104, 0, 135, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "height":20, "id":3, "name":"above", @@ -44,9 +44,37 @@ "width":20, "x":0, "y":0 + }, + { + "draworder":"topdown", + "id":4, + "name":"actions", + "objects":[ + { + "height":50, + "id":1, + "name":"", + "properties":[ + { + "name":"exec", + "type":"string", + "value":"teleport:map-world:1344:1344" + }], + "rotation":0, + "type":"", + "visible":true, + "width":192, + "x":576, + "y":1230 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 }], - "nextlayerid":4, - "nextobjectid":1, + "nextlayerid":5, + "nextobjectid":2, "orientation":"orthogonal", "properties":[ { diff -r 33ddbe30440e -r 836bac1419c7 examples/assets/maps/map-world.json --- a/examples/assets/maps/map-world.json Wed Nov 18 10:03:27 2020 +0100 +++ b/examples/assets/maps/map-world.json Wed Nov 18 10:13:29 2020 +0100 @@ -73,7 +73,7 @@ { "name":"origin-y", "type":"int", - "value":1350 + "value":1680 }, { "name":"title", diff -r 33ddbe30440e -r 836bac1419c7 examples/assets/maps/tileset-town.json --- a/examples/assets/maps/tileset-town.json Wed Nov 18 10:03:27 2020 +0100 +++ b/examples/assets/maps/tileset-town.json Wed Nov 18 10:13:29 2020 +0100 @@ -18,6 +18,408 @@ "tileheight":64, "tiles":[ { + "id":18, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":64, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":20, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":64, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":33, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":64, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":37, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":64, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":49, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":64, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":53, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":64, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":65, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":64, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":69, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":64, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":81, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":64, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":85, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":64, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":97, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":64, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":101, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":64, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":113, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":60, + "x":4, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":117, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":60, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":120, + "objectgroup": + { + "draworder":"index", + "id":2, + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":62, + "x":2, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":121, + "objectgroup": + { + "draworder":"index", + "id":2, + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":62, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { "id":129, "objectgroup": { @@ -31,8 +433,8 @@ "rotation":0, "type":"", "visible":true, - "width":56, - "x":8, + "width":60, + "x":4, "y":0 }], "opacity":1, @@ -116,6 +518,411 @@ "x":0, "y":0 } + }, + { + "id":136, + "objectgroup": + { + "draworder":"index", + "id":2, + "name":"", + "objects":[ + { + "height":60, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":60, + "x":4, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":137, + "objectgroup": + { + "draworder":"index", + "id":2, + "name":"", + "objects":[ + { + "height":60, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":60, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":151, + "objectgroup": + { + "draworder":"index", + "id":2, + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":24, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":167, + "objectgroup": + { + "draworder":"index", + "id":2, + "name":"", + "objects":[ + { + "height":56, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":24, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":219, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":42, + "x":10, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":220, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":56, + "x":4, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":221, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":60, + "x":4, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":222, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":60, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":223, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":60, + "x":4, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":235, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":10, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":64, + "x":0, + "y":54 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":238, + "objectgroup": + { + "draworder":"index", + "id":2, + "name":"", + "objects":[ + { + "height":64, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":42, + "x":10, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":251, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":32, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":64, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":252, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":32, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":56, + "x":4, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":253, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":32, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":60, + "x":4, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":254, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":32, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":60, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } + }, + { + "id":255, + "objectgroup": + { + "draworder":"index", + "name":"", + "objects":[ + { + "height":32, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":60, + "x":0, + "y":0 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + } }], "tilewidth":64, "type":"tileset", diff -r 33ddbe30440e -r 836bac1419c7 examples/example-map/main.c --- a/examples/example-map/main.c Wed Nov 18 10:03:27 2020 +0100 +++ b/examples/example-map/main.c Wed Nov 18 10:13:29 2020 +0100 @@ -110,7 +110,7 @@ } static struct state * -map_state_new(const char *name) +map_state_new(const char *name, int ox, int oy) { char path[1024]; struct map_state *ms; @@ -126,6 +126,12 @@ /* TODO: we may need to add a function in loader. */ ms->map.player_sprite = &john_sprite; + /* Override origin. */ + if (ox >= 0 && oy >= 0) { + ms->map.player_x = ox; + ms->map.player_y = oy; + } + map_init(&ms->map); ms->state.data = ms; ms->state.start = map_state_start; @@ -167,12 +173,12 @@ } static void -teleport_effect(struct map *current_map, const char *name) +teleport_effect(struct map *current_map, const char *name, int ox, int oy) { struct teleport_effect *fx; fx = alloc_zero(1, sizeof (*fx)); - fx->tp.state = map_state_new(name); + fx->tp.state = map_state_new(name, ox, oy); fx->act.data = fx; fx->act.draw = teleport_effect_draw; @@ -192,6 +198,8 @@ struct teleport_touch { struct action act; struct map *map; /* Current map. */ + int ox; /* Override origin x. (-1 to use map's default). */ + int oy; /* Same in y. */ char name[256]; int x; int y; @@ -212,7 +220,7 @@ const unsigned int h = touch->h + touch->map->player_sprite->cellh; if (maths_is_boxed(x, y, w, h, touch->map->player_x, touch->map->player_y)) { - teleport_effect(touch->map, touch->name); + teleport_effect(touch->map, touch->name, touch->ox, touch->oy); return true; } @@ -226,12 +234,19 @@ } static struct action * -teleport_touch_new(struct map *map, int x, int y, int w, int h, const char *name) +teleport_touch_new(struct map *map, int x, int y, int w, int h, const char *def) { + char name[256]; + int ox = -1, oy = -1; struct teleport_touch *touch; + if (sscanf(def, "%255[^:]:%d:%d", name, &ox, &oy) < 1) + panicf("could not parse teleport destination"); + touch = alloc_zero(1, sizeof (*touch)); touch->map = map; + touch->ox = ox; + touch->oy = oy; touch->x = x; touch->y = y; touch->w = w; @@ -278,7 +293,7 @@ static void run(void) { - game_switch(map_state_new("map-world"), true); + game_switch(map_state_new("map-world", -1, -1), true); game_loop(); }