From ea738270a019fc64b21cd85ecff648ffecd6a23b Mon Sep 17 00:00:00 2001 From: Klemen Plestenjak Date: Fri, 9 Feb 2024 09:46:36 +0100 Subject: [PATCH] Better formation placement --- assets/maps/tree_test.tmj | 4785 +++++++++++++++++++++++++++++++++++-- game/ai_actions.c | 4 +- game/input.h | 2 + game/main.c | 34 +- game/systems/s_entity.c | 3 +- game/systems/s_event.c | 1 + game/systems/s_input.c | 105 +- game/systems/s_ui.c | 4 +- rawAssets/entity_test.tmx | 2 +- 9 files changed, 4673 insertions(+), 267 deletions(-) diff --git a/assets/maps/tree_test.tmj b/assets/maps/tree_test.tmj index 4b127de..37bbb78 100644 --- a/assets/maps/tree_test.tmj +++ b/assets/maps/tree_test.tmj @@ -113,12 +113,12 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5890, 5890, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5890, 0, 5890, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5890, 5890, 5890, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5890, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5890, 5890, 5890, 5890, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5890, 5890, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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":32, @@ -143,15 +143,15 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6657, 0, 0, 0, 6657, 0, 0, 0, 6657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6657, 0, 0, 0, 6657, 0, 0, 0, 6657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6657, 0, 0, 0, 6657, 0, 0, 0, 6657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -312,186 +312,6 @@ "id":8, "name":"entities", "objects":[ - { - "gid":28, - "height":10, - "id":1, - "name":"worker", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":144.667, - "y":160.667 - }, - { - "gid":28, - "height":10, - "id":2, - "name":"worker", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":148, - "y":221.333 - }, - { - "gid":28, - "height":10, - "id":3, - "name":"worker", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":148.667, - "y":285 - }, - { - "gid":28, - "height":10, - "id":4, - "name":"worker", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":211, - "y":287.333 - }, - { - "gid":28, - "height":10, - "id":5, - "name":"worker", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":213, - "y":223.333 - }, - { - "gid":28, - "height":10, - "id":6, - "name":"worker", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":212.333, - "y":161.333 - }, - { - "gid":28, - "height":10, - "id":7, - "name":"worker", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":275.333, - "y":160.333 - }, - { - "gid":28, - "height":10, - "id":8, - "name":"worker", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":276, - "y":222.333 - }, - { - "gid":28, - "height":10, - "id":9, - "name":"worker", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":276.667, - "y":284.333 - }, - { - "gid":540, - "height":10, - "id":10, - "name":"soldier", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":353.333, - "y":235.667 - }, - { - "gid":540, - "height":10, - "id":11, - "name":"soldier", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":367.667, - "y":236.394 - }, - { - "gid":540, - "height":10, - "id":12, - "name":"soldier", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":367.909, - "y":221 - }, - { - "gid":540, - "height":10, - "id":13, - "name":"soldier", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":354.636, - "y":216.818 - }, - { - "gid":540, - "height":10, - "id":14, - "name":"soldier", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":354.091, - "y":201.727 - }, - { - "gid":540, - "height":10, - "id":15, - "name":"soldier", - "rotation":0, - "type":"", - "visible":true, - "width":10, - "x":365.727, - "y":205.182 - }, { "gid":540, "height":10, @@ -501,68 +321,4615 @@ "type":"", "visible":true, "width":10, - "x":365.727, - "y":190.636 + "x":120, + "y":250 }, { "gid":540, "height":10, - "id":17, + "id":22, "name":"soldier", "rotation":0, "type":"", "visible":true, "width":10, - "x":353.727, - "y":188.091 + "x":130, + "y":250 }, { "gid":540, "height":10, - "id":18, + "id":23, "name":"soldier", "rotation":0, "type":"", "visible":true, "width":10, - "x":352.818, - "y":173.909 + "x":140, + "y":250 }, { "gid":540, "height":10, - "id":19, + "id":24, "name":"soldier", "rotation":0, "type":"", "visible":true, "width":10, - "x":364.455, - "y":175.545 + "x":150, + "y":250 }, { - "gid":550, + "gid":540, "height":10, - "id":20, + "id":26, "name":"soldier", "rotation":0, "type":"", "visible":true, "width":10, - "x":47.5, - "y":179.25 + "x":159.091, + "y":250.455 }, { - "gid":550, + "gid":540, "height":10, - "id":21, + "id":27, "name":"soldier", "rotation":0, "type":"", "visible":true, "width":10, - "x":46.5, - "y":167.5 + "x":169.091, + "y":250.455 + }, + { + "gid":540, + "height":10, + "id":28, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":179.091, + "y":250.455 + }, + { + "gid":540, + "height":10, + "id":29, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":189.091, + "y":250.455 + }, + { + "gid":540, + "height":10, + "id":30, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":120.909, + "y":237.881 + }, + { + "gid":540, + "height":10, + "id":31, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":130.909, + "y":237.881 + }, + { + "gid":540, + "height":10, + "id":32, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":140.909, + "y":237.881 + }, + { + "gid":540, + "height":10, + "id":33, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":150.909, + "y":237.881 + }, + { + "gid":540, + "height":10, + "id":34, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":160.25, + "y":237 + }, + { + "gid":540, + "height":10, + "id":35, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":170.25, + "y":237 + }, + { + "gid":540, + "height":10, + "id":36, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":180.25, + "y":237 + }, + { + "gid":540, + "height":10, + "id":37, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":190.25, + "y":237 + }, + { + "gid":540, + "height":10, + "id":38, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":199.25, + "y":250.272 + }, + { + "gid":540, + "height":10, + "id":39, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":209.25, + "y":250.272 + }, + { + "gid":540, + "height":10, + "id":40, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":219.25, + "y":250.272 + }, + { + "gid":540, + "height":10, + "id":41, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":229.25, + "y":250.272 + }, + { + "gid":540, + "height":10, + "id":42, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":238.341, + "y":250.727 + }, + { + "gid":540, + "height":10, + "id":43, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":248.341, + "y":250.727 + }, + { + "gid":540, + "height":10, + "id":44, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":258.341, + "y":250.727 + }, + { + "gid":540, + "height":10, + "id":45, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":268.341, + "y":250.727 + }, + { + "gid":540, + "height":10, + "id":46, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":200.159, + "y":238.153 + }, + { + "gid":540, + "height":10, + "id":47, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":210.159, + "y":238.153 + }, + { + "gid":540, + "height":10, + "id":48, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":220.159, + "y":238.153 + }, + { + "gid":540, + "height":10, + "id":49, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":230.159, + "y":238.153 + }, + { + "gid":540, + "height":10, + "id":50, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":239.5, + "y":237.272 + }, + { + "gid":540, + "height":10, + "id":51, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":249.5, + "y":237.272 + }, + { + "gid":540, + "height":10, + "id":52, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":259.5, + "y":237.272 + }, + { + "gid":540, + "height":10, + "id":53, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":269.5, + "y":237.272 + }, + + { + "gid":540, + "height":10, + "id":54, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":121.705, + "y":223.318 + }, + { + "gid":540, + "height":10, + "id":55, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":131.705, + "y":223.318 + }, + { + "gid":540, + "height":10, + "id":56, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":141.705, + "y":223.318 + }, + { + "gid":540, + "height":10, + "id":57, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":151.705, + "y":223.318 + }, + { + "gid":540, + "height":10, + "id":58, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":160.796, + "y":223.773 + }, + { + "gid":540, + "height":10, + "id":59, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":170.796, + "y":223.773 + }, + { + "gid":540, + "height":10, + "id":60, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":180.796, + "y":223.773 + }, + { + "gid":540, + "height":10, + "id":61, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":190.796, + "y":223.773 + }, + { + "gid":540, + "height":10, + "id":62, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":122.614, + "y":211.199 + }, + { + "gid":540, + "height":10, + "id":63, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":132.614, + "y":211.199 + }, + { + "gid":540, + "height":10, + "id":64, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":142.614, + "y":211.199 + }, + { + "gid":540, + "height":10, + "id":65, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":152.614, + "y":211.199 + }, + { + "gid":540, + "height":10, + "id":66, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":161.955, + "y":210.318 + }, + { + "gid":540, + "height":10, + "id":67, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":171.955, + "y":210.318 + }, + { + "gid":540, + "height":10, + "id":68, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":181.955, + "y":210.318 + }, + { + "gid":540, + "height":10, + "id":69, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":191.955, + "y":210.318 + }, + { + "gid":540, + "height":10, + "id":70, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":200.955, + "y":223.59 + }, + { + "gid":540, + "height":10, + "id":71, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":210.955, + "y":223.59 + }, + { + "gid":540, + "height":10, + "id":72, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":220.955, + "y":223.59 + }, + { + "gid":540, + "height":10, + "id":73, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":230.955, + "y":223.59 + }, + { + "gid":540, + "height":10, + "id":74, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":240.046, + "y":224.045 + }, + { + "gid":540, + "height":10, + "id":75, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":250.046, + "y":224.045 + }, + { + "gid":540, + "height":10, + "id":76, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":260.046, + "y":224.045 + }, + { + "gid":540, + "height":10, + "id":77, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":270.046, + "y":224.045 + }, + { + "gid":540, + "height":10, + "id":78, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":201.864, + "y":211.471 + }, + { + "gid":540, + "height":10, + "id":79, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":211.864, + "y":211.471 + }, + { + "gid":540, + "height":10, + "id":80, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":221.864, + "y":211.471 + }, + { + "gid":540, + "height":10, + "id":81, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":231.864, + "y":211.471 + }, + { + "gid":540, + "height":10, + "id":82, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":241.205, + "y":210.59 + }, + { + "gid":540, + "height":10, + "id":83, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":251.205, + "y":210.59 + }, + { + "gid":540, + "height":10, + "id":84, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":261.205, + "y":210.59 + }, + { + "gid":540, + "height":10, + "id":85, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":271.205, + "y":210.59 + }, + + { + "gid":540, + "height":10, + "id":86, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":122.614, + "y":192.773 + }, + { + "gid":540, + "height":10, + "id":87, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":132.614, + "y":192.773 + }, + { + "gid":540, + "height":10, + "id":88, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":142.614, + "y":192.773 + }, + { + "gid":540, + "height":10, + "id":89, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":152.614, + "y":192.773 + }, + { + "gid":540, + "height":10, + "id":90, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":161.705, + "y":193.228 + }, + { + "gid":540, + "height":10, + "id":91, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":171.705, + "y":193.228 + }, + { + "gid":540, + "height":10, + "id":92, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":181.705, + "y":193.228 + }, + { + "gid":540, + "height":10, + "id":93, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":191.705, + "y":193.228 + }, + { + "gid":540, + "height":10, + "id":94, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":123.523, + "y":180.654 + }, + { + "gid":540, + "height":10, + "id":95, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":133.523, + "y":180.654 + }, + { + "gid":540, + "height":10, + "id":96, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":143.523, + "y":180.654 + }, + { + "gid":540, + "height":10, + "id":97, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":153.523, + "y":180.654 + }, + { + "gid":540, + "height":10, + "id":98, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":162.864, + "y":179.773 + }, + { + "gid":540, + "height":10, + "id":99, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":172.864, + "y":179.773 + }, + { + "gid":540, + "height":10, + "id":100, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":182.864, + "y":179.773 + }, + { + "gid":540, + "height":10, + "id":101, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":192.864, + "y":179.773 + }, + { + "gid":540, + "height":10, + "id":102, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":201.864, + "y":193.045 + }, + { + "gid":540, + "height":10, + "id":103, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":211.864, + "y":193.045 + }, + { + "gid":540, + "height":10, + "id":104, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":221.864, + "y":193.045 + }, + { + "gid":540, + "height":10, + "id":105, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":231.864, + "y":193.045 + }, + { + "gid":540, + "height":10, + "id":106, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":240.955, + "y":193.5 + }, + { + "gid":540, + "height":10, + "id":107, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":250.955, + "y":193.5 + }, + { + "gid":540, + "height":10, + "id":108, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":260.955, + "y":193.5 + }, + { + "gid":540, + "height":10, + "id":109, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":270.955, + "y":193.5 + }, + { + "gid":540, + "height":10, + "id":110, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":202.773, + "y":180.926 + }, + { + "gid":540, + "height":10, + "id":111, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":212.773, + "y":180.926 + }, + { + "gid":540, + "height":10, + "id":112, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":222.773, + "y":180.926 + }, + { + "gid":540, + "height":10, + "id":113, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":232.773, + "y":180.926 + }, + { + "gid":540, + "height":10, + "id":114, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":242.114, + "y":180.045 + }, + { + "gid":540, + "height":10, + "id":115, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":252.114, + "y":180.045 + }, + { + "gid":540, + "height":10, + "id":116, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":262.114, + "y":180.045 + }, + { + "gid":540, + "height":10, + "id":117, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":272.114, + "y":180.045 + }, + + { + "gid":540, + "height":10, + "id":150, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":120.276, + "y":120.417 + }, + { + "gid":540, + "height":10, + "id":151, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":130.276, + "y":120.417 + }, + { + "gid":540, + "height":10, + "id":152, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":140.276, + "y":120.417 + }, + { + "gid":540, + "height":10, + "id":153, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":150.276, + "y":120.417 + }, + { + "gid":540, + "height":10, + "id":154, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":159.367, + "y":120.872 + }, + { + "gid":540, + "height":10, + "id":155, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":169.367, + "y":120.872 + }, + { + "gid":540, + "height":10, + "id":156, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":179.367, + "y":120.872 + }, + { + "gid":540, + "height":10, + "id":157, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":189.367, + "y":120.872 + }, + { + "gid":540, + "height":10, + "id":158, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":121.185, + "y":108.298 + }, + { + "gid":540, + "height":10, + "id":159, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":131.185, + "y":108.298 + }, + { + "gid":540, + "height":10, + "id":160, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":141.185, + "y":108.298 + }, + { + "gid":540, + "height":10, + "id":161, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":151.185, + "y":108.298 + }, + { + "gid":540, + "height":10, + "id":162, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":160.526, + "y":107.417 + }, + { + "gid":540, + "height":10, + "id":163, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":170.526, + "y":107.417 + }, + { + "gid":540, + "height":10, + "id":164, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":180.526, + "y":107.417 + }, + { + "gid":540, + "height":10, + "id":165, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":190.526, + "y":107.417 + }, + { + "gid":540, + "height":10, + "id":166, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":199.526, + "y":120.689 + }, + { + "gid":540, + "height":10, + "id":167, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":209.526, + "y":120.689 + }, + { + "gid":540, + "height":10, + "id":168, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":219.526, + "y":120.689 + }, + { + "gid":540, + "height":10, + "id":169, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":229.526, + "y":120.689 + }, + { + "gid":540, + "height":10, + "id":170, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":238.617, + "y":121.144 + }, + { + "gid":540, + "height":10, + "id":171, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":248.617, + "y":121.144 + }, + { + "gid":540, + "height":10, + "id":172, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":258.617, + "y":121.144 + }, + { + "gid":540, + "height":10, + "id":173, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":268.617, + "y":121.144 + }, + { + "gid":540, + "height":10, + "id":174, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":200.435, + "y":108.57 + }, + { + "gid":540, + "height":10, + "id":175, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":210.435, + "y":108.57 + }, + { + "gid":540, + "height":10, + "id":176, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":220.435, + "y":108.57 + }, + { + "gid":540, + "height":10, + "id":177, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":230.435, + "y":108.57 + }, + { + "gid":540, + "height":10, + "id":178, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":239.776, + "y":107.689 + }, + { + "gid":540, + "height":10, + "id":179, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":249.776, + "y":107.689 + }, + { + "gid":540, + "height":10, + "id":180, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":259.776, + "y":107.689 + }, + { + "gid":540, + "height":10, + "id":181, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":269.776, + "y":107.689 + }, + + { + "gid":540, + "height":10, + "id":182, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":121.981, + "y":93.7347 + }, + { + "gid":540, + "height":10, + "id":183, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":131.981, + "y":93.7347 + }, + { + "gid":540, + "height":10, + "id":184, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":141.981, + "y":93.7347 + }, + { + "gid":540, + "height":10, + "id":185, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":151.981, + "y":93.7347 + }, + { + "gid":540, + "height":10, + "id":186, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":161.072, + "y":94.1897 + }, + { + "gid":540, + "height":10, + "id":187, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":171.072, + "y":94.1897 + }, + { + "gid":540, + "height":10, + "id":188, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":181.072, + "y":94.1897 + }, + { + "gid":540, + "height":10, + "id":189, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":191.072, + "y":94.1897 + }, + { + "gid":540, + "height":10, + "id":190, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":122.89, + "y":81.6157 + }, + { + "gid":540, + "height":10, + "id":191, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":132.89, + "y":81.6157 + }, + { + "gid":540, + "height":10, + "id":192, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":142.89, + "y":81.6157 + }, + { + "gid":540, + "height":10, + "id":193, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":152.89, + "y":81.6157 + }, + { + "gid":540, + "height":10, + "id":194, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":162.231, + "y":80.7347 + }, + { + "gid":540, + "height":10, + "id":195, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":172.231, + "y":80.7347 + }, + { + "gid":540, + "height":10, + "id":196, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":182.231, + "y":80.7347 + }, + { + "gid":540, + "height":10, + "id":197, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":192.231, + "y":80.7347 + }, + { + "gid":540, + "height":10, + "id":198, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":201.231, + "y":94.0067 + }, + { + "gid":540, + "height":10, + "id":199, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":211.231, + "y":94.0067 + }, + { + "gid":540, + "height":10, + "id":200, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":221.231, + "y":94.0067 + }, + { + "gid":540, + "height":10, + "id":201, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":231.231, + "y":94.0067 + }, + { + "gid":540, + "height":10, + "id":202, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":240.322, + "y":94.4617 + }, + { + "gid":540, + "height":10, + "id":203, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":250.322, + "y":94.4617 + }, + { + "gid":540, + "height":10, + "id":204, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":260.322, + "y":94.4617 + }, + { + "gid":540, + "height":10, + "id":205, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":270.322, + "y":94.4617 + }, + { + "gid":540, + "height":10, + "id":206, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":202.14, + "y":81.8877 + }, + { + "gid":540, + "height":10, + "id":207, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":212.14, + "y":81.8877 + }, + { + "gid":540, + "height":10, + "id":208, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":222.14, + "y":81.8877 + }, + { + "gid":540, + "height":10, + "id":209, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":232.14, + "y":81.8877 + }, + { + "gid":540, + "height":10, + "id":210, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":241.481, + "y":81.0067 + }, + { + "gid":540, + "height":10, + "id":211, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":251.481, + "y":81.0067 + }, + { + "gid":540, + "height":10, + "id":212, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":261.481, + "y":81.0067 + }, + { + "gid":540, + "height":10, + "id":213, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":271.481, + "y":81.0067 + }, + + { + "gid":540, + "height":10, + "id":214, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":122.89, + "y":63.1897 + }, + { + "gid":540, + "height":10, + "id":215, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":132.89, + "y":63.1897 + }, + { + "gid":540, + "height":10, + "id":216, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":142.89, + "y":63.1897 + }, + { + "gid":540, + "height":10, + "id":217, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":152.89, + "y":63.1897 + }, + { + "gid":540, + "height":10, + "id":218, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":161.981, + "y":63.6447 + }, + { + "gid":540, + "height":10, + "id":219, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":171.981, + "y":63.6447 + }, + { + "gid":540, + "height":10, + "id":220, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":181.981, + "y":63.6447 + }, + { + "gid":540, + "height":10, + "id":221, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":191.981, + "y":63.6447 + }, + { + "gid":540, + "height":10, + "id":222, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":123.799, + "y":51.0707 + }, + { + "gid":540, + "height":10, + "id":223, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":133.799, + "y":51.0707 + }, + { + "gid":540, + "height":10, + "id":224, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":143.799, + "y":51.0707 + }, + { + "gid":540, + "height":10, + "id":225, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":153.799, + "y":51.0707 + }, + { + "gid":540, + "height":10, + "id":226, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":163.14, + "y":50.1897 + }, + { + "gid":540, + "height":10, + "id":227, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":173.14, + "y":50.1897 + }, + { + "gid":540, + "height":10, + "id":228, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":183.14, + "y":50.1897 + }, + { + "gid":540, + "height":10, + "id":229, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":193.14, + "y":50.1897 + }, + { + "gid":540, + "height":10, + "id":230, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":202.14, + "y":63.4617 + }, + { + "gid":540, + "height":10, + "id":231, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":212.14, + "y":63.4617 + }, + { + "gid":540, + "height":10, + "id":232, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":222.14, + "y":63.4617 + }, + { + "gid":540, + "height":10, + "id":233, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":232.14, + "y":63.4617 + }, + { + "gid":540, + "height":10, + "id":234, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":241.231, + "y":63.9167 + }, + { + "gid":540, + "height":10, + "id":235, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":251.231, + "y":63.9167 + }, + { + "gid":540, + "height":10, + "id":236, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":261.231, + "y":63.9167 + }, + { + "gid":540, + "height":10, + "id":237, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":271.231, + "y":63.9167 + }, + { + "gid":540, + "height":10, + "id":238, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":203.049, + "y":51.3427 + }, + { + "gid":540, + "height":10, + "id":239, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":213.049, + "y":51.3427 + }, + { + "gid":540, + "height":10, + "id":240, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":223.049, + "y":51.3427 + }, + { + "gid":540, + "height":10, + "id":241, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":233.049, + "y":51.3427 + }, + { + "gid":540, + "height":10, + "id":242, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":242.39, + "y":50.4617 + }, + { + "gid":540, + "height":10, + "id":243, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":252.39, + "y":50.4617 + }, + { + "gid":540, + "height":10, + "id":244, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":262.39, + "y":50.4617 + }, + { + "gid":540, + "height":10, + "id":245, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":272.39, + "y":50.4617 + }, + + { + "gid":540, + "height":10, + "id":246, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":324.943, + "y":328.083 + }, + { + "gid":540, + "height":10, + "id":247, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":334.943, + "y":328.083 + }, + { + "gid":540, + "height":10, + "id":248, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":344.943, + "y":328.083 + }, + { + "gid":540, + "height":10, + "id":249, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":354.943, + "y":328.083 + }, + { + "gid":540, + "height":10, + "id":250, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":364.034, + "y":328.538 + }, + { + "gid":540, + "height":10, + "id":251, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":374.034, + "y":328.538 + }, + { + "gid":540, + "height":10, + "id":252, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":384.034, + "y":328.538 + }, + { + "gid":540, + "height":10, + "id":253, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":394.034, + "y":328.538 + }, + { + "gid":540, + "height":10, + "id":254, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":325.852, + "y":315.964 + }, + { + "gid":540, + "height":10, + "id":255, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":335.852, + "y":315.964 + }, + { + "gid":540, + "height":10, + "id":256, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":345.852, + "y":315.964 + }, + { + "gid":540, + "height":10, + "id":257, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":355.852, + "y":315.964 + }, + { + "gid":540, + "height":10, + "id":258, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":365.193, + "y":315.083 + }, + { + "gid":540, + "height":10, + "id":259, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":375.193, + "y":315.083 + }, + { + "gid":540, + "height":10, + "id":260, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":385.193, + "y":315.083 + }, + { + "gid":540, + "height":10, + "id":261, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":395.193, + "y":315.083 + }, + { + "gid":540, + "height":10, + "id":262, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":404.193, + "y":328.355 + }, + { + "gid":540, + "height":10, + "id":263, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":414.193, + "y":328.355 + }, + { + "gid":540, + "height":10, + "id":264, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":424.193, + "y":328.355 + }, + { + "gid":540, + "height":10, + "id":265, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":434.193, + "y":328.355 + }, + { + "gid":540, + "height":10, + "id":266, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":443.284, + "y":328.81 + }, + { + "gid":540, + "height":10, + "id":267, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":453.284, + "y":328.81 + }, + { + "gid":540, + "height":10, + "id":268, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":463.284, + "y":328.81 + }, + { + "gid":540, + "height":10, + "id":269, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":473.284, + "y":328.81 + }, + { + "gid":540, + "height":10, + "id":270, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":405.102, + "y":316.236 + }, + { + "gid":540, + "height":10, + "id":271, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":415.102, + "y":316.236 + }, + { + "gid":540, + "height":10, + "id":272, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":425.102, + "y":316.236 + }, + { + "gid":540, + "height":10, + "id":273, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":435.102, + "y":316.236 + }, + { + "gid":540, + "height":10, + "id":274, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":444.443, + "y":315.355 + }, + { + "gid":540, + "height":10, + "id":275, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":454.443, + "y":315.355 + }, + { + "gid":540, + "height":10, + "id":276, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":464.443, + "y":315.355 + }, + { + "gid":540, + "height":10, + "id":277, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":474.443, + "y":315.355 + }, + + { + "gid":540, + "height":10, + "id":278, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":326.648, + "y":301.401 + }, + { + "gid":540, + "height":10, + "id":279, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":336.648, + "y":301.401 + }, + { + "gid":540, + "height":10, + "id":280, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":346.648, + "y":301.401 + }, + { + "gid":540, + "height":10, + "id":281, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":356.648, + "y":301.401 + }, + { + "gid":540, + "height":10, + "id":282, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":365.739, + "y":301.856 + }, + { + "gid":540, + "height":10, + "id":283, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":375.739, + "y":301.856 + }, + { + "gid":540, + "height":10, + "id":284, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":385.739, + "y":301.856 + }, + { + "gid":540, + "height":10, + "id":285, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":395.739, + "y":301.856 + }, + { + "gid":540, + "height":10, + "id":286, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":327.557, + "y":289.282 + }, + { + "gid":540, + "height":10, + "id":287, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":337.557, + "y":289.282 + }, + { + "gid":540, + "height":10, + "id":288, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":347.557, + "y":289.282 + }, + { + "gid":540, + "height":10, + "id":289, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":357.557, + "y":289.282 + }, + { + "gid":540, + "height":10, + "id":290, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":366.898, + "y":288.401 + }, + { + "gid":540, + "height":10, + "id":291, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":376.898, + "y":288.401 + }, + { + "gid":540, + "height":10, + "id":292, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":386.898, + "y":288.401 + }, + { + "gid":540, + "height":10, + "id":293, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":396.898, + "y":288.401 + }, + { + "gid":540, + "height":10, + "id":294, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":405.898, + "y":301.673 + }, + { + "gid":540, + "height":10, + "id":295, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":415.898, + "y":301.673 + }, + { + "gid":540, + "height":10, + "id":296, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":425.898, + "y":301.673 + }, + { + "gid":540, + "height":10, + "id":297, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":435.898, + "y":301.673 + }, + { + "gid":540, + "height":10, + "id":298, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":444.989, + "y":302.128 + }, + { + "gid":540, + "height":10, + "id":299, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":454.989, + "y":302.128 + }, + { + "gid":540, + "height":10, + "id":300, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":464.989, + "y":302.128 + }, + { + "gid":540, + "height":10, + "id":301, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":474.989, + "y":302.128 + }, + { + "gid":540, + "height":10, + "id":302, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":406.807, + "y":289.554 + }, + { + "gid":540, + "height":10, + "id":303, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":416.807, + "y":289.554 + }, + { + "gid":540, + "height":10, + "id":304, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":426.807, + "y":289.554 + }, + { + "gid":540, + "height":10, + "id":305, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":436.807, + "y":289.554 + }, + { + "gid":540, + "height":10, + "id":306, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":446.148, + "y":288.673 + }, + { + "gid":540, + "height":10, + "id":307, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":456.148, + "y":288.673 + }, + { + "gid":540, + "height":10, + "id":308, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":466.148, + "y":288.673 + }, + { + "gid":540, + "height":10, + "id":309, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":476.148, + "y":288.673 + }, + + { + "gid":540, + "height":10, + "id":310, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":327.557, + "y":270.856 + }, + { + "gid":540, + "height":10, + "id":311, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":337.557, + "y":270.856 + }, + { + "gid":540, + "height":10, + "id":312, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":347.557, + "y":270.856 + }, + { + "gid":540, + "height":10, + "id":313, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":357.557, + "y":270.856 + }, + { + "gid":540, + "height":10, + "id":314, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":366.648, + "y":271.311 + }, + { + "gid":540, + "height":10, + "id":315, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":376.648, + "y":271.311 + }, + { + "gid":540, + "height":10, + "id":316, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":386.648, + "y":271.311 + }, + { + "gid":540, + "height":10, + "id":317, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":396.648, + "y":271.311 + }, + { + "gid":540, + "height":10, + "id":318, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":328.466, + "y":258.737 + }, + { + "gid":540, + "height":10, + "id":319, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":338.466, + "y":258.737 + }, + { + "gid":540, + "height":10, + "id":320, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":348.466, + "y":258.737 + }, + { + "gid":540, + "height":10, + "id":321, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":358.466, + "y":258.737 + }, + { + "gid":540, + "height":10, + "id":322, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":367.807, + "y":257.856 + }, + { + "gid":540, + "height":10, + "id":323, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":377.807, + "y":257.856 + }, + { + "gid":540, + "height":10, + "id":324, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":387.807, + "y":257.856 + }, + { + "gid":540, + "height":10, + "id":325, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":397.807, + "y":257.856 + }, + { + "gid":540, + "height":10, + "id":326, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":406.807, + "y":271.128 + }, + { + "gid":540, + "height":10, + "id":327, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":416.807, + "y":271.128 + }, + { + "gid":540, + "height":10, + "id":328, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":426.807, + "y":271.128 + }, + { + "gid":540, + "height":10, + "id":329, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":436.807, + "y":271.128 + }, + { + "gid":540, + "height":10, + "id":330, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":445.898, + "y":271.583 + }, + { + "gid":540, + "height":10, + "id":331, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":455.898, + "y":271.583 + }, + { + "gid":540, + "height":10, + "id":332, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":465.898, + "y":271.583 + }, + { + "gid":540, + "height":10, + "id":333, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":475.898, + "y":271.583 + }, + { + "gid":540, + "height":10, + "id":334, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":407.716, + "y":259.009 + }, + { + "gid":540, + "height":10, + "id":335, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":417.716, + "y":259.009 + }, + { + "gid":540, + "height":10, + "id":336, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":427.716, + "y":259.009 + }, + { + "gid":540, + "height":10, + "id":337, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":437.716, + "y":259.009 + }, + { + "gid":540, + "height":10, + "id":338, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":447.057, + "y":258.128 + }, + { + "gid":540, + "height":10, + "id":339, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":457.057, + "y":258.128 + }, + { + "gid":540, + "height":10, + "id":340, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":467.057, + "y":258.128 + }, + { + "gid":540, + "height":10, + "id":341, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":477.057, + "y":258.128 + }, + + { + "gid":540, + "height":10, + "id":342, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":21.6097, + "y":395.083 + }, + { + "gid":540, + "height":10, + "id":343, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":31.6097, + "y":395.083 + }, + { + "gid":540, + "height":10, + "id":344, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":41.6097, + "y":395.083 + }, + { + "gid":540, + "height":10, + "id":345, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":51.6097, + "y":395.083 + }, + { + "gid":540, + "height":10, + "id":346, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":60.7007, + "y":395.538 + }, + { + "gid":540, + "height":10, + "id":347, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":70.7007, + "y":395.538 + }, + { + "gid":540, + "height":10, + "id":348, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":80.7007, + "y":395.538 + }, + { + "gid":540, + "height":10, + "id":349, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":90.7007, + "y":395.538 + }, + { + "gid":540, + "height":10, + "id":350, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":22.5187, + "y":382.964 + }, + { + "gid":540, + "height":10, + "id":351, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":32.5187, + "y":382.964 + }, + { + "gid":540, + "height":10, + "id":352, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":42.5187, + "y":382.964 + }, + { + "gid":540, + "height":10, + "id":353, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":52.5187, + "y":382.964 + }, + { + "gid":540, + "height":10, + "id":354, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":61.8597, + "y":382.083 + }, + { + "gid":540, + "height":10, + "id":355, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":71.8597, + "y":382.083 + }, + { + "gid":540, + "height":10, + "id":356, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":81.8597, + "y":382.083 + }, + { + "gid":540, + "height":10, + "id":357, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":91.8597, + "y":382.083 + }, + { + "gid":540, + "height":10, + "id":358, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":100.86, + "y":395.355 + }, + { + "gid":540, + "height":10, + "id":359, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":110.86, + "y":395.355 + }, + { + "gid":540, + "height":10, + "id":360, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":120.86, + "y":395.355 + }, + { + "gid":540, + "height":10, + "id":361, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":130.86, + "y":395.355 + }, + { + "gid":540, + "height":10, + "id":362, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":139.951, + "y":395.81 + }, + { + "gid":540, + "height":10, + "id":363, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":149.951, + "y":395.81 + }, + { + "gid":540, + "height":10, + "id":364, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":159.951, + "y":395.81 + }, + { + "gid":540, + "height":10, + "id":365, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":169.951, + "y":395.81 + }, + { + "gid":540, + "height":10, + "id":366, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":101.769, + "y":383.236 + }, + { + "gid":540, + "height":10, + "id":367, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":111.769, + "y":383.236 + }, + { + "gid":540, + "height":10, + "id":368, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":121.769, + "y":383.236 + }, + { + "gid":540, + "height":10, + "id":369, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":131.769, + "y":383.236 + }, + { + "gid":540, + "height":10, + "id":370, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":141.11, + "y":382.355 + }, + { + "gid":540, + "height":10, + "id":371, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":151.11, + "y":382.355 + }, + { + "gid":540, + "height":10, + "id":372, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":161.11, + "y":382.355 + }, + { + "gid":540, + "height":10, + "id":373, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":171.11, + "y":382.355 + }, + + { + "gid":540, + "height":10, + "id":374, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":23.3147, + "y":368.401 + }, + { + "gid":540, + "height":10, + "id":375, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":33.3147, + "y":368.401 + }, + { + "gid":540, + "height":10, + "id":376, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":43.3147, + "y":368.401 + }, + { + "gid":540, + "height":10, + "id":377, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":53.3147, + "y":368.401 + }, + { + "gid":540, + "height":10, + "id":378, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":62.4057, + "y":368.856 + }, + { + "gid":540, + "height":10, + "id":379, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":72.4057, + "y":368.856 + }, + { + "gid":540, + "height":10, + "id":380, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":82.4057, + "y":368.856 + }, + { + "gid":540, + "height":10, + "id":381, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":92.4057, + "y":368.856 + }, + { + "gid":540, + "height":10, + "id":382, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":24.2237, + "y":356.282 + }, + { + "gid":540, + "height":10, + "id":383, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":34.2237, + "y":356.282 + }, + { + "gid":540, + "height":10, + "id":384, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":44.2237, + "y":356.282 + }, + { + "gid":540, + "height":10, + "id":385, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":54.2237, + "y":356.282 + }, + { + "gid":540, + "height":10, + "id":386, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":63.5647, + "y":355.401 + }, + { + "gid":540, + "height":10, + "id":387, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":73.5647, + "y":355.401 + }, + { + "gid":540, + "height":10, + "id":388, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":83.5647, + "y":355.401 + }, + { + "gid":540, + "height":10, + "id":389, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":93.5647, + "y":355.401 + }, + { + "gid":540, + "height":10, + "id":390, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":102.565, + "y":368.673 + }, + { + "gid":540, + "height":10, + "id":391, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":112.565, + "y":368.673 + }, + { + "gid":540, + "height":10, + "id":392, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":122.565, + "y":368.673 + }, + { + "gid":540, + "height":10, + "id":393, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":132.565, + "y":368.673 + }, + { + "gid":540, + "height":10, + "id":394, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":141.656, + "y":369.128 + }, + { + "gid":540, + "height":10, + "id":395, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":151.656, + "y":369.128 + }, + { + "gid":540, + "height":10, + "id":396, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":161.656, + "y":369.128 + }, + { + "gid":540, + "height":10, + "id":397, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":171.656, + "y":369.128 + }, + { + "gid":540, + "height":10, + "id":398, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":103.474, + "y":356.554 + }, + { + "gid":540, + "height":10, + "id":399, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":113.474, + "y":356.554 + }, + { + "gid":540, + "height":10, + "id":400, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":123.474, + "y":356.554 + }, + { + "gid":540, + "height":10, + "id":401, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":133.474, + "y":356.554 + }, + { + "gid":540, + "height":10, + "id":402, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":142.815, + "y":355.673 + }, + { + "gid":540, + "height":10, + "id":403, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":152.815, + "y":355.673 + }, + { + "gid":540, + "height":10, + "id":404, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":162.815, + "y":355.673 + }, + { + "gid":540, + "height":10, + "id":405, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":172.815, + "y":355.673 + }, + + { + "gid":540, + "height":10, + "id":406, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":24.2237, + "y":337.856 + }, + { + "gid":540, + "height":10, + "id":407, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":34.2237, + "y":337.856 + }, + { + "gid":540, + "height":10, + "id":408, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":44.2237, + "y":337.856 + }, + { + "gid":540, + "height":10, + "id":409, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":54.2237, + "y":337.856 + }, + { + "gid":540, + "height":10, + "id":410, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":63.3147, + "y":338.311 + }, + { + "gid":540, + "height":10, + "id":411, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":73.3147, + "y":338.311 + }, + { + "gid":540, + "height":10, + "id":412, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":83.3147, + "y":338.311 + }, + { + "gid":540, + "height":10, + "id":413, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":93.3147, + "y":338.311 + }, + { + "gid":540, + "height":10, + "id":414, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":25.1327, + "y":325.737 + }, + { + "gid":540, + "height":10, + "id":415, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":35.1327, + "y":325.737 + }, + { + "gid":540, + "height":10, + "id":416, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":45.1327, + "y":325.737 + }, + { + "gid":540, + "height":10, + "id":417, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":55.1327, + "y":325.737 + }, + { + "gid":540, + "height":10, + "id":418, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":64.4737, + "y":324.856 + }, + { + "gid":540, + "height":10, + "id":419, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":74.4737, + "y":324.856 + }, + { + "gid":540, + "height":10, + "id":420, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":84.4737, + "y":324.856 + }, + { + "gid":540, + "height":10, + "id":421, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":94.4737, + "y":324.856 + }, + { + "gid":540, + "height":10, + "id":422, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":103.474, + "y":338.128 + }, + { + "gid":540, + "height":10, + "id":423, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":113.474, + "y":338.128 + }, + { + "gid":540, + "height":10, + "id":424, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":123.474, + "y":338.128 + }, + { + "gid":540, + "height":10, + "id":425, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":133.474, + "y":338.128 + }, + { + "gid":540, + "height":10, + "id":426, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":142.565, + "y":338.583 + }, + { + "gid":540, + "height":10, + "id":427, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":152.565, + "y":338.583 + }, + { + "gid":540, + "height":10, + "id":428, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":162.565, + "y":338.583 + }, + { + "gid":540, + "height":10, + "id":429, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":172.565, + "y":338.583 + }, + { + "gid":540, + "height":10, + "id":430, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":104.383, + "y":326.009 + }, + { + "gid":540, + "height":10, + "id":431, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":114.383, + "y":326.009 + }, + { + "gid":540, + "height":10, + "id":432, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":124.383, + "y":326.009 + }, + { + "gid":540, + "height":10, + "id":433, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":134.383, + "y":326.009 + }, + { + "gid":540, + "height":10, + "id":434, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":143.724, + "y":325.128 + }, + { + "gid":540, + "height":10, + "id":435, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":153.724, + "y":325.128 + }, + { + "gid":540, + "height":10, + "id":436, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":163.724, + "y":325.128 + }, + { + "gid":540, + "height":10, + "id":437, + "name":"soldier", + "rotation":0, + "type":"", + "visible":true, + "width":10, + "x":173.724, + "y":325.128 }], "opacity":1, "type":"objectgroup", @@ -582,7 +4949,7 @@ "y":0 }], "nextlayerid":10, - "nextobjectid":22, + "nextobjectid":575, "orientation":"orthogonal", "renderorder":"right-down", "tiledversion":"1.10.2", diff --git a/game/ai_actions.c b/game/ai_actions.c index 04af2e3..bfebb1e 100644 --- a/game/ai_actions.c +++ b/game/ai_actions.c @@ -24,7 +24,9 @@ BzBTStatus aiMoveTo(AIBlackboard *data, f32 dt) { return BZ_BT_SUCCESS; } if (!ecs_has(ECS, data->entity, Path)) { - entitySetPath(data->entity, target, game); + bool pathfindSuccessful = entitySetPath(data->entity, target, game); + if (!pathfindSuccessful) + return BZ_BT_FAIL; } if (ecs_has(ECS, data->entity, Orientation)) { Orientation *orientation = ecs_get_mut(ECS, data->entity, Orientation); diff --git a/game/input.h b/game/input.h index 524bbd2..f696caa 100644 --- a/game/input.h +++ b/game/input.h @@ -57,6 +57,8 @@ typedef struct InputState { Vec2i buildingSize; // SELECTED_UNITS Rectangle pickArea; + i32 numUnits; + Vector2 *unitPlacePos; // SELECTED_OBJECT diff --git a/game/main.c b/game/main.c index d53be25..fab9db2 100644 --- a/game/main.c +++ b/game/main.c @@ -250,8 +250,10 @@ bool init(void *userData) { game->BTs.moveTo = root; // Just a single action for now - node = bzBTAction(nodePool, root, (BzBTActionFn) aiMoveTo); + BzBTNode *seq = bzBTCompSequence(nodePool, root); + node = bzBTAction(nodePool, seq, (BzBTActionFn) aiMoveTo); bzBTNodeSetName(node, "moveTo"); + bzBTDecorDelay(nodePool, seq, 6.0f); } // evade BzBTNode *evade = NULL; @@ -547,36 +549,6 @@ static void renderGame(Game *game, float dt) { } ecs_defer_end(ECS); - -#if 0 - Vector2 target = GetMousePosition(); - target = GetScreenToWorld2D(target, game->camera); - static f32 elapsed = 0; - static bool attack = false; - static Vector2 lockedTarget; - if (!attack && IsMouseButtonPressed(0)) { - attack = true; - lockedTarget = target; - elapsed = 0; - } - elapsed += dt * 2; - elapsed = Clamp(elapsed, 0, 1.0f); - attack = false; - if (worker && false) { - Position *pos = ecs_get_mut(ECS, worker, Position); - DrawCircle(pos->x, pos->y, 2.0f, BLUE); - Vector2 attackVector = Vector2Subtract(lockedTarget, *pos); - attackVector = Vector2Normalize(attackVector); - attackVector = Vector2Scale(attackVector, 2.0f); - DrawLine(pos->x, pos->y, pos->x + attackVector.x, pos->y + attackVector.y, RED); - Rotation *rot = ecs_get_mut(ECS, worker, Rotation); - f32 targetRot = Vector2Angle(*pos, lockedTarget); - targetRot += 25 * DEG2RAD; - *rot = targetRot * bzEase(BZ_EASE_IN_BACK, elapsed); - bzLogInfo("%.2f", Vector2Angle(*pos, lockedTarget) * RAD2DEG); - } -#endif - ecs_progress(ECS, dt); ecs_enable(ECS, renderDebugPathSystem, game->debug.drawPath); ecs_enable(ECS, renderCollidersSystem, game->debug.drawEntityColliders); diff --git a/game/systems/s_entity.c b/game/systems/s_entity.c index c848a0b..bc0724e 100644 --- a/game/systems/s_entity.c +++ b/game/systems/s_entity.c @@ -183,7 +183,6 @@ void entityUpdate(ecs_iter_t *it) { // Attack update if (canAttack && ecs_has(ECS, other, Health) && ecs_has(ECS, other, Owner)) { - Health *otherHealth = ecs_get_mut(ECS, other, Health); Player otherPlayer = ecs_get(ECS, other, Owner)->player; if (otherPlayer != owner[i].player) { @@ -219,7 +218,7 @@ void entityUpdate(ecs_iter_t *it) { velocity[i] = Vector2Subtract(velocity[i], dir); } - slowDown = BZ_MIN(slowDown, 0.65f); + slowDown = BZ_MIN(slowDown, 0.2f); if (!stationary && slowDown > 0.0f) { velocity[i] = Vector2Scale(velocity[i], 1 - slowDown); } diff --git a/game/systems/s_event.c b/game/systems/s_event.c index ba3e5fc..78e4fba 100644 --- a/game/systems/s_event.c +++ b/game/systems/s_event.c @@ -44,6 +44,7 @@ void damageEvent(ecs_entity_t entity, DamageEvent event) { }); // Remove, so it becomes inactive ecs_remove_id(ECS, entity, Selectable); + ecs_remove_id(ECS, entity, Selected); ecs_remove(ECS, entity, Health); ecs_remove(ECS, entity, Unit); ecs_remove(ECS, entity, Building); diff --git a/game/systems/s_input.c b/game/systems/s_input.c index 2cb3fc3..32bdc93 100644 --- a/game/systems/s_input.c +++ b/game/systems/s_input.c @@ -8,6 +8,7 @@ #include #include #include +#include ecs_entity_t queryEntity(BzSpatialGrid *entityGrid, Vector2 point, ecs_entity_t tag); @@ -21,7 +22,7 @@ void addEntityToInspected(ecs_entity_t entity, Game *game); static void iterateSelectedUnits(ecs_query_t *query, void (*fn)(ecs_entity_t entity, Position *pos)); static void iterRemovePaths(ecs_entity_t entity, Position *pos); -void placeUnits(i32 numUnits, f32 unitSpacing, Vector2 start, Vector2 end, BzTileMap *map, Vector2 **outPlaces); +i32 placeUnits(i32 numUnits, f32 unitSpacing, Vector2 start, Vector2 end, BzTileMap *map, Vector2 *outPlaces); void resetInputState(InputState *input) { input->cursor = CURSOR_NONE; @@ -73,6 +74,28 @@ void inputPrimaryAction(Game *game, InputState *input) { if (selectedCount == 0) resetInputState(input); } + +typedef struct EntityPosPair { + ecs_entity_t entity; + Vector2 pos; +} EntityPosPair; +static int vec2CmpZero(const void *lhsData, const void *rhsData) { + const Vector2 *lhs = lhsData; + const Vector2 *rhs = rhsData; + + f32 dstL = Vector2DistanceSqr(Vector2Zero(), *lhs); + f32 dstR = Vector2DistanceSqr(Vector2Zero(), *rhs); + + if (dstL < dstR) return -1; + if (dstL > dstR) return 1; + return 0; +} +static int entityPosPairCmpZero(const void *lhsData, const void *rhsData) { + const EntityPosPair *lhs = lhsData; + const EntityPosPair *rhs = rhsData; + + return vec2CmpZero(&lhs->pos, &rhs->pos); +} void inputUnitAction(Game *game, InputState *input) { ecs_query_t *query = input->queries.selected; BzTileMap *map = &game->map; @@ -155,35 +178,58 @@ void inputUnitAction(Game *game, InputState *input) { return; } - if (isInputBtnJustUp(input, actionBtn)) { + // Unit place position + Vector2 *positions = bzStackAlloc(&game->stackAlloc, sizeof(*positions) * numUnits); + Vector2 start = Vector2Zero(); + Vector2 end = Vector2Zero(); + if (isInputBtnDragged(input, actionBtn) || isInputBtnJustDragged(input, actionBtn)) { + start = input->mouseDownWorld; + end = input->mouseWorld; + } else { + start = end = input->mouseWorld; + f32 displace = 8 * numUnits; + displace = BZ_MIN(displace, 50.0f); + start.x -= displace; + end.x += displace + 2; + } + i32 placedUnits = placeUnits(numUnits, 6.0f, start, end, map, positions); + input->numUnits = placedUnits; + input->unitPlacePos = positions; + + if (IsMouseButtonReleased(actionBtn)) { // Note: We mustn't use ecs ecs_remove_all since this will also // remove ongoing paths that are not part of this query. ecs_defer_begin(ECS); iterateSelectedUnits(query, iterRemovePaths); ecs_defer_end(ECS); - const Position target = input->mouseWorld; + EntityPosPair *entities = bzStackAlloc(&game->stackAlloc, sizeof(*entities) * input->numUnits); ecs_iter_t it = ecs_query_iter(ECS, query); - ecs_defer_begin(ECS); + i32 unitIdx = 0; while (ecs_iter_next(&it)) { for (i32 i = 0; i < it.count; i++) { + if (unitIdx >= input->numUnits) + break; const ecs_entity_t entity = it.entities[i]; - setAIBehaviour(entity, game->BTs.moveTo, &(AIBlackboard) { - .moveToPos = target, - .proximity = 6.0f, - }); - /* - clearActions(entity, game); - addAction(entity, game, &(const Action) { - .type = ACTION_MOVE_TO, - .as.moveTo.target = target, - .as.moveTo.proximityThreshold = 6.0f, - }); - */ + if (!ecs_has(ECS, entity, Position)) continue; + entities[unitIdx++] = (EntityPosPair) { + .entity = entity, + .pos = *ecs_get(ECS, entity, Position) + }; } } - ecs_defer_end(ECS); + + qsort(entities, unitIdx, sizeof(*entities), entityPosPairCmpZero); + qsort(input->unitPlacePos, unitIdx, sizeof(*input->unitPlacePos), vec2CmpZero); + + for (i32 i = 0; i < unitIdx; i++) { + ecs_entity_t entity = entities[i].entity; + setAIBehaviour(entity, game->BTs.moveTo, &(AIBlackboard) { + .moveToPos = positions[i], + .proximity = 1.0f, + }); + } } } @@ -194,6 +240,9 @@ void updatePlayerInput() { Game *game = ecs_singleton_get_mut(ECS, Game); InputState *input = ecs_singleton_get_mut(ECS, InputState); + input->numUnits = 0; + input->unitPlacePos = NULL; + const f32 maxZoom = 4.5f; const f32 minZoom = 0.9f; if (input->canUseKeyboard) { @@ -370,6 +419,12 @@ void drawPlayerInputUIGround() { } } + if (input->unitPlacePos) { + for (i32 i = 0; i < input->numUnits; i++) { + DrawCircleV(input->unitPlacePos[i], 2.0f, RED); + } + } + } void drawPlayerInputUI() { @@ -512,8 +567,14 @@ static bool canPlaceUnit(Vector2 pos, f32 space, BzTileMap *map) { return true; } +static bool unitWithinMap(Vector2 pos, BzTileMap *map) { + f32 x = pos.x / map->tileWidth; + f32 y = pos.y / map->tileHeight; -void placeUnits(i32 numUnits, f32 unitSpacing, Vector2 start, Vector2 end, BzTileMap *map, Vector2 **outPlaces) { + return !(x < 0 || y < 0 || x >= map->width || y >= map->height); +} +i32 placeUnits(i32 numUnits, f32 unitSpacing, Vector2 start, Vector2 end, BzTileMap *map, Vector2 *outPlaces) { + i32 outIdx = 0; f32 angle = Vector2Angle(start, end); f32 lineLength = Vector2Distance(start, end); @@ -527,13 +588,15 @@ void placeUnits(i32 numUnits, f32 unitSpacing, Vector2 start, Vector2 end, BzTil pos.y += unitSpacing * 2.0f; } Vector2 unitPos = Vector2Add(start, Vector2Rotate(pos, angle)); - if (!canPlaceUnit(unitPos, 4.0f, map)) { + bool withinMap = unitWithinMap(unitPos, map); + if (canPlaceUnit(unitPos, 4.0f, map) && withinMap) { + outPlaces[outIdx++] = unitPos; + } else if (withinMap) { i--; - } else { - bzArrayPush(*outPlaces, unitPos); } pos.x += unitSpacing * 2.0f; } + return outIdx; } static void iterateSelectedUnits(ecs_query_t *query, void (*fn)(ecs_entity_t entity, Position *pos)) { diff --git a/game/systems/s_ui.c b/game/systems/s_ui.c index 2469cdc..ece666e 100644 --- a/game/systems/s_ui.c +++ b/game/systems/s_ui.c @@ -291,8 +291,8 @@ void drawMainMenuUI(Game *game, f32 dt) { if (uiMainMenuButton("Play", true)) { setScreen(game, SCREEN_GAME); unloadMap(game); - loadMap(game, "assets/maps/tree_test.tmj"); - //loadMap(game, "assets/maps/entity_test.tmj"); + //loadMap(game, "assets/maps/tree_test.tmj"); + loadMap(game, "assets/maps/entity_test.tmj"); //loadMap(game, "assets/maps/map_01.tmj"); } if (uiMainMenuButton("Settings", true)) { diff --git a/rawAssets/entity_test.tmx b/rawAssets/entity_test.tmx index 54f5408..bd563f3 100644 --- a/rawAssets/entity_test.tmx +++ b/rawAssets/entity_test.tmx @@ -1,5 +1,5 @@ - +