add camera system and optimize y sorting for rendering
This commit is contained in:
@@ -6,357 +6,357 @@ filter: Nearest, Nearest
|
|||||||
repeat: none
|
repeat: none
|
||||||
chest/chest
|
chest/chest
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 2, 2
|
xy: 482, 237
|
||||||
size: 16, 16
|
size: 16, 16
|
||||||
orig: 16, 16
|
orig: 16, 16
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
house/house
|
house/house
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 2, 142
|
xy: 2, 141
|
||||||
size: 80, 112
|
size: 80, 112
|
||||||
orig: 80, 112
|
orig: 80, 112
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
oak_tree/oak_tree
|
oak_tree/oak_tree
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 2, 58
|
xy: 2, 74
|
||||||
size: 64, 80
|
size: 41, 63
|
||||||
orig: 64, 80
|
orig: 41, 63
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
player/idle_down
|
player/idle_down
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 86, 222
|
xy: 86, 221
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 0
|
index: 0
|
||||||
player/idle_down
|
player/idle_down
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 2, 22
|
xy: 2, 38
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 1
|
index: 1
|
||||||
player/idle_down
|
player/idle_down
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 86, 186
|
xy: 47, 105
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 2
|
index: 2
|
||||||
player/idle_down
|
player/idle_down
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 122, 222
|
xy: 86, 185
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 3
|
index: 3
|
||||||
player/idle_down
|
player/idle_down
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 86, 150
|
xy: 122, 221
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 4
|
index: 4
|
||||||
player/idle_down
|
player/idle_down
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 122, 186
|
xy: 2, 2
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 5
|
index: 5
|
||||||
player/idle_left
|
player/idle_left
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 158, 222
|
xy: 86, 149
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 0
|
index: 0
|
||||||
player/idle_left
|
player/idle_left
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 122, 150
|
xy: 122, 185
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 1
|
index: 1
|
||||||
player/idle_left
|
player/idle_left
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 158, 186
|
xy: 158, 221
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 2
|
index: 2
|
||||||
player/idle_left
|
player/idle_left
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 194, 222
|
xy: 122, 149
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 3
|
index: 3
|
||||||
player/idle_left
|
player/idle_left
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 158, 150
|
xy: 158, 185
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 4
|
index: 4
|
||||||
player/idle_left
|
player/idle_left
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 194, 186
|
xy: 194, 221
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 5
|
index: 5
|
||||||
player/idle_right
|
player/idle_right
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 230, 222
|
xy: 158, 149
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 0
|
index: 0
|
||||||
player/idle_right
|
player/idle_right
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 194, 150
|
xy: 194, 185
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 1
|
index: 1
|
||||||
player/idle_right
|
player/idle_right
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 230, 186
|
xy: 230, 221
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 2
|
index: 2
|
||||||
player/idle_right
|
player/idle_right
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 266, 222
|
xy: 194, 149
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 3
|
index: 3
|
||||||
player/idle_right
|
player/idle_right
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 230, 150
|
xy: 230, 185
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 4
|
index: 4
|
||||||
player/idle_right
|
player/idle_right
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 266, 186
|
xy: 266, 221
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 5
|
index: 5
|
||||||
player/idle_up
|
player/idle_up
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 302, 222
|
xy: 230, 149
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 0
|
index: 0
|
||||||
player/idle_up
|
player/idle_up
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 266, 150
|
xy: 266, 185
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 1
|
index: 1
|
||||||
player/idle_up
|
player/idle_up
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 302, 186
|
xy: 302, 221
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 2
|
index: 2
|
||||||
player/idle_up
|
player/idle_up
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 338, 222
|
xy: 266, 149
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 3
|
index: 3
|
||||||
player/idle_up
|
player/idle_up
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 302, 150
|
xy: 302, 185
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 4
|
index: 4
|
||||||
player/idle_up
|
player/idle_up
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 338, 186
|
xy: 338, 221
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 5
|
index: 5
|
||||||
player/walk_down
|
player/walk_down
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 374, 222
|
xy: 302, 149
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 0
|
index: 0
|
||||||
player/walk_down
|
player/walk_down
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 338, 150
|
xy: 338, 185
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 1
|
index: 1
|
||||||
player/walk_down
|
player/walk_down
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 374, 186
|
xy: 374, 221
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 2
|
index: 2
|
||||||
player/walk_down
|
player/walk_down
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 410, 222
|
xy: 338, 149
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 3
|
index: 3
|
||||||
player/walk_down
|
player/walk_down
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 374, 150
|
xy: 374, 185
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 4
|
index: 4
|
||||||
player/walk_down
|
player/walk_down
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 410, 186
|
xy: 410, 221
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 5
|
index: 5
|
||||||
player/walk_left
|
player/walk_left
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 446, 222
|
xy: 374, 149
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 0
|
index: 0
|
||||||
player/walk_left
|
player/walk_left
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 410, 150
|
xy: 410, 185
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 1
|
index: 1
|
||||||
player/walk_left
|
player/walk_left
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 446, 186
|
xy: 446, 221
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 2
|
index: 2
|
||||||
player/walk_left
|
player/walk_left
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 446, 150
|
xy: 410, 149
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 3
|
index: 3
|
||||||
player/walk_left
|
player/walk_left
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 38, 22
|
xy: 446, 185
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 4
|
index: 4
|
||||||
player/walk_left
|
player/walk_left
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 70, 106
|
xy: 446, 149
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 5
|
index: 5
|
||||||
player/walk_right
|
player/walk_right
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 70, 70
|
xy: 47, 69
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 0
|
index: 0
|
||||||
player/walk_right
|
player/walk_right
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 106, 114
|
xy: 38, 33
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 1
|
index: 1
|
||||||
player/walk_right
|
player/walk_right
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 106, 78
|
xy: 74, 33
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 2
|
index: 2
|
||||||
player/walk_right
|
player/walk_right
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 142, 114
|
xy: 86, 113
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 3
|
index: 3
|
||||||
player/walk_right
|
player/walk_right
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 142, 78
|
xy: 122, 113
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 4
|
index: 4
|
||||||
player/walk_right
|
player/walk_right
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 178, 114
|
xy: 158, 113
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 5
|
index: 5
|
||||||
player/walk_up
|
player/walk_up
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 178, 78
|
xy: 194, 113
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 0
|
index: 0
|
||||||
player/walk_up
|
player/walk_up
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 214, 114
|
xy: 230, 113
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 1
|
index: 1
|
||||||
player/walk_up
|
player/walk_up
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 214, 78
|
xy: 266, 113
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 2
|
index: 2
|
||||||
player/walk_up
|
player/walk_up
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 250, 114
|
xy: 302, 113
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 3
|
index: 3
|
||||||
player/walk_up
|
player/walk_up
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 250, 78
|
xy: 338, 113
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: 4
|
index: 4
|
||||||
player/walk_up
|
player/walk_up
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 286, 114
|
xy: 374, 113
|
||||||
size: 32, 32
|
size: 32, 32
|
||||||
orig: 32, 32
|
orig: 32, 32
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<map version="1.11" tiledversion="1.11.0" orientation="orthogonal" renderorder="right-down" width="18" height="16" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="11">
|
<map version="1.10" tiledversion="1.11.0" orientation="orthogonal" renderorder="right-down" width="18" height="16" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="11">
|
||||||
<tileset firstgid="1" source="objects.tsx"/>
|
<tileset firstgid="1" source="objects.tsx"/>
|
||||||
<tileset firstgid="6" source="tileset.tsx"/>
|
<tileset firstgid="6" source="tileset.tsx"/>
|
||||||
<layer id="1" name="ground" width="18" height="16">
|
<layer id="1" name="ground" width="18" height="16">
|
||||||
@@ -31,6 +31,7 @@
|
|||||||
<object id="9" gid="5" x="32" y="32" width="16" height="16"/>
|
<object id="9" gid="5" x="32" y="32" width="16" height="16"/>
|
||||||
<object id="10" gid="2" x="25" y="214" width="32" height="32">
|
<object id="10" gid="2" x="25" y="214" width="32" height="32">
|
||||||
<properties>
|
<properties>
|
||||||
|
<property name="camFollow" type="bool" value="true"/>
|
||||||
<property name="controller" type="bool" value="true"/>
|
<property name="controller" type="bool" value="true"/>
|
||||||
</properties>
|
</properties>
|
||||||
</object>
|
</object>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<tile id="1" type="Object">
|
<tile id="1" type="Object">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="animation" value="IDLE"/>
|
<property name="animation" value="IDLE"/>
|
||||||
<property name="speed" type="float" value="2"/>
|
<property name="speed" type="float" value="3.5"/>
|
||||||
</properties>
|
</properties>
|
||||||
<image source="objects/player.png" width="32" height="32"/>
|
<image source="objects/player.png" width="32" height="32"/>
|
||||||
<objectgroup draworder="index" id="2">
|
<objectgroup draworder="index" id="2">
|
||||||
@@ -20,6 +20,9 @@
|
|||||||
</objectgroup>
|
</objectgroup>
|
||||||
</tile>
|
</tile>
|
||||||
<tile id="3" type="Prop">
|
<tile id="3" type="Prop">
|
||||||
|
<properties>
|
||||||
|
<property name="sortOffsetY" type="int" value="8"/>
|
||||||
|
</properties>
|
||||||
<image source="objects/oak_tree.png" width="64" height="80"/>
|
<image source="objects/oak_tree.png" width="64" height="80"/>
|
||||||
<objectgroup draworder="index" id="2">
|
<objectgroup draworder="index" id="2">
|
||||||
<object id="2" x="24" y="63">
|
<object id="2" x="24" y="63">
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<map version="1.10" tiledversion="1.11.1-99-gec89c545" orientation="orthogonal" renderorder="right-down" width="18" height="16" tilewidth="32" tileheight="32" infinite="0" nextlayerid="6" nextobjectid="3">
|
|
||||||
<tileset firstgid="1" source="tileset.tsx"/>
|
|
||||||
<tileset firstgid="99" source="objects.tsx"/>
|
|
||||||
<layer id="1" name="ground" width="18" height="16">
|
|
||||||
<data encoding="base64" compression="zlib">
|
|
||||||
eJx9k1EOgDAMQnuC0fufVj9c0jyhH426RmiBdVXpq/NWf89b7DXe3XfjHwHvGL5e+hfD9RR4Jyfx545acLjf1INcqr8W3CdhzRkFbrc3+elb0oN7J4+pjfNl027z12XM4au8rvOcZw6bnnBWzpw0Tr47zxKu67m7xDwkz1MuqWnCp5bprqQMu5mYGZfl2X8AE4YQ2w==
|
|
||||||
</data>
|
|
||||||
</layer>
|
|
||||||
<layer id="3" name="water" width="18" height="16">
|
|
||||||
<data encoding="base64" compression="zlib">
|
|
||||||
eJxjYBgFo2AUjIKBAQAEgAAB
|
|
||||||
</data>
|
|
||||||
</layer>
|
|
||||||
<layer id="4" name="water2" width="18" height="16">
|
|
||||||
<data encoding="base64" compression="zlib">
|
|
||||||
eJxjYBgFo2AUjIKBAQAEgAAB
|
|
||||||
</data>
|
|
||||||
</layer>
|
|
||||||
<layer id="2" name="props" width="18" height="16">
|
|
||||||
<data encoding="base64" compression="zlib">
|
|
||||||
eJxjYBgFo2AUjIKBAQAEgAAB
|
|
||||||
</data>
|
|
||||||
</layer>
|
|
||||||
<objectgroup id="5" name="objects">
|
|
||||||
<object id="2" gid="99" x="67.2153" y="411.713" width="64" height="64"/>
|
|
||||||
</objectgroup>
|
|
||||||
</map>
|
|
||||||
@@ -1,6 +1,106 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<tileset version="1.10" tiledversion="1.11.0" name="tileset" tilewidth="16" tileheight="16" spacing="16" margin="8" tilecount="128" columns="8">
|
<tileset version="1.10" tiledversion="1.11.0" name="tileset" tilewidth="16" tileheight="16" spacing="16" margin="8" tilecount="128" columns="8">
|
||||||
<image source="tileset.png" width="256" height="512"/>
|
<image source="tileset.png" width="256" height="512"/>
|
||||||
|
<tile id="0">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="8" y="9" width="8" height="7"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="1">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="0" y="7" width="16" height="7"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="2">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="0" y="9" width="8" height="7"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="3">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="9" y="9" width="7" height="7"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="4">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="0" y="7" width="16" height="7"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="5">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="0" y="9" width="8" height="7"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="8">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="8" y="0" width="4" height="16"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="10">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="4" y="0" width="5" height="16"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="11">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="7" y="0" width="5" height="16"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="13">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="4" y="0" width="5" height="16"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="16">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="9" y="0" width="7" height="8"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="17">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="0" y="4" width="16" height="4"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="18">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="0" y="0" width="7" height="7"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="19">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="8" y="0" width="8" height="6"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="20">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="0" y="6" width="16" height="4"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="21">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="0" y="0" width="8" height="7"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="24">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="4" y="5" width="12" height="11"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="25">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="0" y="5" width="12" height="11"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="32">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="4" y="0" width="12" height="14"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
|
<tile id="33">
|
||||||
|
<objectgroup draworder="index" id="2">
|
||||||
|
<object id="1" x="0" y="0" width="12" height="14"/>
|
||||||
|
</objectgroup>
|
||||||
|
</tile>
|
||||||
<wangsets>
|
<wangsets>
|
||||||
<wangset name="Unnamed Set" type="corner" tile="-1">
|
<wangset name="Unnamed Set" type="corner" tile="-1">
|
||||||
<wangcolor name="gras" color="#ff0000" tile="-1" probability="1"/>
|
<wangcolor name="gras" color="#ff0000" tile="-1" probability="1"/>
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 5.3 KiB |
@@ -20,8 +20,8 @@ import io.github.com.quillraven.screen.LoadingScreen;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class GdxGame extends Game {
|
public class GdxGame extends Game {
|
||||||
public static final float WORLD_HEIGHT = 11f;
|
public static final float WORLD_HEIGHT = 9f;
|
||||||
public static final float WORLD_WIDTH = 6f;
|
public static final float WORLD_WIDTH = 16f;
|
||||||
public static final float UNIT_SCALE = 1f / 16f;
|
public static final float UNIT_SCALE = 1f / 16f;
|
||||||
|
|
||||||
private Batch batch;
|
private Batch batch;
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
package io.github.com.quillraven.asset;
|
package io.github.com.quillraven.asset;
|
||||||
|
|
||||||
public enum MapAsset {
|
public enum MapAsset {
|
||||||
MAIN("mainmap.tmx"),
|
MAIN("mainmap.tmx");
|
||||||
SECOND("secondmap.tmx");
|
|
||||||
|
|
||||||
private final String path;
|
private final String path;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package io.github.com.quillraven.component;
|
||||||
|
|
||||||
|
import com.badlogic.ashley.core.Component;
|
||||||
|
|
||||||
|
public class CameraFollow implements Component {
|
||||||
|
}
|
||||||
@@ -11,20 +11,23 @@ public class Transform implements Component, Comparable<Transform> {
|
|||||||
private final int z;
|
private final int z;
|
||||||
private final Vector2 size;
|
private final Vector2 size;
|
||||||
private final Vector2 scaling;
|
private final Vector2 scaling;
|
||||||
private final float rotationDeg;
|
private float rotationDeg;
|
||||||
|
private float sortOffsetY;
|
||||||
|
|
||||||
public Transform(
|
public Transform(
|
||||||
Vector2 position,
|
Vector2 position,
|
||||||
int z,
|
int z,
|
||||||
Vector2 size,
|
Vector2 size,
|
||||||
Vector2 scaling,
|
Vector2 scaling,
|
||||||
float rotationDeg
|
float rotationDeg,
|
||||||
|
float sortOffsetY
|
||||||
) {
|
) {
|
||||||
this.position = position;
|
this.position = position;
|
||||||
this.z = z;
|
this.z = z;
|
||||||
this.size = size;
|
this.size = size;
|
||||||
this.scaling = scaling;
|
this.scaling = scaling;
|
||||||
this.rotationDeg = rotationDeg;
|
this.rotationDeg = rotationDeg;
|
||||||
|
this.sortOffsetY = sortOffsetY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -32,8 +35,8 @@ public class Transform implements Component, Comparable<Transform> {
|
|||||||
if (this.z != other.z) {
|
if (this.z != other.z) {
|
||||||
return Float.compare(this.z, other.z);
|
return Float.compare(this.z, other.z);
|
||||||
}
|
}
|
||||||
if (this.position.y != other.position.y) {
|
if (this.position.y + this.sortOffsetY != other.position.y + other.sortOffsetY) {
|
||||||
return Float.compare(other.position.y, this.position.y);
|
return Float.compare(other.position.y + other.sortOffsetY, this.position.y + this.sortOffsetY);
|
||||||
}
|
}
|
||||||
return Float.compare(this.position.x, other.position.x);
|
return Float.compare(this.position.x, other.position.x);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import io.github.com.quillraven.component.Controller;
|
|||||||
import io.github.com.quillraven.input.GameControllerState;
|
import io.github.com.quillraven.input.GameControllerState;
|
||||||
import io.github.com.quillraven.input.KeyboardController;
|
import io.github.com.quillraven.input.KeyboardController;
|
||||||
import io.github.com.quillraven.system.AnimationSystem;
|
import io.github.com.quillraven.system.AnimationSystem;
|
||||||
|
import io.github.com.quillraven.system.CameraSystem;
|
||||||
import io.github.com.quillraven.system.FacingSystem;
|
import io.github.com.quillraven.system.FacingSystem;
|
||||||
import io.github.com.quillraven.system.FsmSystem;
|
import io.github.com.quillraven.system.FsmSystem;
|
||||||
import io.github.com.quillraven.system.PhysicDebugRenderSystem;
|
import io.github.com.quillraven.system.PhysicDebugRenderSystem;
|
||||||
@@ -48,6 +49,7 @@ public class GameScreen extends ScreenAdapter {
|
|||||||
this.engine.addSystem(new FacingSystem());
|
this.engine.addSystem(new FacingSystem());
|
||||||
this.engine.addSystem(new FsmSystem());
|
this.engine.addSystem(new FsmSystem());
|
||||||
this.engine.addSystem(new AnimationSystem(game.getAssetService()));
|
this.engine.addSystem(new AnimationSystem(game.getAssetService()));
|
||||||
|
this.engine.addSystem(new CameraSystem(game.getCamera()));
|
||||||
this.engine.addSystem(new RenderSystem(game.getBatch(), game.getViewport(), game.getCamera()));
|
this.engine.addSystem(new RenderSystem(game.getBatch(), game.getViewport(), game.getCamera()));
|
||||||
this.engine.addSystem(new PhysicDebugRenderSystem(this.physicWorld, game.getCamera()));
|
this.engine.addSystem(new PhysicDebugRenderSystem(this.physicWorld, game.getCamera()));
|
||||||
}
|
}
|
||||||
@@ -61,7 +63,8 @@ public class GameScreen extends ScreenAdapter {
|
|||||||
|
|
||||||
Consumer<TiledMap> renderConsumer = this.engine.getSystem(RenderSystem.class)::setMap;
|
Consumer<TiledMap> renderConsumer = this.engine.getSystem(RenderSystem.class)::setMap;
|
||||||
Consumer<TiledMap> ashleySpawnerConsumer = this.tiledAshleySpawner::loadMapObjects;
|
Consumer<TiledMap> ashleySpawnerConsumer = this.tiledAshleySpawner::loadMapObjects;
|
||||||
this.tiledService.setMapChangeConsumer(renderConsumer.andThen(ashleySpawnerConsumer));
|
Consumer<TiledMap> cameraConsumer = this.engine.getSystem(CameraSystem.class)::setMap;
|
||||||
|
this.tiledService.setMapChangeConsumer(renderConsumer.andThen(ashleySpawnerConsumer).andThen(cameraConsumer));
|
||||||
|
|
||||||
TiledMap startMap = this.tiledService.loadMap(MapAsset.MAIN);
|
TiledMap startMap = this.tiledService.loadMap(MapAsset.MAIN);
|
||||||
this.tiledService.setMap(startMap);
|
this.tiledService.setMap(startMap);
|
||||||
|
|||||||
@@ -0,0 +1,78 @@
|
|||||||
|
package io.github.com.quillraven.system;
|
||||||
|
|
||||||
|
import com.badlogic.ashley.core.Entity;
|
||||||
|
import com.badlogic.ashley.core.Family;
|
||||||
|
import com.badlogic.ashley.systems.IteratingSystem;
|
||||||
|
import com.badlogic.gdx.graphics.Camera;
|
||||||
|
import com.badlogic.gdx.maps.tiled.TiledMap;
|
||||||
|
import com.badlogic.gdx.math.MathUtils;
|
||||||
|
import com.badlogic.gdx.math.Vector2;
|
||||||
|
import io.github.com.quillraven.GdxGame;
|
||||||
|
import io.github.com.quillraven.component.CameraFollow;
|
||||||
|
import io.github.com.quillraven.component.Transform;
|
||||||
|
|
||||||
|
public class CameraSystem extends IteratingSystem {
|
||||||
|
private static final float CAM_OFFSET_Y = 1f; // make the camera look up 'X' additional tiles
|
||||||
|
|
||||||
|
private final Camera camera;
|
||||||
|
private final float smoothingFactor;
|
||||||
|
private final Vector2 targetPosition;
|
||||||
|
private float mapW;
|
||||||
|
private float mapH;
|
||||||
|
|
||||||
|
public CameraSystem(Camera camera) {
|
||||||
|
super(Family.all(CameraFollow.class, Transform.class).get());
|
||||||
|
this.camera = camera;
|
||||||
|
this.smoothingFactor = 4f; // lower value = slower camera follow
|
||||||
|
this.targetPosition = new Vector2();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void processEntity(Entity entity, float deltaTime) {
|
||||||
|
Transform transform = Transform.MAPPER.get(entity);
|
||||||
|
calcTargetPosition(transform.getPosition());
|
||||||
|
|
||||||
|
// Apply smoothing using linear interpolation (LERP)
|
||||||
|
float progress = smoothingFactor * deltaTime;
|
||||||
|
float smoothedX = MathUtils.lerp(camera.position.x, this.targetPosition.x, progress);
|
||||||
|
float smoothedY = MathUtils.lerp(camera.position.y, this.targetPosition.y, progress);
|
||||||
|
camera.position.set(smoothedX, smoothedY, camera.position.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void calcTargetPosition(Vector2 entityPosition) {
|
||||||
|
// Keep the target position within map boundaries
|
||||||
|
float targetX = entityPosition.x;
|
||||||
|
float targetY = entityPosition.y + CAM_OFFSET_Y;
|
||||||
|
float camHalfW = camera.viewportWidth * 0.5f;
|
||||||
|
if (mapW > camHalfW) {
|
||||||
|
float min = Math.min(camHalfW, mapW - camHalfW);
|
||||||
|
float max = Math.max(camHalfW, mapW - camHalfW);
|
||||||
|
targetX = MathUtils.clamp(targetX, min, max);
|
||||||
|
}
|
||||||
|
float camHalfH = camera.viewportHeight * 0.5f;
|
||||||
|
if (mapH > camHalfH) {
|
||||||
|
float min = Math.min(camHalfH, mapH - camHalfH);
|
||||||
|
float max = Math.max(camHalfH, mapH - camHalfH);
|
||||||
|
targetY = MathUtils.clamp(targetY, min, max);
|
||||||
|
}
|
||||||
|
this.targetPosition.set(targetX, targetY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMap(TiledMap tiledMap) {
|
||||||
|
int width = tiledMap.getProperties().get("width", 0, Integer.class);
|
||||||
|
int tileW = tiledMap.getProperties().get("tilewidth", 0, Integer.class);
|
||||||
|
int height = tiledMap.getProperties().get("height", 0, Integer.class);
|
||||||
|
int tileH = tiledMap.getProperties().get("tileheight", 0, Integer.class);
|
||||||
|
mapW = width * tileW * GdxGame.UNIT_SCALE;
|
||||||
|
mapH = height * tileH * GdxGame.UNIT_SCALE;
|
||||||
|
|
||||||
|
Entity camEntity = getEntities().first();
|
||||||
|
if (camEntity == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Transform transform = Transform.MAPPER.get(camEntity);
|
||||||
|
calcTargetPosition(transform.getPosition());
|
||||||
|
camera.position.set(this.targetPosition.x, this.targetPosition.y, camera.position.z);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,6 +26,7 @@ import io.github.com.quillraven.GdxGame;
|
|||||||
import io.github.com.quillraven.asset.AtlasAsset;
|
import io.github.com.quillraven.asset.AtlasAsset;
|
||||||
import io.github.com.quillraven.component.Animation2D;
|
import io.github.com.quillraven.component.Animation2D;
|
||||||
import io.github.com.quillraven.component.Animation2D.AnimationType;
|
import io.github.com.quillraven.component.Animation2D.AnimationType;
|
||||||
|
import io.github.com.quillraven.component.CameraFollow;
|
||||||
import io.github.com.quillraven.component.Controller;
|
import io.github.com.quillraven.component.Controller;
|
||||||
import io.github.com.quillraven.component.Facing;
|
import io.github.com.quillraven.component.Facing;
|
||||||
import io.github.com.quillraven.component.Facing.FacingDirection;
|
import io.github.com.quillraven.component.Facing.FacingDirection;
|
||||||
@@ -88,6 +89,7 @@ public class TiledAshleySpawner {
|
|||||||
rect.getX(), rect.getY(),
|
rect.getX(), rect.getY(),
|
||||||
rect.getWidth(), rect.getHeight(),
|
rect.getWidth(), rect.getHeight(),
|
||||||
1f, 1f,
|
1f, 1f,
|
||||||
|
0,
|
||||||
entity);
|
entity);
|
||||||
addEntityPhysic(
|
addEntityPhysic(
|
||||||
rectMapObj,
|
rectMapObj,
|
||||||
@@ -116,11 +118,14 @@ public class TiledAshleySpawner {
|
|||||||
TiledMapTile tile = tileMapObject.getTile();
|
TiledMapTile tile = tileMapObject.getTile();
|
||||||
TextureRegion textureRegion = tile.getTextureRegion();
|
TextureRegion textureRegion = tile.getTextureRegion();
|
||||||
String classType = tile.getProperties().get("type", "", String.class);
|
String classType = tile.getProperties().get("type", "", String.class);
|
||||||
|
float sortOffsetY = tile.getProperties().get("sortOffsetY", 0, Integer.class);
|
||||||
|
sortOffsetY *= GdxGame.UNIT_SCALE;
|
||||||
|
|
||||||
addEntityTransform(
|
addEntityTransform(
|
||||||
tileMapObject.getX(), tileMapObject.getY(),
|
tileMapObject.getX(), tileMapObject.getY(),
|
||||||
textureRegion.getRegionWidth(), textureRegion.getRegionHeight(),
|
textureRegion.getRegionWidth(), textureRegion.getRegionHeight(),
|
||||||
tileMapObject.getScaleX(), tileMapObject.getScaleY(),
|
tileMapObject.getScaleX(), tileMapObject.getScaleY(),
|
||||||
|
sortOffsetY,
|
||||||
entity);
|
entity);
|
||||||
addEntityPhysic(
|
addEntityPhysic(
|
||||||
tile.getObjects(),
|
tile.getObjects(),
|
||||||
@@ -130,6 +135,7 @@ public class TiledAshleySpawner {
|
|||||||
addEntityAnimation(tile, entity);
|
addEntityAnimation(tile, entity);
|
||||||
addEntityMove(tile, entity);
|
addEntityMove(tile, entity);
|
||||||
addEntityController(tileMapObject, entity);
|
addEntityController(tileMapObject, entity);
|
||||||
|
addEntityCameraFollow(tileMapObject, entity);
|
||||||
entity.add(new Facing(FacingDirection.DOWN));
|
entity.add(new Facing(FacingDirection.DOWN));
|
||||||
entity.add(new Fsm(entity));
|
entity.add(new Fsm(entity));
|
||||||
entity.add(new Graphic(textureRegion, Color.WHITE.cpy()));
|
entity.add(new Graphic(textureRegion, Color.WHITE.cpy()));
|
||||||
@@ -137,6 +143,13 @@ public class TiledAshleySpawner {
|
|||||||
this.engine.addEntity(entity);
|
this.engine.addEntity(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addEntityCameraFollow(TiledMapTileMapObject tileMapObject, Entity entity) {
|
||||||
|
boolean cameraFollow = tileMapObject.getProperties().get("camFollow", false, Boolean.class);
|
||||||
|
if (!cameraFollow) return;
|
||||||
|
|
||||||
|
entity.add(new CameraFollow());
|
||||||
|
}
|
||||||
|
|
||||||
private void addEntityController(TiledMapTileMapObject tileMapObject, Entity entity) {
|
private void addEntityController(TiledMapTileMapObject tileMapObject, Entity entity) {
|
||||||
boolean controller = tileMapObject.getProperties().get("controller", false, Boolean.class);
|
boolean controller = tileMapObject.getProperties().get("controller", false, Boolean.class);
|
||||||
if (!controller) return;
|
if (!controller) return;
|
||||||
@@ -212,6 +225,7 @@ public class TiledAshleySpawner {
|
|||||||
float x, float y,
|
float x, float y,
|
||||||
float w, float h,
|
float w, float h,
|
||||||
float scaleX, float scaleY,
|
float scaleX, float scaleY,
|
||||||
|
float sortOffsetY,
|
||||||
Entity entity
|
Entity entity
|
||||||
) {
|
) {
|
||||||
Vector2 position = new Vector2(x, y);
|
Vector2 position = new Vector2(x, y);
|
||||||
@@ -221,7 +235,7 @@ public class TiledAshleySpawner {
|
|||||||
position.scl(GdxGame.UNIT_SCALE);
|
position.scl(GdxGame.UNIT_SCALE);
|
||||||
size.scl(GdxGame.UNIT_SCALE);
|
size.scl(GdxGame.UNIT_SCALE);
|
||||||
|
|
||||||
entity.add(new Transform(position, 0, size, scaling, 0f));
|
entity.add(new Transform(position, 0, size, scaling, 0f, sortOffsetY));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user