From f800e9d2988333a6e239e160b7e2c683828b384a Mon Sep 17 00:00:00 2001 From: Azinum Date: Thu, 26 Nov 2015 19:23:44 +0100 Subject: [PATCH 1/8] Added sheet --- Fifth/resources/gfx/sheet.png | Bin 1331 -> 266171 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Fifth/resources/gfx/sheet.png b/Fifth/resources/gfx/sheet.png index 4a5002d4dcd3fda651e4eae50d07ee5731c23dfc..6d9d1c65ca3489e78b13f57e9333706591aa7294 100644 GIT binary patch literal 266171 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 delta 1011 zcmVd_aAIU-UtlWTk?wQN^+T0n;Y$}Iyf$IDS1{j_|B zR~LhS`_sus!%?G!zWOvBnGD(_fh>8zf1WG}^!r02zy0$1&g%x`8kIyIo}R|=^t4OW z0Xv@nssYkEP&OI-bp!j)&!1P3NMPp^K-zYx+@y-A5!ewC>2f@di+Asqey^e^R0!;a z!x|Mpqa-jdSZ9AbKDl036_GB-R{{j`&}x5{Qlrzm6e2wgpDPDJZGrCrRJNtApzXq^Eavl(yQx8ukM!m$0yfud~!WI1-LIsAf5dharUOu9z6H@{n`BMEJvgJ^!EfI0k;vyE;R{IlVaCxG%d z=n_ON6Ud#wuQC5J2~^s}Dw2Q%uwTI+5%G0SC6MbRjxH5Ibvg?IzI<;B8{<}zK*J=I ztBGKZNkAgl(ZG+0_%0&;Sdj4_tOVlas2pZhz>Xw{Rsu>C%OoNwknH{j}1ME>}C+dcoF4`7qZ2Y>?mQ2~?-H$Cl_KmM;1Pz3;M z>;uRPUV$C20OnmGwy9_7=Z7xyRRO^IDu6|SF5qAX9X8m*r|@5OU}q~nfI2~)^a;Rj zRRB$U`Dc~DTFwsKzXrf*Kv@4FKvQX5Rlw}o0n-OymSzvTyqs8Ruu6GLZ5K^%;gf8_ hqo|WH9^V&Q`xnFZm(#2;i%I|h002ovPDHLkV1l@i{h9y( From f3d0f9d8e0c64bbbd7c7484f98af94950664c0c0 Mon Sep 17 00:00:00 2001 From: Azinum Date: Thu, 26 Nov 2015 19:27:53 +0100 Subject: [PATCH 2/8] edit map --- Fifth/resources/map/testMap2.map | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Fifth/resources/map/testMap2.map b/Fifth/resources/map/testMap2.map index cef0500..414d40b 100644 --- a/Fifth/resources/map/testMap2.map +++ b/Fifth/resources/map/testMap2.map @@ -8,6 +8,6 @@ ], "sprites": [ - {"name":"player", "spriteSheetKey":"MAIN", "offsets":[32, 0, 16, 32]} + {"name":"player", "spriteSheetKey":"MAIN", "offsets":[32, 0, 16, 26]} ] } \ No newline at end of file From 6cea1a273beaf3b37b3bc89fd39aae2eb418e8cb Mon Sep 17 00:00:00 2001 From: Azinum Date: Mon, 30 Nov 2015 10:02:21 +0100 Subject: [PATCH 3/8] Update from master --- Fifth/CAnimation.cpp | 12 ++- Fifth/CAnimation.h | 2 +- Fifth/CAssetManager.cpp | 2 +- Fifth/CAssetManager.h | 0 Fifth/CBackground.cpp | 0 Fifth/CBackground.h | 0 Fifth/CBody.cpp | 0 Fifth/CBody.h | 11 +++ Fifth/CCamera.cpp | 0 Fifth/CCamera.h | 0 Fifth/CChatBubble.cpp | 12 +-- Fifth/CChatBubble.h | 0 Fifth/CClient.cpp | 0 Fifth/CClient.h | 0 Fifth/CCombatText.cpp | 0 Fifth/CCombatText.h | 0 Fifth/CComponent.cpp | 29 +++++- Fifth/CComponent.h | 7 +- Fifth/CEntity.cpp | 32 ++++++- Fifth/CEntity.h | 10 ++- Fifth/CEntityManager.cpp | 19 +++- Fifth/CEntityManager.h | 3 +- Fifth/CGame.cpp | 21 ++++- Fifth/CGame.h | 0 Fifth/CGame_onEvent.cpp | 43 ++++++--- Fifth/CGuiText.cpp | 0 Fifth/CGuiText.h | 0 Fifth/CInstance.cpp | 0 Fifth/CInstance.h | 0 Fifth/CLuaObject.cpp | 0 Fifth/CLuaObject.h | 0 Fifth/CLuaScript.cpp | 0 Fifth/CLuaScript.h | 0 Fifth/CNetwork.cpp | 0 Fifth/CNetwork.h | 0 Fifth/CSerializable.cpp | 0 Fifth/CSerializable.h | 0 Fifth/CServer.cpp | 0 Fifth/CServer.h | 0 Fifth/CServerInstance.cpp | 0 Fifth/CServerInstance.h | 0 Fifth/CSprite.cpp | 4 +- Fifth/CSprite.h | 2 +- Fifth/CSpriteSheet.cpp | 0 Fifth/CSpriteSheet.h | 0 Fifth/CText.cpp | 0 Fifth/CText.h | 0 Fifth/CTile.cpp | 0 Fifth/CTile.h | 0 Fifth/CWindow.cpp | 0 Fifth/CWindow.h | 0 Fifth/Define.h | 0 Fifth/NFile.cpp | 0 Fifth/NFile.h | 0 Fifth/NMouse.cpp | 0 Fifth/NMouse.h | 0 Fifth/NSurface.cpp | 4 +- Fifth/NSurface.h | 2 +- Fifth/ResourcePath.hpp | 0 Fifth/ResourcePath.mm | 0 Fifth/lua/Makefile | 0 Fifth/lua/lapi.c | 0 Fifth/lua/lapi.h | 0 Fifth/lua/lapi.o | Bin Fifth/lua/lauxlib.c | 0 Fifth/lua/lauxlib.h | 0 Fifth/lua/lauxlib.o | Bin Fifth/lua/lbaselib.c | 0 Fifth/lua/lbaselib.o | Bin Fifth/lua/lcode.c | 0 Fifth/lua/lcode.h | 0 Fifth/lua/lcode.o | Bin Fifth/lua/ldblib.c | 0 Fifth/lua/ldblib.o | Bin Fifth/lua/ldebug.c | 0 Fifth/lua/ldebug.h | 0 Fifth/lua/ldebug.o | Bin Fifth/lua/ldo.c | 0 Fifth/lua/ldo.h | 0 Fifth/lua/ldo.o | Bin Fifth/lua/ldump.c | 0 Fifth/lua/ldump.o | Bin Fifth/lua/lfunc.c | 0 Fifth/lua/lfunc.h | 0 Fifth/lua/lfunc.o | Bin Fifth/lua/lgc.c | 0 Fifth/lua/lgc.h | 0 Fifth/lua/lgc.o | Bin Fifth/lua/liblua.a | Bin Fifth/lua/linit.c | 0 Fifth/lua/linit.o | Bin Fifth/lua/liolib.c | 0 Fifth/lua/liolib.o | Bin Fifth/lua/llex.c | 0 Fifth/lua/llex.h | 0 Fifth/lua/llex.o | Bin Fifth/lua/llimits.h | 0 Fifth/lua/lmathlib.c | 0 Fifth/lua/lmathlib.o | Bin Fifth/lua/lmem.c | 0 Fifth/lua/lmem.h | 0 Fifth/lua/lmem.o | Bin Fifth/lua/loadlib.c | 0 Fifth/lua/loadlib.o | Bin Fifth/lua/lobject.c | 0 Fifth/lua/lobject.h | 0 Fifth/lua/lobject.o | Bin Fifth/lua/lopcodes.c | 0 Fifth/lua/lopcodes.h | 0 Fifth/lua/lopcodes.o | Bin Fifth/lua/loslib.c | 0 Fifth/lua/loslib.o | Bin Fifth/lua/lparser.c | 0 Fifth/lua/lparser.h | 0 Fifth/lua/lparser.o | Bin Fifth/lua/lstate.c | 0 Fifth/lua/lstate.h | 0 Fifth/lua/lstate.o | Bin Fifth/lua/lstring.c | 0 Fifth/lua/lstring.h | 0 Fifth/lua/lstring.o | Bin Fifth/lua/lstrlib.c | 0 Fifth/lua/lstrlib.o | Bin Fifth/lua/ltable.c | 0 Fifth/lua/ltable.h | 0 Fifth/lua/ltable.o | Bin Fifth/lua/ltablib.c | 0 Fifth/lua/ltablib.o | Bin Fifth/lua/ltm.c | 0 Fifth/lua/ltm.h | 0 Fifth/lua/ltm.o | Bin Fifth/lua/lua.c | 0 Fifth/lua/lua.h | 0 Fifth/lua/lua.o | Bin Fifth/lua/luac.c | 0 Fifth/lua/luac.o | Bin Fifth/lua/luaconf.h | 0 Fifth/lua/lualib.h | 0 Fifth/lua/lundump.c | 0 Fifth/lua/lundump.h | 0 Fifth/lua/lundump.o | Bin Fifth/lua/lvm.c | 0 Fifth/lua/lvm.h | 0 Fifth/lua/lvm.o | Bin Fifth/lua/lzio.c | 0 Fifth/lua/lzio.h | 0 Fifth/lua/lzio.o | Bin Fifth/lua/print.c | 0 Fifth/lua/print.o | Bin Fifth/main.cpp | 0 .../gfx/Sprites/Art/paintings/base.png | Bin .../gfx/Sprites/Art/paintings/painting 1.png | Bin .../gfx/Sprites/Art/paintings/painting 2.png | Bin .../gfx/Sprites/Art/paintings/painting 3.png | Bin .../gfx/Sprites/Evil cat/cat frame 0.png | Bin .../gfx/Sprites/Evil cat/cat frame 1.png | Bin .../gfx/Sprites/Evil cat/cat frame 2.png | Bin .../gfx/Sprites/backgrounds/background 1.png | Bin .../gfx/Sprites/backgrounds/background 2.png | Bin .../gfx/Sprites/backgrounds/background 3.png | Bin .../gfx/Sprites/backgrounds/background 4.png | Bin .../gfx/Sprites/backgrounds/background 5.png | Bin .../gfx/Sprites/backgrounds/background 6.png | Bin .../gfx/Sprites/backgrounds/background 7.png | Bin .../gfx/Sprites/backgrounds/background 8.png | Bin .../gfx/Sprites/backgrounds/background 9.png | Bin .../gfx/Sprites/barrels/Barrel 1.png | Bin .../gfx/Sprites/barrels/Barrel 2.png | Bin .../gfx/Sprites/barrels/Barrel 3.png | Bin .../blocks (16 x 16)/block 1 [16x16].png | Bin .../blocks (16 x 16)/block 2 [16x16].png | Bin .../blocks (16 x 16)/block 3 [16x16].png | Bin .../blocks (16 x 16)/block 4 [16x16].png | Bin .../blocks (16 x 16)/block 5 [16x16] .png | Bin .../gfx/Sprites/blocks (16 x 16)/block 6.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 1.png | Bin .../Sprites/blocks (16 x 16)/bricks 10.png | Bin .../Sprites/blocks (16 x 16)/bricks 11.png | Bin .../Sprites/blocks (16 x 16)/bricks 12.png | Bin .../Sprites/blocks (16 x 16)/bricks 13.png | Bin .../Sprites/blocks (16 x 16)/bricks 14.png | Bin .../Sprites/blocks (16 x 16)/bricks 15.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 2.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 3.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 4.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 5.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 6.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 7.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 8.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 9.png | Bin .../gfx/Sprites/blocks (16 x 16)/tile 1.png | Bin .../resources/gfx/Sprites/chests/chest 1.png | Bin .../resources/gfx/Sprites/chests/chest 2.png | Bin .../resources/gfx/Sprites/chests/chest 3.png | Bin .../resources/gfx/Sprites/chests/chest 4.png | Bin .../resources/gfx/Sprites/chests/chest 5.png | Bin .../resources/gfx/Sprites/clouds/cloud 1.png | Bin .../resources/gfx/Sprites/clouds/cloud 2.png | Bin .../resources/gfx/Sprites/clouds/cloud 3.png | Bin .../resources/gfx/Sprites/cracks/cracks 1.png | Bin .../gfx/Sprites/cracks/cracks 10.png | Bin .../resources/gfx/Sprites/cracks/cracks 2.png | Bin .../resources/gfx/Sprites/cracks/cracks 3.png | Bin .../resources/gfx/Sprites/cracks/cracks 4.png | Bin .../resources/gfx/Sprites/cracks/cracks 5.png | Bin .../resources/gfx/Sprites/cracks/cracks 6.png | Bin .../resources/gfx/Sprites/cracks/cracks 7.png | Bin .../resources/gfx/Sprites/cracks/cracks 8.png | Bin .../resources/gfx/Sprites/cracks/cracks 9.png | Bin .../gfx/Sprites/crosshairs/hitmarker 1.png | Bin .../gfx/Sprites/crosshairs/hitmarker 2.png | Bin .../gfx/Sprites/crosshairs/hitmarker 3.png | Bin .../gfx/Sprites/crosshairs/hitmarker 4.png | Bin .../gfx/Sprites/crosshairs/hitmarker 5.png | Bin .../gfx/Sprites/crosshairs/hitmarker 6.png | Bin .../gfx/Sprites/crosshairs/hitmarker 7.png | Bin Fifth/resources/gfx/Sprites/enemies/bee.png | Bin .../gfx/Sprites/enemies/enemy 1 idle f1.png | Bin .../gfx/Sprites/enemies/enemy 1 idle f2.png | Bin .../Sprites/enemies/enemy 1 running f1.png | Bin .../Sprites/enemies/enemy 1 running f2.png | Bin .../gfx/Sprites/enemies/fred [HD].png | Bin .../gfx/Sprites/enemies/yrl/yrl AL 1.png | Bin .../gfx/Sprites/enemies/yrl/yrl AL 2.png | Bin .../gfx/Sprites/enemies/yrl/yrl AL 3.png | Bin .../gfx/Sprites/enemies/yrl/yrl AL 4.png | Bin .../gfx/Sprites/enemies/yrl/yrl body 1.png | Bin .../gfx/Sprites/enemies/yrl/yrl face 1.png | Bin .../gfx/Sprites/enemies/yrl/yrl face 2.png | Bin .../gfx/Sprites/enemies/yrl/yrl face 3.png | Bin .../resources/gfx/Sprites/houses/House 1.png | Bin .../gfx/Sprites/houses/mini house 1.png | Bin .../gfx/Sprites/icons/icon [basic].png | Bin Fifth/resources/gfx/Sprites/icons/icon.png | Bin Fifth/resources/gfx/Sprites/icons/icon_1.png | Bin Fifth/resources/gfx/Sprites/icons/icon_2.png | Bin Fifth/resources/gfx/Sprites/items/apple 1.png | Bin Fifth/resources/gfx/Sprites/items/apple 2.png | Bin Fifth/resources/gfx/Sprites/items/apple 3.png | Bin Fifth/resources/gfx/Sprites/items/bomb 1.png | Bin Fifth/resources/gfx/Sprites/items/bomb 2.png | Bin Fifth/resources/gfx/Sprites/items/bomb 3.png | Bin Fifth/resources/gfx/Sprites/items/bomb 4.png | Bin Fifth/resources/gfx/Sprites/items/bomb 5.png | Bin Fifth/resources/gfx/Sprites/items/bomb 6.png | Bin Fifth/resources/gfx/Sprites/nature/Tree 1.png | Bin Fifth/resources/gfx/Sprites/nature/Tree 2.png | Bin .../resources/gfx/Sprites/nature/birch 0.png | Bin .../resources/gfx/Sprites/nature/birch 1.png | Bin .../resources/gfx/Sprites/nature/birch 2.png | Bin .../resources/gfx/Sprites/nature/birch 3.png | Bin Fifth/resources/gfx/Sprites/nature/birch.png | Bin Fifth/resources/gfx/Sprites/nature/bush 1.png | Bin .../resources/gfx/Sprites/nature/bush 10.png | Bin .../resources/gfx/Sprites/nature/bush 11.png | Bin .../resources/gfx/Sprites/nature/bush 12.png | Bin .../resources/gfx/Sprites/nature/bush 13.png | Bin .../resources/gfx/Sprites/nature/bush 14.png | Bin Fifth/resources/gfx/Sprites/nature/bush 2.png | Bin Fifth/resources/gfx/Sprites/nature/bush 3.png | Bin Fifth/resources/gfx/Sprites/nature/bush 4.png | Bin Fifth/resources/gfx/Sprites/nature/bush 5.png | Bin Fifth/resources/gfx/Sprites/nature/bush 6.png | Bin Fifth/resources/gfx/Sprites/nature/bush 7.png | Bin Fifth/resources/gfx/Sprites/nature/bush 8.png | Bin Fifth/resources/gfx/Sprites/nature/bush 9.png | Bin .../resources/gfx/Sprites/nature/grass 1.png | Bin .../resources/gfx/Sprites/nature/grass 2.png | Bin .../resources/gfx/Sprites/nature/plant 1.png | Bin .../resources/gfx/Sprites/nature/plant 10.png | Bin .../resources/gfx/Sprites/nature/plant 11.png | Bin .../resources/gfx/Sprites/nature/plant 12.png | Bin .../resources/gfx/Sprites/nature/plant 13.png | Bin .../resources/gfx/Sprites/nature/plant 14.png | Bin .../resources/gfx/Sprites/nature/plant 15.png | Bin .../resources/gfx/Sprites/nature/plant 16.png | Bin .../resources/gfx/Sprites/nature/plant 17.png | Bin .../resources/gfx/Sprites/nature/plant 18.png | Bin .../resources/gfx/Sprites/nature/plant 19.png | Bin .../resources/gfx/Sprites/nature/plant 2.png | Bin .../resources/gfx/Sprites/nature/plant 20.png | Bin .../resources/gfx/Sprites/nature/plant 21.png | Bin .../resources/gfx/Sprites/nature/plant 3.png | Bin .../resources/gfx/Sprites/nature/plant 4.png | Bin .../resources/gfx/Sprites/nature/plant 5.png | Bin .../resources/gfx/Sprites/nature/plant 6.png | Bin .../resources/gfx/Sprites/nature/plant 7.png | Bin .../resources/gfx/Sprites/nature/plant 8.png | Bin .../resources/gfx/Sprites/nature/plant 9.png | Bin .../resources/gfx/Sprites/nature/tree 10.png | Bin .../resources/gfx/Sprites/nature/tree 11.png | Bin .../resources/gfx/Sprites/nature/tree 12.png | Bin .../resources/gfx/Sprites/nature/tree 13.png | Bin .../resources/gfx/Sprites/nature/tree 14.png | Bin .../resources/gfx/Sprites/nature/tree 15.png | Bin .../resources/gfx/Sprites/nature/tree 16.png | Bin .../resources/gfx/Sprites/nature/tree 17.png | Bin .../resources/gfx/Sprites/nature/tree 18.png | Bin .../resources/gfx/Sprites/nature/tree 19.png | Bin .../resources/gfx/Sprites/nature/tree 20.png | Bin .../resources/gfx/Sprites/nature/tree 21.png | Bin .../resources/gfx/Sprites/nature/tree 22.png | Bin .../resources/gfx/Sprites/nature/tree 23.png | Bin .../resources/gfx/Sprites/nature/tree 24.png | Bin .../resources/gfx/Sprites/nature/tree 25.png | Bin .../resources/gfx/Sprites/nature/tree 26.png | Bin Fifth/resources/gfx/Sprites/nature/tree 3.png | Bin Fifth/resources/gfx/Sprites/nature/tree 4.png | Bin Fifth/resources/gfx/Sprites/nature/tree 5.png | Bin Fifth/resources/gfx/Sprites/nature/tree 6.png | Bin Fifth/resources/gfx/Sprites/nature/tree 7.png | Bin Fifth/resources/gfx/Sprites/nature/tree 8.png | Bin Fifth/resources/gfx/Sprites/nature/tree 9.png | Bin Fifth/resources/gfx/Sprites/nature/vine 1.png | Bin Fifth/resources/gfx/Sprites/nature/vine 2.png | Bin Fifth/resources/gfx/Sprites/nature/vine 3.png | Bin Fifth/resources/gfx/Sprites/nature/vine 4.png | Bin Fifth/resources/gfx/Sprites/nature/vine 5.png | Bin .../resources/gfx/Sprites/other/baloon(0).png | Bin .../resources/gfx/Sprites/other/baloon(1).png | Bin .../resources/gfx/Sprites/other/baloon(2).png | Bin Fifth/resources/gfx/Sprites/other/bench.png | Bin .../gfx/Sprites/other/holy stone 1.png | Bin Fifth/resources/gfx/Sprites/other/moon 1.png | Bin Fifth/resources/gfx/Sprites/other/moon 2.png | Bin .../resources/gfx/Sprites/other/portal 1.png | Bin .../gfx/Sprites/other/public/another guy.psd | Bin .../gfx/Sprites/other/public/some guy.psd | Bin .../gfx/Sprites/other/realm flag 1.png | Bin .../gfx/Sprites/other/realm flag 2.png | Bin Fifth/resources/gfx/Sprites/other/sign 1.png | Bin .../gfx/Sprites/pets/pet 1 (idle (1)).png | Bin .../gfx/Sprites/pets/pet 1 (idle (2)).png | Bin .../gfx/Sprites/pets/pet 1 (running (1)).png | Bin .../Sprites/pets/pet 1 (running (1.1)).png | Bin .../gfx/Sprites/pets/pet 1 (running (2)).png | Bin .../Sprites/pets/pet 1 (running (2.1)).png | Bin .../player armour/shoulder armour 1.png | Bin .../gfx/Sprites/player/__player__.png | Bin .../gfx/Sprites/player/bodyarmour-1.png | Bin .../gfx/Sprites/player/bodyarmour-2.png | Bin .../gfx/Sprites/player/bodyarmour-3.png | Bin .../resources/gfx/Sprites/player/frame 0.png | Bin .../resources/gfx/Sprites/player/frame 1.png | Bin .../resources/gfx/Sprites/player/frame 2.png | Bin .../resources/gfx/Sprites/player/frame a.png | Bin .../resources/gfx/Sprites/player/frame b.png | Bin .../resources/gfx/Sprites/player/frame c.png | Bin .../gfx/Sprites/player/main player/arm 1.png | Bin .../gfx/Sprites/player/main player/arm 2.png | Bin .../gfx/Sprites/player/main player/arm 3.png | Bin .../gfx/Sprites/player/main player/arm 4.png | Bin .../gfx/Sprites/player/main player/arm 5.png | Bin .../gfx/Sprites/player/main player/head 1.png | Bin .../Sprites/player/main player/part 1.1.png | Bin .../Sprites/player/main player/part 2.1.png | Bin .../Sprites/player/main player/part 3.1.png | Bin .../Sprites/player/main player/part 4.1.png | Bin .../Sprites/player/main player/part 4.2.png | Bin .../gfx/Sprites/player/main player/player.png | Bin Fifth/resources/gfx/Sprites/player/part 1.png | Bin Fifth/resources/gfx/Sprites/player/part 2.png | Bin Fifth/resources/gfx/Sprites/player/part 3.png | Bin .../Sprites/player/player 02 running f1.png | Bin .../player/player 02 running f2 v1.png | Bin .../player/player 02 running f2 v2.png | Bin .../resources/gfx/Sprites/player/player 2.png | Bin .../gfx/Sprites/player/player asset.png | Bin .../gfx/Sprites/player/player idle f1.png | Bin .../gfx/Sprites/player/player idle f2.png | Bin .../gfx/Sprites/player/player running f1.png | Bin .../gfx/Sprites/player/player running f2.png | Bin .../gfx/Sprites/player/player running f3.png | Bin .../gfx/Sprites/player/player running f4.png | Bin .../gfx/Sprites/player/player running f5.png | Bin .../Sprites/player/player01 running f1.png | Bin .../Sprites/player/player01 running f2.png | Bin .../resources/gfx/Sprites/player/player_1.png | Bin Fifth/resources/gfx/Sprites/player/test.png | Bin Fifth/resources/gfx/Sprites/player1/arm 1.png | Bin .../resources/gfx/Sprites/player1/arm 10.png | Bin .../resources/gfx/Sprites/player1/arm 11.png | Bin .../resources/gfx/Sprites/player1/arm 12.png | Bin .../resources/gfx/Sprites/player1/arm 13.png | Bin Fifth/resources/gfx/Sprites/player1/arm 2.png | Bin Fifth/resources/gfx/Sprites/player1/arm 3.png | Bin Fifth/resources/gfx/Sprites/player1/arm 4.png | Bin Fifth/resources/gfx/Sprites/player1/arm 5.png | Bin Fifth/resources/gfx/Sprites/player1/arm 6.png | Bin Fifth/resources/gfx/Sprites/player1/arm 7.png | Bin Fifth/resources/gfx/Sprites/player1/arm 8.png | Bin Fifth/resources/gfx/Sprites/player1/arm 9.png | Bin .../resources/gfx/Sprites/player1/body 1.png | Bin .../resources/gfx/Sprites/player1/body 2.png | Bin .../resources/gfx/Sprites/player1/body 4.png | Bin .../resources/gfx/Sprites/player1/body 5.png | Bin .../resources/gfx/Sprites/player1/body 6.png | Bin .../resources/gfx/Sprites/player1/body 7.png | Bin .../resources/gfx/Sprites/player1/face 1.png | Bin .../resources/gfx/Sprites/player1/face 10.png | Bin .../resources/gfx/Sprites/player1/face 11.png | Bin .../resources/gfx/Sprites/player1/face 12.png | Bin .../resources/gfx/Sprites/player1/face 13.png | Bin .../resources/gfx/Sprites/player1/face 14.png | Bin .../resources/gfx/Sprites/player1/face 15.png | Bin .../resources/gfx/Sprites/player1/face 16.png | Bin .../resources/gfx/Sprites/player1/face 17.png | Bin .../resources/gfx/Sprites/player1/face 18.png | Bin .../resources/gfx/Sprites/player1/face 19.png | Bin .../resources/gfx/Sprites/player1/face 2.png | Bin .../resources/gfx/Sprites/player1/face 20.png | Bin .../resources/gfx/Sprites/player1/face 21.png | Bin .../resources/gfx/Sprites/player1/face 22.png | Bin .../resources/gfx/Sprites/player1/face 23.png | Bin .../resources/gfx/Sprites/player1/face 24.png | Bin .../resources/gfx/Sprites/player1/face 25.png | Bin .../resources/gfx/Sprites/player1/face 26.png | Bin .../resources/gfx/Sprites/player1/face 3.png | Bin .../resources/gfx/Sprites/player1/face 4.png | Bin .../resources/gfx/Sprites/player1/face 5.png | Bin .../resources/gfx/Sprites/player1/face 6.png | Bin .../resources/gfx/Sprites/player1/face 7.png | Bin .../resources/gfx/Sprites/player1/face 8.png | Bin .../resources/gfx/Sprites/player1/face 9.png | Bin Fifth/resources/gfx/Sprites/player1/leg 1.png | Bin Fifth/resources/gfx/Sprites/player1/leg 2.png | Bin Fifth/resources/gfx/Sprites/player1/leg 3.png | Bin Fifth/resources/gfx/Sprites/player1/leg 4.png | Bin Fifth/resources/gfx/Sprites/player1/leg 5.png | Bin Fifth/resources/gfx/Sprites/player1/leg 6.png | Bin Fifth/resources/gfx/Sprites/player1/leg 7.png | Bin .../gfx/Sprites/player2/player arm 1.png | Bin .../gfx/Sprites/player2/player body 1.png | Bin .../gfx/Sprites/player2/player face 1.png | Bin .../gfx/Sprites/player2/player leg 1.png | Bin .../gfx/Sprites/player2/player leg 2.png | Bin .../gfx/Sprites/player2/playerTest.png | Bin .../player3/player #3/player arm 1.png | Bin .../player3/player #3/player body 1.png | Bin .../player3/player #3/player head 3.png | Bin .../player3/player #3/player legs 1.png | Bin .../player3/player #3/player legs 2.png | Bin .../player3/player #3/player legs 4.png | Bin .../gfx/Sprites/player3/player arm 1.png | Bin .../gfx/Sprites/player3/player body 1.png | Bin .../gfx/Sprites/player3/player head 1.png | Bin .../gfx/Sprites/player3/player head 2.png | Bin .../gfx/Sprites/player3/player head 3.png | Bin .../gfx/Sprites/player3/player head 4.png | Bin .../gfx/Sprites/player3/player legs 1.png | Bin .../gfx/Sprites/player3/player legs 2.png | Bin .../gfx/Sprites/player3/player legs 3.png | Bin .../gfx/Sprites/player3/player legs 4.png | Bin .../gfx/Sprites/spritesheets/all 01.png | Bin .../spritesheets/plant spritesheet 1.png | Bin .../spritesheets/plant spritesheet 2.png | Bin .../spritesheets/platform spritesheet 1.png | Bin .../spritesheets/player spritesheet 0.1.png | Bin .../spritesheets/player spritesheet 2.png | Bin .../spritesheets/player spritesheet 3.png | Bin Fifth/resources/gfx/Sprites/stone/stone 1.png | Bin .../resources/gfx/Sprites/stone/stone 10.png | Bin .../resources/gfx/Sprites/stone/stone 11.png | Bin .../resources/gfx/Sprites/stone/stone 12.png | Bin .../resources/gfx/Sprites/stone/stone 13.png | Bin .../resources/gfx/Sprites/stone/stone 14.png | Bin .../resources/gfx/Sprites/stone/stone 15.png | Bin .../resources/gfx/Sprites/stone/stone 16.png | Bin .../resources/gfx/Sprites/stone/stone 17.png | Bin .../resources/gfx/Sprites/stone/stone 18.png | Bin .../resources/gfx/Sprites/stone/stone 19.png | Bin Fifth/resources/gfx/Sprites/stone/stone 2.png | Bin .../resources/gfx/Sprites/stone/stone 20.png | Bin .../resources/gfx/Sprites/stone/stone 21.png | Bin .../resources/gfx/Sprites/stone/stone 22.png | Bin .../resources/gfx/Sprites/stone/stone 23.png | Bin .../resources/gfx/Sprites/stone/stone 24.png | Bin .../resources/gfx/Sprites/stone/stone 25.png | Bin Fifth/resources/gfx/Sprites/stone/stone 3.png | Bin Fifth/resources/gfx/Sprites/stone/stone 4.png | Bin Fifth/resources/gfx/Sprites/stone/stone 5.png | Bin Fifth/resources/gfx/Sprites/stone/stone 6.png | Bin Fifth/resources/gfx/Sprites/stone/stone 7.png | Bin Fifth/resources/gfx/Sprites/stone/stone 8.png | Bin Fifth/resources/gfx/Sprites/stone/stone 9.png | Bin .../gfx/Sprites/stone/stone block 1.png | Bin .../gfx/Sprites/stone/stone block 10.png | Bin .../gfx/Sprites/stone/stone block 11.png | Bin .../gfx/Sprites/stone/stone block 12.png | Bin .../gfx/Sprites/stone/stone block 2.png | Bin .../gfx/Sprites/stone/stone block 3.png | Bin .../gfx/Sprites/stone/stone block 4.png | Bin .../gfx/Sprites/stone/stone block 5.png | Bin .../gfx/Sprites/stone/stone block 6.png | Bin .../gfx/Sprites/stone/stone block 7.png | Bin .../gfx/Sprites/stone/stone block 8.png | Bin .../gfx/Sprites/stone/stone block 9.png | Bin Fifth/resources/gfx/Sprites/transparent.png | Bin .../Sprites/weapons/guns/pistol 1-gold.png | Bin .../Sprites/weapons/guns/pistol 1-grass.png | Bin .../gfx/Sprites/weapons/guns/pistol 1.png | Bin .../gfx/Sprites/weapons/swords/weapon 1.png | Bin .../gfx/Sprites/weapons/swords/weapon 10.png | Bin .../gfx/Sprites/weapons/swords/weapon 11.png | Bin .../gfx/Sprites/weapons/swords/weapon 12.png | Bin .../gfx/Sprites/weapons/swords/weapon 13.png | Bin .../gfx/Sprites/weapons/swords/weapon 14.png | Bin .../gfx/Sprites/weapons/swords/weapon 15.png | Bin .../gfx/Sprites/weapons/swords/weapon 16.png | Bin .../gfx/Sprites/weapons/swords/weapon 2.png | Bin .../gfx/Sprites/weapons/swords/weapon 3.png | Bin .../gfx/Sprites/weapons/swords/weapon 4.png | Bin .../gfx/Sprites/weapons/swords/weapon 5.png | Bin .../gfx/Sprites/weapons/swords/weapon 6.png | Bin .../gfx/Sprites/weapons/swords/weapon 7.png | Bin .../gfx/Sprites/weapons/swords/weapon 8.png | Bin .../gfx/Sprites/weapons/swords/weapon 9.png | Bin .../weapons/wizard weapons/magic staff 1.png | Bin Fifth/resources/gfx/bg.png | Bin Fifth/resources/gfx/gfx.png | Bin Fifth/resources/gfx/gfx2.png | Bin Fifth/resources/gfx/playerSpritesheet.png | Bin Fifth/resources/gfx/player_run.png | Bin 0 -> 649 bytes Fifth/resources/gfx/sheet.png | Bin 266171 -> 2362 bytes Fifth/resources/gfx/yrl.png | Bin Fifth/resources/map/testMap1.map | 0 Fifth/resources/map/testMap2.map | 17 ++-- .../scripts/Standard/ChatController.lua | 62 +++++++++---- .../resources/scripts/Standard/Controller.lua | 6 +- .../scripts/Standard/ExplodeOnDeath.lua | 78 ++++++++++++++++ .../scripts/Standard/GraphicScript.lua | 78 ++++++++++++++++ Fifth/resources/scripts/Standard/Living.lua | 68 +------------- Fifth/resources/scripts/Standard/Movable.lua | 84 ++++++++++++++---- Fifth/resources/scripts/Standard/Npc.lua | 0 Fifth/resources/scripts/Standard/Particle.lua | 0 .../resources/scripts/Standard/Projectile.lua | 20 +++-- Fifth/resources/scripts/Standard/bitwise.lua | 0 Fifth/resources/scripts/Standard/class.lua | 0 Fifth/resources/scripts/Standard/json.lua | 0 Fifth/resources/scripts/Standard/standard.lua | 0 Fifth/resources/shader/light.frag | 0 Fifth/resources/ttf/font-.ttf | Bin 0 -> 70324 bytes Fifth/resources/ttf/font.ttf | Bin 70324 -> 86396 bytes 543 files changed, 466 insertions(+), 162 deletions(-) mode change 100644 => 100755 Fifth/CAnimation.cpp mode change 100644 => 100755 Fifth/CAnimation.h mode change 100644 => 100755 Fifth/CAssetManager.cpp mode change 100644 => 100755 Fifth/CAssetManager.h mode change 100644 => 100755 Fifth/CBackground.cpp mode change 100644 => 100755 Fifth/CBackground.h mode change 100644 => 100755 Fifth/CBody.cpp mode change 100644 => 100755 Fifth/CBody.h mode change 100644 => 100755 Fifth/CCamera.cpp mode change 100644 => 100755 Fifth/CCamera.h mode change 100644 => 100755 Fifth/CChatBubble.cpp mode change 100644 => 100755 Fifth/CChatBubble.h mode change 100644 => 100755 Fifth/CClient.cpp mode change 100644 => 100755 Fifth/CClient.h mode change 100644 => 100755 Fifth/CCombatText.cpp mode change 100644 => 100755 Fifth/CCombatText.h mode change 100644 => 100755 Fifth/CComponent.cpp mode change 100644 => 100755 Fifth/CComponent.h mode change 100644 => 100755 Fifth/CEntity.cpp mode change 100644 => 100755 Fifth/CEntity.h mode change 100644 => 100755 Fifth/CEntityManager.cpp mode change 100644 => 100755 Fifth/CEntityManager.h mode change 100644 => 100755 Fifth/CGame.cpp mode change 100644 => 100755 Fifth/CGame.h mode change 100644 => 100755 Fifth/CGame_onEvent.cpp mode change 100644 => 100755 Fifth/CGuiText.cpp mode change 100644 => 100755 Fifth/CGuiText.h mode change 100644 => 100755 Fifth/CInstance.cpp mode change 100644 => 100755 Fifth/CInstance.h mode change 100644 => 100755 Fifth/CLuaObject.cpp mode change 100644 => 100755 Fifth/CLuaObject.h mode change 100644 => 100755 Fifth/CLuaScript.cpp mode change 100644 => 100755 Fifth/CLuaScript.h mode change 100644 => 100755 Fifth/CNetwork.cpp mode change 100644 => 100755 Fifth/CNetwork.h mode change 100644 => 100755 Fifth/CSerializable.cpp mode change 100644 => 100755 Fifth/CSerializable.h mode change 100644 => 100755 Fifth/CServer.cpp mode change 100644 => 100755 Fifth/CServer.h mode change 100644 => 100755 Fifth/CServerInstance.cpp mode change 100644 => 100755 Fifth/CServerInstance.h mode change 100644 => 100755 Fifth/CSprite.cpp mode change 100644 => 100755 Fifth/CSprite.h mode change 100644 => 100755 Fifth/CSpriteSheet.cpp mode change 100644 => 100755 Fifth/CSpriteSheet.h mode change 100644 => 100755 Fifth/CText.cpp mode change 100644 => 100755 Fifth/CText.h mode change 100644 => 100755 Fifth/CTile.cpp mode change 100644 => 100755 Fifth/CTile.h mode change 100644 => 100755 Fifth/CWindow.cpp mode change 100644 => 100755 Fifth/CWindow.h mode change 100644 => 100755 Fifth/Define.h mode change 100644 => 100755 Fifth/NFile.cpp mode change 100644 => 100755 Fifth/NFile.h mode change 100644 => 100755 Fifth/NMouse.cpp mode change 100644 => 100755 Fifth/NMouse.h mode change 100644 => 100755 Fifth/NSurface.cpp mode change 100644 => 100755 Fifth/NSurface.h mode change 100644 => 100755 Fifth/ResourcePath.hpp mode change 100644 => 100755 Fifth/ResourcePath.mm mode change 100644 => 100755 Fifth/lua/Makefile mode change 100644 => 100755 Fifth/lua/lapi.c mode change 100644 => 100755 Fifth/lua/lapi.h mode change 100644 => 100755 Fifth/lua/lapi.o mode change 100644 => 100755 Fifth/lua/lauxlib.c mode change 100644 => 100755 Fifth/lua/lauxlib.h mode change 100644 => 100755 Fifth/lua/lauxlib.o mode change 100644 => 100755 Fifth/lua/lbaselib.c mode change 100644 => 100755 Fifth/lua/lbaselib.o mode change 100644 => 100755 Fifth/lua/lcode.c mode change 100644 => 100755 Fifth/lua/lcode.h mode change 100644 => 100755 Fifth/lua/lcode.o mode change 100644 => 100755 Fifth/lua/ldblib.c mode change 100644 => 100755 Fifth/lua/ldblib.o mode change 100644 => 100755 Fifth/lua/ldebug.c mode change 100644 => 100755 Fifth/lua/ldebug.h mode change 100644 => 100755 Fifth/lua/ldebug.o mode change 100644 => 100755 Fifth/lua/ldo.c mode change 100644 => 100755 Fifth/lua/ldo.h mode change 100644 => 100755 Fifth/lua/ldo.o mode change 100644 => 100755 Fifth/lua/ldump.c mode change 100644 => 100755 Fifth/lua/ldump.o mode change 100644 => 100755 Fifth/lua/lfunc.c mode change 100644 => 100755 Fifth/lua/lfunc.h mode change 100644 => 100755 Fifth/lua/lfunc.o mode change 100644 => 100755 Fifth/lua/lgc.c mode change 100644 => 100755 Fifth/lua/lgc.h mode change 100644 => 100755 Fifth/lua/lgc.o mode change 100644 => 100755 Fifth/lua/liblua.a mode change 100644 => 100755 Fifth/lua/linit.c mode change 100644 => 100755 Fifth/lua/linit.o mode change 100644 => 100755 Fifth/lua/liolib.c mode change 100644 => 100755 Fifth/lua/liolib.o mode change 100644 => 100755 Fifth/lua/llex.c mode change 100644 => 100755 Fifth/lua/llex.h mode change 100644 => 100755 Fifth/lua/llex.o mode change 100644 => 100755 Fifth/lua/llimits.h mode change 100644 => 100755 Fifth/lua/lmathlib.c mode change 100644 => 100755 Fifth/lua/lmathlib.o mode change 100644 => 100755 Fifth/lua/lmem.c mode change 100644 => 100755 Fifth/lua/lmem.h mode change 100644 => 100755 Fifth/lua/lmem.o mode change 100644 => 100755 Fifth/lua/loadlib.c mode change 100644 => 100755 Fifth/lua/loadlib.o mode change 100644 => 100755 Fifth/lua/lobject.c mode change 100644 => 100755 Fifth/lua/lobject.h mode change 100644 => 100755 Fifth/lua/lobject.o mode change 100644 => 100755 Fifth/lua/lopcodes.c mode change 100644 => 100755 Fifth/lua/lopcodes.h mode change 100644 => 100755 Fifth/lua/lopcodes.o mode change 100644 => 100755 Fifth/lua/loslib.c mode change 100644 => 100755 Fifth/lua/loslib.o mode change 100644 => 100755 Fifth/lua/lparser.c mode change 100644 => 100755 Fifth/lua/lparser.h mode change 100644 => 100755 Fifth/lua/lparser.o mode change 100644 => 100755 Fifth/lua/lstate.c mode change 100644 => 100755 Fifth/lua/lstate.h mode change 100644 => 100755 Fifth/lua/lstate.o mode change 100644 => 100755 Fifth/lua/lstring.c mode change 100644 => 100755 Fifth/lua/lstring.h mode change 100644 => 100755 Fifth/lua/lstring.o mode change 100644 => 100755 Fifth/lua/lstrlib.c mode change 100644 => 100755 Fifth/lua/lstrlib.o mode change 100644 => 100755 Fifth/lua/ltable.c mode change 100644 => 100755 Fifth/lua/ltable.h mode change 100644 => 100755 Fifth/lua/ltable.o mode change 100644 => 100755 Fifth/lua/ltablib.c mode change 100644 => 100755 Fifth/lua/ltablib.o mode change 100644 => 100755 Fifth/lua/ltm.c mode change 100644 => 100755 Fifth/lua/ltm.h mode change 100644 => 100755 Fifth/lua/ltm.o mode change 100644 => 100755 Fifth/lua/lua.c mode change 100644 => 100755 Fifth/lua/lua.h mode change 100644 => 100755 Fifth/lua/lua.o mode change 100644 => 100755 Fifth/lua/luac.c mode change 100644 => 100755 Fifth/lua/luac.o mode change 100644 => 100755 Fifth/lua/luaconf.h mode change 100644 => 100755 Fifth/lua/lualib.h mode change 100644 => 100755 Fifth/lua/lundump.c mode change 100644 => 100755 Fifth/lua/lundump.h mode change 100644 => 100755 Fifth/lua/lundump.o mode change 100644 => 100755 Fifth/lua/lvm.c mode change 100644 => 100755 Fifth/lua/lvm.h mode change 100644 => 100755 Fifth/lua/lvm.o mode change 100644 => 100755 Fifth/lua/lzio.c mode change 100644 => 100755 Fifth/lua/lzio.h mode change 100644 => 100755 Fifth/lua/lzio.o mode change 100644 => 100755 Fifth/lua/print.c mode change 100644 => 100755 Fifth/lua/print.o mode change 100644 => 100755 Fifth/main.cpp mode change 100644 => 100755 Fifth/resources/gfx/Sprites/Art/paintings/base.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/Art/paintings/painting 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/Art/paintings/painting 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/Art/paintings/painting 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/Evil cat/cat frame 0.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/Evil cat/cat frame 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/Evil cat/cat frame 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/backgrounds/background 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/backgrounds/background 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/backgrounds/background 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/backgrounds/background 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/backgrounds/background 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/backgrounds/background 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/backgrounds/background 7.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/backgrounds/background 8.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/backgrounds/background 9.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/barrels/Barrel 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/barrels/Barrel 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/barrels/Barrel 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 1 [16x16].png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 2 [16x16].png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 3 [16x16].png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 4 [16x16].png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 5 [16x16] .png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 10.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 11.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 12.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 13.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 14.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 15.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 7.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 8.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 9.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/blocks (16 x 16)/tile 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/chests/chest 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/chests/chest 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/chests/chest 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/chests/chest 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/chests/chest 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/clouds/cloud 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/clouds/cloud 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/clouds/cloud 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/cracks/cracks 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/cracks/cracks 10.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/cracks/cracks 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/cracks/cracks 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/cracks/cracks 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/cracks/cracks 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/cracks/cracks 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/cracks/cracks 7.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/cracks/cracks 8.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/cracks/cracks 9.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/crosshairs/hitmarker 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/crosshairs/hitmarker 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/crosshairs/hitmarker 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/crosshairs/hitmarker 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/crosshairs/hitmarker 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/crosshairs/hitmarker 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/crosshairs/hitmarker 7.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/enemies/bee.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/enemies/enemy 1 idle f1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/enemies/enemy 1 idle f2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/enemies/enemy 1 running f1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/enemies/enemy 1 running f2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/enemies/fred [HD].png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/enemies/yrl/yrl body 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/houses/House 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/houses/mini house 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/icons/icon [basic].png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/icons/icon.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/icons/icon_1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/icons/icon_2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/items/apple 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/items/apple 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/items/apple 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/items/bomb 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/items/bomb 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/items/bomb 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/items/bomb 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/items/bomb 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/items/bomb 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/Tree 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/Tree 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/birch 0.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/birch 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/birch 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/birch 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/birch.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/bush 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/bush 10.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/bush 11.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/bush 12.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/bush 13.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/bush 14.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/bush 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/bush 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/bush 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/bush 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/bush 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/bush 7.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/bush 8.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/bush 9.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/grass 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/grass 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 10.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 11.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 12.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 13.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 14.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 15.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 16.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 17.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 18.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 19.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 20.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 21.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 7.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 8.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/plant 9.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 10.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 11.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 12.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 13.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 14.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 15.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 16.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 17.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 18.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 19.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 20.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 21.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 22.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 23.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 24.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 25.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 26.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 7.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 8.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/tree 9.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/vine 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/vine 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/vine 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/vine 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/nature/vine 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/other/baloon(0).png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/other/baloon(1).png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/other/baloon(2).png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/other/bench.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/other/holy stone 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/other/moon 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/other/moon 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/other/portal 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/other/public/another guy.psd mode change 100644 => 100755 Fifth/resources/gfx/Sprites/other/public/some guy.psd mode change 100644 => 100755 Fifth/resources/gfx/Sprites/other/realm flag 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/other/realm flag 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/other/sign 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/pets/pet 1 (idle (1)).png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/pets/pet 1 (idle (2)).png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/pets/pet 1 (running (1)).png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/pets/pet 1 (running (1.1)).png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/pets/pet 1 (running (2)).png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/pets/pet 1 (running (2.1)).png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player armour/shoulder armour 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/__player__.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/bodyarmour-1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/bodyarmour-2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/bodyarmour-3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/frame 0.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/frame 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/frame 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/frame a.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/frame b.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/frame c.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/main player/arm 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/main player/arm 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/main player/arm 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/main player/arm 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/main player/arm 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/main player/head 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/main player/part 1.1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/main player/part 2.1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/main player/part 3.1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/main player/part 4.1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/main player/part 4.2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/main player/player.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/part 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/part 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/part 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player 02 running f1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player 02 running f2 v1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player 02 running f2 v2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player asset.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player idle f1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player idle f2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player running f1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player running f2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player running f3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player running f4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player running f5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player01 running f1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player01 running f2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/player_1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player/test.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/arm 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/arm 10.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/arm 11.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/arm 12.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/arm 13.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/arm 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/arm 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/arm 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/arm 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/arm 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/arm 7.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/arm 8.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/arm 9.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/body 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/body 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/body 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/body 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/body 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/body 7.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 10.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 11.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 12.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 13.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 14.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 15.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 16.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 17.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 18.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 19.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 20.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 21.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 22.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 23.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 24.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 25.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 26.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 7.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 8.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/face 9.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/leg 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/leg 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/leg 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/leg 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/leg 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/leg 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player1/leg 7.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player2/player arm 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player2/player body 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player2/player face 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player2/player leg 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player2/player leg 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player2/playerTest.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player #3/player arm 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player #3/player body 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player #3/player head 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player #3/player legs 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player #3/player legs 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player #3/player legs 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player arm 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player body 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player head 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player head 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player head 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player head 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player legs 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player legs 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player legs 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/player3/player legs 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/spritesheets/all 01.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/spritesheets/plant spritesheet 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/spritesheets/plant spritesheet 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/spritesheets/platform spritesheet 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 0.1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 10.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 11.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 12.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 13.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 14.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 15.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 16.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 17.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 18.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 19.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 20.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 21.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 22.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 23.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 24.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 25.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 7.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 8.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone 9.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone block 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone block 10.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone block 11.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone block 12.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone block 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone block 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone block 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone block 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone block 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone block 7.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone block 8.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/stone/stone block 9.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/transparent.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/guns/pistol 1-gold.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/guns/pistol 1-grass.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/guns/pistol 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 1.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 10.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 11.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 12.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 13.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 14.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 15.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 16.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 2.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 3.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 4.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 5.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 6.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 7.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 8.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/swords/weapon 9.png mode change 100644 => 100755 Fifth/resources/gfx/Sprites/weapons/wizard weapons/magic staff 1.png mode change 100644 => 100755 Fifth/resources/gfx/bg.png mode change 100644 => 100755 Fifth/resources/gfx/gfx.png mode change 100644 => 100755 Fifth/resources/gfx/gfx2.png mode change 100644 => 100755 Fifth/resources/gfx/playerSpritesheet.png create mode 100755 Fifth/resources/gfx/player_run.png mode change 100644 => 100755 Fifth/resources/gfx/sheet.png mode change 100644 => 100755 Fifth/resources/gfx/yrl.png mode change 100644 => 100755 Fifth/resources/map/testMap1.map mode change 100644 => 100755 Fifth/resources/map/testMap2.map mode change 100644 => 100755 Fifth/resources/scripts/Standard/ChatController.lua mode change 100644 => 100755 Fifth/resources/scripts/Standard/Controller.lua create mode 100755 Fifth/resources/scripts/Standard/ExplodeOnDeath.lua create mode 100755 Fifth/resources/scripts/Standard/GraphicScript.lua mode change 100644 => 100755 Fifth/resources/scripts/Standard/Living.lua mode change 100644 => 100755 Fifth/resources/scripts/Standard/Movable.lua mode change 100644 => 100755 Fifth/resources/scripts/Standard/Npc.lua mode change 100644 => 100755 Fifth/resources/scripts/Standard/Particle.lua mode change 100644 => 100755 Fifth/resources/scripts/Standard/Projectile.lua mode change 100644 => 100755 Fifth/resources/scripts/Standard/bitwise.lua mode change 100644 => 100755 Fifth/resources/scripts/Standard/class.lua mode change 100644 => 100755 Fifth/resources/scripts/Standard/json.lua mode change 100644 => 100755 Fifth/resources/scripts/Standard/standard.lua mode change 100644 => 100755 Fifth/resources/shader/light.frag create mode 100755 Fifth/resources/ttf/font-.ttf mode change 100755 => 100644 Fifth/resources/ttf/font.ttf diff --git a/Fifth/CAnimation.cpp b/Fifth/CAnimation.cpp old mode 100644 new mode 100755 index ba1dffd..e482b31 --- a/Fifth/CAnimation.cpp +++ b/Fifth/CAnimation.cpp @@ -42,9 +42,9 @@ CSpriteSheet* CAnimation::getSpriteSheet() { return nullptr; } -void CAnimation::onRender(Box destination, bool flip, int angle, CWindow* window, CCamera* camera, RenderFlags renderFlags) { +void CAnimation::onRender(Box destination, bool flip, int angle, int alpha, CWindow* window, CCamera* camera, RenderFlags renderFlags) { int timePassed = SDL_GetTicks() - startTime; - if(timePassed > _imagesPerSecond * 1000) { + if(timePassed >= (1.0f /_imagesPerSecond) * 1000) { startTime = SDL_GetTicks(); currentFrame++; @@ -53,8 +53,12 @@ void CAnimation::onRender(Box destination, bool flip, int angle, CWindow* window } auto sprite = CAssetManager::getSprite(sprites[currentFrame]); - if(!sprite) + if(!sprite) { + NSurface::renderRect(destination.x, destination.y, destination.w, destination.h, window, 255, 0, 255); return; + } + + sprite->onRender(destination, flip, angle, alpha, window, camera, renderFlags); - NSurface::renderTexture(destination, *sprite->getSource(), window->getRenderer(), getSpriteSheet()->getTexture(), flip ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE, angle); + //NSurface::renderTexture(destination, *sprite->getSource(), window->getRenderer(), getSpriteSheet()->getTexture(), flip ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE, angle); } \ No newline at end of file diff --git a/Fifth/CAnimation.h b/Fifth/CAnimation.h old mode 100644 new mode 100755 index 96e9b7b..32004d3 --- a/Fifth/CAnimation.h +++ b/Fifth/CAnimation.h @@ -22,7 +22,7 @@ class CAnimation : public CSprite { CSpriteSheet* getSpriteSheet(); - void onRender(Box destination, bool flip, int angle, CWindow* window, CCamera* camera, RenderFlags renderFlags); + void onRender(Box destination, bool flip, int angle, int alpha, CWindow* window, CCamera* camera, RenderFlags renderFlags); private: std::vector sprites; diff --git a/Fifth/CAssetManager.cpp b/Fifth/CAssetManager.cpp old mode 100644 new mode 100755 index 92d4455..3aad9df --- a/Fifth/CAssetManager.cpp +++ b/Fifth/CAssetManager.cpp @@ -23,7 +23,7 @@ CAssetManager::CAssetManager() { } CSprite* CAssetManager::addSprite(std::string name, std::string spriteSheetKey, Box source) { if(_Sprites.find(name) != _Sprites.end()) { - NFile::log(LogType::WARNING, "Couldn't add sprite: \"", name, "\", because it already exists."); +// NFile::log(LogType::WARNING, "Couldn't add sprite: \"", name, "\", because it already exists."); return _Sprites[name]; } else if(_SpriteSheets.find(spriteSheetKey) == _SpriteSheets.end()) { NFile::log(LogType::WARNING, "Couldn't add sprite: \"", name, "\", because the spritesheet \"", spriteSheetKey, "\" didn't exist."); diff --git a/Fifth/CAssetManager.h b/Fifth/CAssetManager.h old mode 100644 new mode 100755 diff --git a/Fifth/CBackground.cpp b/Fifth/CBackground.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CBackground.h b/Fifth/CBackground.h old mode 100644 new mode 100755 diff --git a/Fifth/CBody.cpp b/Fifth/CBody.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CBody.h b/Fifth/CBody.h old mode 100644 new mode 100755 index 412cd07..363c74c --- a/Fifth/CBody.h +++ b/Fifth/CBody.h @@ -30,6 +30,17 @@ class CBody { int getW(); int getH(); + void setBox(int x, int y, int w, int h) { + _rect.x = x; + _rect.y = y; + _rect.w = w; + _rect.h = h; + } + + void setPosition(int x, int y) { + setBox(x, y, _rect.w, _rect.h); + } + Position getCenter() { return Position{getX() + getW() / 2, getY() + getH() / 2}; } Box _rect; diff --git a/Fifth/CCamera.cpp b/Fifth/CCamera.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CCamera.h b/Fifth/CCamera.h old mode 100644 new mode 100755 diff --git a/Fifth/CChatBubble.cpp b/Fifth/CChatBubble.cpp old mode 100644 new mode 100755 index a0496c9..360cdbf --- a/Fifth/CChatBubble.cpp +++ b/Fifth/CChatBubble.cpp @@ -24,7 +24,7 @@ CChatBubble::CChatBubble(std::string text, CEntity* target, std::string fontKey, } int textSize = 20; - int letterPerSecond = 5; + int letterPerSecond = 100; bool instantText = false; switch(type) { @@ -97,15 +97,15 @@ void CChatBubble::onRender(CWindow* window, CCamera* camera, RenderFlags renderF if(_TextVector[0].getFont() == nullptr) return; - int marginX = 4; + int marginX = 2; int marginY = 2; - int floatOverHead = 20; + int floatOverHead = 32; int boxX = _target->body->getX() + _target->body->getW() / 2 - _widestLine / 2; int boxY = _target->body->getY() - _totalHeight - floatOverHead; - int boxW = _widestLine; - int boxH = _totalHeight; + int boxW = _widestLine + marginX; + int boxH = _totalHeight + marginY; if(camera->collision(boxX, boxY, @@ -116,7 +116,7 @@ void CChatBubble::onRender(CWindow* window, CCamera* camera, RenderFlags renderF boxW, boxH, window, _rB, _gB, _bB, 100); - + int currentLine = 0; auto i = _TextVector.begin(); while(i != _TextVector.end()) { diff --git a/Fifth/CChatBubble.h b/Fifth/CChatBubble.h old mode 100644 new mode 100755 diff --git a/Fifth/CClient.cpp b/Fifth/CClient.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CClient.h b/Fifth/CClient.h old mode 100644 new mode 100755 diff --git a/Fifth/CCombatText.cpp b/Fifth/CCombatText.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CCombatText.h b/Fifth/CCombatText.h old mode 100644 new mode 100755 diff --git a/Fifth/CComponent.cpp b/Fifth/CComponent.cpp old mode 100644 new mode 100755 index 4156c2d..55fd34a --- a/Fifth/CComponent.cpp +++ b/Fifth/CComponent.cpp @@ -160,6 +160,33 @@ void CComponent::onDeserialize(std::string value, CInstance* instance) { tempInstance = nullptr; } +void CComponent::onClick(int x, int y, CInstance* instance) { + if(!object.hasReference("onClick")) + return; + + tempInstance = instance; + + object.beginCall("onClick"); + object.pushObject(x); + object.pushObject(y); + object.endCall(2, 0); + + tempInstance = nullptr; +} + +void CComponent::onTextInput(CInstance* instance, std::string input) { + if(!object.hasReference("onTextInput")) + return; + + tempInstance = instance; + + object.beginCall("onTextInput"); + object.pushObject(input); + object.endCall(1, 0); + + tempInstance = nullptr; +} + void CComponent::callSimpleFunction(std::string function) { if(!object.hasReference(function.c_str())) return; @@ -191,7 +218,7 @@ void CComponent::renderText(int x, int y, int size, std::string text, std::strin return; CText textObj(text, size, fontKey, Color(r, b, g)); - NSurface::renderText(x, y, &textObj, tempWindow); + NSurface::renderText(x, y, &textObj, tempWindow, size); } int CComponent::getRelativeMouse(lua_State* L) { diff --git a/Fifth/CComponent.h b/Fifth/CComponent.h old mode 100644 new mode 100755 index 8892589..8ceaf1e --- a/Fifth/CComponent.h +++ b/Fifth/CComponent.h @@ -48,8 +48,6 @@ class CComponent { void onLoop(CInstance* instance); void onInit(CInstance* instance); - void onEvent(CInstance* instance, int key, bool keyDown); - void onKeyStates(CInstance* instance, const Uint8* keystates); void onRender(CWindow* window, CCamera* camera, RenderFlags renderFlags); void onRenderAdditional(CWindow* window, CCamera* camera, RenderFlags renderFlags); bool onCollision(CEntity* target, CollisionSides* collisionSides); @@ -57,6 +55,11 @@ class CComponent { void onSerialize(rapidjson::Value* value, rapidjson::Document::AllocatorType* alloc, CInstance* instance); void onDeserialize(std::string value, CInstance* instance); + void onClick(int x, int y, CInstance* instance); + void onEvent(CInstance* instance, int key, bool keyDown); + void onKeyStates(CInstance* instance, const Uint8* keystates); + void onTextInput(CInstance* instance, std::string input); + void callSimpleFunction(std::string function); void pushThis(); diff --git a/Fifth/CEntity.cpp b/Fifth/CEntity.cpp old mode 100644 new mode 100755 index f70ed4e..6702118 --- a/Fifth/CEntity.cpp +++ b/Fifth/CEntity.cpp @@ -109,6 +109,14 @@ void CEntity::onKeyStates(CInstance* instance, const Uint8* keystates) { i.second->onKeyStates(instance, keystates); } +void CEntity::onTextInput(CInstance* instance, std::string input) { + if(instance->player != this && instance->controller != this) + return; + + for(auto& i: components) + i.second->onTextInput(instance, input); +} + void CEntity::onRender(CWindow* window, CCamera* camera, RenderFlags renderFlags) { if(toRemove || isDead) @@ -126,9 +134,9 @@ void CEntity::onRender(CWindow* window, CCamera* camera, RenderFlags renderFlags else { int spriteWidth = body->getW(); int spriteHeight = body->getH(); - int lean = (body->velX / 0.9f) /* + sin(body->getX() * 200) * 2*/; + int lean = (body->velX / 2.0f) /* + sin(body->getX() * 200) * 2*/; - getSprite()->onRender(Box{x, y, spriteWidth, spriteHeight}, hasProperty(EntityProperty::FLIP), lean, window, camera, renderFlags); + getSprite()->onRender(Box{x, y, spriteWidth, spriteHeight}, hasProperty(EntityProperty::FLIP), lean, transparency, window, camera, renderFlags); } } @@ -197,7 +205,7 @@ void CEntity::_serialize(rapidjson::Value* value, rapidjson::Document::Allocator } addValue(value, alloc, "spriteKeys", &sprites); - addString(value, alloc, "spriteKey", spriteKey); + addString(value, alloc, "defaultSpriteKey", defaultSprite); addNumber(value, alloc, "colorR", color.r); addNumber(value, alloc, "colorG", color.g); addNumber(value, alloc, "colorB", color.b); @@ -217,7 +225,17 @@ void CEntity::_deserialize(const rapidjson::Value* value) { assignFloat(value, "velX", &body->velX); assignFloat(value, "velY", &body->velY); - assignString(value, "spriteKey", &spriteKey); + if(value->HasMember("spriteKeys")) { + for(rapidjson::Value::ConstMemberIterator i = (*value)["spriteKeys"].MemberBegin(); i != (*value)["spriteKeys"].MemberEnd(); i++) { + const rapidjson::Value* val = &i->value; + std::string key = val->GetString(); + std::string name = i->name.GetString(); + + spriteStateTypes[name] = key; + } + } + + assignString(value, "defaultSpriteKey", &defaultSprite); assignInt(value, "properties", &properties); assignInt(value, "collisionLayers", &collisionLayer); @@ -228,6 +246,12 @@ void CEntity::_deserialize(const rapidjson::Value* value) { } +void CEntity::onClick(int x, int y, CInstance* instance) { + for(auto& i: components) { + i.second->onClick(x, y, instance); + } +} + bool CEntity::isOnCollisionLayer(int collisionLayer) { return this->collisionLayer & collisionLayer; } diff --git a/Fifth/CEntity.h b/Fifth/CEntity.h old mode 100644 new mode 100755 index 91a4cad..7982637 --- a/Fifth/CEntity.h +++ b/Fifth/CEntity.h @@ -87,8 +87,7 @@ struct CollisionSides { }; class CEntity : public CSerializable { - -friend class CComponent; + friend class CComponent; friend class CEntityManager; public: @@ -98,14 +97,17 @@ friend class CComponent; void init(); void onLoop(CInstance* instance); - void onEvent(CInstance* instance, int key, bool keyDown); - void onKeyStates(CInstance* instance, const Uint8* keystates); void onRender(CWindow* window, CCamera* camera, RenderFlags renderFlags); virtual void renderAdditional(CWindow* window, CCamera* camera, RenderFlags renderFlags); void onSerialize(rapidjson::Value* value, rapidjson::Document::AllocatorType* alloc, CInstance* instance); void onDeserialize(const rapidjson::Value* value, CInstance* instance); + void onEvent(CInstance* instance, int key, bool keyDown); + void onKeyStates(CInstance* instance, const Uint8* keystates); + void onTextInput(CInstance* instance, std::string input); + void onClick(int x, int y, CInstance* instance); + int collisionLayer; bool isOnCollisionLayer(int collisionLayer); void toggleCollisionLayer(int collisionLayer) { this->collisionLayer ^= collisionLayer; } diff --git a/Fifth/CEntityManager.cpp b/Fifth/CEntityManager.cpp old mode 100644 new mode 100755 index 24d976d..b038728 --- a/Fifth/CEntityManager.cpp +++ b/Fifth/CEntityManager.cpp @@ -75,14 +75,27 @@ int CEntityManager::pushEntities(lua_State* L) { return 1; } -CEntity* CEntityManager::getEntityAtCoordinate(int x, int y) { +CEntity* CEntityManager::getEntityAtCoordinate(int x, int y, CEntity* except /* = nullptr */) { for (auto &i: _entities) { - if(i.second->coordinateCollision(x, y, 1, 1)) - return i.second; + if(i.second->coordinateCollision(x, y, 1, 1)) { + if(i.second != except) + return i.second; + } } return nullptr; } +std::vector CEntityManager::getEntitiesAtCoordinate(int x, int y) { + std::vector toReturn = {}; + + for (auto &i: _entities) { + if(i.second->coordinateCollision(x, y, 1, 1)) + toReturn.push_back(i.second); + } + + return toReturn; +} + std::string CEntityManager::getNameOfEntity(CEntity *entity) { for (auto &i: _entities) { // There must be a better way of doing this if(i.second == entity) diff --git a/Fifth/CEntityManager.h b/Fifth/CEntityManager.h old mode 100644 new mode 100755 index 3cb7f65..cb16087 --- a/Fifth/CEntityManager.h +++ b/Fifth/CEntityManager.h @@ -40,7 +40,8 @@ class CEntityManager : public CSerializable { CEntityManager(); CEntity* getEntity(std::string name); - CEntity* getEntityAtCoordinate(int x, int y); + CEntity* getEntityAtCoordinate(int x, int y, CEntity* except = nullptr); + std::vector getEntitiesAtCoordinate(int x, int y); std::string getNameOfEntity(CEntity* entity); CBackground* getBackground(std::string name); std::string addEntity(CEntity* entity, std::string name = ""); diff --git a/Fifth/CGame.cpp b/Fifth/CGame.cpp old mode 100644 new mode 100755 index f45494c..53cb74e --- a/Fifth/CGame.cpp +++ b/Fifth/CGame.cpp @@ -64,6 +64,7 @@ int CGame::onExecute() { while(_delta >= 1) { // Todo implement variable time step instead of this laggy thing if(_delta > 20) { // To make sure it doesn't freeze + //NFile::log(LogType::WARNING, "Game exeeding delta limit (", 20, "), cleaning up particles."); instance.entityManager.particleCleanup(); } @@ -145,8 +146,8 @@ void CGame::_restart() { CBackground* background = new CBackground("background", 0.1, BackgroundOffset{0, -450, 1.75f}); instance.entityManager.addBackground("main", background); - CAnimation* anim = new CAnimation({"test1", "test2", "test3", "test4"}, 1); - CAssetManager::addSprite(anim, "test5"); + CAnimation* anim = new CAnimation({"test1", "test2", "test3", "test4", "test5", "test6"}, 10); + CAssetManager::addSprite(anim, "test7"); auto movable = CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/Movable.lua"); auto living = CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/Living.lua"); @@ -156,6 +157,8 @@ void CGame::_restart() { CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/Npc.lua"); CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/Particle.lua"); CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/Serializable.lua"); + CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/GraphicScript.lua"); + CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/ExplodeOnDeath.lua"); auto temp = new CEntity(Box{0, 0, 0, 0}, Color{0, 0, 0, 0}); instance.entityManager.addEntity(temp, "Controller"); @@ -163,8 +166,9 @@ void CGame::_restart() { temp->addComponent(&instance, chatController); instance.controller = temp; - temp = new CEntity(Box{50, -500, 16 * 4, 32 * 4}, "test5"); + temp = new CEntity(Box{50, -500, 16 * 4, 32 * 4}, "test1"); instance.entityManager.addEntity(temp, "5:Player"); + temp->spriteStateTypes["WALKING"] = "test7"; // temp->spriteStateTypes[SpriteStateTypes::ASCENDING] = // temp->spriteStateTypes[SpriteStateTypes::DESCENDING] = "playerPinkRunning"; temp->addComponent(&instance, movable); @@ -242,6 +246,10 @@ void CGame::_initLua() { .addFunction("createSprite", (CSprite* (*)(CSpriteSheet*, Box)) &CAssetManager::createSprite) .endNamespace() + .beginClass("LuaObject") + .addFunction("getScript", &CLuaObject::getScript) + .endClass() + .beginClass("LuaScript") .addFunction("getName", &CLuaScript::getName) .endClass() @@ -268,6 +276,9 @@ void CGame::_initLua() { .addFunction("setSpriteStateType", &CEntity::setSpriteStateType) .addFunction("getSprite", &CEntity::getSprite) .addFunction("hasSprite", &CEntity::hasSprite) + .addFunction("setSprite", &CEntity::setSprite) + .addFunction("getSpriteFromState", &CEntity::getSpriteFromState) + .addData("defaultSprite", &CEntity::defaultSprite) .endClass() .beginClass("Component") @@ -281,6 +292,7 @@ void CGame::_initLua() { .addCFunction("getMouse", &CComponent::getMouse) .addData("instance", &CComponent::tempInstance) .addData("camera", &CComponent::tempCamera) + .addData("object", &CComponent::object) .endClass() .beginClass("Box") @@ -339,6 +351,8 @@ void CGame::_initLua() { .addData("velX", &CBody::velX) .addData("velY", &CBody::velY) .addData("box", &CBody::_rect) + .addFunction("setBox", &CBody::setBox) + .addFunction("setPosition", &CBody::setPosition) .endClass() .beginClass("KeyState") @@ -358,6 +372,7 @@ void CGame::_initLua() { .addFunction("addParticle", &CEntityManager::addParticle) .addFunction("getEntity", &CEntityManager::getEntity) .addFunction("getNameOfEntity", &CEntityManager::getNameOfEntity) + .addFunction("getEntityAtCoordinate", &CEntityManager::getEntityAtCoordinate) .addCFunction("getEntities", &CEntityManager::pushEntities) .addFunction("createColoredEntity", (CEntity* (CEntityManager::*)(Box, Color)) &CEntityManager::createEntity) .addFunction("createSpriteEntity", (CEntity* (CEntityManager::*)(Box, std::string)) &CEntityManager::createEntity) diff --git a/Fifth/CGame.h b/Fifth/CGame.h old mode 100644 new mode 100755 diff --git a/Fifth/CGame_onEvent.cpp b/Fifth/CGame_onEvent.cpp old mode 100644 new mode 100755 index 96a1914..71dee74 --- a/Fifth/CGame_onEvent.cpp +++ b/Fifth/CGame_onEvent.cpp @@ -23,9 +23,11 @@ void CGame::_handleKeyStates() { const Uint8* keystate = SDL_GetKeyboardState(NULL); - instance.controller->onKeyStates(&instance, keystate); + if(instance.controller) + instance.controller->onKeyStates(&instance, keystate); if(ignoreEvents) return; - instance.player->onKeyStates(&instance, keystate); + if(instance.player) + instance.player->onKeyStates(&instance, keystate); } void CGame::_onEvent(SDL_Event* event) { @@ -53,6 +55,12 @@ void CGame::_onEvent(SDL_Event* event) { } break; + case SDL_TEXTINPUT: + instance.controller->onTextInput(&instance, (std::string)event->text.text); + if(ignoreEvents) break; + instance.player->onTextInput(&instance, (std::string)event->text.text); + break; + case SDL_KEYDOWN: instance.controller->onEvent(&instance, event->key.keysym.sym, true); if(ignoreEvents) break; @@ -126,31 +134,46 @@ void CGame::_onEvent(SDL_Event* event) { break; case SDL_KEYUP: - instance.controller->onEvent(&instance, event->key.keysym.sym, false); + if(instance.controller) + instance.controller->onEvent(&instance, event->key.keysym.sym, false); if(ignoreEvents) break; - instance.player->onEvent(&instance, event->key.keysym.sym, false); + if(instance.player) + instance.player->onEvent(&instance, event->key.keysym.sym, false); break; default: break; case SDL_MOUSEBUTTONDOWN: + { + bool type = 0; if(NMouse::leftMouseButtonPressed()) { - auto tempTarget = instance.entityManager.getEntityAtCoordinate(NMouse::relativeMouseX(instance.camera), NMouse::relativeMouseY(instance.camera)); - if(tempTarget != nullptr) { - std::string toSay = "Name: \"" + instance.entityManager.getNameOfEntity(tempTarget) + - "\", CollisionLayer: " + std::to_string(tempTarget->collisionLayer); - tempTarget->say(toSay, "TESTFONT", ChatBubbleType::SAY); - } +// auto tempTarget = instance.entityManager.getEntityAtCoordinate(NMouse::relativeMouseX(instance.camera), NMouse::relativeMouseY(instance.camera)); +// if(tempTarget != nullptr) { +// std::string toSay = "Name: \"" + instance.entityManager.getNameOfEntity(tempTarget) + +// "\", CollisionLayer: " + std::to_string(tempTarget->collisionLayer); +// tempTarget->say(toSay, "TESTFONT", ChatBubbleType::SAY); +// } } if(NMouse::rightMouseButtonPressed()) { + type = 1; auto tempTarget = instance.entityManager.getEntityAtCoordinate(NMouse::relativeMouseX(instance.camera), NMouse::relativeMouseY(instance.camera)); if(tempTarget != nullptr) { tempTarget->isDead = true; } } + + int x = NMouse::relativeMouseX(instance.camera); + int y = NMouse::relativeMouseY(instance.camera); + auto entities = instance.entityManager.getEntitiesAtCoordinate(x, y); + + for(auto& i: entities) { + i->onClick(x, y, &instance); + } + + } break; } diff --git a/Fifth/CGuiText.cpp b/Fifth/CGuiText.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CGuiText.h b/Fifth/CGuiText.h old mode 100644 new mode 100755 diff --git a/Fifth/CInstance.cpp b/Fifth/CInstance.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CInstance.h b/Fifth/CInstance.h old mode 100644 new mode 100755 diff --git a/Fifth/CLuaObject.cpp b/Fifth/CLuaObject.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CLuaObject.h b/Fifth/CLuaObject.h old mode 100644 new mode 100755 diff --git a/Fifth/CLuaScript.cpp b/Fifth/CLuaScript.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CLuaScript.h b/Fifth/CLuaScript.h old mode 100644 new mode 100755 diff --git a/Fifth/CNetwork.cpp b/Fifth/CNetwork.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CNetwork.h b/Fifth/CNetwork.h old mode 100644 new mode 100755 diff --git a/Fifth/CSerializable.cpp b/Fifth/CSerializable.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CSerializable.h b/Fifth/CSerializable.h old mode 100644 new mode 100755 diff --git a/Fifth/CServer.cpp b/Fifth/CServer.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CServer.h b/Fifth/CServer.h old mode 100644 new mode 100755 diff --git a/Fifth/CServerInstance.cpp b/Fifth/CServerInstance.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CServerInstance.h b/Fifth/CServerInstance.h old mode 100644 new mode 100755 diff --git a/Fifth/CSprite.cpp b/Fifth/CSprite.cpp old mode 100644 new mode 100755 index 9299a82..a08ea45 --- a/Fifth/CSprite.cpp +++ b/Fifth/CSprite.cpp @@ -17,6 +17,6 @@ CSprite::CSprite(CSpriteSheet* spriteSheet, Box rect) : _spriteSheet(spriteSheet), _source({rect.x, rect.y, rect.w, rect.h}) { } -void CSprite::onRender(Box destination, bool flip, int angle, CWindow* window, CCamera* camera, RenderFlags renderFlags) { - NSurface::renderTexture(destination, *getSource(), window->getRenderer(), getSpriteSheet()->getTexture(), flip ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE, angle); +void CSprite::onRender(Box destination, bool flip, int angle, int alpha, CWindow* window, CCamera* camera, RenderFlags renderFlags) { + NSurface::renderTexture(destination, *getSource(), window->getRenderer(), getSpriteSheet()->getTexture(), flip ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE, angle, alpha); } \ No newline at end of file diff --git a/Fifth/CSprite.h b/Fifth/CSprite.h old mode 100644 new mode 100755 index cfd0552..2ffc254 --- a/Fifth/CSprite.h +++ b/Fifth/CSprite.h @@ -29,7 +29,7 @@ class CSprite { virtual CSpriteSheet* getSpriteSheet() { return _spriteSheet; } Box* getSource() { return &_source; } - virtual void onRender(Box destination, bool flip, int angle, CWindow* window, CCamera* camera, RenderFlags renderFlags); + virtual void onRender(Box destination, bool flip, int angle, int alpha, CWindow* window, CCamera* camera, RenderFlags renderFlags); private: CSpriteSheet* _spriteSheet; // Don't modify from here diff --git a/Fifth/CSpriteSheet.cpp b/Fifth/CSpriteSheet.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CSpriteSheet.h b/Fifth/CSpriteSheet.h old mode 100644 new mode 100755 diff --git a/Fifth/CText.cpp b/Fifth/CText.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CText.h b/Fifth/CText.h old mode 100644 new mode 100755 diff --git a/Fifth/CTile.cpp b/Fifth/CTile.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CTile.h b/Fifth/CTile.h old mode 100644 new mode 100755 diff --git a/Fifth/CWindow.cpp b/Fifth/CWindow.cpp old mode 100644 new mode 100755 diff --git a/Fifth/CWindow.h b/Fifth/CWindow.h old mode 100644 new mode 100755 diff --git a/Fifth/Define.h b/Fifth/Define.h old mode 100644 new mode 100755 diff --git a/Fifth/NFile.cpp b/Fifth/NFile.cpp old mode 100644 new mode 100755 diff --git a/Fifth/NFile.h b/Fifth/NFile.h old mode 100644 new mode 100755 diff --git a/Fifth/NMouse.cpp b/Fifth/NMouse.cpp old mode 100644 new mode 100755 diff --git a/Fifth/NMouse.h b/Fifth/NMouse.h old mode 100644 new mode 100755 diff --git a/Fifth/NSurface.cpp b/Fifth/NSurface.cpp old mode 100644 new mode 100755 index c861ee1..39ed07f --- a/Fifth/NSurface.cpp +++ b/Fifth/NSurface.cpp @@ -37,12 +37,12 @@ void NSurface::renderSprite(int x, int y, int w, int h, CSprite *sprite, CWindow SDL_RenderCopyEx(window->getRenderer(), sprite->getSpriteSheet()->getTexture(), &src, &destination, 0, nullptr, flip); } -void NSurface::renderText(int x, int y, CText* text, CWindow* window) { +void NSurface::renderText(int x, int y, CText* text, CWindow* window, float size /* = 1 */) { SDL_Surface *surface = TTF_RenderText_Blended(text->getFont(), (*text->getText()).c_str(), *text->getColor()); SDL_Texture *texture = SDL_CreateTextureFromSurface(window->getRenderer(), surface); int w, h; SDL_QueryTexture(texture, nullptr, nullptr, &w, &h); - renderTexture(x, y, w, h, window->getRenderer(), texture); + renderTexture(x, y, (float)w * size, (float)h * size, window->getRenderer(), texture); SDL_FreeSurface(surface); SDL_DestroyTexture(texture); } diff --git a/Fifth/NSurface.h b/Fifth/NSurface.h old mode 100644 new mode 100755 index 8744bd8..7c8e1c9 --- a/Fifth/NSurface.h +++ b/Fifth/NSurface.h @@ -56,7 +56,7 @@ namespace NSurface { void renderRect(int x, int y, int w, int h, CWindow* window, int r, int g, int b, int a = 255); void renderSprite(int x, int y, int w, int h, CSprite* sprite, CWindow* window, SDL_RendererFlip flip, int a = 255); - void renderText(int x, int y, CText* text, CWindow* window); + void renderText(int x, int y, CText* text, CWindow* window, float size = 1); void renderTexture(int x, int y, int w, int h, SDL_Renderer* renderer, SDL_Texture *texture); void renderTexture(Box destination, SDL_Rect src, SDL_Renderer* renderer, SDL_Texture* texture, SDL_RendererFlip flip, int angle, int a = 255); void renderLine(Line line, SDL_Renderer* renderer, CCamera* camera = nullptr); diff --git a/Fifth/ResourcePath.hpp b/Fifth/ResourcePath.hpp old mode 100644 new mode 100755 diff --git a/Fifth/ResourcePath.mm b/Fifth/ResourcePath.mm old mode 100644 new mode 100755 diff --git a/Fifth/lua/Makefile b/Fifth/lua/Makefile old mode 100644 new mode 100755 diff --git a/Fifth/lua/lapi.c b/Fifth/lua/lapi.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lapi.h b/Fifth/lua/lapi.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lapi.o b/Fifth/lua/lapi.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lauxlib.c b/Fifth/lua/lauxlib.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lauxlib.h b/Fifth/lua/lauxlib.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lauxlib.o b/Fifth/lua/lauxlib.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lbaselib.c b/Fifth/lua/lbaselib.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lbaselib.o b/Fifth/lua/lbaselib.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lcode.c b/Fifth/lua/lcode.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lcode.h b/Fifth/lua/lcode.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lcode.o b/Fifth/lua/lcode.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/ldblib.c b/Fifth/lua/ldblib.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/ldblib.o b/Fifth/lua/ldblib.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/ldebug.c b/Fifth/lua/ldebug.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/ldebug.h b/Fifth/lua/ldebug.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/ldebug.o b/Fifth/lua/ldebug.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/ldo.c b/Fifth/lua/ldo.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/ldo.h b/Fifth/lua/ldo.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/ldo.o b/Fifth/lua/ldo.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/ldump.c b/Fifth/lua/ldump.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/ldump.o b/Fifth/lua/ldump.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lfunc.c b/Fifth/lua/lfunc.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lfunc.h b/Fifth/lua/lfunc.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lfunc.o b/Fifth/lua/lfunc.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lgc.c b/Fifth/lua/lgc.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lgc.h b/Fifth/lua/lgc.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lgc.o b/Fifth/lua/lgc.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/liblua.a b/Fifth/lua/liblua.a old mode 100644 new mode 100755 diff --git a/Fifth/lua/linit.c b/Fifth/lua/linit.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/linit.o b/Fifth/lua/linit.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/liolib.c b/Fifth/lua/liolib.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/liolib.o b/Fifth/lua/liolib.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/llex.c b/Fifth/lua/llex.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/llex.h b/Fifth/lua/llex.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/llex.o b/Fifth/lua/llex.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/llimits.h b/Fifth/lua/llimits.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lmathlib.c b/Fifth/lua/lmathlib.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lmathlib.o b/Fifth/lua/lmathlib.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lmem.c b/Fifth/lua/lmem.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lmem.h b/Fifth/lua/lmem.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lmem.o b/Fifth/lua/lmem.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/loadlib.c b/Fifth/lua/loadlib.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/loadlib.o b/Fifth/lua/loadlib.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lobject.c b/Fifth/lua/lobject.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lobject.h b/Fifth/lua/lobject.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lobject.o b/Fifth/lua/lobject.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lopcodes.c b/Fifth/lua/lopcodes.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lopcodes.h b/Fifth/lua/lopcodes.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lopcodes.o b/Fifth/lua/lopcodes.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/loslib.c b/Fifth/lua/loslib.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/loslib.o b/Fifth/lua/loslib.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lparser.c b/Fifth/lua/lparser.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lparser.h b/Fifth/lua/lparser.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lparser.o b/Fifth/lua/lparser.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lstate.c b/Fifth/lua/lstate.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lstate.h b/Fifth/lua/lstate.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lstate.o b/Fifth/lua/lstate.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lstring.c b/Fifth/lua/lstring.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lstring.h b/Fifth/lua/lstring.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lstring.o b/Fifth/lua/lstring.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lstrlib.c b/Fifth/lua/lstrlib.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lstrlib.o b/Fifth/lua/lstrlib.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/ltable.c b/Fifth/lua/ltable.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/ltable.h b/Fifth/lua/ltable.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/ltable.o b/Fifth/lua/ltable.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/ltablib.c b/Fifth/lua/ltablib.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/ltablib.o b/Fifth/lua/ltablib.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/ltm.c b/Fifth/lua/ltm.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/ltm.h b/Fifth/lua/ltm.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/ltm.o b/Fifth/lua/ltm.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lua.c b/Fifth/lua/lua.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lua.h b/Fifth/lua/lua.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lua.o b/Fifth/lua/lua.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/luac.c b/Fifth/lua/luac.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/luac.o b/Fifth/lua/luac.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/luaconf.h b/Fifth/lua/luaconf.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lualib.h b/Fifth/lua/lualib.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lundump.c b/Fifth/lua/lundump.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lundump.h b/Fifth/lua/lundump.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lundump.o b/Fifth/lua/lundump.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lvm.c b/Fifth/lua/lvm.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lvm.h b/Fifth/lua/lvm.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lvm.o b/Fifth/lua/lvm.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/lzio.c b/Fifth/lua/lzio.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/lzio.h b/Fifth/lua/lzio.h old mode 100644 new mode 100755 diff --git a/Fifth/lua/lzio.o b/Fifth/lua/lzio.o old mode 100644 new mode 100755 diff --git a/Fifth/lua/print.c b/Fifth/lua/print.c old mode 100644 new mode 100755 diff --git a/Fifth/lua/print.o b/Fifth/lua/print.o old mode 100644 new mode 100755 diff --git a/Fifth/main.cpp b/Fifth/main.cpp old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/Art/paintings/base.png b/Fifth/resources/gfx/Sprites/Art/paintings/base.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/Art/paintings/painting 1.png b/Fifth/resources/gfx/Sprites/Art/paintings/painting 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/Art/paintings/painting 2.png b/Fifth/resources/gfx/Sprites/Art/paintings/painting 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/Art/paintings/painting 3.png b/Fifth/resources/gfx/Sprites/Art/paintings/painting 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/Evil cat/cat frame 0.png b/Fifth/resources/gfx/Sprites/Evil cat/cat frame 0.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/Evil cat/cat frame 1.png b/Fifth/resources/gfx/Sprites/Evil cat/cat frame 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/Evil cat/cat frame 2.png b/Fifth/resources/gfx/Sprites/Evil cat/cat frame 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 1.png b/Fifth/resources/gfx/Sprites/backgrounds/background 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 2.png b/Fifth/resources/gfx/Sprites/backgrounds/background 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 3.png b/Fifth/resources/gfx/Sprites/backgrounds/background 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 4.png b/Fifth/resources/gfx/Sprites/backgrounds/background 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 5.png b/Fifth/resources/gfx/Sprites/backgrounds/background 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 6.png b/Fifth/resources/gfx/Sprites/backgrounds/background 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 7.png b/Fifth/resources/gfx/Sprites/backgrounds/background 7.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 8.png b/Fifth/resources/gfx/Sprites/backgrounds/background 8.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 9.png b/Fifth/resources/gfx/Sprites/backgrounds/background 9.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/barrels/Barrel 1.png b/Fifth/resources/gfx/Sprites/barrels/Barrel 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/barrels/Barrel 2.png b/Fifth/resources/gfx/Sprites/barrels/Barrel 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/barrels/Barrel 3.png b/Fifth/resources/gfx/Sprites/barrels/Barrel 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 1 [16x16].png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 1 [16x16].png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 2 [16x16].png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 2 [16x16].png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 3 [16x16].png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 3 [16x16].png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 4 [16x16].png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 4 [16x16].png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 5 [16x16] .png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 5 [16x16] .png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 6.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 1.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 10.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 10.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 11.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 11.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 12.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 12.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 13.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 13.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 14.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 14.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 15.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 15.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 2.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 3.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 4.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 5.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 6.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 7.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 7.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 8.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 8.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 9.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 9.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/tile 1.png b/Fifth/resources/gfx/Sprites/blocks (16 x 16)/tile 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/chests/chest 1.png b/Fifth/resources/gfx/Sprites/chests/chest 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/chests/chest 2.png b/Fifth/resources/gfx/Sprites/chests/chest 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/chests/chest 3.png b/Fifth/resources/gfx/Sprites/chests/chest 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/chests/chest 4.png b/Fifth/resources/gfx/Sprites/chests/chest 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/chests/chest 5.png b/Fifth/resources/gfx/Sprites/chests/chest 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/clouds/cloud 1.png b/Fifth/resources/gfx/Sprites/clouds/cloud 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/clouds/cloud 2.png b/Fifth/resources/gfx/Sprites/clouds/cloud 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/clouds/cloud 3.png b/Fifth/resources/gfx/Sprites/clouds/cloud 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 1.png b/Fifth/resources/gfx/Sprites/cracks/cracks 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 10.png b/Fifth/resources/gfx/Sprites/cracks/cracks 10.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 2.png b/Fifth/resources/gfx/Sprites/cracks/cracks 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 3.png b/Fifth/resources/gfx/Sprites/cracks/cracks 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 4.png b/Fifth/resources/gfx/Sprites/cracks/cracks 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 5.png b/Fifth/resources/gfx/Sprites/cracks/cracks 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 6.png b/Fifth/resources/gfx/Sprites/cracks/cracks 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 7.png b/Fifth/resources/gfx/Sprites/cracks/cracks 7.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 8.png b/Fifth/resources/gfx/Sprites/cracks/cracks 8.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 9.png b/Fifth/resources/gfx/Sprites/cracks/cracks 9.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 1.png b/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 2.png b/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 3.png b/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 4.png b/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 5.png b/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 6.png b/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 7.png b/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 7.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/enemies/bee.png b/Fifth/resources/gfx/Sprites/enemies/bee.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/enemies/enemy 1 idle f1.png b/Fifth/resources/gfx/Sprites/enemies/enemy 1 idle f1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/enemies/enemy 1 idle f2.png b/Fifth/resources/gfx/Sprites/enemies/enemy 1 idle f2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/enemies/enemy 1 running f1.png b/Fifth/resources/gfx/Sprites/enemies/enemy 1 running f1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/enemies/enemy 1 running f2.png b/Fifth/resources/gfx/Sprites/enemies/enemy 1 running f2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/enemies/fred [HD].png b/Fifth/resources/gfx/Sprites/enemies/fred [HD].png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 1.png b/Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 2.png b/Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 3.png b/Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 4.png b/Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl body 1.png b/Fifth/resources/gfx/Sprites/enemies/yrl/yrl body 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 1.png b/Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 2.png b/Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 3.png b/Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/houses/House 1.png b/Fifth/resources/gfx/Sprites/houses/House 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/houses/mini house 1.png b/Fifth/resources/gfx/Sprites/houses/mini house 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/icons/icon [basic].png b/Fifth/resources/gfx/Sprites/icons/icon [basic].png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/icons/icon.png b/Fifth/resources/gfx/Sprites/icons/icon.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/icons/icon_1.png b/Fifth/resources/gfx/Sprites/icons/icon_1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/icons/icon_2.png b/Fifth/resources/gfx/Sprites/icons/icon_2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/items/apple 1.png b/Fifth/resources/gfx/Sprites/items/apple 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/items/apple 2.png b/Fifth/resources/gfx/Sprites/items/apple 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/items/apple 3.png b/Fifth/resources/gfx/Sprites/items/apple 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/items/bomb 1.png b/Fifth/resources/gfx/Sprites/items/bomb 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/items/bomb 2.png b/Fifth/resources/gfx/Sprites/items/bomb 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/items/bomb 3.png b/Fifth/resources/gfx/Sprites/items/bomb 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/items/bomb 4.png b/Fifth/resources/gfx/Sprites/items/bomb 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/items/bomb 5.png b/Fifth/resources/gfx/Sprites/items/bomb 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/items/bomb 6.png b/Fifth/resources/gfx/Sprites/items/bomb 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/Tree 1.png b/Fifth/resources/gfx/Sprites/nature/Tree 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/Tree 2.png b/Fifth/resources/gfx/Sprites/nature/Tree 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/birch 0.png b/Fifth/resources/gfx/Sprites/nature/birch 0.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/birch 1.png b/Fifth/resources/gfx/Sprites/nature/birch 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/birch 2.png b/Fifth/resources/gfx/Sprites/nature/birch 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/birch 3.png b/Fifth/resources/gfx/Sprites/nature/birch 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/birch.png b/Fifth/resources/gfx/Sprites/nature/birch.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/bush 1.png b/Fifth/resources/gfx/Sprites/nature/bush 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/bush 10.png b/Fifth/resources/gfx/Sprites/nature/bush 10.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/bush 11.png b/Fifth/resources/gfx/Sprites/nature/bush 11.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/bush 12.png b/Fifth/resources/gfx/Sprites/nature/bush 12.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/bush 13.png b/Fifth/resources/gfx/Sprites/nature/bush 13.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/bush 14.png b/Fifth/resources/gfx/Sprites/nature/bush 14.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/bush 2.png b/Fifth/resources/gfx/Sprites/nature/bush 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/bush 3.png b/Fifth/resources/gfx/Sprites/nature/bush 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/bush 4.png b/Fifth/resources/gfx/Sprites/nature/bush 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/bush 5.png b/Fifth/resources/gfx/Sprites/nature/bush 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/bush 6.png b/Fifth/resources/gfx/Sprites/nature/bush 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/bush 7.png b/Fifth/resources/gfx/Sprites/nature/bush 7.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/bush 8.png b/Fifth/resources/gfx/Sprites/nature/bush 8.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/bush 9.png b/Fifth/resources/gfx/Sprites/nature/bush 9.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/grass 1.png b/Fifth/resources/gfx/Sprites/nature/grass 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/grass 2.png b/Fifth/resources/gfx/Sprites/nature/grass 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 1.png b/Fifth/resources/gfx/Sprites/nature/plant 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 10.png b/Fifth/resources/gfx/Sprites/nature/plant 10.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 11.png b/Fifth/resources/gfx/Sprites/nature/plant 11.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 12.png b/Fifth/resources/gfx/Sprites/nature/plant 12.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 13.png b/Fifth/resources/gfx/Sprites/nature/plant 13.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 14.png b/Fifth/resources/gfx/Sprites/nature/plant 14.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 15.png b/Fifth/resources/gfx/Sprites/nature/plant 15.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 16.png b/Fifth/resources/gfx/Sprites/nature/plant 16.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 17.png b/Fifth/resources/gfx/Sprites/nature/plant 17.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 18.png b/Fifth/resources/gfx/Sprites/nature/plant 18.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 19.png b/Fifth/resources/gfx/Sprites/nature/plant 19.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 2.png b/Fifth/resources/gfx/Sprites/nature/plant 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 20.png b/Fifth/resources/gfx/Sprites/nature/plant 20.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 21.png b/Fifth/resources/gfx/Sprites/nature/plant 21.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 3.png b/Fifth/resources/gfx/Sprites/nature/plant 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 4.png b/Fifth/resources/gfx/Sprites/nature/plant 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 5.png b/Fifth/resources/gfx/Sprites/nature/plant 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 6.png b/Fifth/resources/gfx/Sprites/nature/plant 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 7.png b/Fifth/resources/gfx/Sprites/nature/plant 7.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 8.png b/Fifth/resources/gfx/Sprites/nature/plant 8.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/plant 9.png b/Fifth/resources/gfx/Sprites/nature/plant 9.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 10.png b/Fifth/resources/gfx/Sprites/nature/tree 10.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 11.png b/Fifth/resources/gfx/Sprites/nature/tree 11.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 12.png b/Fifth/resources/gfx/Sprites/nature/tree 12.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 13.png b/Fifth/resources/gfx/Sprites/nature/tree 13.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 14.png b/Fifth/resources/gfx/Sprites/nature/tree 14.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 15.png b/Fifth/resources/gfx/Sprites/nature/tree 15.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 16.png b/Fifth/resources/gfx/Sprites/nature/tree 16.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 17.png b/Fifth/resources/gfx/Sprites/nature/tree 17.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 18.png b/Fifth/resources/gfx/Sprites/nature/tree 18.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 19.png b/Fifth/resources/gfx/Sprites/nature/tree 19.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 20.png b/Fifth/resources/gfx/Sprites/nature/tree 20.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 21.png b/Fifth/resources/gfx/Sprites/nature/tree 21.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 22.png b/Fifth/resources/gfx/Sprites/nature/tree 22.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 23.png b/Fifth/resources/gfx/Sprites/nature/tree 23.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 24.png b/Fifth/resources/gfx/Sprites/nature/tree 24.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 25.png b/Fifth/resources/gfx/Sprites/nature/tree 25.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 26.png b/Fifth/resources/gfx/Sprites/nature/tree 26.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 3.png b/Fifth/resources/gfx/Sprites/nature/tree 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 4.png b/Fifth/resources/gfx/Sprites/nature/tree 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 5.png b/Fifth/resources/gfx/Sprites/nature/tree 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 6.png b/Fifth/resources/gfx/Sprites/nature/tree 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 7.png b/Fifth/resources/gfx/Sprites/nature/tree 7.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 8.png b/Fifth/resources/gfx/Sprites/nature/tree 8.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/tree 9.png b/Fifth/resources/gfx/Sprites/nature/tree 9.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/vine 1.png b/Fifth/resources/gfx/Sprites/nature/vine 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/vine 2.png b/Fifth/resources/gfx/Sprites/nature/vine 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/vine 3.png b/Fifth/resources/gfx/Sprites/nature/vine 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/vine 4.png b/Fifth/resources/gfx/Sprites/nature/vine 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/nature/vine 5.png b/Fifth/resources/gfx/Sprites/nature/vine 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/other/baloon(0).png b/Fifth/resources/gfx/Sprites/other/baloon(0).png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/other/baloon(1).png b/Fifth/resources/gfx/Sprites/other/baloon(1).png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/other/baloon(2).png b/Fifth/resources/gfx/Sprites/other/baloon(2).png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/other/bench.png b/Fifth/resources/gfx/Sprites/other/bench.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/other/holy stone 1.png b/Fifth/resources/gfx/Sprites/other/holy stone 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/other/moon 1.png b/Fifth/resources/gfx/Sprites/other/moon 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/other/moon 2.png b/Fifth/resources/gfx/Sprites/other/moon 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/other/portal 1.png b/Fifth/resources/gfx/Sprites/other/portal 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/other/public/another guy.psd b/Fifth/resources/gfx/Sprites/other/public/another guy.psd old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/other/public/some guy.psd b/Fifth/resources/gfx/Sprites/other/public/some guy.psd old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/other/realm flag 1.png b/Fifth/resources/gfx/Sprites/other/realm flag 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/other/realm flag 2.png b/Fifth/resources/gfx/Sprites/other/realm flag 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/other/sign 1.png b/Fifth/resources/gfx/Sprites/other/sign 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/pets/pet 1 (idle (1)).png b/Fifth/resources/gfx/Sprites/pets/pet 1 (idle (1)).png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/pets/pet 1 (idle (2)).png b/Fifth/resources/gfx/Sprites/pets/pet 1 (idle (2)).png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/pets/pet 1 (running (1)).png b/Fifth/resources/gfx/Sprites/pets/pet 1 (running (1)).png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/pets/pet 1 (running (1.1)).png b/Fifth/resources/gfx/Sprites/pets/pet 1 (running (1.1)).png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/pets/pet 1 (running (2)).png b/Fifth/resources/gfx/Sprites/pets/pet 1 (running (2)).png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/pets/pet 1 (running (2.1)).png b/Fifth/resources/gfx/Sprites/pets/pet 1 (running (2.1)).png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player armour/shoulder armour 1.png b/Fifth/resources/gfx/Sprites/player armour/shoulder armour 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/__player__.png b/Fifth/resources/gfx/Sprites/player/__player__.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/bodyarmour-1.png b/Fifth/resources/gfx/Sprites/player/bodyarmour-1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/bodyarmour-2.png b/Fifth/resources/gfx/Sprites/player/bodyarmour-2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/bodyarmour-3.png b/Fifth/resources/gfx/Sprites/player/bodyarmour-3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/frame 0.png b/Fifth/resources/gfx/Sprites/player/frame 0.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/frame 1.png b/Fifth/resources/gfx/Sprites/player/frame 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/frame 2.png b/Fifth/resources/gfx/Sprites/player/frame 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/frame a.png b/Fifth/resources/gfx/Sprites/player/frame a.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/frame b.png b/Fifth/resources/gfx/Sprites/player/frame b.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/frame c.png b/Fifth/resources/gfx/Sprites/player/frame c.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/main player/arm 1.png b/Fifth/resources/gfx/Sprites/player/main player/arm 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/main player/arm 2.png b/Fifth/resources/gfx/Sprites/player/main player/arm 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/main player/arm 3.png b/Fifth/resources/gfx/Sprites/player/main player/arm 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/main player/arm 4.png b/Fifth/resources/gfx/Sprites/player/main player/arm 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/main player/arm 5.png b/Fifth/resources/gfx/Sprites/player/main player/arm 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/main player/head 1.png b/Fifth/resources/gfx/Sprites/player/main player/head 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/main player/part 1.1.png b/Fifth/resources/gfx/Sprites/player/main player/part 1.1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/main player/part 2.1.png b/Fifth/resources/gfx/Sprites/player/main player/part 2.1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/main player/part 3.1.png b/Fifth/resources/gfx/Sprites/player/main player/part 3.1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/main player/part 4.1.png b/Fifth/resources/gfx/Sprites/player/main player/part 4.1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/main player/part 4.2.png b/Fifth/resources/gfx/Sprites/player/main player/part 4.2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/main player/player.png b/Fifth/resources/gfx/Sprites/player/main player/player.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/part 1.png b/Fifth/resources/gfx/Sprites/player/part 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/part 2.png b/Fifth/resources/gfx/Sprites/player/part 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/part 3.png b/Fifth/resources/gfx/Sprites/player/part 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player 02 running f1.png b/Fifth/resources/gfx/Sprites/player/player 02 running f1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player 02 running f2 v1.png b/Fifth/resources/gfx/Sprites/player/player 02 running f2 v1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player 02 running f2 v2.png b/Fifth/resources/gfx/Sprites/player/player 02 running f2 v2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player 2.png b/Fifth/resources/gfx/Sprites/player/player 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player asset.png b/Fifth/resources/gfx/Sprites/player/player asset.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player idle f1.png b/Fifth/resources/gfx/Sprites/player/player idle f1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player idle f2.png b/Fifth/resources/gfx/Sprites/player/player idle f2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player running f1.png b/Fifth/resources/gfx/Sprites/player/player running f1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player running f2.png b/Fifth/resources/gfx/Sprites/player/player running f2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player running f3.png b/Fifth/resources/gfx/Sprites/player/player running f3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player running f4.png b/Fifth/resources/gfx/Sprites/player/player running f4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player running f5.png b/Fifth/resources/gfx/Sprites/player/player running f5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player01 running f1.png b/Fifth/resources/gfx/Sprites/player/player01 running f1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player01 running f2.png b/Fifth/resources/gfx/Sprites/player/player01 running f2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/player_1.png b/Fifth/resources/gfx/Sprites/player/player_1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player/test.png b/Fifth/resources/gfx/Sprites/player/test.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/arm 1.png b/Fifth/resources/gfx/Sprites/player1/arm 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/arm 10.png b/Fifth/resources/gfx/Sprites/player1/arm 10.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/arm 11.png b/Fifth/resources/gfx/Sprites/player1/arm 11.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/arm 12.png b/Fifth/resources/gfx/Sprites/player1/arm 12.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/arm 13.png b/Fifth/resources/gfx/Sprites/player1/arm 13.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/arm 2.png b/Fifth/resources/gfx/Sprites/player1/arm 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/arm 3.png b/Fifth/resources/gfx/Sprites/player1/arm 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/arm 4.png b/Fifth/resources/gfx/Sprites/player1/arm 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/arm 5.png b/Fifth/resources/gfx/Sprites/player1/arm 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/arm 6.png b/Fifth/resources/gfx/Sprites/player1/arm 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/arm 7.png b/Fifth/resources/gfx/Sprites/player1/arm 7.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/arm 8.png b/Fifth/resources/gfx/Sprites/player1/arm 8.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/arm 9.png b/Fifth/resources/gfx/Sprites/player1/arm 9.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/body 1.png b/Fifth/resources/gfx/Sprites/player1/body 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/body 2.png b/Fifth/resources/gfx/Sprites/player1/body 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/body 4.png b/Fifth/resources/gfx/Sprites/player1/body 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/body 5.png b/Fifth/resources/gfx/Sprites/player1/body 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/body 6.png b/Fifth/resources/gfx/Sprites/player1/body 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/body 7.png b/Fifth/resources/gfx/Sprites/player1/body 7.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 1.png b/Fifth/resources/gfx/Sprites/player1/face 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 10.png b/Fifth/resources/gfx/Sprites/player1/face 10.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 11.png b/Fifth/resources/gfx/Sprites/player1/face 11.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 12.png b/Fifth/resources/gfx/Sprites/player1/face 12.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 13.png b/Fifth/resources/gfx/Sprites/player1/face 13.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 14.png b/Fifth/resources/gfx/Sprites/player1/face 14.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 15.png b/Fifth/resources/gfx/Sprites/player1/face 15.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 16.png b/Fifth/resources/gfx/Sprites/player1/face 16.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 17.png b/Fifth/resources/gfx/Sprites/player1/face 17.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 18.png b/Fifth/resources/gfx/Sprites/player1/face 18.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 19.png b/Fifth/resources/gfx/Sprites/player1/face 19.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 2.png b/Fifth/resources/gfx/Sprites/player1/face 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 20.png b/Fifth/resources/gfx/Sprites/player1/face 20.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 21.png b/Fifth/resources/gfx/Sprites/player1/face 21.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 22.png b/Fifth/resources/gfx/Sprites/player1/face 22.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 23.png b/Fifth/resources/gfx/Sprites/player1/face 23.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 24.png b/Fifth/resources/gfx/Sprites/player1/face 24.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 25.png b/Fifth/resources/gfx/Sprites/player1/face 25.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 26.png b/Fifth/resources/gfx/Sprites/player1/face 26.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 3.png b/Fifth/resources/gfx/Sprites/player1/face 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 4.png b/Fifth/resources/gfx/Sprites/player1/face 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 5.png b/Fifth/resources/gfx/Sprites/player1/face 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 6.png b/Fifth/resources/gfx/Sprites/player1/face 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 7.png b/Fifth/resources/gfx/Sprites/player1/face 7.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 8.png b/Fifth/resources/gfx/Sprites/player1/face 8.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/face 9.png b/Fifth/resources/gfx/Sprites/player1/face 9.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/leg 1.png b/Fifth/resources/gfx/Sprites/player1/leg 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/leg 2.png b/Fifth/resources/gfx/Sprites/player1/leg 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/leg 3.png b/Fifth/resources/gfx/Sprites/player1/leg 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/leg 4.png b/Fifth/resources/gfx/Sprites/player1/leg 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/leg 5.png b/Fifth/resources/gfx/Sprites/player1/leg 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/leg 6.png b/Fifth/resources/gfx/Sprites/player1/leg 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player1/leg 7.png b/Fifth/resources/gfx/Sprites/player1/leg 7.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player2/player arm 1.png b/Fifth/resources/gfx/Sprites/player2/player arm 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player2/player body 1.png b/Fifth/resources/gfx/Sprites/player2/player body 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player2/player face 1.png b/Fifth/resources/gfx/Sprites/player2/player face 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player2/player leg 1.png b/Fifth/resources/gfx/Sprites/player2/player leg 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player2/player leg 2.png b/Fifth/resources/gfx/Sprites/player2/player leg 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player2/playerTest.png b/Fifth/resources/gfx/Sprites/player2/playerTest.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player #3/player arm 1.png b/Fifth/resources/gfx/Sprites/player3/player #3/player arm 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player #3/player body 1.png b/Fifth/resources/gfx/Sprites/player3/player #3/player body 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player #3/player head 3.png b/Fifth/resources/gfx/Sprites/player3/player #3/player head 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player #3/player legs 1.png b/Fifth/resources/gfx/Sprites/player3/player #3/player legs 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player #3/player legs 2.png b/Fifth/resources/gfx/Sprites/player3/player #3/player legs 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player #3/player legs 4.png b/Fifth/resources/gfx/Sprites/player3/player #3/player legs 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player arm 1.png b/Fifth/resources/gfx/Sprites/player3/player arm 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player body 1.png b/Fifth/resources/gfx/Sprites/player3/player body 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player head 1.png b/Fifth/resources/gfx/Sprites/player3/player head 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player head 2.png b/Fifth/resources/gfx/Sprites/player3/player head 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player head 3.png b/Fifth/resources/gfx/Sprites/player3/player head 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player head 4.png b/Fifth/resources/gfx/Sprites/player3/player head 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player legs 1.png b/Fifth/resources/gfx/Sprites/player3/player legs 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player legs 2.png b/Fifth/resources/gfx/Sprites/player3/player legs 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player legs 3.png b/Fifth/resources/gfx/Sprites/player3/player legs 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/player3/player legs 4.png b/Fifth/resources/gfx/Sprites/player3/player legs 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/spritesheets/all 01.png b/Fifth/resources/gfx/Sprites/spritesheets/all 01.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/spritesheets/plant spritesheet 1.png b/Fifth/resources/gfx/Sprites/spritesheets/plant spritesheet 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/spritesheets/plant spritesheet 2.png b/Fifth/resources/gfx/Sprites/spritesheets/plant spritesheet 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/spritesheets/platform spritesheet 1.png b/Fifth/resources/gfx/Sprites/spritesheets/platform spritesheet 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 0.1.png b/Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 0.1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 2.png b/Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 3.png b/Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 1.png b/Fifth/resources/gfx/Sprites/stone/stone 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 10.png b/Fifth/resources/gfx/Sprites/stone/stone 10.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 11.png b/Fifth/resources/gfx/Sprites/stone/stone 11.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 12.png b/Fifth/resources/gfx/Sprites/stone/stone 12.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 13.png b/Fifth/resources/gfx/Sprites/stone/stone 13.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 14.png b/Fifth/resources/gfx/Sprites/stone/stone 14.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 15.png b/Fifth/resources/gfx/Sprites/stone/stone 15.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 16.png b/Fifth/resources/gfx/Sprites/stone/stone 16.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 17.png b/Fifth/resources/gfx/Sprites/stone/stone 17.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 18.png b/Fifth/resources/gfx/Sprites/stone/stone 18.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 19.png b/Fifth/resources/gfx/Sprites/stone/stone 19.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 2.png b/Fifth/resources/gfx/Sprites/stone/stone 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 20.png b/Fifth/resources/gfx/Sprites/stone/stone 20.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 21.png b/Fifth/resources/gfx/Sprites/stone/stone 21.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 22.png b/Fifth/resources/gfx/Sprites/stone/stone 22.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 23.png b/Fifth/resources/gfx/Sprites/stone/stone 23.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 24.png b/Fifth/resources/gfx/Sprites/stone/stone 24.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 25.png b/Fifth/resources/gfx/Sprites/stone/stone 25.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 3.png b/Fifth/resources/gfx/Sprites/stone/stone 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 4.png b/Fifth/resources/gfx/Sprites/stone/stone 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 5.png b/Fifth/resources/gfx/Sprites/stone/stone 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 6.png b/Fifth/resources/gfx/Sprites/stone/stone 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 7.png b/Fifth/resources/gfx/Sprites/stone/stone 7.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 8.png b/Fifth/resources/gfx/Sprites/stone/stone 8.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone 9.png b/Fifth/resources/gfx/Sprites/stone/stone 9.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 1.png b/Fifth/resources/gfx/Sprites/stone/stone block 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 10.png b/Fifth/resources/gfx/Sprites/stone/stone block 10.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 11.png b/Fifth/resources/gfx/Sprites/stone/stone block 11.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 12.png b/Fifth/resources/gfx/Sprites/stone/stone block 12.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 2.png b/Fifth/resources/gfx/Sprites/stone/stone block 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 3.png b/Fifth/resources/gfx/Sprites/stone/stone block 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 4.png b/Fifth/resources/gfx/Sprites/stone/stone block 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 5.png b/Fifth/resources/gfx/Sprites/stone/stone block 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 6.png b/Fifth/resources/gfx/Sprites/stone/stone block 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 7.png b/Fifth/resources/gfx/Sprites/stone/stone block 7.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 8.png b/Fifth/resources/gfx/Sprites/stone/stone block 8.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 9.png b/Fifth/resources/gfx/Sprites/stone/stone block 9.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/transparent.png b/Fifth/resources/gfx/Sprites/transparent.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/guns/pistol 1-gold.png b/Fifth/resources/gfx/Sprites/weapons/guns/pistol 1-gold.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/guns/pistol 1-grass.png b/Fifth/resources/gfx/Sprites/weapons/guns/pistol 1-grass.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/guns/pistol 1.png b/Fifth/resources/gfx/Sprites/weapons/guns/pistol 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 1.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 10.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 10.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 11.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 11.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 12.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 12.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 13.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 13.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 14.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 14.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 15.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 15.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 16.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 16.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 2.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 3.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 3.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 4.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 4.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 5.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 5.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 6.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 6.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 7.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 7.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 8.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 8.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 9.png b/Fifth/resources/gfx/Sprites/weapons/swords/weapon 9.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/Sprites/weapons/wizard weapons/magic staff 1.png b/Fifth/resources/gfx/Sprites/weapons/wizard weapons/magic staff 1.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/bg.png b/Fifth/resources/gfx/bg.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/gfx.png b/Fifth/resources/gfx/gfx.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/gfx2.png b/Fifth/resources/gfx/gfx2.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/playerSpritesheet.png b/Fifth/resources/gfx/playerSpritesheet.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/gfx/player_run.png b/Fifth/resources/gfx/player_run.png new file mode 100755 index 0000000000000000000000000000000000000000..c001c7d793f276e361e49d804a815d33f8a55251 GIT binary patch literal 649 zcmV;40(Sk0P)~$M`!>50v1U` zK~!ko%~`Q>!!QU1U6yYBna*X+)=%lyReOIXTURpYdpfIw?NnAITYzFocfQ0qKl~mb z8wkP^mInyYcRU*3d)4yCmf|_WMZZ`#pk9KZ{^=hziTO;GK3|Oc#Jqk}Kyk1fT=qzm;j5>a4g91(xCer!elj`e;zXNJr91|L6f z_fH}MW(FdH&zEm_{rbgG@ICZ57w?Ixw&&%18xnt{{$}L8_kkATQRT2~+oe6{Nx(zq z^v3tlUj!#pzFqP}6aWB-c~!Dimx-P6J@jKM^10_GNgV(XVhkNvEw$EPga4muGGlsU zP)zjVW`l(#UQCh{`1rn3EHfiBBPqFWHEt#UIX?}RLM+%II;2A?Y35K80IgtJH%LJe zxYofh1;BX#`tXXvxDM>j?gTkkL>(_SjL$00000NkvXXu0mjfOw}aM literal 0 HcmV?d00001 diff --git a/Fifth/resources/gfx/sheet.png b/Fifth/resources/gfx/sheet.png old mode 100644 new mode 100755 index 6d9d1c65ca3489e78b13f57e9333706591aa7294..5c47163a2c51389de32038eb777778e86a1aabe7 GIT binary patch delta 2101 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 diff --git a/Fifth/resources/gfx/yrl.png b/Fifth/resources/gfx/yrl.png old mode 100644 new mode 100755 diff --git a/Fifth/resources/map/testMap1.map b/Fifth/resources/map/testMap1.map old mode 100644 new mode 100755 diff --git a/Fifth/resources/map/testMap2.map b/Fifth/resources/map/testMap2.map old mode 100644 new mode 100755 index d639463..40252b0 --- a/Fifth/resources/map/testMap2.map +++ b/Fifth/resources/map/testMap2.map @@ -4,15 +4,20 @@ "author":"Malaxiz Wayne", "spriteSheets": [ - {"name":"MAIN", "path":"resources/gfx/sheet.png"} + {"name":"MAIN", "path":"resources/gfx/sheet.png"}, + {"name":"MAIN3", "path":"resources/gfx/player_run.png"} ], "sprites": [ - {"name":"player", "spriteSheetKey":"MAIN", "offsets":[32, 0, 16, 26]}, + {"name":"player", "spriteSheetKey":"MAIN", "offsets":[32, 0, 16, 32]}, - {"name":"test1", "spriteSheetKey":"MAIN", "offsets":[32, 0, 16, 26]}, - {"name":"test2", "spriteSheetKey":"MAIN", "offsets":[32, 0, 16, 26]}, - {"name":"test3", "spriteSheetKey":"MAIN", "offsets":[32, 0, 16, 26]}, - {"name":"test4", "spriteSheetKey":"MAIN", "offsets":[32, 0, 16, 26]} + {"name":"test1", "spriteSheetKey":"MAIN3", "offsets":[0, 0, 16, 24]}, + {"name":"test2", "spriteSheetKey":"MAIN3", "offsets":[16, 0, 16, 24]}, + {"name":"test3", "spriteSheetKey":"MAIN3", "offsets":[32, 0, 16, 24]}, + {"name":"test4", "spriteSheetKey":"MAIN3", "offsets":[48, 0, 16, 24]}, + {"name":"test5", "spriteSheetKey":"MAIN3", "offsets":[64, 0, 16, 24]}, + {"name":"test6", "spriteSheetKey":"MAIN3", "offsets":[80, 0, 16, 24]}, + + {"name":"lua", "spriteSheetKey":"MAIN", "offsets":[48, 32, 16, 16]} ] } \ No newline at end of file diff --git a/Fifth/resources/scripts/Standard/ChatController.lua b/Fifth/resources/scripts/Standard/ChatController.lua old mode 100644 new mode 100755 index 93e707f..6b1b4aa --- a/Fifth/resources/scripts/Standard/ChatController.lua +++ b/Fifth/resources/scripts/Standard/ChatController.lua @@ -8,9 +8,12 @@ local ChatController = class ( self.isTyping = false self.buffer = "" - self.width = 400 + self.height = 40 - + self.maxBufferSize = 128 + self.width = self.maxBufferSize * 8.5 + self.initWidth = self.width + self.shift = false end ) @@ -32,8 +35,23 @@ function ChatController:parse(input) commands = {} for w in input:gmatch("%S+") do table.insert(commands, w) end + -- PARSING + if(commands[1] == "restart") then self.component.instance.game:restart() end + if(commands[1] == "script" and commands[2] ~= nil) then + comp = commands[2] + mX, mY = self.component:getRelativeMouse() + temp = self.parent.entityManager:createSpriteEntity(Box(mX, mY, 16 * 4, 16 * 4), "lua") + self.parent.entityManager:addEntity(temp, "") + temp:addComponent(self.component.instance, game.getScript("Standard/GraphicScript")) + graphic = temp:getComponent("Standard/GraphicScript") + graphic:setScript(game.getScript(comp)) + if(commands[3] ~= nil) then + graphic.deserialize = commands[3] + end + end + return "" end @@ -48,11 +66,24 @@ function ChatController:onKeyStates(state) end end +function ChatController:onTextInput(input) + if(self.isTyping) then + if(string.len(self.buffer) < self.maxBufferSize) then + self.buffer = self.buffer .. input + end + end + +end + function ChatController:onEvent(key, keyDown) if(not keyDown) then do return end end - if(key == KeyCode._RETURN) then - self.isTyping = not self.isTyping + if(key == KeyCode._RETURN or key == KeyCode._SLASH) then + if(key == KeyCode._SLASH) then + self.isTyping = true + else + self.isTyping = not self.isTyping + end if(not self.isTyping) then -- player has typed something toSay = self:parse(self.buffer) @@ -71,18 +102,7 @@ function ChatController:onEvent(key, keyDown) self.buffer = string.sub(self.buffer, 1, -2) - elseif(self.isTyping and key ~= KeyCode._ESCAPE) then - if(key <= 1024) then -- temporary to ignore modifier key - toAdd = string.char(key) - if(self.shift) then - toAdd = string.upper(toAdd) - end - self.buffer = self.buffer .. toAdd - end - - end - - if(self.isTyping and key == KeyCode._ESCAPE) then + elseif(key == KeyCode._ESCAPE) then self.component.instance.game.isRunning = false end @@ -96,7 +116,7 @@ function ChatController:onRenderAdditional() h = self.height r = 2 - self.component:renderRect(x, y, w, h, 100, 100, 100, 225) + self.component:renderRect(x, y, w, h, 100, 100, 100, 100) self.component:renderRect(x, y, r, h, 255, 0, 0, 225) self.component:renderRect(x, y, w, r, 255, 0, 0, 225) @@ -106,11 +126,15 @@ function ChatController:onRenderAdditional() x = x + 5 y = y + 6 - self.component:renderText(x, y, 0, self.buffer, "TESTFONT", 255, 255, 255) + self.component:renderText(x, y, 1, self.buffer, "TESTFONT", 255, 255, 255) + --self.width = self.initWidth + (14 * string.len(self.buffer)) + end + if (self.isTyping == false) then + self.width = self.initWidth end end function create(parent, component) return ChatController(parent, component) -end \ No newline at end of file +end diff --git a/Fifth/resources/scripts/Standard/Controller.lua b/Fifth/resources/scripts/Standard/Controller.lua old mode 100644 new mode 100755 index 52232e8..579c9a0 --- a/Fifth/resources/scripts/Standard/Controller.lua +++ b/Fifth/resources/scripts/Standard/Controller.lua @@ -11,7 +11,7 @@ function Controller:onInit() self.parent:addProperty(EntityProperty.STATIC) self.parent:addProperty(EntityProperty.HIDDEN) self.parent:removeProperty(EntityProperty.COLLIDABLE) - self.component.instance.gravity = 0.3 + self.component.instance.gravity = 0.435 self.component.instance:loadAssets("resources/map/testMap2.map") self.component.instance:loadAssets("resources/map/testMap1.map") @@ -34,6 +34,10 @@ function Controller:onEvent(key, keyDown) end end + if(key == KeyCode._8) then + + end + if(key == KeyCode._3) then -- Collision borders self.parent.entityManager:toggleRenderFlag(RenderFlags.COLLISION_BORDERS) end diff --git a/Fifth/resources/scripts/Standard/ExplodeOnDeath.lua b/Fifth/resources/scripts/Standard/ExplodeOnDeath.lua new file mode 100755 index 0000000..b28b7ec --- /dev/null +++ b/Fifth/resources/scripts/Standard/ExplodeOnDeath.lua @@ -0,0 +1,78 @@ +-- ExplodeOnDeath.lua + +local ExplodeOnDeath = class( + function(self, parent, component) + self.parent = parent + self.component = component + + self.hasExploded = false + end +) + +function ExplodeOnDeath:onLoop() + if(self.parent.isDead and not self.hasExploded) then + self.hasExploded = true + self:explode() + end +end + +function ExplodeOnDeath:explode() + if(not self.parent:hasSprite()) then do return end end + + sprite = self.parent:getSprite() + source = sprite:getSource() + spriteSheet = sprite:getSpriteSheet() + parentName = self.parent.entityManager:getNameOfEntity(self.parent) + entityManager = self.parent.entityManager + box = self.parent.body.box + parent = self.parent + isFlipped = parent:hasProperty(EntityProperty.FLIP) + + thisX = box.x + thisY = box.y + thisW = box.w / 2 + thisH = box.h / 2 + + self:explodeParticle(source.x, source.y, source.w / 2, source.h / 2, thisX, thisY, thisW, thisH, parentName .. "sprite1") + self:explodeParticle(source.x + source.w / 2, source.y, source.w / 2, source.h / 2, thisX + thisW, thisY, thisW, thisH, parentName .. "sprite2") + self:explodeParticle(source.x, source.y + source.h / 2, source.w / 2, source.h / 2, thisX, thisY + thisH, thisW, thisH, parentName .. "sprite3") + self:explodeParticle(source.x + source.w / 2, source.y + source.h / 2, source.w / 2, source.h / 2, thisX + thisW, thisY + thisH, thisW, thisH, parentName .. "sprite4") +end + +function ExplodeOnDeath:explodeParticle(sx, sy, sw, sh, tx, ty, tw, th, spriteName) + entityManager = self.parent.entityManager + sprite = self.parent:getSprite() + spriteSheet = sprite:getSpriteSheet() + + sBox = Box(sx, sy, sw, sh) + + sprite = game.createSprite(spriteSheet, sBox) + game.addSprite(sprite, spriteName) + + eBox = Box(tx, ty, tw, th) + particle = entityManager:createSpriteEntity(eBox, spriteName) + + --if(parent:hasProperty(EntityProperty.FLIP)) then + -- particle:addProperty(EntityProperty.FLIP) + --end + + force = 20 + + body = particle.body + body.velX = self.parent.body.velX + math.random(force) - force / 2 + body.velY = self.parent.body.velY + -10 + -math.random(force) / 2 + + particle:addComponent(self.component.instance, game.getScript("Standard/Particle")) + particle:getComponent("Standard/Particle"):onDeserialize('{"livingTime":5}') + + if(not self.parent:hasProperty(EntityProperty.COLLIDABLE)) then + particle:removeProperty(EntityProperty.COLLIDABLE) + end + + entityManager:addParticle(particle, self.component.instance) + +end + +function create(parent, component) + return ExplodeOnDeath(parent, component) +end \ No newline at end of file diff --git a/Fifth/resources/scripts/Standard/GraphicScript.lua b/Fifth/resources/scripts/Standard/GraphicScript.lua new file mode 100755 index 0000000..129e530 --- /dev/null +++ b/Fifth/resources/scripts/Standard/GraphicScript.lua @@ -0,0 +1,78 @@ +-- GraphicScript.lua + +local GraphicScript = class( + function(self, parent, component) + + self.parent = parent + self.component = component + + parent:addComponent(self.component.instance, game.getScript("Standard/ExplodeOnDeath")) + parent:addProperty(EntityProperty.STATIC) + parent:removeProperty(EntityProperty.COLLIDABLE) + parent.defaultSprite = "lua" + + self.isTargeted = false + self.targetedScript = nil + self.deserialize = "{}" + + self.offsetX = 0 + self.offsetY = 0 + + end +) + +function GraphicScript:setScript(script) + self.targetedScript = script +end + +function GraphicScript:onLoop() + if(self.isTargeted) then + body = self.parent.body + x, y = self.component:getRelativeMouse() + + body:setPosition(x - self.offsetX, y - self.offsetY) + end +end + +function GraphicScript:onClick() + x, y = self.component:getRelativeMouse() + x2, y2 = self.component:getMouse() + box = self.parent.body.box + + if(self.isTargeted) then + entity = self.parent.entityManager:getEntityAtCoordinate(x, y, self.parent) + if(entity ~= nil) then + entity:addComponent(self.component.instance, self.targetedScript) + if(targetedScript ~= nil) then + component = entity:getComponent(self.targetedScript:getName()) + if(component ~= nil) then + component:onDeserialize(self.deserialize) + end + end + self.parent.isDead = true + end + else + self.offsetX = x - box.x + self.offsetY = y - box.y + end + + self.isTargeted = not self.isTargeted + +end + +function GraphicScript:onRender() + box = self.parent.body.box + name = "UNKNOWN SCRIPT" + camera = self.component.camera + + if(self.targetedScript) then + name = self.targetedScript:getName() + end + + self.component:renderText(box.x - camera:offsetX(), box.y + box.h + 2 - camera:offsetY(), 1, name, "TESTFONT", 255, 255, 255) +end + +function create(parent, component) + return GraphicScript(parent, component) +end + diff --git a/Fifth/resources/scripts/Standard/Living.lua b/Fifth/resources/scripts/Standard/Living.lua old mode 100644 new mode 100755 index 7756644..aa81712 --- a/Fifth/resources/scripts/Standard/Living.lua +++ b/Fifth/resources/scripts/Standard/Living.lua @@ -5,7 +5,7 @@ local Living = class ( self.parent = parent self.component = component - self.hasDied = false + self.parent:addComponent(self.component.instance, game.getScript("Standard/ExplodeOnDeath")) self.VALUE_HEALTH = 0 self.VALUE_KEVLAR = 1 @@ -26,7 +26,6 @@ local Living = class ( ) function Living:onRenderAdditional() - if(self.parent.isDead) then do return end end @@ -53,33 +52,6 @@ function Living:onRenderAdditional() end -function Living:onLoop() - if(self.parent.isDead and not self.hasDied and self.parent:hasSprite()) then - - sprite = self.parent:getSprite() - source = sprite:getSource() - spriteSheet = sprite:getSpriteSheet() - parentName = self.parent.entityManager:getNameOfEntity(self.parent) - entityManager = self.parent.entityManager - box = self.parent.body.box - parent = self.parent - isFlipped = parent:hasProperty(EntityProperty.FLIP) - - thisX = box.x - thisY = box.y - thisW = box.w / 2 - thisH = box.h / 2 - - self:explodeParticle(source.x, source.y, source.w / 2, source.h / 2, thisX, thisY, thisW, thisH, parentName .. "sprite1") - self:explodeParticle(source.x + source.w / 2, source.y, source.w / 2, source.h / 2, thisX + thisW, thisY, thisW, thisH, parentName .. "sprite2") - self:explodeParticle(source.x, source.y + source.h / 2, source.w / 2, source.h / 2, thisX, thisY + thisH, thisW, thisH, parentName .. "sprite3") - self:explodeParticle(source.x + source.w / 2, source.y + source.h / 2, source.w / 2, source.h / 2, thisX + thisW, thisY + thisH, thisW, thisH, parentName .. "sprite4") - - self.hasDied = true - - end -end - function Living:onSerialize() c = self.component @@ -94,38 +66,7 @@ function Living:onDeserialize(value) self.values[self.VALUE_KEVLAR] = getVal(self.values[self.VALUE_KEVLAR], d.kevlar) end -function Living:explodeParticle(sx, sy, sw, sh, tx, ty, tw, th, spriteName) - entityManager = self.parent.entityManager - sprite = self.parent:getSprite() - spriteSheet = sprite:getSpriteSheet() - - sBox = Box(sx, sy, sw, sh) - - sprite = game.createSprite(spriteSheet, sBox) - game.addSprite(sprite, spriteName) - - eBox = Box(tx, ty, tw, th) - particle = entityManager:createSpriteEntity(eBox, spriteName) - - --if(parent:hasProperty(EntityProperty.FLIP)) then - -- particle:addProperty(EntityProperty.FLIP) - --end - - force = 20 - - body = particle.body - body.velX = self.parent.body.velX + math.random(force) - force / 2 - body.velY = self.parent.body.velY + -10 + -math.random(force) / 2 - - particle:addComponent(self.component.instance, game.getScript("Standard/Particle")) - particle:getComponent("Standard/Particle"):onDeserialize('{"livingTime":5}') - - entityManager:addParticle(particle, self.component.instance) - -end - function Living:damage(amount, damager) - box = self.parent.body.box thisX = box.x thisY = box.y @@ -164,7 +105,6 @@ function Living:damage(amount, damager) end function Living:heal(amount, healer) - box = self.parent.body.box thisX = box.x thisY = box.y @@ -185,12 +125,6 @@ function Living:heal(amount, healer) return healed end -function Living:onCollision(target, sides) - if(self.parent.body.velX > 10) then - - end -end - function create(parent, component) return Living(parent, component) end \ No newline at end of file diff --git a/Fifth/resources/scripts/Standard/Movable.lua b/Fifth/resources/scripts/Standard/Movable.lua old mode 100644 new mode 100755 index 38db766..e2efe4c --- a/Fifth/resources/scripts/Standard/Movable.lua +++ b/Fifth/resources/scripts/Standard/Movable.lua @@ -6,12 +6,14 @@ local Movable = class ( self.component = component self.body = parent.body - self.jumpPower = 15.0 + self.jumpPower = 13.0 self.accelerationX = 1.5 self.accelerationY = 100.0 self.stoppingAccelerationX = 1.5 self.stoppingAccelerationY = 100.0 + self.hasJumpedOnWall = false + self.hasWalkedX = false self.hasWalkedY = false @@ -68,6 +70,14 @@ function Movable:onLoop() self.hasWalkedX = false self.hasWalkedY = false + if(body.velX ~= 0) then + self.parent:setSprite(self.parent:getSpriteFromState("WALKING")) + end + + if(self.isFlying) then + self.parent:setSprite(self.parent:getSpriteFromState("FLYING")) + end + end function Movable:onEvent(key, keyDown) @@ -76,10 +86,9 @@ function Movable:onEvent(key, keyDown) living = self.parent:getComponent("Standard/Living") if(living ~= nil) then living:heal(10, self.parent) - end end - + if(key == KeyCode._1) then self:toggleNoClip() end @@ -104,6 +113,7 @@ function Movable:onEvent(key, keyDown) end function Movable:onKeyStates(state) + if(state:hasState(ScanCode._D)) then self:goRight() end @@ -121,21 +131,42 @@ function Movable:onKeyStates(state) box = self.parent.body.box thisX = box.x thisY = box.y + + for i = 0, 0 do + + spawnX = thisX + 36 + spawnY = thisY + 58 + if(self.parent:hasProperty(EntityProperty.FLIP)) then + spawnX = thisX + 5 + end - bullet = self.parent.entityManager:createColoredEntity(Box(thisX, thisY - 100, 5, 5), Color(200, 50, 50, 255)) - self.parent.entityManager:addParticle(bullet) - script = game.getScript("Standard/Projectile") - bullet:addComponent(self.component.instance, script) - bullet:getComponent("Standard/Projectile"):onDeserialize('{"owner":"' .. self.parent.entityManager:getNameOfEntity(self.parent) .. '"}') - - tBody = self.parent.body - bBody = bullet:getComponent("Standard/Projectile").parent.body - bBody.velX = bBody.velX + tBody.velX - bBody.velY = bBody.velY + tBody.velY + bullet = self.parent.entityManager:createColoredEntity(Box(spawnX, spawnY, 5, 5), Color(0, math.random(255), 0, 0)) + self.parent.entityManager:addParticle(bullet) + script = game.getScript("Standard/Projectile") + bullet:addComponent(self.component.instance, script) + bullet:getComponent("Standard/Projectile"):onDeserialize('{"owner":"' .. self.parent.entityManager:getNameOfEntity(self.parent) .. '"}') + + tBody = self.parent.body + bBody = bullet:getComponent("Standard/Projectile").parent.body -- must do it this way + + bBody.velX = 11 + bBody.velY = -1 * (math.random(5)) + if(self.parent:hasProperty(EntityProperty.FLIP)) then + bBody.velX = bBody.velX * -1 + end + + bBody.velX = bBody.velX + tBody.velX + bBody.velY = bBody.velY + tBody.velY + + end end end +function Movable:onClick() + +end + function Movable:onSerialize() c = self.component @@ -227,19 +258,36 @@ function Movable:goDown() self.hasWalkedY = true end -function Movable:jump() +function Movable:doJump() body = self.parent.body - if(not self.parent.collisionSides.bottom) then - do return end - end - body.velY = body.velY - self.accelerationY if(body.velY < -self.jumpPower) then body.velY = -self.jumpPower end end +function Movable:jump() + body = self.parent.body + + if(self.parent.collisionSides.bottom) then + self.hasJumpedOnWall = false + end + + if(self.hasJumpedOnWall == false and not self.parent.collisionSides.bottom and (self.parent.collisionSides.left or self.parent.collisionSides.right)) then + + self.hasJumpedOnWall = true + + self:doJump() + end + if(not self.parent.collisionSides.bottom) then + do return end + end + + self:doJump() + +end + function Movable:toggleNoClip() flagsToToggle = BitOR(EntityProperty.COLLIDABLE, EntityProperty.GRAVITY_AFFECT) diff --git a/Fifth/resources/scripts/Standard/Npc.lua b/Fifth/resources/scripts/Standard/Npc.lua old mode 100644 new mode 100755 diff --git a/Fifth/resources/scripts/Standard/Particle.lua b/Fifth/resources/scripts/Standard/Particle.lua old mode 100644 new mode 100755 diff --git a/Fifth/resources/scripts/Standard/Projectile.lua b/Fifth/resources/scripts/Standard/Projectile.lua old mode 100644 new mode 100755 index b057abc..754f08d --- a/Fifth/resources/scripts/Standard/Projectile.lua +++ b/Fifth/resources/scripts/Standard/Projectile.lua @@ -4,6 +4,8 @@ local Projectile = class( function(self, parent, component) self.parent = parent self.component = component + self.body = parent.body + self.box = self.body.box self.owner = nil @@ -19,6 +21,8 @@ local Projectile = class( ) function Projectile:onInit() + --[[ + body = self.parent.body thisX = body.box.x thisY = body.box.y @@ -38,10 +42,13 @@ function Projectile:onInit() body.velX = velX body.velY = velY + ]]-- + end +--[[ function Projectile:onLoop() - box = self.parent.body.box + box = self.box table.insert(self.positions, {box.x, box.y}) self.positionsSize = self.positionsSize + 1 @@ -50,7 +57,11 @@ function Projectile:onLoop() table.remove(self.positions, 1) end + body = self.body + body.velX = body.velX / 1.05 + end +]]-- function Projectile:onCollision(target, collisionSides) --if(self.owner == nil) then do return end @@ -61,7 +72,7 @@ function Projectile:onCollision(target, collisionSides) targetLiving = target:getComponent("Standard/Living") if(targetLiving ~= nil) then - targetLiving:damage(1000, self.parent) + targetLiving:damage(50, self.parent) end self.parent.isDead = true @@ -76,20 +87,19 @@ function Projectile:onDeserialize(value) end end +--[[ function Projectile:onRenderAdditional() box = self.parent.body.box oldVal = self.positions[1] - --[[ for k, v in pairs(self.positions) do if(oldVal[1] ~= v[1] or oldVal[2] ~= v[2]) then -- don't render if they are exactly the same positions self.component:renderLine(v[1], v[2], oldVal[1], oldVal[2], 255, 0, 0, 255) end oldVal = v end - - ]]-- end +]]-- function create(parent, component) return Projectile(parent, component) diff --git a/Fifth/resources/scripts/Standard/bitwise.lua b/Fifth/resources/scripts/Standard/bitwise.lua old mode 100644 new mode 100755 diff --git a/Fifth/resources/scripts/Standard/class.lua b/Fifth/resources/scripts/Standard/class.lua old mode 100644 new mode 100755 diff --git a/Fifth/resources/scripts/Standard/json.lua b/Fifth/resources/scripts/Standard/json.lua old mode 100644 new mode 100755 diff --git a/Fifth/resources/scripts/Standard/standard.lua b/Fifth/resources/scripts/Standard/standard.lua old mode 100644 new mode 100755 diff --git a/Fifth/resources/shader/light.frag b/Fifth/resources/shader/light.frag old mode 100644 new mode 100755 diff --git a/Fifth/resources/ttf/font-.ttf b/Fifth/resources/ttf/font-.ttf new file mode 100755 index 0000000000000000000000000000000000000000..7247ad785ac2f969f0019d1ac5253d70b6052fbc GIT binary patch literal 70324 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 L5%VJEMYQjK#!N~U literal 0 HcmV?d00001 diff --git a/Fifth/resources/ttf/font.ttf b/Fifth/resources/ttf/font.ttf old mode 100755 new mode 100644 index 7247ad785ac2f969f0019d1ac5253d70b6052fbc..3a0c4069ea808b4f21c191bc14f8cfdc65e536b3 GIT binary patch literal 86396 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 V^hRZ-{zB!a`{+HqIkoRg{|}UOMnC`n literal 70324 zcmd444V+z7bvC~CzIW~pb!)hl}R#WhD>I{WFjA; zUKN!pDk@f6(W0WYO06HLsHmsbT2%a~MQdAZsoK8uEp2T}-@gKZ_j%S@d!KXey%U1^ z{(k>6+4r1#?%8WS>vONY&$%}eMC3r}NJGv!`MlFl#k(M3;C}4qoqF=7QyNV<8t)&% z`(w{O@A#E>{b18+IKCV0;;lPJcl}`e@9&gwz}2{X{r1t_yKugN>+i#U-uB5WFFE+q zSA9X`@bw~heRq6pbX)7x!;TSo;9`8fb{r=bZ#d`&B2OT{qsMp7Ua@uFgB^VSE|CSB zC#ScLhGpMBQRF}7;r#_WN3YlweHs=8@!xy-sW?qEyEAS z`P%b<&fWt3AK~YNo%!4iLr;+h*xn^)+Clv_ejo37RRfF$q$PtgPv*-3vOpF>=Lg9m zIan6U<77waBjwwx>H$!0lUo+rllQIP(P0MAnOJ-!Z?2%b{sa!7qTdt6+HDPU77uJUp8p&d4alfuSua@Z7338#kBkK`Wt8~KOu z=J1wqeRyklTX=i8A-p5}Zg^*SSNOf~`{CW;#_*o--tY(ErtrS-{_uftbNFERQ24{} z;qXV{BjKarmhi{nW8qK2$HOPWC*=>qr^2n_)8RAWv*EVzx$yb$g>ZZLV)#<{awx)| zhOdM_3ttU?9=;a-BHSVG4qp%72;U5MhHr&$hwp^%hQAEo3x5^v3f~Vu2!9=Z82%>w zZTP!zclc5G`|uCpp74+1$Kfa8r{SN%KZpMn?hXGE{&)D-a9{Yh@bBS2!q38ghW`rx z9qteR6aG*5|H9A1FTw-i!SGPn8y*giM2R8B*oe(I5L|fgibuvL$Kf~@wei$V>@n$C&i8NJh% z#na<+;u-PG_}q9_JUgBfe>RY}^xH8ZVDm#4F=f@n!Mq`11IQ_{!Lc zuZpjZuZh>h*T&by*T-w)@5DFAXXLZ;)%ZraRX#0$9?UzXeB+v3~f4e=fEcjG(byW;P~-;eK(H^%qG_r^bnH^ukG_s0*!o8t%LhvFZ` z563@>ABi80x5Ph=AB%qyKQ7nBPsC5gPsLl~r{ibhXX9=0bMf=>3-R{&#rUQ87QY(*Jbo?yMZ6<^J$@s8Q$8#ol()%^@lN?ed5hd2?}*=u-;Upj-;IA6zZd^1 z-W9(ee-QsV{xJSc{M-0<@$UGe`1exCpAK%=Il6UbdTMag_N@(DX2xDR)*98_;D+h# z(^F$R21jkbVB^+_nXP+vUNSj$#e%KnadYFg>DlI1ytGc({)^E!Cot64crG95wzbRAN)F{h?ndx2QV~tHy+Z$t3+Xv5fA*Wr)vrWip z-OWFH+ZMw#e>xqt&NZGh#`E07b0+aT*Lcp@?mWACx9%34SE^*e?(%rv=0s&SQQ2(W zXLZ-yOcTx0MCY4{_Lzyzcl3K4{rQG|kM0J}pP882KCp+c^UqKC=kG~JgXg;m_t<{H z^GievF0UNFpmKa=dEC0tWV=dt%?oLjtMD=~IX$&~_uxsh)4PCpaEt8+&f7YE`RL$< zG{BCr!K-ZF*mTwS;HiFYyX{-2n(W(ccZThD=x*?A$2@KOdFZbn%p3EA12#}zg>=AZ zJ{;VzNly)qj_H2E*}Er4caPigba}k+ysgtacaDy3-8wckyKr~q&4SJPX3N;*^yLd? z%j0>Fcyes_?n?)DQ@{pr9DK>d%z|)K?MDmG-Z{bKr=Kr8zjE;bXYU-_ zZkI2fz~$Q}#%9KLPwdt!2b5Ryq_Nr2fm27JxdTofo17h0aD&dWc_BV+faSpEaU34Ebmw(lHmY#!Y+=ztpMj88N+ zqMfsQVj<}yFpKJP6=CK9fC8USQS|7LJ@$F(YI14+<`!H&u$^)ZY@=L* zPOEtpK4|d6Srv)I26m`OlPc2S&ONGwIJGBUF)=u8ay4egr&}=a&e0VEx@*irHs{~i z1-alb4ZsZcRQ~n~&DzqxJddgmknvb6dN@`JbFWOT1RBUNe8g)+=W) zQcY}4pRUN%R%B``Gqsf&@ybMH`O1uQWyZNO<6N0>uFRBIX3DEFub>^`;^MGF5R;x3Q)tSfY%wsipbn9R9bs5XLjAdQMvMy6zmnpByl-Fg->oeu`S>E-T$NJ1;ede(~^H`sG ztj|2wXCCV_j}tPF6EcqzGLI87j}tPF6EcqzGLI8HHr8Zn>q=^g7b3>3v0{1pbj9+- zYsK=!YsK=!YsK=!YsK=!YsK;;&x++qo)ybau-I6WVq?XM%qz>VBKyFKEX|7S4J)!- zE3#j#IAN{PUBAKiC;5J(?@#vqCf}cu{H@f)3F{Z1I*!qX19tMU#oN2j9CG3K*tW6V z7%;bu&7{i?xvI~}p$mI29J;E{xidz42oCM&J$Kj{qc0tsnVr~*QL_f}upM)Ju=tG8 zEg1H9pmO(|vv^1MnW0S(q)VJ33fFyZ)9&7LW4-4VpAT@O6WhmUGtWKUXAaHR)CD;- zUs*ptbXu=AhQ@o(9kQ{H84lUn=j0P`Wq)Np0hjmxWZ`+^sGwYt3wKxE9K353D|h2N z@}~#GNwg?UmmdrVshu!4+_=W~YY*BqH9kGPBVB*cSnaJ}<-xPjoqVG^^+tE9e@_1Z-~F-o5-@(EIUzxebXo)bN1&h9xg z-F;@!*(jf9#B-EO$VDipf{bo$Y%rjdY=`f_lwW(=CF8A_nFr7x6dGUT9@1I z`C1^iF4x`s=clXZU!IPLVa28sHnm=09j?^f;>-4E*?GwD_yFjm=C<&sfKGD;BbFPA3;$GV#)}^k%{C zi7V3afxAI#D!&_J^rd$Tr&yCaS>-V?b&2v=fQmgI&t5*Ajt`t2N3osWDT4A15TrLm zkd6&Oey0f1J4KM*G%lZ>YHr#yGi?%XP}g0#{3NZJuwQNGPg?JLb$OiMpboiq#Y)fl zIP$S^?TS@vR_fI&R_N%qas{d<&Kh=(&bld9tXXbXtT8?-)~uWd>1W3$X12|T=z6f* zFVUD>xnhkDDcC#FH3n(L8iTZA&4&3Pp^}a-RF&EB?gccHA1_qP_?!9g@9E1Y$1a&2 z)T2GSFlED;8QRM}+%|prlpSpWC_CD-YunTU@4(Ir{aCvlq;J?w-yWFX^2&K*J9o`q zxqEDOKI-ZJ!)F z^z!kE*|Fa9hwJsquDi?O+NJMDEzYDToxdHoF2SnMX1Ft$PWb6{o6KVCHl2Wb5^_K%wgopM z9_~mnugx>n4R%M;0EWX%Yu4gvi#94*6s4S23vGO~nJ8X#KimDt|P z0}91Wndp(eK)_6!x-ja8l0LOE0`$w!c)Z4s$)|t_N)|6TG_5_{0d;~_HvSIBxSQ6) zgj=dgFWjj2ub!p*FdJGPk{a!7-U*ORVkFhm!*M5&dDX z`!TQ+2PnRU65a zN(1PWcb(26+;4=B(tFfvAQvNSM5B(LG(sO$6@zXBNDT#&=Nm)^^k&BowRtw_3Vr}x zK{lskwgM7d#E5#Z12iquE3O@Ykq*Rt&?UI{No_4LJZl`+fO<8sGz5_X{}HlhP&V*R zjRxL&h!=|;*+)!LUbVf`rRVA$sN?J2fO{JvD zd`N$wJ|G6iG{!2%O&j|_C69f)9#25v)vlBN*9rAQ2j+FAmwK*Jy;!bezO$w|(0vOg z(}crUY^o0))HcP?>@*7GFT)CJQ^Opd8%48I6rfYcJ}{V%m_L($!oodyWe{^AsK$Dk zzhDhY*Kld7QAh)(SV^|9bI=z)q0)F@@zU)0xI=GJ52q)sQ(toHHkfj>FNBr`NEDPG zqCecBch&5wam+E?auG&RdNwmPuBUs)wkhtx4l@!}DA;;(0DX+oVa!;ff7p`|6)&X1 z*6gSs;PgXn4g(-x^!jd=jQTg9wJ{JBOb&Q2VdeT+_4+u(-J( zC(HzJl(E8(;|%(+AFWiFg$Rx=@&LM%tB&DXgX*}1Yhlf$$js*bph>cnyxWerzB*oj zzGWa+b+hwe2Yu?f)^iQ*pFEt$@Bw=-3>m7UpmKn?OqKy3&=GJ!@+_}EbeuF8D)M;bSqtl^0bI}3e*j7T_V;JH{HAoGp zMk?c1c3QKnTet4Bn17f=DT)w7$!qr(gB??tiX<(V58Cv6km_*dpK4%YV18f@EU0c( zH5HS=fEI|T?|Evd>Shp?ijI5r*zSsKzz{lY72TY9uKLm23XetY>9al1D*ct7`fz8U4U1rFc&$Vu<4u>XZBCSP0&ynGQ>*EC z1jj@Ptm*+Z;HKTGhRIhq;P0;w%HKu5TOTQVm82@P1~B-u2F9pZt$@?0%iO3Qh0b)V zTIFj5Sx1z44t}6{7+HsdTnoZj>eB; z8(r`ZSphs-IIP*q=Eme((OXfmNy`;wJC#i+xgZ)jM&MWg0JYe>cIeFKc_3irZIua- z&ueRE_F&J!4vwg0<-LUUAO1WScuX-1G&|Z&RV|dUZ~O;fpzmv*<;d=H28O2%>ktOk z8bGj8jgoywainzu%})C@t`i}giW_M4VB$DPy#N>IU3iD9b$nqor<4JY2My2FPDAmi zUOZDH4mn=wNZb&3jhZF4VNFV>;&3O}v=-KRw$@BTHs@Qy(N6oLho^u-b0jpv{K2%^u9| zfKIo0sI7p(i({MA{J1u@X&>MvX!aGn5N;-6v4>Cx8MD7v!Sq=6rXM7q0u9PZ7s89G zUZu8E@G8OQu7CKy(KP?3?b%s7d5z-Zvf6skqJW%+&=9kz6_~%ERE}8K;okuEwg#jl znd!~#T__zewd_x8LtGn|UC9LQIs*{rYd!)mWwseXqotrO(^(#ZlhLV1(5U)~jX&&Z zHI8~3{Z{z{KKlZ`q2F83c2ov+0a7(uI#*9|GsMj0>t^VWa8@fC9lSTafQpuUN+-#s zQmOvD?yBMet(HI;xL99tOdOtvD|*4~g%M+Otg;HA|B7lTkN+TK8|bL-`uZxpA68uE zG04mW;O0fjzEGc3!&uxF$&SW;M6c?=(MQZYN4a-Gpk5ZAwY%oVaLz!^}um+fq}^&syEV(o1#z0dG~`Fm1tJ zwgH0l<_pka#H6vBYdMOm!zC7F9y&^h%2QhDfb>`&NNo+bAuV};ANA*@{-``sT>$(* z2r2WrYhqBO1I?3zojfns=-?^>;tOLlas@5Il`l>YL2fX~%*fc^Tul2ENTVIiq^cL4 z)wzDDYt3i0ylPa{Qm9V&9wMh)2KUme0*pR#GN0*4sw*56%sd!0K!ES5f+lc7f70wU z(pnH@)s-fb7YNoYT{4K+pw*Knnva+Zl7#Kpx=Wkkms#(++W|YI4-tnX8?2%{E2a*9BHs5QD~@y4kvg_=FBW^0foR| zJ5g-$o zS2bjU)%1g$0$W*aub#kIfD5DEXcbv+KJHs>p1josL^!k{Y}&+q(rM<*i|j#50yT}O zil9!Y9?c>imFNyFOG}iuRaqP(s9UYE=$Xokp3o8=LSfvP54<1e3GUa)#=HovCAg9s ziZ5JWoqI6mIeI5AEr^BrOmrL>^fg7wfcQWpGtLM*wm}bH5<^170W*Q!J1y6Kbmb1~ zIcubW&Vge8KetZ2?4TfM^gP5DVu)GPWCqz*mN-3&uCOvVzopF1M|Z zX_f&x(^E@uF`a?Eo1L0Xy=GxNRJ~Yl8xbL4HnCR?Q&el9MUW7nRRC+63vu=fO6nib z4gW})?~N2-2#y+P*sAm>Cg^}>tE{hCBRmD)meZ=p#!6;n_z`F#a&_%u0Qz87rM%>p zp(+Q6&9!4}P?z#e5}4YF$d>!{BAmo^-B@f?s9+f(za^$K)+%U}mLo(r7KM|hVBqn9 z^2uoUj)?SZJ}6<>edCHw7HQq|RD6FhYlRgBIQM9V)v)Eaq!%BsosT9`8Uz@-wWAKB z*sJ=n^d)9{%NZ5hvubAiFwRpfaaKg)&;U2JK(f4^ArHX@k7p)7fcI%_1U7y8>b>ck za*!ImSzprP7>l_kD5)$3$n77!gwE&@9*LAU2Atf!v8gwjrxzI;ELtZCm+^N>3c_j#hz?xRT?{WKy7Y>i^!N1xwODId$PsPAJ@9aT-~W z!^i@3DtDcSH10SH#*z9TJ;g@~N=g62p2ds4g|@iYkx=ll`JmRW>VqyRqpHN{QG~D& zLx|YXbvgD2zLtQ@W2K>v;zsPHk?aQ?76D0L8VSlbVWBkH84{&>93-i-)=7nQF(M~2 zkRcIrA{E`lHvGz{AmeG)UBX$aWnRL;hHef0hhwO{B}zc`GIxKCM0C)tPj}O6SAUPZ zF8-=fK%h51+(`)3kF~#LbBYj0JgaKxZ7ZimxN8 z%yd=Ii0x*FE{3;?hN=;4@L|t&4b66(32Qdj)i+RO1|_{A%ip%H1aYu|8aE2p!k!*o za5=CgklSxU@&dtDP=XPnLH|H8|)i~)ipqI>`i4(fj$3(+lo0KC>&Kh^nj*Y~8-7S){HVt)nWdiAD}wigY*2 zmA>Efw3^R;4MK{ihgz?HXx{Bc$5>&tS7eF;lF9SBs8ZYeC9~$88pRq&OX=zP4%SCi z|H6EkS%@}E=+r0hp0dLRYAbg&Re-q|4yzjmRf`eLZN3f(%E)Ur;vj<|4(O_EE%dcp z(AXDAPVGydTFfz?RVi!s0koktKnIlYt`0C+4$CW0q*zdWU;@0jpvbzLPoFQJE`v<< z`#zLB*#yvlD$QNoR|u4JNflehx*v3t_f+T>b5P~PQ<&3hcv;u=MVxE}%DVojizcX}oIJGlw;64fkAM%gF&86cmGuO%9!>w0rl@iNgZ|VZLp3J$Vb_MQ zyH)9eDo0dO$7W`YZ5)!fU{f2kiop&r(+`>Dp&!OEGaLN`H7EYK=UN0klAnMA{yiXg zQG4L+Uh$!|L1uY_fs|z-*dR-6>)ODtp%x|UpLI zf_2O#akoLuSLdLuG0;VOPRet{falRJ)Hw#K)LAv{13O$ZVXyh++#HG?>iyLsjYryz z0&DAq`%b=#sM>W<%$>~+F%~cpt`wG;y?s<`xQG_4^k|Yt<@!ZB6RKrz3g62N>=YmR zk}G{%@iF^p^l7guH(N_VK1$bfMAJG`b%lOI+7Jyseo)R7$pQ?8Mgj;sZJsLVPP7r{ zK+LMTNwNu0>a0wk1m?KJ6-umjDdjR7=~!YFvSlIwN3_8(X%cT_rRqkvFhJP-7X72Nu{Q6l+1tw%YbV8q%54xHFWl;eb}P(BDaM~Gl#+io3AnC zysdMgq#sy}>j0oZ3V5dtekSzy+$ZTc-&0)W8K2fW6uRJ?hkE9!fFcAP1;%njnUFSl z9!HCB%-9M&pq_L(_QPlO+GqPn}5j?h%SFbdT zj(+mwvA-X$sw}FlZc$R)xvl$+V~>Sy7wkOdSLWw)YKNJW{+a8otQ}~^ZHwToZF zx-9YvGo$;4eVfgm&oNYXZx6OxT0_>0jbcJz!B*Z6(0l0Rw=1YOJ_TE@yvMe$;6ryU zfugEovX2p7L2BN#Cp*gpIm_iMeASV@ZbcX`ZtY!gB#K9RFZRbfS8xR1UcM zC;~~STV`KSyAcmG)CZ4KE$Wy+qZbrmCHv(u6(g$RQAG5uijGJ`y(y_^e|3axSH+X^ zPmhYIBdQNRfM;4Urc|(SRG|-+c&OvhNr0$gDaWSyR{wwo?5rb_k9TG_W+?`D8Ihy~ zHGyUY7D$q&+bz{p8hv#wF~ZTG6_D9a2PRjS8n7j#4tg!4m+i>;8rG`%*b+2z_UO`I znLH|JO#pK7Iico5)|2IU$Ga{%1L8f;G8Yyg6FSfaH<-7bvz7c| z_fVl{uMEinEoCOkP^s%+LQ(C|4aAICc`CUH9=btQ$-gRcsGinzO95GG5_H3dB#b1b zSH-S1Ru68Ep?;YA0;XED)RJz!Yj)L2rbJ9VK_eM2*!1e#lLm7T@p8xS&Ty8|SI^y8 zK~eguR&^TNO4FWX=4vs~@s3v=WrrAv1b)FM*-TCikmMKehlH`%Cq|4X`-xEp6{*@j zuRU;_Vm)XztNCx5@zHD5$P7A`P4@jYTfxUC>bFI%Gt-RKSMbdTIJU6nW?Y!pf+}O0 zq@6gWplRMF;zfl30x)#J0AiLkH&+Xuj67MTfP6}n7R=~&f@fagi-noSx9%+-4 z$GgtDSRGh&m+MO8?ZlWa^MsoxEBB9W9LD;ud7RG_)X`X9fISg-xgwFgL#hdU)eR#h z>ynZSR3^d)E+O+Goi*8=Gjd^OuuVzRq4$zJY~{2I=qat}dE_%!5QvEp@CM>TF)q^=($ydw#ap^p2HH(q=qs&cdE^DV}3KBOPUB3QBAMAVoet zNMDGt@k`W?s3Z55l5(aB4ghU3I4M}wk6`HrKeHMOO41ysxtB4(r$bd6)CI9Zw@e<) z+<0El6Dqn{ztG9P051R*m)7J`t^=5kup9f7H6+{<^`CNr-a7!)5bBymBlsYufs1dm zA1f}^Bzh@*er%KQ!dySiDd0yro^A9nDO`wVhy4Vb%8tBI;D|cSGSE9rhC+qVo3Mp; ztKJW$6p)&l2cM2c5uBNMEPahR^B}j(gL1GJG;5Jpz+#ZPDhJ|$eOPVl)y!(;0h=ALfE$5EZ0DHf zZ@p-Yc^ubKvP+3CwrN1pv0L;RA|TOALiV;*3B1kDl|j?^G6;+1~dv-olQsK1*2v_eccH3FS}MT<(hSCb&A{_kUj z#(rrH9zj(mHSksXbJ(}|N%bXE0KJ(lSRGNmZrMBRRFRoEo9@>ouVRvX|AMvvMf+_R zvjsF~s5I-Bh7gge|E6)oMklqU*KVL!lp~WRbs_;A5Y}e-H_^*E$SN$3(ECNtNZZ;B zP^<4|U$GosM@O9@$}8v;RSjBfLuW;nHRmqXzRy%Ovs#_nLy@2o)jB{zG`m)P+HmGs zYL?uw($@6nI%an{<&$)3@N#KNesz(^OE=GnUTgU(55E^U z0{Z%gNGIK*C25_Y+0hCJZov&&6V*%QIf}~qz^c+Kd<}~F=UGrK8uAM!L;mZ2e!>82 z0>G!(#OuO5AIf))Eys;emDNW7XuD%D{bvGgI*&AFJM zGTaDCuHOi5hzSg5vkegGhOH4P_XrrB|niw{54rD(=37A@d*J7 zUJyqv4HcG{Ri!b0eBIZ*fw?3~`35#Br4mR`s!qk>i%Ui?Nb`UKV@4XGeGSoO`1XDD zntaeHh)^VZ6%~xDIwWrE{8hn>58^ns`#odDjAqaKSFJ=s>eE@8DtR)}4PX2+Kko6f zrM?c@ZJmmzQD=~&%RatH(=Y~gL6Yty^X>6D)KYWVs1iq6D(FxH$=SJBi4Wd_73T@m z9c(n9)gEQQccyeK@L3tO<*H|TYIb<5)%sz+z<#L9hqNNEtOc>2SMF*^2ws4V;3RyA zo7P*J*DXVE4um_in$3OH243FLNey={3AvMhOSmuTsIDwCf=2Dz@yrFCgat>cjszta zaJn|5dRT-yOV>?I2j%RPT3~p=TR?_yP<-edNcGULHH*Z3sd@u?FR9Nnh+83$hHb1g zy6d&_PA2d(Myk*G6N08o(okZyHo?1HPE)W|$2Ufxj-H&;+OGgGhxl5XX0jU9CPIW6 zk}LX|C^YW#mP$<2>o!Jk)$cPpLs+vJy+CX2DkiHE=)~O+dU&ID;W(1(qq%EFGPg#J zQQz)=>NoT0!4(W89XKoWSqG9RWE!puN5iL5gWHU=!~(XWuW)C>8LJS&p19=z3N)DNo;Ejx&|1B`M#J{@~%iJpikB~L`8M@Pg$jWHrN3*L^7?anFV`Y z|D@7sio#InV-kATs>pJwJ$vV`@QTW>S5-6!5FF$SC94htF=>?gFIsu=i3q61W%+!w z#-*-n5Oak-X=n8%t=o?*h+g>W{{|^NzvyQ9BYs_ zlou)oXaX*!>4JJ`D8Wo$9jz~Zt4#ajSDz}eH|Vr|fIDo@M;PA|X0G%1Mcjq94_N4+ z%u7{WFVzUmTCkZ`UEAbYqJ|D~5k-Auov4Q3M5db@%g9j)zu9&U8B#2C$wKANp?&Dz z)<5Ao%0u*S3+f=&XoM3wa6GYGkE;=cB6LMuuWQR(!_kH~fi=WKgG;lF29`dS(@Q>@ z)9C%__dQ7gB4c4tn98g`Q=d#kz&MR{JYv4_Q4=1m_xuzunB!CWTx_ca@rJ8{He?wM zQSA1Nk5!_qlhh~dm%!8-hJv&TeF3;;N98YZux7++Wr{Rpc~G%vVBSDSOGJP}b5mQ=xwOWULo zf)-LclLyXgePGW6?Bm&s6nT}=0X`>r@*-4qk^?MiBSi0*mqxs$2sg8%{vrsE8Eee2 zY%`44exL zRrrIx@+Sap`bL#&d~qt@_bLkr@P)s{w#K8?O1k>pQ!T**fu2IBf8dpaEd`=h&2;W; zl4-)hIZ)()id`%gQ#Mc>)Mmm# zUr68hNZd!5_4E!kNvf|Q?r{iN1#C+0RJ;nWF9re^XihKme@4)8z7QK*xGurUj9Ec{ ztEPqos1g#(O!nQAgsK~h#sZaJ!Gkw6lfB>#H^Rmy*jhPPRJEe394X>3KEc1zifPIk z;G!mgyaG`zb6Aa44L@>$|Hihi!IeC~0rt)ruS(q`Hm_AxNh|Jz9ezu?IgDKwZdtXe7QD(UiIvS?&zQyOZitb70}{0 zs~~%kaGSr`XaqKp*?%_I{G;dkA?it^g>w;AQMCi=E~T&15?gHR?}5Qq`}12_)oT)` zDk#=QPeXD)}yAWrIL7z>c&2Y!mf13{-=?$Pl&t-q1%^QWl zbCriyi)3K>^D%@Yy5`~9N|}XM)(QGxJl5Z{OFGZJs+#OlCAANowTfVMBc+8Tw6y(l z2R@**%-zDrLDZg=YqIJ68h^IRw3h$B3JA*NZM0Ok{vB3b9Z@x!PSp?c*vY5OfCgDn zE8>Egz?5v+hMRI$fEwfa9Z%sUvep`X2>M zr=YJsmiogJwaS850=J5my5mwU=S9czuIJA5-hE}IQgsvCDT&~5GgA&o|E5L2|Lre*$l1%Lt{PpKEHL7R}j&j+<=prDASA*N6@CAufZDA3q^-FF3N*}Ac z7yAn~^;5TF{%)Y(@64X0u>=(fsjxLW7B^P>0|;Fz%{k!{nm6c$^g!AMi@I7v6Ffdo zHa^MPssIRVl`Znw73XckGR3e-z|N}}@X z7;d?!5_trGUMb>o{j9M{&0AgW+BRE*KdeRVr|5tMsB941$84{cw%%uAHhEO5!lI0Y znpNxmNTj{bl_B!0F7AQecvvf7Cbo2rSXcrfnm+{6HqpO++xR&LbOOXM) zmJvMIDI>RP!#QI^t8X1!7?7f|NvRp#0mRsR<6#%(RF%@!)KnVhfVpp6FdpcO%-rP6 zEC{linoU)V{gktnFXgZ2GOoC1Kg3#`ugB49Yy}mbF!Kvz$r00p8lQn7^D6@f{BrzM z=PV_U3f@#7ChW>f5<%>f5SC4Kri!z*txKL9S3{Hoa_MRb_PJ9UYGG)K;-(?~Qpe>u z#`>jq6r(qCv+*nWWB1?%4h7(uzVoy0w$7OIP_mx|glf8xlTr&5j0QZKy6w3yQyaaL z9uv*FFVG!9qRS!ZhG3D_>IK`lbZk}ktaa0s--uE;@*Yirai z)VaN403RUV3C_r)~CdvNuA>X;gI@mpl&;A7HW|(n~Cw(A_`TUHpdnEzhqox zJznORBzZl@h=nH^6qGT^nS6?5Ii4olCn`Y5I+!Cwk@QC=)#s-(%nI=$$LL_kX==Qy zr*?T1sFdEM#1x;s^y)7^`Am&*)Y18}j$l}q6F86}q**{L4aZqvr=7}r~!%4eG#+a8%OpzXZmNu+=*n_WljRhLL^^InA_!T$W1ajzgrA=73x+H}W zR;T8bYS7qDph<&xjYg`&d-PDs-&b_QQRIA5tLWe#tS#KH)tl5V4h+@;hMK&+wGll~ z1*W_uAJqA274MfLi01splY-&~etrud{;>W^7hdPWy z-TErmYk#HMN6aejSABBGv|Gp~AW37XWU>J#kYFE%<= zVkv9Z?XGh!^BvsPF6&h7jSPyvbQ=z0h{tjs&w6rUs%eU3PcLTxC$Tm(dHxLl&%Rsr zh?JFdyiT-=I48jz?&LUC$1XtRCPKfPLIWRgVIEcDw)xtv6pzt!W@v$>7_ zv=V0o%z@Ne*Z2>0ff4C6$c{XDM)KH&8dJ58-$!5`wLi|_loooX#WGmH*A6tjwn)We z5j4Dh=>C-jB5NRS6@a)A^|mBLCJBY2bfnpFf6)1DlFn)dR(niYj8D)jXg`&V-q7rj z4wHk{ds;VZrI=-M%@igLC@2JbC=}hK?vFka(2IO*p;nXzSF;La0xdS|?ytnQ+m1Vj z1+iKpbo-i*r<#bG)+i}!Vo-&8K-y~$=40K=RqdGC(mc7JYaD8yUvVztHqLTbzI6#Q zY6t6+ZnZi}mJTD4P`Ba2&7`~tQVk3`{@%XrM2k`@w>LpGFcb-BU*Z2^ssA%6VJd;%yUX zLG7B(lw%;Zn^v>?zbscU%XmN0Rg>n|{v-|8jz3(`t(RXV$5w4SsNXAt_cGH4T?57H9q`l6Y>J*> zZEK0;kB2+||5?w~F+<1W+L*y7TuuA*a2qlnMDnZUefP>VMnPI;%c8dE>;DIq*J9qo z@~u_juxTRC7!qtHCXOsRj-?)sOZ8a+Mz6G5UH!6NU-19)K+VHS1=TRc;;q|qI4R&L zR-u5m+Sl&|>+>MY&06tje_9%RRW+o59F@m5qro5no$mOkQK?es>W;3`H;-u~!?%2l ztgZP7^ub$nKvNACoaWnYUFLRG*_OSGFh*8S93TPl#bo zec3ZOw&Klr)b%}x#_+S*5b$7g$Hn;uJwX#X=vHyredtpER#9${ob#q~erfYKjM=#s+jo6JGjY_VBhvh-I;mr?JlA9u-hTc+(ymvvi>)cw z?qBUk&5}?VKF@lpVLOv;mwDK17*eMyCGDYS?O&-=s9fEk!>X;iYZOGT=H+@t!4jO7 zHvQ3tAd_RH07cTN*C-{WIct<&vP~FA@&O~7-m+JvDLI<{(_^_pehui7M~4YCFH zl4oyiVwHg|QK~P9uZ5~VF^8j3M#e4f*Z2$t`XvwO*OnW5|8MH<7*KkZwTbR^31%0G zZMPPQ)A-oB@oRnr7KR8_#l#2|+hjy{(f_8Bn5FhS z(^6J~sQRG?j$l@GGbWgy)#p?%^wI**@ye*MYytu7r)TtlZzz%e0u2?%3vs1jgZFWq zuh=-v(7~TMeS{d$SR-*?J?3YC4-F_iki_2RC$3DquW#h(wE}qVqkiF>j5;gp7sWV7 z{n8Q&>B%b1t4*%{^-ChpIIClNwECs&so>Dr>juTAz43c$seXZtm<6S_8zn zrMfb|Dg65j6~5oR<3)}IlS_>1!Qy1t}f=CR(@uF{*wHMiAj7Wx`z zb@1f^?ka%ZTeHx$%<}ko`=*HyEunX_im;BJs2+!Qeers8_ae!4$33q>X# zk7g*!^TPZBjzwMTcePbseVEQW9}$AHsDLNiS$uuGm>hw zH5~hswmQRWV~*!Kw%JNAt)ep+&|{Y5Xuu&_C01Jz8})}5tGl@FVB21RZs1>m^^iga zkO$y7whqIr!x5a0&c67=QM02RAu6txO3v`rnM!`8-|A}kKG%M!zXE8vb<<31WZNCmVV#sr>T8H+n_D~b2 znlJZ3tfy#UMrJioC^8jI6;C3Wspg56Xk2jh4A&3nszhErTa1DG0V&drQjQO%cfI8g zVz8sfyVK$NF6n?jF?3S`5(|Cal2cNQES`dV+<~0wBKuh7j&8Si(Gk$A^eqKML2Hg> z{vjU!X-x+xX~SQkW=b(u0I^Y>tI~5`@GgxlwTEUCOolY6=y{$__t*;P!E1WW5B~dN zoP7lK3>$TEtm|CW(cGd0N~jO%O{kf?U?8ekb60J=17+F)C^XC2xPpvhKJ50$>-QY_ zk)`Y}&x*;koWv+S7)dvfmTuePSB_npoH;-dGO@<0T33@WXj2F)9&8m{GasWNd$33E%lcwEzQZg+6yay02ED=Wm@)zDzNxW{y|J>Emfm~ zxcEoec?`p702o2VMKLLK=w#DMJ(IJ*K_H99oiqI(6k_g*Ua{0Td2 zruTqShHzUm&)Ba+j8H#_XUY$zJv;DVYI)hMza^uQQZZ7fDVdH}r>y^=CR zT6iz#;g8xkDUQXTjxp}z;9K)?iz50s5l|ZXI&?w|G%ohK)*^UYP*<#v0gjtsbGoqY zuSl2nApHtm@T%1Ae*c;n>4zNCN6^qGSr=I8x4@@lYP6(cPpw&k%exO+LJPR8y|}Et zu()O=0D8$Ix@fX*4I?nqKsZ@LTI#Z!Hf45idlcFN+RCmAw<@wSMwF{YPqF(6d8{BW zH0oFDCf`%na7obCkXQ70gP>BiYo&n0l&$blbra{WIl#V$WxumIBFk*uiqDE$CfpZy zmZG5B&0Sep-CN~~W4Nf+EaI{wa(MSdBabnRKT2h}!0xJHOvD+FI@UYrtGM^sw*}2} z)JI4BtFD8o=)50FzWBv0WY0B}QF&{e5p(5^9^djimw=w?Ezg~gLc=i-g3++GvTDu7 z84Ykya*jL@RD+zeg_Lh#QwlA44AAvaix-<+(HB)|6cn7SFV3K=KY~N-TFdy{UXkNM zzjY_{b-dN*6fAQrH4PD2La6gu=0|#@?(KfB=OxN$TLO@(6q>?o7wSTP@I}i;X}Mel zBqU$PZx`q8N(pF`e*s&m_Zd%@oUGVlTkT({`PDz|3}1=B^&#qqT=jzu5L2`Sstm3d zpc7TdWo5V^Z@0pI%bdUOKCC9um7vVuJ$LFzQGV}?;|;4`Tu0B-(TS4;%8C~7}l^S3oA1f3wlK_30-0B*3zfj!NZ)rL3QC{Gbc!4-` zewBxl2SFjCHtKcc zB;FS~2|rrifd3(HC=Z)gz*6cLbOjzk7Z%t9Z7Z@GNOL@c4Z2CWt^j-+*K{OZqBN^? zwS&=XcB~*u<59DtA3ip$>L*=T_knc3aFS-iSm|%_&vZN@vum%}#8?26~TJYn3IOuPVNx*)eW987!|wZ9k;>sl1*Ql=a~&QwQy5 z;)<{y=B<@h0U@DL`nNsaWS?yly?oH{_Kj_In+K2DyTRf&W0}_aGZsWm19Er9c_!)hNV*sT8s6K7JtX!DC zJcqgd_1c#D8s`XhZH_Lt9eSw^eUCosJ5>k5IokwV4{zpxdfcOL6#)SB$5724RSarV z&2IWq(n=`QMs8=u5B$Wu-y)mX)tshBYD{s{aIM1iU^;^ph(d*~cNt(htms%P30_O< zB`b2Tn(AVxrlJ@Y>r$hW(WZDWRo;@Kw7&Ic{*u1WVzh+v#kR=@-)|Wot|qb0fn9a= z4i_oamH-xxY|VvsEOB8SBULoZI6l~@1={GOn}VtL!5u>CojwO{s8&3hFnsXpmgJ5^ zSnsR+tS_EN0b1%Hw!IHJYGA4Ct~=x^w=(!)p16jQ>$=x&73n7k00Bi!y5z*iy8rifm4<{h4RLQL`7U!AlG6zyXo^pnri+ z8UcuIiPhEm%nz^Ed+9t-m11XWkB%=}jjNaVg$u5G@IvE)tD!~sh4Y!qFK{*cm44yZ zGhbv5jIXL+Bo^#hk%fI8#V@?4vMc~Dtt7wT`WqChc~qa6!5jis9id05jdcwf_T#!C3=DjDv8{z2*9y2ukT$_qop;+a zexS_RtH;z5U(4zD9GJ&`bwXsMedH$nRQFQL^s;3(9?}1qv9aE6{>d4mMikMbahwBu zN6UVzZC%hML7@IgpI-wjm#m>kp#wZc~}Ls20d^{~~kF3{%+RTCH| zRSU>Ypv0M5p-&XD3Ir{#Co4SCRpMUKr8RokOGgNuQ6f)~0#(-lWL;keIf7_*0HUrh z%lI1evz_u`bj;_0mg@LtF+<9v3LVq0b)C$)FcW~dVtzot4ASTe73#;t&-+L8R9YJ6 z?Y}Pa*mZrUduQsgTw5Q>&k~x)LR(}8%|RCaS2`4ll8}3KZAyW0e^Y-1C5(RR6C?Ca z%~7zS+7sXa3n?S{f*MY7lb3p+zSyzamQt`6cvGoGjkm3IKV4QB0@il?Wm3c;|4=Is z7mifQfnGFVsvB5n$Z8><@faZeKwpRgnx(lr#BRXpe5Pe*Ky|}w=`2<+ShGYzm-bb}md0-Nkqzyo+GbPN?FK7ml8$#rgNFT=!Ks=WA?xVn{uQ``)Uy)kD3q(0-we%Z@%Cwz&1 zo%}}uC?_1L|0uSGvd;({h(e_k5q)odqHb6<jh41|a3!S?o2re9pw{dJjYxg=$LFrE{|`lFJWSZ0 zvVZ92vS}B(z9#LDugj#pIn4fVib{6xZ_xmKQm3pWw2CP8X6ivqKv#SqD7Jf*X6m6y znSrtQkkD|JdhM6zZPW&GxK*_DcKp%P7_VS~zS^DDUQxJ}3=E-g6P*v{+K+XBR(~8b zj5hZHK5N+;^EA*wOj8u4P_)GMc;#a^+|qZpGTpR(@7R21vxKvdBm)7V-eq^g{TT4F z4yobw3{Lut5dsD|4=tSok`Kaf5(9W?y_D@> zbsj97v~J#GmbTv%TDlm(%>wqyf*eP6bAUUCSDS;+!6SJhy)m^zIR`*|IC@SOdI(bz zT`;WEwGp6#y#Y$8Dot_#6tET~0X>-jZg1KelLE1_0B;JYr>37&1v?K$G-Ik!!B06r z+-Q+TLFyEPY)$h#i%tJ0yGNNHV;nOdvY9aLPD#kcX2q+P3~8QD{*9cB&&Ubx26l8h zJIYZhMA4&E_E5Dj{n%udAhD%+ashv|87=ODU=-CEmg>L}fQ0g+S}~mzT~mQNEw6fh zSDSU^_x#PY{*>H(i%TL}5;*WblfjUP;wZbF6KE*I> zMXe=+;JEObq1ow?Bi*~9BxsfeNU3}e#PnglGO1PGH7Jj5_$+O<7OS%G-j+ol;?F!A zJP?Ug0)bHlT%XeJJP9Hi;A+!azAEpQIyU0vw>;UJ=xQJhDAWZ?6;OCbHOQmTP4q~c zjryj*CG9!r>OHyGR{e5KaB*zg4}^jz)>L`yx6$f2_6hJxE`| zBnV$S)N)Tb`;(5$9^{AE1qD2FiQdMIj>xSX0d1X$r@>!q*`}?vRO1VN$x4wlHABIB z=s_X9$7gC4H8RpJGAv%fvb>c*u4S%X(Yt{$`Y!&0^Y%?O8dg6*cWmFpW2pUDUgOBuCrd?3yj-zt!V{1%6&jN^`k$5 zO=0WM8m|My3_AfYbqmen$Z8iIDK*A9Ao4fU0oWczf&qcS>|?nt`54yNsZm;(CE$1N|sH(n?!PXaa6V8wW~Ru&Ioplj|}2PC4Y`D5cjaBu1-^ofNTO zKVHv9-Dp2b($mfOseSy38|GzZ3D^eq;kd|m1Pj~Pu+0G%@9ic)vx7s9Hj?X$MQ&-* zP+HUk?w>)+xLVC=sm%&5CB|$7pTiS3b8W}sgLBY64y$3cKkP#L8ImZD;{|9pq1_7< zN1&}o!?le`v|CYB9D>$H!!-lAeqb{ikMBp~UyX+2)Y)7`Y4&6^T({^pk%Q-<9f!6H4YUrv1r7ZdqyJ)Dzxb;nkHa;OYop=w z$K8o`KVlP~58?gL$I(FZkYmv%(LfWyCrfbs5`4a-Km)zUuSdh@kH1Ic&|$P~Xt$yP z`(a0*U4Yg>1HUKCL%SI54z!<%91gh-$7hG%EAqtS&~W_3n?;Vmbw>=N;qxPIM7vAm zNlmn4(Ln!6H=x~ub|>2XB1g8-aPGry|FI-Z7wm%zYwHIR_2ApYn5&V{!el zg~(GEq5;=a(f2nFMmrPjCNy00G+h6*TSblow&SiqyG!KhC!^u>r#~d}jLm4bi5!o9 z$K(9*vuL1m{5>MeL1+2R!liXtaS_^AMOH3HyAG`oS+yPw7+2wVHTtgxt<|@nf$ti8 zwx)yjU6HkipiQFPF0yVR8jjcD{Cdz@e-j$6Kj9p-+eDrT9X%5?pLwUqv(WEZ<7mL} ztoubyT#a@e+8rXlc^KLSXt$s}B=TDqqk;aj(f`?3p#4y!jpH_GwLxpc(P*=1IDgVY zw2RQt_oSbRY{YdN!GGg5Xt$!>Cvx&(XgGKBBpT$~bOajuZ@N?Dl=W!uLPOtE(f3r) zI`vw#+tJYXv|%*#Jq`3u`zqQ)BB$e;(;@5W_lrDdIogeAxb}?W&^l=7d*(tkTzBS& zMV{M48%G1)vyMOmt+VbCIeRr4c%6M0QVDRJ1027NYkzwi8qS^DMnnJe1nmm6pNeco z|IMJg`DQfmJpX94Nwh-bd554~fOb9F-6GE)M#E>%zg6Ud!_ao2@%U#VFTiy#__)Z0 zpm$*h?H-XAo`!Z4+Cw52or!k4$csSZMdzRa=Zo$TdGSItynivSd-2^OFF6jag9f}8 zuSWx}QD7Rq5e0ZL0gS>1=?+B z_lk_8@Az`G&1g734%*|OIS&5gKNp!m|A}pAz&LRW+FfYieJQYCI*A6_mlh&BKzqk} zwCm7*Dl&N{8jdG{Vdo)etI;}Wz&3?zr@(Ux@274NnVyGs0oqMyz_jaFv`MrZ(C!qu zY#8k{G`zp;K9L#VnL)qZO*EX}{b96+L}oXmU5|E~$eu&cKyweS+k?+udJfvV(0(Rz zIp|$JiFPg8Jt9}&{S_CX;o2+bp`D2~iv~JZqVH8FqJigC=zrC{A}_lb4Lo0VzsS|c zqT$-BaqZQ(_T?9#fzHdp=N0SGI%xRpl?%~8&5a`0;PY!PK)XrgwK#t5MQGQeeOKglc>lVS(QxhSK=*aP z@Ot!p{Wi4QMXp_qhU07Bg?5L??=;a)M!OCT@82+tHj8!}+RsJacn%t_eIwpqw-62Q zuLH*GAm^LV?@hq)CS3RCqtU?g&A|8Odqmzc4{b9VK7R}7UXSjh}n zqJ355ZGr|`Z@U`pE|Iq%iw0V6N530}(Qy8TTSeXh8t(xAcU*yX3)+1mzq=ak8Z`8K z=W%G)q5V|kU5B7uj0W7l*F-xL4cLAUeSUv4+U+9m2H$s|hITC)`rHWmH-g5E=y&4{ zBJV-J_v}Ig?e`vw2HNk%b$_rL?HV*3-_%9}zMH`3eFvkBquna*B7f9I`#9SDA|C;dj{x6C?h*MY&VLkrK8kB@*^GwkZvn4Az5or^e{3Nduzjo$ z`IE!Yu0Z=LO08kENwhmeK5+;duK5J6`Q#C3ZM1D@*P?;OCxPcv$D-lfr*1;KQ{>ip zXh)-+iPk~;naHQn_tT*HX!;MLyd^Ta7l3b~D-!MQ%G74K!}M z4((R7`$RqmI-kS2&w=jeZbt*H&x8Nxx1rr8@&(B8g=^8iDsnrp-+mg}4I*Cz{V#&< z7k@7DrCGE)MZSDA8u)$r7LfupP|wPrUV-+I$XBix`7`wYGko^dHrgE`e}1vZ*XE(! zDDoHU(S9g$$1XH{_Vr;j^!@r>BHuU>?ZYD9T!^*}4WHi$UU!1$w+=%C|8Lzb@@;(n zZCv|pT>I_&M80z}8fbs#Hne+0zKhSlyBX~oG|>Ia)6j7Imp>Kx-fA@9`5vzS-n}A! zbsQS7{MDTzcQw&K_byy}*LMYTKF(d%-f-~4FIjZr|Hy(CPJrU-BhJ+Qs#}iW>dU+~ zzU_gc7uT|f1ir(@eQGH8rHS{|#?Kl>+4vdHRrfsJpO*O)c0K8`-$47(`}f1fzK^vf zI%&`TvE83e!q@DSGV@$)_rJc`vGY~h>0H{gf53IzQ|@%!#JSXXj>ovBpfyR4*R%0` zvt#Gdo}b5dy+6(s+7F*;zXE-|H9O_C-N%D-e3og6@!prs$gkP?<=R~QL+6opY*S9| zA89u`za0HvM?czt^6yIrzX~7HZ4{5RwSgDqrT)vk*&uWIe$p*1)dP;lJ zX?98*ruRJ8-4fmI^VRp{&sIJ6SdY6gbiaSB^d9Z{q?@$wzP_Jr=em}C_oahwS@=G+ z*tWRkdmI@H6U= z*Kyy({+Dh2_*ZGAI7sJsed;sVF?)4ildk=Lv9IzC69mE*6i$Ce#=AV zCp=D#I&Br!=1X~;&OPd$eYzTG7TxFgzS(j5e$4mDrrfh7`S}@J(r@~l=k&V5_UV|{ zH9Mt!c%D2_S%*g+VKr_ww!R*OcZbO^URimEco$w#!RM>A8kfVvZ+RaqxZ+bg8*p#< ziGCbqP>%6qenaHxe%!?IiGIxgefbPOZsAVI^Za<8JYFXJc)l!@SNib+oPVPqFU0Zt z{P;jQRzB;;LwFwUAE2txq{-HXd43$^@xW~7qZ|}A`*A~#3|suTiQ|qR58(Ru`f*E+ z3Ag(3JUK4>tsl>q!(z*i7szq(NIzbP_P?V4*^M(}qq7q)9UI;_y>sXE)b8O8v$Hc3 zTlUNnzw|o*O10DKxN;bK2Q1W2Gwcs*>|6(ck!hRvykbTcp~$7 zASq>;&5}Gr(a+8)>0_bsSgzfuS{+q=y%aJItNwS&PL*>v-fvL!w8j=_l6o}_oCn)b ztL(D@8lJ$C>X@8@z0ui%qwVpAJI(Jm|EBpb&Hp^|wMV}9$p0Q*I(*FV^5Ip(YlojXeDd&R!&eUf&hQ@%-!lBM z;ZF?TI{f*Ofsvt+Lq~>3jv9H!$csmQ@2J*MhaYw1QBON+^--rCb@5SS%ig!_Q_DWP z?3>HJb4>e~laASO%=AH;{;>Ju=6y$YfcL+K4^zA=ht~|B z0KB_~XNNl#ytgUd$2;D0My@|Zgr z0k=HzmPfWeGWy8#A9*(4i9GzShu`_|8~6T?$X=}U?EUAx|Ag01@BP%?5AJ>I-nZ<1 z)85zbeeK@Y?0x0lm+yVq-YfTBzIS@>&Y%2)$WLZ}d=C5n_~ajN{P70t5B%|h9}n=1 zZU1;T_y71Be|OeDKIxuM+OfUf^THpE{Alry@Fa+BcW=3S^l$%V@O$PddhSE=q4X*C zH|k$HaRUyxq>F`MeckuVq<%aO-?eRv?=O<{hnpw(!)+D)vyab3K1hGwL7wA(>Ai%L z!p88za8Y3-R{&#rP$7 z^&Rk&Z%8X1Kw=0B{Htw2M`@non7*&gdg4dHWB}1Lh;_F4asWo-h4{AVK^UPA#<%|- zhY|S@+_HTWJbp3GZ~CbG;>0dO}2@ULQM9_w%G{BPPq|x;F;z& z=KMQ)*4uBb-t~U^uc1(VzDV|EtuEH9^b$%bqZ}Uhj#3pO0r8Gpj%Txk23C6+I>pDA3p&GBu94Tu*5Q}?69v|pK+=S?hDRI zaLF}S+;Gc1cQWIFN1l1&g*RSFlOn^rO-ZMqEvdO=kg%m(z3P*cY;l{>ck?W==L(!&cBl~J7B4I*^4KwFFH{t?$ L5%VJEMYQjK#!N~U From cfa366b15945f755d809b8c03c4e1e2fd0b84487 Mon Sep 17 00:00:00 2001 From: Azinum Date: Fri, 18 Mar 2016 19:56:08 +0100 Subject: [PATCH 4/8] Njet --- Fifth/CAnimation.cpp | 4 +- Fifth/CAnimation.h | 2 +- Fifth/CChatBubble.cpp | 12 ++-- Fifth/CEntity.cpp | 4 +- Fifth/CEntityManager.cpp | 2 +- Fifth/CEntityManager.h | 2 +- Fifth/CGame.cpp | 57 ++++++++++-------- Fifth/CGame.h | 3 + Fifth/CGame_onEvent.cpp | 42 +++++++------ Fifth/CInstance.cpp | 4 ++ Fifth/CInstance.h | 5 ++ Fifth/CSprite.cpp | 2 +- Fifth/CSprite.h | 4 +- Fifth/NFile.cpp | 16 +++++ Fifth/NFile.h | 1 + Fifth/NSurface.cpp | 1 - Fifth/resources/gfx/{ => Sprites}/yrl.png | Bin Fifth/resources/gfx/frogs.png | Bin 0 -> 6444 bytes Fifth/resources/gfx/player_run.png | Bin 649 -> 16616 bytes Fifth/resources/gfx/player_run_.png | Bin 0 -> 649 bytes .../plant spritesheet 2.png => sheet-2.png} | Bin Fifth/resources/gfx/sheet.png | Bin 2362 -> 2486 bytes Fifth/resources/map/testMap1.map | 7 ++- Fifth/resources/map/testMap2.map | 39 +++++++++--- .../scripts/Standard/ChatController.lua | 45 +++++++++++--- .../resources/scripts/Standard/Controller.lua | 22 +++++-- .../scripts/Standard/GraphicScript.lua | 6 +- Fifth/resources/scripts/Standard/Living.lua | 2 +- Fifth/resources/scripts/Standard/Movable.lua | 46 ++++++-------- Fifth/resources/scripts/Standard/Npc.lua | 11 +++- Fifth/resources/scripts/Standard/bitwise.lua | 1 - Fifth/resources/scripts/Standard/standard.lua | 10 ++- Fifth/resources/shader/light.frag | 4 +- Fifth/resources/ttf/font-.ttf | Bin 70324 -> 0 bytes Fifth/resources/ttf/font.ttf | Bin 86396 -> 70324 bytes 35 files changed, 228 insertions(+), 126 deletions(-) rename Fifth/resources/gfx/{ => Sprites}/yrl.png (100%) create mode 100644 Fifth/resources/gfx/frogs.png mode change 100755 => 100644 Fifth/resources/gfx/player_run.png create mode 100755 Fifth/resources/gfx/player_run_.png rename Fifth/resources/gfx/{Sprites/spritesheets/plant spritesheet 2.png => sheet-2.png} (100%) delete mode 100755 Fifth/resources/ttf/font-.ttf mode change 100644 => 100755 Fifth/resources/ttf/font.ttf diff --git a/Fifth/CAnimation.cpp b/Fifth/CAnimation.cpp index e482b31..5c6d88d 100755 --- a/Fifth/CAnimation.cpp +++ b/Fifth/CAnimation.cpp @@ -42,7 +42,7 @@ CSpriteSheet* CAnimation::getSpriteSheet() { return nullptr; } -void CAnimation::onRender(Box destination, bool flip, int angle, int alpha, CWindow* window, CCamera* camera, RenderFlags renderFlags) { +void CAnimation::onRender(CEntity* entity, Box destination, bool flip, int angle, int alpha, CWindow* window, CCamera* camera, RenderFlags renderFlags) { int timePassed = SDL_GetTicks() - startTime; if(timePassed >= (1.0f /_imagesPerSecond) * 1000) { startTime = SDL_GetTicks(); @@ -58,7 +58,7 @@ void CAnimation::onRender(Box destination, bool flip, int angle, int alpha, CWin return; } - sprite->onRender(destination, flip, angle, alpha, window, camera, renderFlags); + sprite->onRender(entity, destination, flip, angle, alpha, window, camera, renderFlags); //NSurface::renderTexture(destination, *sprite->getSource(), window->getRenderer(), getSpriteSheet()->getTexture(), flip ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE, angle); } \ No newline at end of file diff --git a/Fifth/CAnimation.h b/Fifth/CAnimation.h index 32004d3..f4a6e43 100755 --- a/Fifth/CAnimation.h +++ b/Fifth/CAnimation.h @@ -22,7 +22,7 @@ class CAnimation : public CSprite { CSpriteSheet* getSpriteSheet(); - void onRender(Box destination, bool flip, int angle, int alpha, CWindow* window, CCamera* camera, RenderFlags renderFlags); + void onRender(CEntity* entity, Box destination, bool flip, int angle, int alpha, CWindow* window, CCamera* camera, RenderFlags renderFlags); private: std::vector sprites; diff --git a/Fifth/CChatBubble.cpp b/Fifth/CChatBubble.cpp index 360cdbf..a0496c9 100755 --- a/Fifth/CChatBubble.cpp +++ b/Fifth/CChatBubble.cpp @@ -24,7 +24,7 @@ CChatBubble::CChatBubble(std::string text, CEntity* target, std::string fontKey, } int textSize = 20; - int letterPerSecond = 100; + int letterPerSecond = 5; bool instantText = false; switch(type) { @@ -97,15 +97,15 @@ void CChatBubble::onRender(CWindow* window, CCamera* camera, RenderFlags renderF if(_TextVector[0].getFont() == nullptr) return; - int marginX = 2; + int marginX = 4; int marginY = 2; - int floatOverHead = 32; + int floatOverHead = 20; int boxX = _target->body->getX() + _target->body->getW() / 2 - _widestLine / 2; int boxY = _target->body->getY() - _totalHeight - floatOverHead; - int boxW = _widestLine + marginX; - int boxH = _totalHeight + marginY; + int boxW = _widestLine; + int boxH = _totalHeight; if(camera->collision(boxX, boxY, @@ -116,7 +116,7 @@ void CChatBubble::onRender(CWindow* window, CCamera* camera, RenderFlags renderF boxW, boxH, window, _rB, _gB, _bB, 100); - + int currentLine = 0; auto i = _TextVector.begin(); while(i != _TextVector.end()) { diff --git a/Fifth/CEntity.cpp b/Fifth/CEntity.cpp index 6702118..1538cbf 100755 --- a/Fifth/CEntity.cpp +++ b/Fifth/CEntity.cpp @@ -134,9 +134,9 @@ void CEntity::onRender(CWindow* window, CCamera* camera, RenderFlags renderFlags else { int spriteWidth = body->getW(); int spriteHeight = body->getH(); - int lean = (body->velX / 2.0f) /* + sin(body->getX() * 200) * 2*/; + int lean = 0;//(body->velX / 4.0f) /* + sin(body->getX() * 200) * 2*/; - getSprite()->onRender(Box{x, y, spriteWidth, spriteHeight}, hasProperty(EntityProperty::FLIP), lean, transparency, window, camera, renderFlags); + getSprite()->onRender(this, Box{x, y, spriteWidth, spriteHeight}, hasProperty(EntityProperty::FLIP), lean, transparency, window, camera, renderFlags); } } diff --git a/Fifth/CEntityManager.cpp b/Fifth/CEntityManager.cpp index b038728..321009a 100755 --- a/Fifth/CEntityManager.cpp +++ b/Fifth/CEntityManager.cpp @@ -20,7 +20,7 @@ #include "CInstance.h" -CEntityManager::CEntityManager() : entityID(0), _gridSize(32) { +CEntityManager::CEntityManager() : entityID(0), _gridSize(128) { renderFlags = RenderFlags::CLEAR | RenderFlags::RENDER_COMBAT_TEXT; } diff --git a/Fifth/CEntityManager.h b/Fifth/CEntityManager.h index cb16087..46e40a1 100755 --- a/Fifth/CEntityManager.h +++ b/Fifth/CEntityManager.h @@ -78,7 +78,7 @@ class CEntityManager : public CSerializable { void addRenderFlag(int renderFlag) { addRenderFlag((RenderFlags)renderFlag); } void removeRenderFlag(int renderFlag) { removeRenderFlag((RenderFlags)renderFlag); } void toggleRenderFlag(int renderFlag) { toggleRenderFlag((RenderFlags)renderFlag); } - + private: std::map _entities; std::vector _particles; diff --git a/Fifth/CGame.cpp b/Fifth/CGame.cpp index 53cb74e..ecda429 100755 --- a/Fifth/CGame.cpp +++ b/Fifth/CGame.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -73,10 +74,6 @@ int CGame::onExecute() { _updates++; _delta--; - - auto sayer = instance.entityManager.getEntity("n:bush"); - if(sayer) - sayer->say(_title.str() + " Gravity: " + std::to_string(instance.gravity), "TESTFONT", ChatBubbleType::INSTANT_TALK); } _onRender(); @@ -89,6 +86,7 @@ int CGame::onExecute() { _title << _updates << " ups, " << _frames << " fps"; _updates = 0; _frames = 0; + } } @@ -99,10 +97,11 @@ int CGame::onExecute() { } int CGame::_onInit() { - +#ifdef __APPLE__ _initRelativePaths(); +#endif NFile::clearFile(LOG_FILE); // Clear log file - srand((Uint16)time(nullptr)); + srand((Uint16)time(0)); NFile::log(LogType::ALERT, "Initializing game..."); @@ -146,39 +145,40 @@ void CGame::_restart() { CBackground* background = new CBackground("background", 0.1, BackgroundOffset{0, -450, 1.75f}); instance.entityManager.addBackground("main", background); - CAnimation* anim = new CAnimation({"test1", "test2", "test3", "test4", "test5", "test6"}, 10); + CAnimation* anim = new CAnimation({"test6", "test5", "test4", "test3", "test2", "test1"}, 10); + //CAnimation* anim = new CAnimation({"test6"}, 10); CAssetManager::addSprite(anim, "test7"); - - auto movable = CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/Movable.lua"); - auto living = CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/Living.lua"); + + //frog-move + CAnimation* frog_anim = new CAnimation({"frog-0" , "frog-2"}, 10); + CAssetManager::addSprite(frog_anim, "frog-move"); + auto controller = CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/Controller.lua"); - auto chatController = CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/ChatController.lua"); - CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/Projectile.lua"); - CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/Npc.lua"); - CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/Particle.lua"); - CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/Serializable.lua"); - CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/GraphicScript.lua"); - CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/ExplodeOnDeath.lua"); auto temp = new CEntity(Box{0, 0, 0, 0}, Color{0, 0, 0, 0}); instance.entityManager.addEntity(temp, "Controller"); temp->addComponent(&instance, controller); + auto chatController = CAssetManager::getLuaScript("Standard/ChatController"); temp->addComponent(&instance, chatController); instance.controller = temp; - temp = new CEntity(Box{50, -500, 16 * 4, 32 * 4}, "test1"); + auto movable = CAssetManager::getLuaScript("Standard/Movable"); + auto living = CAssetManager::getLuaScript("Standard/Living"); + + temp = new CEntity(Box{50, -500, 64, 64}, "frog-0"); instance.entityManager.addEntity(temp, "5:Player"); - temp->spriteStateTypes["WALKING"] = "test7"; -// temp->spriteStateTypes[SpriteStateTypes::ASCENDING] = -// temp->spriteStateTypes[SpriteStateTypes::DESCENDING] = "playerPinkRunning"; + temp->spriteStateTypes["WALKING"] = "frog-move"; + temp->spriteStateTypes["ASCENDING"] = "frog-1"; + temp->spriteStateTypes["DESCENDING"] = "frog-1"; temp->addComponent(&instance, movable); temp->addComponent(&instance, living); instance.player = temp; instance.camera->setTarget(temp); - temp = new CEntity(Box{100, -1000, 30 * 5, 28 * 5}, "bush"); - instance.entityManager.addEntity(temp, "n:bush"); + temp = new CEntity(Box{100, -334, 32 * 6, 32 * 12}, "tree-2"); + instance.entityManager.addEntity(temp, "n:tree"); temp->collisionLayer = CollisionLayers::LAYER4; + temp->addProperty(EntityProperty::STATIC); temp = new CEntity(Box{0, 50, 5000, 20}, Color{255, 0, 0, 255}); instance.entityManager.addEntity(temp); @@ -190,13 +190,17 @@ void CGame::_restart() { temp->collisionLayer = -129; temp->addProperty(EntityProperty::STATIC); + temp = new CEntity(Box{5000, -4930, 20, 5000}, Color{255, 0, 0, 255}); + instance.entityManager.addEntity(temp); + temp->collisionLayer = -129; + temp->addProperty(EntityProperty::STATIC); + toRestart = false; } void CGame::_initRelativePaths() { // ---------------------------------------------------------------------------- // This makes relative paths work in C++ in Xcode by changing directory to the Resources folder inside the .app bundle - #ifdef __APPLE__ CFBundleRef mainBundle = CFBundleGetMainBundle(); CFURLRef resourcesURL = CFBundleCopyResourcesDirectoryURL(mainBundle); char path[PATH_MAX]; @@ -209,7 +213,6 @@ void CGame::_initRelativePaths() { chdir(path); _path = path; NFile::log(LogType::ALERT, "Current Path: ", path); - #endif // ---------------------------------------------------------------------------- } @@ -319,7 +322,7 @@ void CGame::_initLua() { .beginClass("GuiText") .addConstructor() .endClass() - + .beginClass("CombatText") .addConstructor() .endClass() @@ -331,6 +334,8 @@ void CGame::_initLua() { .addData("camera", &CInstance::camera) .addData("gravity", &CInstance::gravity) .addFunction("loadAssets", &CInstance::loadAssets) + .addFunction("doLine", &CInstance::doLine) + .addFunction("sys" , &CInstance::sys) .endClass() .beginClass("Camera") diff --git a/Fifth/CGame.h b/Fifth/CGame.h index 57753be..f160854 100755 --- a/Fifth/CGame.h +++ b/Fifth/CGame.h @@ -10,8 +10,10 @@ #define __Third__CGame__ #include +#include #include #include +#include #include #include "CInstance.h" @@ -73,6 +75,7 @@ class CGame { std::string _path; std::string quickSave; + void loadQuickSave(); }; diff --git a/Fifth/CGame_onEvent.cpp b/Fifth/CGame_onEvent.cpp index 71dee74..b3f0b3d 100755 --- a/Fifth/CGame_onEvent.cpp +++ b/Fifth/CGame_onEvent.cpp @@ -16,6 +16,27 @@ #include "CEntity.h" +void CGame::loadQuickSave() { + quickSave = NFile::readFromFile("quicksave.save"); + + std::cout << quickSave << "\n--------------------\n"; + + if(quickSave == "{}") + return; + + rapidjson::Document d; + d.Parse(quickSave.c_str()); + + instance.entityManager.onCleanup(); + + instance.entityManager.onDeserialize(&d["this"], &instance); + + instance.player = instance.entityManager.getEntity("5:Player"); + instance.controller = instance.entityManager.getEntity("Controller"); + + instance.camera->setTarget(instance.player, true); +} + void CGame::_handleKeyStates() { if(!isFocused) @@ -58,7 +79,7 @@ void CGame::_onEvent(SDL_Event* event) { case SDL_TEXTINPUT: instance.controller->onTextInput(&instance, (std::string)event->text.text); if(ignoreEvents) break; - instance.player->onTextInput(&instance, (std::string)event->text.text); + instance.player->onTextInput(&instance, (std::string)event->text.text); break; case SDL_KEYDOWN: @@ -106,24 +127,7 @@ void CGame::_onEvent(SDL_Event* event) { case SDLK_h: { - quickSave = NFile::readFromFile("quicksave.save"); - - std::cout << quickSave << "\n--------------------\n"; - - if(quickSave == "{}") - break; - - rapidjson::Document d; - d.Parse(quickSave.c_str()); - - instance.entityManager.onCleanup(); - - instance.entityManager.onDeserialize(&d["this"], &instance); - - instance.player = instance.entityManager.getEntity("5:Player"); - instance.controller = instance.entityManager.getEntity("Controller"); - - instance.camera->setTarget(instance.player, true); + loadQuickSave(); } break; diff --git a/Fifth/CInstance.cpp b/Fifth/CInstance.cpp index 2cb99b7..80934aa 100755 --- a/Fifth/CInstance.cpp +++ b/Fifth/CInstance.cpp @@ -30,6 +30,10 @@ void CInstance::loadAssets(std::string path) { } +void CInstance::doLine(std::string line) { + luaL_dostring(L, line.c_str()); +} + void CInstance::closeInstance() { entityManager.onCleanup(); lua_close(L); diff --git a/Fifth/CInstance.h b/Fifth/CInstance.h index c69029d..9748bf8 100755 --- a/Fifth/CInstance.h +++ b/Fifth/CInstance.h @@ -45,9 +45,14 @@ class CInstance { float gravity; void loadAssets(std::string path); + void doLine(std::string line); void closeInstance(); + void sys(std::string sys) { + system(sys.c_str()); + } + }; #endif /* defined(__Fifth__CInstance__) */ diff --git a/Fifth/CSprite.cpp b/Fifth/CSprite.cpp index a08ea45..ff6cdc3 100755 --- a/Fifth/CSprite.cpp +++ b/Fifth/CSprite.cpp @@ -17,6 +17,6 @@ CSprite::CSprite(CSpriteSheet* spriteSheet, Box rect) : _spriteSheet(spriteSheet), _source({rect.x, rect.y, rect.w, rect.h}) { } -void CSprite::onRender(Box destination, bool flip, int angle, int alpha, CWindow* window, CCamera* camera, RenderFlags renderFlags) { +void CSprite::onRender(CEntity* entity, Box destination, bool flip, int angle, int alpha, CWindow* window, CCamera* camera, RenderFlags renderFlags) { NSurface::renderTexture(destination, *getSource(), window->getRenderer(), getSpriteSheet()->getTexture(), flip ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE, angle, alpha); } \ No newline at end of file diff --git a/Fifth/CSprite.h b/Fifth/CSprite.h index 2ffc254..3a5adb8 100755 --- a/Fifth/CSprite.h +++ b/Fifth/CSprite.h @@ -12,6 +12,7 @@ #include #include +#include #include "Define.h" @@ -19,6 +20,7 @@ class CWindow; class CCamera; class CSpriteSheet; +class CEntity; enum RenderFlags; class CSprite { @@ -29,7 +31,7 @@ class CSprite { virtual CSpriteSheet* getSpriteSheet() { return _spriteSheet; } Box* getSource() { return &_source; } - virtual void onRender(Box destination, bool flip, int angle, int alpha, CWindow* window, CCamera* camera, RenderFlags renderFlags); + virtual void onRender(CEntity* entity, Box destination, bool flip, int angle, int alpha, CWindow* window, CCamera* camera, RenderFlags renderFlags); private: CSpriteSheet* _spriteSheet; // Don't modify from here diff --git a/Fifth/NFile.cpp b/Fifth/NFile.cpp index a688ae5..9d6eae9 100755 --- a/Fifth/NFile.cpp +++ b/Fifth/NFile.cpp @@ -72,6 +72,7 @@ void NFile::loadAssets(std::string fileName, CInstance* instance) { loadFonts(&d); loadSpriteSheets(&d, instance); loadSprites(&d); + loadScripts(&d, instance); log(LogType::SUCCESS, "Loaded map: \"", fileName.c_str(), "\" as \"", d["name"].GetString(), "\""); } @@ -121,6 +122,21 @@ void NFile::loadSprites(rapidjson::Document* d) { } } +void NFile::loadScripts(rapidjson::Document* d, CInstance* instance) { + if(!d->HasMember("scripts")) + return; + + const rapidjson::Value& scripts = (*d)["scripts"]; + for(rapidjson::SizeType i = 0; i < scripts.Size(); i++) { + const rapidjson::Value& script = scripts[i]; + if(!script.IsString()) + return; + + std::string path = script.GetString(); + CAssetManager::addLuaScript(instance->L, "resources/scripts/" + path + ".lua"); + } +} + void NFile::clearFile(std::string fileName) { std::ofstream file(fileName); file.close(); diff --git a/Fifth/NFile.h b/Fifth/NFile.h index ccda355..a29dd44 100755 --- a/Fifth/NFile.h +++ b/Fifth/NFile.h @@ -123,6 +123,7 @@ class NFile { static void loadFonts(rapidjson::Document* d); static void loadSpriteSheets(rapidjson::Document* d, CInstance* instance); static void loadSprites(rapidjson::Document* d); + static void loadScripts(rapidjson::Document* d, CInstance* instance); }; diff --git a/Fifth/NSurface.cpp b/Fifth/NSurface.cpp index 39ed07f..a73d22b 100755 --- a/Fifth/NSurface.cpp +++ b/Fifth/NSurface.cpp @@ -24,7 +24,6 @@ Line Line::normalizeWithCamera(CCamera* camera) { void NSurface::renderRect(int x, int y, int w, int h, CWindow* window, int r, int g, int b, int a /* = 255 */) { SDL_Rect rect{x, y, w, h}; - SDL_SetRenderDrawColor(window->getRenderer(), r, g, b, a); SDL_RenderFillRect(window->getRenderer(), &rect); } diff --git a/Fifth/resources/gfx/yrl.png b/Fifth/resources/gfx/Sprites/yrl.png similarity index 100% rename from Fifth/resources/gfx/yrl.png rename to Fifth/resources/gfx/Sprites/yrl.png diff --git a/Fifth/resources/gfx/frogs.png b/Fifth/resources/gfx/frogs.png new file mode 100644 index 0000000000000000000000000000000000000000..2e8f244b369d536f5f5b78f77cead07be851599c GIT binary patch literal 6444 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 literal 0 HcmV?d00001 diff --git a/Fifth/resources/gfx/player_run.png b/Fifth/resources/gfx/player_run.png old mode 100755 new mode 100644 index c001c7d793f276e361e49d804a815d33f8a55251..5d96357c35ace0b7056d250d949744e2a57f3eef GIT binary patch literal 16616 zcmeHPO>9*~6rS6^*Z11e@*@a{Jer^>gvbIET`1TRXb7Y+ECd&VP$LU|lqMJ@5sf4o zUAS?Bk{B1b(wMj~h7ep3Ly9IWs01}MAg1BRTH4a`3hniL=e@biyYJq)bMF+N#-8N9 znL9J*J7>;0bLPC4!uuVY)-`12WrPq7?d#i~qxKLz+1eWV{H1x{Vrpt$+OV#TTB2O* z@wcc+?_0lRzYujZ@i^khrw`I#s;hnD+Ej0SMLJV^{IfUuXy}n$o1gD$-Mf2t=bkQl z6{7XE&h1^DJF^FNb-j{Z*S@hMyLV4^dv@dY9UotL@dc7A+S}G_e%*1ht9wr}$JED^ z1*R-8Wq~OR{2wjg+~-ZZKK!`yZ25iS|MAyy>mMmU${~>e8k4$nmu=c-Hyey{>u(}o8vrH% zItOBI_R2M4Y~(M|v~+pY(!hBe{>jka7NgwyN6FU)fQ19y*((mPt?e#axMO zOMYP5=nsBSQViSu+sJ0#B=%D?0B>N<*2Q9C*%`0+f%9<>;>k2E5SW)nLPw=Xdm6># zS0Cn~)bf+w6fmUoy}^KvCBL=)q>>dzx%E#XUkw0}1VHhl^Zn`5;-^J@q9R?zPv)sp zLIy(h$}f2=!D$!6^Cx&j_66c%$^j5T7oXO+goH%h``7QN_ZmtD}_5Lknv+i;2 zUlIUu0U*^!F0Kh&1qg!PCvNk!LGVZz8-7~{KnGilvg;qm{{8@91H=K4Uh}nV1Y89u z3S}_hiXaM->0=i*{5B4dde~z8EA%h2|6|{tdPa!+-vZFV4DvQ5HiV%ko2)G8in=glb3(&$PYAz~_A__szU`mIp%JEwZd8o4P z5?Y-+g_XM=|Jax-($g=G(P+xQNb_#1KcHu+`rd!~KH38Kr3NIokV$ z%1Uu)a1fZLd$85tmG+0wEg`noDdPdaftT*y74MpF!2M*#49NB9=Iz^}Yh(oPI+@;j z>HuSc+KL3cz$w!I8p(c>bRaU7&lqr`N@0dn*A)8hv01Z3Egb*^0O;cQcpM#y^ap=u ze?J;i{W$=^01DGvtpPaV^2_s|*Q=}f^x|zr;dcUcUe|x%&K;hvr_JMOtgRIXr%l6H ziJUMT!l)qLyNwipF?m@A^iNmhw>UeK5g*c1kZ-Jm)D1Y(NRK$=jE)MNc{iPo!-lnd zfK>ZSd&U8hd)M*E0FWnE8pegO5OLChP$rHOu)c>*9U>18a28fo#lq+q8Uk*gZ{Y61`8)yXHfrK4FwJY0ko*TUK}R9h@_p-4y*eojWeqg| zi3fM5gJ6h5Nc*S*x+n-cZrlK?=^e~sl)8iWk9r{D0I>e>K|xp68~)KbGR~gVwK4!O z=Ag(!5Ws-}1siVw3w;jc>jRGejhqfefupPVO^V6%*qG`-c}2;zu5|)V%N0t0VT9mT z>VdFjoN6}|8(u3{0pbGe3S}W5u?^=(WC7?OL>PyiiHxs-ARKi}4FHUD5NI64ClRMm ziDDju6;vcLzLf*7e@IsHWtNw0w-5aq=m0GJALp28B?l{}HoQBq8x#OV3j$uG zGXkbUhuEn&nI;qxPBv)+pI<0D`R4P1csMn{2v-Ni&cD&oK=2 z!2LzZ!?y!d(w%%$4Bfg(t3-7|63k7uUXzU%wWTO|QS*8H*6x)^{7dow0^~=)C!hR? a@AJF)_2~$M`!>50v1U` zK~!ko%~`Q>!!QU1U6yYBna*X+)=%lyReOIXTURpYdpfIw?NnAITYzFocfQ0qKl~mb z8wkP^mInyYcRU*3d)4yCmf|_WMZZ`#pk9KZ{^=hziTO;GK3|Oc#Jqk}Kyk1fT=qzm;j5>a4g91(xCer!elj`e;zXNJr91|L6f z_fH}MW(FdH&zEm_{rbgG@ICZ57w?Ixw&&%18xnt{{$}L8_kkATQRT2~+oe6{Nx(zq z^v3tlUj!#pzFqP}6aWB-c~!Dimx-P6J@jKM^10_GNgV(XVhkNvEw$EPga4muGGlsU zP)zjVW`l(#UQCh{`1rn3EHfiBBPqFWHEt#UIX?}RLM+%II;2A?Y35K80IgtJH%LJe zxYofh1;BX#`tXXvxDM>j?gTkkL>(_SjL$00000NkvXXu0mjfOw}aM diff --git a/Fifth/resources/gfx/player_run_.png b/Fifth/resources/gfx/player_run_.png new file mode 100755 index 0000000000000000000000000000000000000000..c001c7d793f276e361e49d804a815d33f8a55251 GIT binary patch literal 649 zcmV;40(Sk0P)~$M`!>50v1U` zK~!ko%~`Q>!!QU1U6yYBna*X+)=%lyReOIXTURpYdpfIw?NnAITYzFocfQ0qKl~mb z8wkP^mInyYcRU*3d)4yCmf|_WMZZ`#pk9KZ{^=hziTO;GK3|Oc#Jqk}Kyk1fT=qzm;j5>a4g91(xCer!elj`e;zXNJr91|L6f z_fH}MW(FdH&zEm_{rbgG@ICZ57w?Ixw&&%18xnt{{$}L8_kkATQRT2~+oe6{Nx(zq z^v3tlUj!#pzFqP}6aWB-c~!Dimx-P6J@jKM^10_GNgV(XVhkNvEw$EPga4muGGlsU zP)zjVW`l(#UQCh{`1rn3EHfiBBPqFWHEt#UIX?}RLM+%II;2A?Y35K80IgtJH%LJe zxYofh1;BX#`tXXvxDM>j?gTkkL>(_SjL$00000NkvXXu0mjfOw}aM literal 0 HcmV?d00001 diff --git a/Fifth/resources/gfx/Sprites/spritesheets/plant spritesheet 2.png b/Fifth/resources/gfx/sheet-2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/spritesheets/plant spritesheet 2.png rename to Fifth/resources/gfx/sheet-2.png diff --git a/Fifth/resources/gfx/sheet.png b/Fifth/resources/gfx/sheet.png index 5c47163a2c51389de32038eb777778e86a1aabe7..6b25f4b6f81217510b6020b62321ff0b6dc7a819 100755 GIT binary patch delta 2227 zcmV;k2u%0761EeNQwSak6DC&QR9=x=D}MR7ea|Sgoq{gtVF>VcMq{59+)Tk1~E)L`-0%L59)#1T4JwJWarSI%oITs6>VUaV0ObH_9Vn9w{-%NbuRC}4Bay(|CxBww zrSdpcM1#PNh$yaYZpP)0KOXsg^?!Oj6#@%ksX+xWRuZTS*8G33zkTDNs)*v+=4R8e zeWUMXb!{#B&)Fpbc5M$+tpHk$|BK?q+S>=L*zaIlU0dr?38YUBAKuSOLPf&F5_w7RyIU%$!wNaZ%Awvqs24*|wK3sA)NdJ)^} z5!>rg6fX{r>zCKd=l_cZP6C}=+uR&Ahmm@{-XK|&+w@<*Qxf>(@L|=&f@yOaFs-hw zrTh24N%!x6lTL439o!!AJb&r*#?_S4?XiyueIQe>*XvqNr}y6+yM5~QdTDiSEv>Gt zHF*!I*X!+SQ~n*cc>RF~cb`w@A{Hy~QzZd3T4a+ybUFC*G2;nf@H6NVL@g7@uE1~b z`hz4;Y8U&F1SEjP3jT4Y84~b=uT9~@IF%$YW`7b&!Yq3EPqB+2t_=8MPWLklr^{T>IZr^H^C{Jbr81+jY zl>qiTkfMB9a9u(etS{JJ4K3_akt_CJ}Z2`=^Lw*Dx z0RZLzrauRe((T%P1FnA?k+xo)_RK$+1DK@22B6btGf`9klYgiH25+u^+AnSGnFK5* z9Kb21oBh{+MG|1{=K#`>e`i%n>1OnUICTmBmd^n*QvuZVl#?od)8m%;wx|I11n`)> zc&fCq&mVJJ0SpWDng77&0B#ff^Y*iVY63{5o~;;BEzH^#U|jgA>fVrCk=<-KE_q!b4^LGOGoCa+E_W z_IyKkvgufQ*X?uIwmro~ocQ$TSUL8~+~Lmm599Ndrv?E# zsrHv&e)JsYpM5lBSgY)ZU-i>ZKgE|{ekln+c@7{4{n6to-njEl{IGLzSAec;Ka7YN z1YFh1v42Cc)eqijv~Lpp5fRJF%W?AL$w3kT`lkVN@B7*FAMFahsuQ37ysPKVHu^z2 z$@b;j)t?lExV}z+5MQ98ALkbm#krapKdT-FzmI2Csspf1HDCUwzNRg1tN($fdt303KPYuF9+HZQBOzLASqmtB82^ zmvVnpk6$+r0EPg^Q+&Si)X?B-QofIR>_N3JuO1wyS1(T(!opVo5&eZgJ9~TD9DLOv ztUE(fO@FGD$JNihb}n`vbKbognB@RI$o6&1f^!w{ z&kueV5fQ(B?;nHPxjGR1P#FT`8ynjXcb$6s;p>aLPP^rxd|c2@qJ3UEoNe~^4k)kw zyL;i(o)v+0ZD5fVEAJjj<*V^1Z0LC-;y8xpm)to=I002ovPDHLkV1k!} BRHgs` delta 2096 zcmV-02+#Mn6S@+RQwSRhD;dD}HL8(YD}M-{Nkluc5LN$1vY4)vz*e7kdFYi*PykR%Uy;mCkM zuO37B>!085`*R9Xi%KG`U$_wK7cPubb->&wfO3G094ONa{b$$88TYtpG+E{};s@wYMj%*zaIl?R3Ve1k&e6kM3tBp(0^w2_V%R z?Z2t%VeRchqPTqda;&`h=GaN#Z@>TFegtodh&1H;82Ph90;u-3{oCobE66 z-~I4@y!+w(dFjBYM?InwHo1NDmD+zpl^r&iL!HjYmFs*hv z>FLvN($lBkq;u;xd$$KXPk%bMelw-?aOh)7U&z$$cE>HJ(1f9Ax{9ke}i#?Xv7547x*n+ zzn26`?P5QYfCR8u!5g6+roU8Uns|-weKtGf4tNCV!z+P6QK70usTT z27W}uFCyX}4H{kJPU>>b10H$~-%y-@<7h#0SZ%hzw3a2@yk_a;U; z{EBG4Ixdy&A9U4VF@K;!C}Qswh3VY-&5^Df*jZ#WtFsE@UR8LQ+mEzLl!KW727Snb z62N{3Qj{+Xu1g5L^#xmN;R^`!kpPC7Ul8=LkCqPF8!C_Q^Tk8uYG8`j7Qoy);-3H{ z0Kgo;?B@VddRV(}z@2X+(&pQ{-#w2nSB~`pc3SPPzxCodF1_+%$k3_mhhO#M zk3Yt}d-o&(D9-`ppg(ac#e0uFito3t_66w5*7JynUVp$)cfi}r1TKO$mz zc{$FUInzr5z|LvF-1~m<+NXWNS9SW-$idVUpxfU)kJGn)idWyc*mvLdch7srEZUdn5^}IFFE8&pUcPiUUcPiUmY0`% zNgyIZ5`SRf6F?54YVhTrxEzSze|@!e?>_DJxy;XAzI1oj{W%Hb;Q*)rDyqG6liV90 zg!Z}T&q1DpKi__QZ&$@kGumAYU*?4^AY%d8szH)Zg zoB%9z0yuFh#pd~?T>(}8dC!Z5wHAQ?hoqm>*fK#5a3jbFISE=249=< zeb8ek)xNxXaF|}bJYfh6UjanyECkx#-P7jas|I1+DZ09!C)s|pX8hk&1?1je@Iy@k zh<|u7sa76WzxvL_*xuv3do?i20X)g}b<2Wt74XkL{yHKee))&L_ipFvK=4Cl2#{~A zZ$0lj_4fVOSNl%8<)GXvXs6LWFCES{cJ>Y^ul{>{2*~gh5!wkmVe{6HI4Rp5>Oz+h(mxui)oqyuevI47VWG1 z1OQ{q0hGt!)c_q7sMRt0wA%w?CVh<{L9=hpz z{%N;wv$r5HAOX|`(WuwsAC&gM2y*~+y>pX;v>yO4W&)Up{Q!XB^!{IfL6d3+aeq-z zp1Az#;xiKgFir(95BmWC!#n)@0RW>{0Q0aP05D<&5HUad0RST;fQZAt9{@1I5Fp<; z%=-ZVqnV5S0DO!vW(81Hw-$dG(`auJ5XMXZ_5%PFK;IbLegLpQ3BY~;u)qnxegLqb z3BY~;U=CncZ)-mQSfB)8KLA)f_J0F_MXvzt2LOx7egLq@6@dK!V1X-u2>SuRqAFHC zKAv( 1 and self.currentChatIndex > 1 and self.chatArray[self.currentChatIndex] ~= nil) then + self.buffer = self.chatArray[self.currentChatIndex] + self.currentChatIndex = self.currentChatIndex - 1 + end + end + + if(key == KeyCode._ARROW_DOWN) then + if(self.currentChatIndex < table.getn(self.chatArray) and self.chatArray[self.currentChatIndex] ~= nil) then + self.buffer = self.chatArray[self.currentChatIndex] + self.currentChatIndex = self.currentChatIndex + 1 + end + end + if(key == KeyCode._RETURN or key == KeyCode._SLASH) then if(key == KeyCode._SLASH) then self.isTyping = true @@ -90,7 +117,9 @@ function ChatController:onEvent(key, keyDown) if(toSay ~= "") then self.component.instance.player:say(toSay, "TESTFONT", ChatBubbleType.SAY) end + table.insert(self.chatArray, self.buffer) self.buffer = "" + self.currentChatIndex = table.getn(self.chatArray) self.component.instance.game.ignoreEvents = false do return end else @@ -116,7 +145,7 @@ function ChatController:onRenderAdditional() h = self.height r = 2 - self.component:renderRect(x, y, w, h, 100, 100, 100, 100) + self.component:renderRect(x, y, w, h, 100, 100, 100, 225) self.component:renderRect(x, y, r, h, 255, 0, 0, 225) self.component:renderRect(x, y, w, r, 255, 0, 0, 225) @@ -127,7 +156,7 @@ function ChatController:onRenderAdditional() y = y + 6 self.component:renderText(x, y, 1, self.buffer, "TESTFONT", 255, 255, 255) - --self.width = self.initWidth + (14 * string.len(self.buffer)) + self.width = self.initWidth + (14 * string.len(self.buffer)) end if (self.isTyping == false) then diff --git a/Fifth/resources/scripts/Standard/Controller.lua b/Fifth/resources/scripts/Standard/Controller.lua index 579c9a0..ff73b28 100755 --- a/Fifth/resources/scripts/Standard/Controller.lua +++ b/Fifth/resources/scripts/Standard/Controller.lua @@ -11,7 +11,7 @@ function Controller:onInit() self.parent:addProperty(EntityProperty.STATIC) self.parent:addProperty(EntityProperty.HIDDEN) self.parent:removeProperty(EntityProperty.COLLIDABLE) - self.component.instance.gravity = 0.435 + self.component.instance.gravity = 0.6 self.component.instance:loadAssets("resources/map/testMap2.map") self.component.instance:loadAssets("resources/map/testMap1.map") @@ -74,7 +74,7 @@ function Controller:onEvent(key, keyDown) end if(key == KeyCode._7) then - self.component.instance.camera:addCameraShake(100) + self.component.instance.camera:addCameraShake(50) end if(key == KeyCode._RIGHTBRACKET) then @@ -87,15 +87,16 @@ function Controller:onEvent(key, keyDown) if(key == KeyCode._j) then -- Create an npc entity mX, mY = self.component:getRelativeMouse() - temp = self.parent.entityManager:createSpriteEntity(Box(mX, mY, 16 * 4, 32 * 4), "player") + temp = self.parent.entityManager:createSpriteEntity(Box(mX, mY, 64, 64), "frog-move") self.parent.entityManager:addEntity(temp, "") - -- temp:setSpriteStateType(SpriteStateTypes.ASCENDING, "playerPinkRunning") - -- temp:setSpriteStateType(SpriteStateTypes.DESCENDING, "playerPinkRunning") + temp:setSpriteStateType("WALKING", "frog-move") + temp:setSpriteStateType("ASCENDING", "frog-1") + temp:setSpriteStateType("DESCENDING", "frog-1") temp:addComponent(self.component.instance, game.getScript("Standard/Living")) temp:addComponent(self.component.instance, game.getScript("Standard/Npc")) temp:addComponent(self.component.instance, game.getScript("Standard/Movable")) temp:getComponent("Standard/Npc").target = self.component.instance.player - temp:getComponent("Standard/Movable"):onDeserialize('{"walking_movement_speed":3.0, "jumpPower":5.0}') + temp:getComponent("Standard/Movable"):onDeserialize('{"walking_movement_speed":4.0, "jumpPower":10.0}') end @@ -105,6 +106,15 @@ function Controller:onEvent(key, keyDown) self.parent.entityManager:addEntity(temp, "") temp:addProperty(EntityProperty.STATIC) end + if(key == KeyCode._k) then -- Create a red block + mX, mY = self.component:getRelativeMouse() + temp = self.parent.entityManager:createColoredEntity(Box(mX, mY, 40, 40), Color(255, 0, 0, 255)) + self.parent.entityManager:addEntity(temp, "") + end + if(key == KeyCode._q) then + self.parent.entityManager:getEntity("5:Player"):getComponent("Standard/Living"):heal(400,self.parent) + end + end end diff --git a/Fifth/resources/scripts/Standard/GraphicScript.lua b/Fifth/resources/scripts/Standard/GraphicScript.lua index 129e530..bb7470d 100755 --- a/Fifth/resources/scripts/Standard/GraphicScript.lua +++ b/Fifth/resources/scripts/Standard/GraphicScript.lua @@ -42,10 +42,10 @@ function GraphicScript:onClick() if(self.isTargeted) then entity = self.parent.entityManager:getEntityAtCoordinate(x, y, self.parent) if(entity ~= nil) then - entity:addComponent(self.component.instance, self.targetedScript) - if(targetedScript ~= nil) then + if(self.targetedScript ~= nil) then + entity:addComponent(self.component.instance, self.targetedScript) component = entity:getComponent(self.targetedScript:getName()) - if(component ~= nil) then + if(component ~= nil and component.onDeserialize ~= nil) then component:onDeserialize(self.deserialize) end end diff --git a/Fifth/resources/scripts/Standard/Living.lua b/Fifth/resources/scripts/Standard/Living.lua index aa81712..ef3b277 100755 --- a/Fifth/resources/scripts/Standard/Living.lua +++ b/Fifth/resources/scripts/Standard/Living.lua @@ -93,7 +93,7 @@ function Living:damage(amount, damager) self.values[self.VALUE_HEALTH] = 0 self.parent.isDead = true - self.parent:say("Killed by: " .. self.parent.entityManager:getNameOfEntity(damager:getComponent("Standard/Projectile").owner), "TESTFONT", ChatBubbleType.SAY) + --self.parent:say("Killed by: " .. self.parent.entityManager:getNameOfEntity(damager:getComponent("Standard/Projectile").owner), "TESTFONT", ChatBubbleType.SAY) end damageColor = Color(255, 0, 0, 255) diff --git a/Fifth/resources/scripts/Standard/Movable.lua b/Fifth/resources/scripts/Standard/Movable.lua index e2efe4c..d6ee7e1 100755 --- a/Fifth/resources/scripts/Standard/Movable.lua +++ b/Fifth/resources/scripts/Standard/Movable.lua @@ -6,7 +6,7 @@ local Movable = class ( self.component = component self.body = parent.body - self.jumpPower = 13.0 + self.jumpPower = 15.0 self.accelerationX = 1.5 self.accelerationY = 100.0 self.stoppingAccelerationX = 1.5 @@ -18,7 +18,8 @@ local Movable = class ( self.hasWalkedY = false self.isFlying = false - + + self.WALKING_MOVEMENT = 0 self.SNEAKING_MOVEMENT = 1 self.RUNNING_MOVEMENT = 2 @@ -70,7 +71,7 @@ function Movable:onLoop() self.hasWalkedX = false self.hasWalkedY = false - if(body.velX ~= 0) then + if(body.velX ~= 0 and self.parent.collisionSides.bottom) then self.parent:setSprite(self.parent:getSpriteFromState("WALKING")) end @@ -82,13 +83,6 @@ end function Movable:onEvent(key, keyDown) if(keyDown) then - if(key == KeyCode._SLASH) then - living = self.parent:getComponent("Standard/Living") - if(living ~= nil) then - living:heal(10, self.parent) - end - end - if(key == KeyCode._1) then self:toggleNoClip() end @@ -127,20 +121,20 @@ function Movable:onKeyStates(state) self:goDown() end - if(game:leftMousePressed()) then + if(game:leftMousePressed() and not self.parent.isDead) then box = self.parent.body.box thisX = box.x thisY = box.y for i = 0, 0 do - spawnX = thisX + 36 - spawnY = thisY + 58 + spawnX = thisX + spawnY = thisY + 40 if(self.parent:hasProperty(EntityProperty.FLIP)) then spawnX = thisX + 5 end - bullet = self.parent.entityManager:createColoredEntity(Box(spawnX, spawnY, 5, 5), Color(0, math.random(255), 0, 0)) + bullet = self.parent.entityManager:createColoredEntity(Box(spawnX, spawnY, 8, 8), Color(math.random(255), 255, 0, 255)) self.parent.entityManager:addParticle(bullet) script = game.getScript("Standard/Projectile") bullet:addComponent(self.component.instance, script) @@ -149,8 +143,8 @@ function Movable:onKeyStates(state) tBody = self.parent.body bBody = bullet:getComponent("Standard/Projectile").parent.body -- must do it this way - bBody.velX = 11 - bBody.velY = -1 * (math.random(5)) + bBody.velX = 25 + (math.random(5) - 2.5) + bBody.velY = -5 + (math.random(5) - 2.5) if(self.parent:hasProperty(EntityProperty.FLIP)) then bBody.velX = bBody.velX * -1 end @@ -163,10 +157,6 @@ function Movable:onKeyStates(state) end end -function Movable:onClick() - -end - function Movable:onSerialize() c = self.component @@ -273,18 +263,18 @@ function Movable:jump() if(self.parent.collisionSides.bottom) then self.hasJumpedOnWall = false end - - if(self.hasJumpedOnWall == false and not self.parent.collisionSides.bottom and (self.parent.collisionSides.left or self.parent.collisionSides.right)) then - + + if(not self.hasJumpedOnWall and not self.parent.collisionSides.bottom and (self.parent.collisionSides.left or self.parent.collisionSides.right)) then self.hasJumpedOnWall = true + + -- make wall jumping smoke effects here self:doJump() end - if(not self.parent.collisionSides.bottom) then - do return end - end - self:doJump() + if(self.parent.collisionSides.bottom) then + self:doJump() + end end @@ -307,4 +297,4 @@ end function create(parent, component) return Movable(parent, component) -end \ No newline at end of file +end diff --git a/Fifth/resources/scripts/Standard/Npc.lua b/Fifth/resources/scripts/Standard/Npc.lua index 259f685..0e11a2c 100755 --- a/Fifth/resources/scripts/Standard/Npc.lua +++ b/Fifth/resources/scripts/Standard/Npc.lua @@ -40,7 +40,7 @@ function Npc:onLoop() else targetX = targetBox.x + targetBox.w end - targetX = targetX + (math.sin(game.getTime()) * 100) -- make them act more like bees + targetX = targetX + (math.sin(game.getTime()) * 200) -- make them act more like bees thisX = thisBox.x thisY = thisBox.y @@ -64,6 +64,15 @@ function Npc:onLoop() end end +function Npc:onCollision(target, sides) + if(target:compare(self.target)) then + living = target:getComponent("Standard/Living") + if(living ~= nil) then + living:damage(1, self.parent) + end + end +end + function Npc:onSerialize() c = self.component diff --git a/Fifth/resources/scripts/Standard/bitwise.lua b/Fifth/resources/scripts/Standard/bitwise.lua index 322b632..6c647e4 100755 --- a/Fifth/resources/scripts/Standard/bitwise.lua +++ b/Fifth/resources/scripts/Standard/bitwise.lua @@ -1,5 +1,4 @@ -- bitwise.lua - function BitXOR(a,b)--Bitwise xor local p,c=1,0 while a>0 and b>0 do diff --git a/Fifth/resources/scripts/Standard/standard.lua b/Fifth/resources/scripts/Standard/standard.lua index 1ee7919..2ef76c8 100755 --- a/Fifth/resources/scripts/Standard/standard.lua +++ b/Fifth/resources/scripts/Standard/standard.lua @@ -55,7 +55,10 @@ RenderFlags = { KeyCode = { _UNKNOWN = 0, - + _ARROW_LEFT = 1073741904, + _ARROW_RIGHT = 1073741903, + _ARROW_UP = 1073741906, + _ARROW_DOWN = 1073741905, _RETURN = 13, _ESCAPE = 27, _BACKSPACE = 8, @@ -128,7 +131,8 @@ KeyCode = { _z = 122, _ou = 246, _ao = 228, - _uo = 229 + _uo = 229, + _PARA = 167 } ScanCode = { @@ -392,7 +396,7 @@ ScanCode = { _SLEEP = 282, _APP1 = 283, - _APP2 = 284 + _APP2 = 284, } function toKeyCode(code) diff --git a/Fifth/resources/shader/light.frag b/Fifth/resources/shader/light.frag index 42b7a8f..6f8dc9b 100755 --- a/Fifth/resources/shader/light.frag +++ b/Fifth/resources/shader/light.frag @@ -7,9 +7,7 @@ uniform float frag_LightAttenuation; // We could call this its luminosity uniform vec2 frag_ScreenResolution; // We need this because SFML reverses the Y axis. Note: we could just be using a single float for the Y resolution. -void main() - -{ +void main() { vec2 baseDistance = gl_FragCoord.xy; // Storing our pixel's position diff --git a/Fifth/resources/ttf/font-.ttf b/Fifth/resources/ttf/font-.ttf deleted file mode 100755 index 7247ad785ac2f969f0019d1ac5253d70b6052fbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70324 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 L5%VJEMYQjK#!N~U diff --git a/Fifth/resources/ttf/font.ttf b/Fifth/resources/ttf/font.ttf old mode 100644 new mode 100755 index 3a0c4069ea808b4f21c191bc14f8cfdc65e536b3..7247ad785ac2f969f0019d1ac5253d70b6052fbc GIT binary patch literal 70324 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 L5%VJEMYQjK#!N~U literal 86396 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 V^hRZ-{zB!a`{+HqIkoRg{|}UOMnC`n From 9adfd2dcb8034d1e10405ad21e055b8db579ec53 Mon Sep 17 00:00:00 2001 From: Lucas Date: Wed, 30 Mar 2016 21:37:30 +0200 Subject: [PATCH 5/8] Update CGame.h --- Fifth/CGame.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Fifth/CGame.h b/Fifth/CGame.h index f160854..6634f5e 100755 --- a/Fifth/CGame.h +++ b/Fifth/CGame.h @@ -59,6 +59,9 @@ class CGame { int _frames; int _updates; + double _deltaTime = 0; + double _timeStart; + // Misc variables std::stringstream _title; std::string _intro; From f225be6bae652bf89b3d3037c28be1b6859bd02d Mon Sep 17 00:00:00 2001 From: Lucas Date: Mon, 2 May 2016 20:11:29 +0200 Subject: [PATCH 6/8] Added files via upload --- Fifth/resources/sheet#2.png | Bin 0 -> 266171 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Fifth/resources/sheet#2.png diff --git a/Fifth/resources/sheet#2.png b/Fifth/resources/sheet#2.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb28c3cdd95efde8e35b2ff66d3e240038a435e GIT binary patch literal 266171 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 Date: Mon, 2 May 2016 20:13:46 +0200 Subject: [PATCH 7/8] Nada --- Fifth/CClient.cpp | 13 - Fifth/CClient.h | 23 -- Fifth/CGame_onEvent.cpp | 184 ------------ Fifth/CInstance.cpp | 40 --- Fifth/CServer.cpp | 139 --------- Fifth/CServer.h | 54 ---- Fifth/CServerInstance.cpp | 19 -- Fifth/CServerInstance.h | 30 -- Fifth/CTile.cpp | 21 -- Fifth/CTile.h | 34 --- Fifth/resources/gfx/frogs.png | Bin 6444 -> 0 bytes Fifth/resources/gfx/player_run.png | Bin 16616 -> 0 bytes Fifth/resources/gfx/sheet.png | Bin 2486 -> 0 bytes Fifth/resources/map/testMap2.map | 61 ---- .../resources/scripts/Standard/Controller.lua | 127 -------- Fifth/resources/scripts/Standard/Npc.lua | 98 ------ Fifth/resources/scripts/Standard/class.lua | 46 --- {Fifth => Third}/CAnimation.cpp | 2 + {Fifth => Third}/CAnimation.h | 0 {Fifth => Third}/CAssetManager.cpp | 35 +++ {Fifth => Third}/CAssetManager.h | 5 + {Fifth => Third}/CBackground.cpp | 0 {Fifth => Third}/CBackground.h | 0 {Fifth => Third}/CBody.cpp | 0 {Fifth => Third}/CBody.h | 8 +- {Fifth => Third}/CCamera.cpp | 6 +- {Fifth => Third}/CCamera.h | 0 {Fifth => Third}/CChatBubble.cpp | 0 {Fifth => Third}/CChatBubble.h | 0 {Fifth => Third}/CCombatText.cpp | 0 {Fifth => Third}/CCombatText.h | 0 {Fifth => Third}/CComponent.cpp | 44 +-- {Fifth => Third}/CComponent.h | 3 +- {Fifth => Third}/CEntity.cpp | 40 ++- {Fifth => Third}/CEntity.h | 0 {Fifth => Third}/CEntityManager.cpp | 116 ++++++- {Fifth => Third}/CEntityManager.h | 8 +- {Fifth => Third}/CGame.cpp | 101 ++----- {Fifth => Third}/CGame.h | 4 +- Third/CGame_onEvent.cpp | 117 ++++++++ {Fifth => Third}/CGuiText.cpp | 0 {Fifth => Third}/CGuiText.h | 0 Third/CInstance.cpp | 89 ++++++ {Fifth => Third}/CInstance.h | 11 +- {Fifth => Third}/CLuaObject.cpp | 19 ++ {Fifth => Third}/CLuaObject.h | 3 + {Fifth => Third}/CLuaScript.cpp | 0 {Fifth => Third}/CLuaScript.h | 0 {Fifth => Third}/CNetwork.cpp | 0 {Fifth => Third}/CNetwork.h | 0 {Fifth => Third}/CSerializable.cpp | 0 {Fifth => Third}/CSerializable.h | 0 {Fifth => Third}/CSprite.cpp | 0 {Fifth => Third}/CSprite.h | 2 +- {Fifth => Third}/CSpriteSheet.cpp | 0 {Fifth => Third}/CSpriteSheet.h | 0 {Fifth => Third}/CText.cpp | 0 {Fifth => Third}/CText.h | 0 Third/CTile.cpp | 66 ++++ Third/CTile.h | 59 ++++ {Fifth => Third}/CWindow.cpp | 0 {Fifth => Third}/CWindow.h | 0 {Fifth => Third}/Define.h | 24 +- {Fifth => Third}/LuaBridge/LuaBridge.h | 0 {Fifth => Third}/LuaBridge/RefCountedObject.h | 0 {Fifth => Third}/LuaBridge/RefCountedPtr.h | 0 .../LuaBridge/detail/CFunctions.h | 0 {Fifth => Third}/LuaBridge/detail/ClassInfo.h | 0 .../LuaBridge/detail/Constructor.h | 0 .../LuaBridge/detail/FuncTraits.h | 0 {Fifth => Third}/LuaBridge/detail/Iterator.h | 0 .../LuaBridge/detail/LuaException.h | 0 .../LuaBridge/detail/LuaHelpers.h | 0 {Fifth => Third}/LuaBridge/detail/LuaRef.h | 0 {Fifth => Third}/LuaBridge/detail/Namespace.h | 0 {Fifth => Third}/LuaBridge/detail/Stack.h | 0 {Fifth => Third}/LuaBridge/detail/TypeList.h | 0 .../LuaBridge/detail/TypeTraits.h | 0 {Fifth => Third}/LuaBridge/detail/Userdata.h | 0 {Fifth => Third}/LuaBridge/detail/dump.h | 0 {Fifth => Third}/NFile.cpp | 119 +++++++- {Fifth => Third}/NFile.h | 8 + {Fifth => Third}/NMouse.cpp | 0 {Fifth => Third}/NMouse.h | 0 {Fifth => Third}/NSurface.cpp | 1 + {Fifth => Third}/NSurface.h | 0 {Fifth => Third}/ResourcePath.hpp | 0 {Fifth => Third}/ResourcePath.mm | 0 {Fifth => Third}/lua/Makefile | 0 {Fifth => Third}/lua/lapi.c | 0 {Fifth => Third}/lua/lapi.h | 0 {Fifth => Third}/lua/lapi.o | Bin {Fifth => Third}/lua/lauxlib.c | 0 {Fifth => Third}/lua/lauxlib.h | 0 {Fifth => Third}/lua/lauxlib.o | Bin {Fifth => Third}/lua/lbaselib.c | 0 {Fifth => Third}/lua/lbaselib.o | Bin {Fifth => Third}/lua/lcode.c | 0 {Fifth => Third}/lua/lcode.h | 0 {Fifth => Third}/lua/lcode.o | Bin {Fifth => Third}/lua/ldblib.c | 0 {Fifth => Third}/lua/ldblib.o | Bin {Fifth => Third}/lua/ldebug.c | 0 {Fifth => Third}/lua/ldebug.h | 0 {Fifth => Third}/lua/ldebug.o | Bin {Fifth => Third}/lua/ldo.c | 0 {Fifth => Third}/lua/ldo.h | 0 {Fifth => Third}/lua/ldo.o | Bin {Fifth => Third}/lua/ldump.c | 0 {Fifth => Third}/lua/ldump.o | Bin {Fifth => Third}/lua/lfunc.c | 0 {Fifth => Third}/lua/lfunc.h | 0 {Fifth => Third}/lua/lfunc.o | Bin {Fifth => Third}/lua/lgc.c | 0 {Fifth => Third}/lua/lgc.h | 0 {Fifth => Third}/lua/lgc.o | Bin {Fifth => Third}/lua/liblua.a | Bin {Fifth => Third}/lua/linit.c | 0 {Fifth => Third}/lua/linit.o | Bin {Fifth => Third}/lua/liolib.c | 0 {Fifth => Third}/lua/liolib.o | Bin {Fifth => Third}/lua/llex.c | 0 {Fifth => Third}/lua/llex.h | 0 {Fifth => Third}/lua/llex.o | Bin {Fifth => Third}/lua/llimits.h | 0 {Fifth => Third}/lua/lmathlib.c | 0 {Fifth => Third}/lua/lmathlib.o | Bin {Fifth => Third}/lua/lmem.c | 0 {Fifth => Third}/lua/lmem.h | 0 {Fifth => Third}/lua/lmem.o | Bin {Fifth => Third}/lua/loadlib.c | 0 {Fifth => Third}/lua/loadlib.o | Bin {Fifth => Third}/lua/lobject.c | 0 {Fifth => Third}/lua/lobject.h | 0 {Fifth => Third}/lua/lobject.o | Bin {Fifth => Third}/lua/lopcodes.c | 0 {Fifth => Third}/lua/lopcodes.h | 0 {Fifth => Third}/lua/lopcodes.o | Bin {Fifth => Third}/lua/loslib.c | 0 {Fifth => Third}/lua/loslib.o | Bin {Fifth => Third}/lua/lparser.c | 0 {Fifth => Third}/lua/lparser.h | 0 {Fifth => Third}/lua/lparser.o | Bin {Fifth => Third}/lua/lstate.c | 0 {Fifth => Third}/lua/lstate.h | 0 {Fifth => Third}/lua/lstate.o | Bin {Fifth => Third}/lua/lstring.c | 0 {Fifth => Third}/lua/lstring.h | 0 {Fifth => Third}/lua/lstring.o | Bin {Fifth => Third}/lua/lstrlib.c | 0 {Fifth => Third}/lua/lstrlib.o | Bin {Fifth => Third}/lua/ltable.c | 0 {Fifth => Third}/lua/ltable.h | 0 {Fifth => Third}/lua/ltable.o | Bin {Fifth => Third}/lua/ltablib.c | 0 {Fifth => Third}/lua/ltablib.o | Bin {Fifth => Third}/lua/ltm.c | 0 {Fifth => Third}/lua/ltm.h | 0 {Fifth => Third}/lua/ltm.o | Bin {Fifth => Third}/lua/lua | Bin {Fifth => Third}/lua/lua.c | 0 {Fifth => Third}/lua/lua.h | 0 {Fifth => Third}/lua/lua.o | Bin {Fifth => Third}/lua/luac | Bin {Fifth => Third}/lua/luac.c | 0 {Fifth => Third}/lua/luac.o | Bin {Fifth => Third}/lua/luaconf.h | 0 {Fifth => Third}/lua/lualib.h | 0 {Fifth => Third}/lua/lundump.c | 0 {Fifth => Third}/lua/lundump.h | 0 {Fifth => Third}/lua/lundump.o | Bin {Fifth => Third}/lua/lvm.c | 0 {Fifth => Third}/lua/lvm.h | 0 {Fifth => Third}/lua/lvm.o | Bin {Fifth => Third}/lua/lzio.c | 0 {Fifth => Third}/lua/lzio.h | 0 {Fifth => Third}/lua/lzio.o | Bin {Fifth => Third}/lua/print.c | 0 {Fifth => Third}/lua/print.o | Bin {Fifth => Third}/main.cpp | 0 {Fifth => Third}/rapidjson/allocators.h | 0 {Fifth => Third}/rapidjson/document.h | 0 {Fifth => Third}/rapidjson/encodedstream.h | 0 {Fifth => Third}/rapidjson/encodings.h | 0 {Fifth => Third}/rapidjson/error/en.h | 0 {Fifth => Third}/rapidjson/error/error.h | 0 {Fifth => Third}/rapidjson/filereadstream.h | 0 {Fifth => Third}/rapidjson/filewritestream.h | 0 .../rapidjson/internal/biginteger.h | 0 {Fifth => Third}/rapidjson/internal/diyfp.h | 0 {Fifth => Third}/rapidjson/internal/dtoa.h | 0 {Fifth => Third}/rapidjson/internal/ieee754.h | 0 {Fifth => Third}/rapidjson/internal/itoa.h | 0 {Fifth => Third}/rapidjson/internal/meta.h | 0 {Fifth => Third}/rapidjson/internal/pow10.h | 0 {Fifth => Third}/rapidjson/internal/stack.h | 0 {Fifth => Third}/rapidjson/internal/strfunc.h | 0 {Fifth => Third}/rapidjson/internal/strtod.h | 0 {Fifth => Third}/rapidjson/memorybuffer.h | 0 {Fifth => Third}/rapidjson/memorystream.h | 0 .../rapidjson/msinttypes/inttypes.h | 0 .../rapidjson/msinttypes/stdint.h | 0 {Fifth => Third}/rapidjson/pointer.h | 0 {Fifth => Third}/rapidjson/prettywriter.h | 0 {Fifth => Third}/rapidjson/rapidjson.h | 0 {Fifth => Third}/rapidjson/reader.h | 0 {Fifth => Third}/rapidjson/stringbuffer.h | 0 {Fifth => Third}/rapidjson/writer.h | 0 Third/resources/config/binds.cfg | 27 ++ .../gfx/Sprites/Art/paintings/base.png | Bin .../gfx/Sprites/Art/paintings/painting 1.png | Bin .../gfx/Sprites/Art/paintings/painting 2.png | Bin .../gfx/Sprites/Art/paintings/painting 3.png | Bin .../gfx/Sprites/Evil cat/cat frame 0.png | Bin .../gfx/Sprites/Evil cat/cat frame 1.png | Bin .../gfx/Sprites/Evil cat/cat frame 2.png | Bin .../gfx/Sprites/backgrounds/background 1.png | Bin .../gfx/Sprites/backgrounds/background 2.png | Bin .../gfx/Sprites/backgrounds/background 3.png | Bin .../gfx/Sprites/backgrounds/background 4.png | Bin .../gfx/Sprites/backgrounds/background 5.png | Bin .../gfx/Sprites/backgrounds/background 6.png | Bin .../gfx/Sprites/backgrounds/background 7.png | Bin .../gfx/Sprites/backgrounds/background 8.png | Bin .../gfx/Sprites/backgrounds/background 9.png | Bin .../gfx/Sprites/barrels/Barrel 1.png | Bin .../gfx/Sprites/barrels/Barrel 2.png | Bin .../gfx/Sprites/barrels/Barrel 3.png | Bin .../blocks (16 x 16)/block 1 [16x16].png | Bin .../blocks (16 x 16)/block 2 [16x16].png | Bin .../blocks (16 x 16)/block 3 [16x16].png | Bin .../blocks (16 x 16)/block 4 [16x16].png | Bin .../blocks (16 x 16)/block 5 [16x16] .png | Bin .../gfx/Sprites/blocks (16 x 16)/block 6.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 1.png | Bin .../Sprites/blocks (16 x 16)/bricks 10.png | Bin .../Sprites/blocks (16 x 16)/bricks 11.png | Bin .../Sprites/blocks (16 x 16)/bricks 12.png | Bin .../Sprites/blocks (16 x 16)/bricks 13.png | Bin .../Sprites/blocks (16 x 16)/bricks 14.png | Bin .../Sprites/blocks (16 x 16)/bricks 15.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 2.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 3.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 4.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 5.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 6.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 7.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 8.png | Bin .../gfx/Sprites/blocks (16 x 16)/bricks 9.png | Bin .../gfx/Sprites/blocks (16 x 16)/tile 1.png | Bin .../resources/gfx/Sprites/chests/chest 1.png | Bin .../resources/gfx/Sprites/chests/chest 2.png | Bin .../resources/gfx/Sprites/chests/chest 3.png | Bin .../resources/gfx/Sprites/chests/chest 4.png | Bin .../resources/gfx/Sprites/chests/chest 5.png | Bin .../resources/gfx/Sprites/clouds/cloud 1.png | Bin .../resources/gfx/Sprites/clouds/cloud 2.png | Bin .../resources/gfx/Sprites/clouds/cloud 3.png | Bin .../resources/gfx/Sprites/cracks/cracks 1.png | Bin .../gfx/Sprites/cracks/cracks 10.png | Bin .../resources/gfx/Sprites/cracks/cracks 2.png | Bin .../resources/gfx/Sprites/cracks/cracks 3.png | Bin .../resources/gfx/Sprites/cracks/cracks 4.png | Bin .../resources/gfx/Sprites/cracks/cracks 5.png | Bin .../resources/gfx/Sprites/cracks/cracks 6.png | Bin .../resources/gfx/Sprites/cracks/cracks 7.png | Bin .../resources/gfx/Sprites/cracks/cracks 8.png | Bin .../resources/gfx/Sprites/cracks/cracks 9.png | Bin .../gfx/Sprites/crosshairs/hitmarker 1.png | Bin .../gfx/Sprites/crosshairs/hitmarker 2.png | Bin .../gfx/Sprites/crosshairs/hitmarker 3.png | Bin .../gfx/Sprites/crosshairs/hitmarker 4.png | Bin .../gfx/Sprites/crosshairs/hitmarker 5.png | Bin .../gfx/Sprites/crosshairs/hitmarker 6.png | Bin .../gfx/Sprites/crosshairs/hitmarker 7.png | Bin .../resources/gfx/Sprites/enemies/bee.png | Bin .../gfx/Sprites/enemies/enemy 1 idle f1.png | Bin .../gfx/Sprites/enemies/enemy 1 idle f2.png | Bin .../Sprites/enemies/enemy 1 running f1.png | Bin .../Sprites/enemies/enemy 1 running f2.png | Bin .../gfx/Sprites/enemies/fred [HD].png | Bin .../gfx/Sprites/enemies/yrl/yrl AL 1.png | Bin .../gfx/Sprites/enemies/yrl/yrl AL 2.png | Bin .../gfx/Sprites/enemies/yrl/yrl AL 3.png | Bin .../gfx/Sprites/enemies/yrl/yrl AL 4.png | Bin .../gfx/Sprites/enemies/yrl/yrl body 1.png | Bin .../gfx/Sprites/enemies/yrl/yrl face 1.png | Bin .../gfx/Sprites/enemies/yrl/yrl face 2.png | Bin .../gfx/Sprites/enemies/yrl/yrl face 3.png | Bin .../resources/gfx/Sprites/houses/House 1.png | Bin .../gfx/Sprites/houses/mini house 1.png | Bin .../gfx/Sprites/icons/icon [basic].png | Bin .../resources/gfx/Sprites/icons/icon.png | Bin .../resources/gfx/Sprites/icons/icon_1.png | Bin .../resources/gfx/Sprites/icons/icon_2.png | Bin .../resources/gfx/Sprites/items/apple 1.png | Bin .../resources/gfx/Sprites/items/apple 2.png | Bin .../resources/gfx/Sprites/items/apple 3.png | Bin .../resources/gfx/Sprites/items/bomb 1.png | Bin .../resources/gfx/Sprites/items/bomb 2.png | Bin .../resources/gfx/Sprites/items/bomb 3.png | Bin .../resources/gfx/Sprites/items/bomb 4.png | Bin .../resources/gfx/Sprites/items/bomb 5.png | Bin .../resources/gfx/Sprites/items/bomb 6.png | Bin .../resources/gfx/Sprites/nature/Tree 1.png | Bin .../resources/gfx/Sprites/nature/Tree 2.png | Bin .../resources/gfx/Sprites/nature/birch 0.png | Bin .../resources/gfx/Sprites/nature/birch 1.png | Bin .../resources/gfx/Sprites/nature/birch 2.png | Bin .../resources/gfx/Sprites/nature/birch 3.png | Bin .../resources/gfx/Sprites/nature/birch.png | Bin .../resources/gfx/Sprites/nature/bush 1.png | Bin .../resources/gfx/Sprites/nature/bush 10.png | Bin .../resources/gfx/Sprites/nature/bush 11.png | Bin .../resources/gfx/Sprites/nature/bush 12.png | Bin .../resources/gfx/Sprites/nature/bush 13.png | Bin .../resources/gfx/Sprites/nature/bush 14.png | Bin .../resources/gfx/Sprites/nature/bush 2.png | Bin .../resources/gfx/Sprites/nature/bush 3.png | Bin .../resources/gfx/Sprites/nature/bush 4.png | Bin .../resources/gfx/Sprites/nature/bush 5.png | Bin .../resources/gfx/Sprites/nature/bush 6.png | Bin .../resources/gfx/Sprites/nature/bush 7.png | Bin .../resources/gfx/Sprites/nature/bush 8.png | Bin .../resources/gfx/Sprites/nature/bush 9.png | Bin .../resources/gfx/Sprites/nature/grass 1.png | Bin .../resources/gfx/Sprites/nature/grass 2.png | Bin .../resources/gfx/Sprites/nature/plant 1.png | Bin .../resources/gfx/Sprites/nature/plant 10.png | Bin .../resources/gfx/Sprites/nature/plant 11.png | Bin .../resources/gfx/Sprites/nature/plant 12.png | Bin .../resources/gfx/Sprites/nature/plant 13.png | Bin .../resources/gfx/Sprites/nature/plant 14.png | Bin .../resources/gfx/Sprites/nature/plant 15.png | Bin .../resources/gfx/Sprites/nature/plant 16.png | Bin .../resources/gfx/Sprites/nature/plant 17.png | Bin .../resources/gfx/Sprites/nature/plant 18.png | Bin .../resources/gfx/Sprites/nature/plant 19.png | Bin .../resources/gfx/Sprites/nature/plant 2.png | Bin .../resources/gfx/Sprites/nature/plant 20.png | Bin .../resources/gfx/Sprites/nature/plant 21.png | Bin .../resources/gfx/Sprites/nature/plant 3.png | Bin .../resources/gfx/Sprites/nature/plant 4.png | Bin .../resources/gfx/Sprites/nature/plant 5.png | Bin .../resources/gfx/Sprites/nature/plant 6.png | Bin .../resources/gfx/Sprites/nature/plant 7.png | Bin .../resources/gfx/Sprites/nature/plant 8.png | Bin .../resources/gfx/Sprites/nature/plant 9.png | Bin .../resources/gfx/Sprites/nature/tree 10.png | Bin .../resources/gfx/Sprites/nature/tree 11.png | Bin .../resources/gfx/Sprites/nature/tree 12.png | Bin .../resources/gfx/Sprites/nature/tree 13.png | Bin .../resources/gfx/Sprites/nature/tree 14.png | Bin .../resources/gfx/Sprites/nature/tree 15.png | Bin .../resources/gfx/Sprites/nature/tree 16.png | Bin .../resources/gfx/Sprites/nature/tree 17.png | Bin .../resources/gfx/Sprites/nature/tree 18.png | Bin .../resources/gfx/Sprites/nature/tree 19.png | Bin .../resources/gfx/Sprites/nature/tree 20.png | Bin .../resources/gfx/Sprites/nature/tree 21.png | Bin .../resources/gfx/Sprites/nature/tree 22.png | Bin .../resources/gfx/Sprites/nature/tree 23.png | Bin .../resources/gfx/Sprites/nature/tree 24.png | Bin .../resources/gfx/Sprites/nature/tree 25.png | Bin .../resources/gfx/Sprites/nature/tree 26.png | Bin .../resources/gfx/Sprites/nature/tree 3.png | Bin .../resources/gfx/Sprites/nature/tree 4.png | Bin .../resources/gfx/Sprites/nature/tree 5.png | Bin .../resources/gfx/Sprites/nature/tree 6.png | Bin .../resources/gfx/Sprites/nature/tree 7.png | Bin .../resources/gfx/Sprites/nature/tree 8.png | Bin .../resources/gfx/Sprites/nature/tree 9.png | Bin .../resources/gfx/Sprites/nature/vine 1.png | Bin .../resources/gfx/Sprites/nature/vine 2.png | Bin .../resources/gfx/Sprites/nature/vine 3.png | Bin .../resources/gfx/Sprites/nature/vine 4.png | Bin .../resources/gfx/Sprites/nature/vine 5.png | Bin .../resources/gfx/Sprites/other/baloon(0).png | Bin .../resources/gfx/Sprites/other/baloon(1).png | Bin .../resources/gfx/Sprites/other/baloon(2).png | Bin .../resources/gfx/Sprites/other/bench.png | Bin .../gfx/Sprites/other/holy stone 1.png | Bin .../resources/gfx/Sprites/other/moon 1.png | Bin .../resources/gfx/Sprites/other/moon 2.png | Bin .../resources/gfx/Sprites/other/portal 1.png | Bin .../gfx/Sprites/other/public/another guy.psd | Bin .../gfx/Sprites/other/public/some guy.psd | Bin .../gfx/Sprites/other/realm flag 1.png | Bin .../gfx/Sprites/other/realm flag 2.png | Bin .../resources/gfx/Sprites/other/sign 1.png | Bin .../gfx/Sprites/pets/pet 1 (idle (1)).png | Bin .../gfx/Sprites/pets/pet 1 (idle (2)).png | Bin .../gfx/Sprites/pets/pet 1 (running (1)).png | Bin .../Sprites/pets/pet 1 (running (1.1)).png | Bin .../gfx/Sprites/pets/pet 1 (running (2)).png | Bin .../Sprites/pets/pet 1 (running (2.1)).png | Bin .../player armour/shoulder armour 1.png | Bin .../gfx/Sprites/player/__player__.png | Bin .../gfx/Sprites/player/bodyarmour-1.png | Bin .../gfx/Sprites/player/bodyarmour-2.png | Bin .../gfx/Sprites/player/bodyarmour-3.png | Bin .../resources/gfx/Sprites/player/frame 0.png | Bin .../resources/gfx/Sprites/player/frame 1.png | Bin .../resources/gfx/Sprites/player/frame 2.png | Bin .../resources/gfx/Sprites/player/frame a.png | Bin .../resources/gfx/Sprites/player/frame b.png | Bin .../resources/gfx/Sprites/player/frame c.png | Bin .../gfx/Sprites/player/main player/arm 1.png | Bin .../gfx/Sprites/player/main player/arm 2.png | Bin .../gfx/Sprites/player/main player/arm 3.png | Bin .../gfx/Sprites/player/main player/arm 4.png | Bin .../gfx/Sprites/player/main player/arm 5.png | Bin .../gfx/Sprites/player/main player/head 1.png | Bin .../Sprites/player/main player/part 1.1.png | Bin .../Sprites/player/main player/part 2.1.png | Bin .../Sprites/player/main player/part 3.1.png | Bin .../Sprites/player/main player/part 4.1.png | Bin .../Sprites/player/main player/part 4.2.png | Bin .../gfx/Sprites/player/main player/player.png | Bin .../resources/gfx/Sprites/player/part 1.png | Bin .../resources/gfx/Sprites/player/part 2.png | Bin .../resources/gfx/Sprites/player/part 3.png | Bin .../Sprites/player/player 02 running f1.png | Bin .../player/player 02 running f2 v1.png | Bin .../player/player 02 running f2 v2.png | Bin .../resources/gfx/Sprites/player/player 2.png | Bin .../gfx/Sprites/player/player asset.png | Bin .../gfx/Sprites/player/player idle f1.png | Bin .../gfx/Sprites/player/player idle f2.png | Bin .../gfx/Sprites/player/player running f1.png | Bin .../gfx/Sprites/player/player running f2.png | Bin .../gfx/Sprites/player/player running f3.png | Bin .../gfx/Sprites/player/player running f4.png | Bin .../gfx/Sprites/player/player running f5.png | Bin .../Sprites/player/player01 running f1.png | Bin .../Sprites/player/player01 running f2.png | Bin .../resources/gfx/Sprites/player/player_1.png | Bin .../resources/gfx/Sprites/player/test.png | Bin .../resources/gfx/Sprites/player1/arm 1.png | Bin .../resources/gfx/Sprites/player1/arm 10.png | Bin .../resources/gfx/Sprites/player1/arm 11.png | Bin .../resources/gfx/Sprites/player1/arm 12.png | Bin .../resources/gfx/Sprites/player1/arm 13.png | Bin .../resources/gfx/Sprites/player1/arm 2.png | Bin .../resources/gfx/Sprites/player1/arm 3.png | Bin .../resources/gfx/Sprites/player1/arm 4.png | Bin .../resources/gfx/Sprites/player1/arm 5.png | Bin .../resources/gfx/Sprites/player1/arm 6.png | Bin .../resources/gfx/Sprites/player1/arm 7.png | Bin .../resources/gfx/Sprites/player1/arm 8.png | Bin .../resources/gfx/Sprites/player1/arm 9.png | Bin .../resources/gfx/Sprites/player1/body 1.png | Bin .../resources/gfx/Sprites/player1/body 2.png | Bin .../resources/gfx/Sprites/player1/body 4.png | Bin .../resources/gfx/Sprites/player1/body 5.png | Bin .../resources/gfx/Sprites/player1/body 6.png | Bin .../resources/gfx/Sprites/player1/body 7.png | Bin .../resources/gfx/Sprites/player1/face 1.png | Bin .../resources/gfx/Sprites/player1/face 10.png | Bin .../resources/gfx/Sprites/player1/face 11.png | Bin .../resources/gfx/Sprites/player1/face 12.png | Bin .../resources/gfx/Sprites/player1/face 13.png | Bin .../resources/gfx/Sprites/player1/face 14.png | Bin .../resources/gfx/Sprites/player1/face 15.png | Bin .../resources/gfx/Sprites/player1/face 16.png | Bin .../resources/gfx/Sprites/player1/face 17.png | Bin .../resources/gfx/Sprites/player1/face 18.png | Bin .../resources/gfx/Sprites/player1/face 19.png | Bin .../resources/gfx/Sprites/player1/face 2.png | Bin .../resources/gfx/Sprites/player1/face 20.png | Bin .../resources/gfx/Sprites/player1/face 21.png | Bin .../resources/gfx/Sprites/player1/face 22.png | Bin .../resources/gfx/Sprites/player1/face 23.png | Bin .../resources/gfx/Sprites/player1/face 24.png | Bin .../resources/gfx/Sprites/player1/face 25.png | Bin .../resources/gfx/Sprites/player1/face 26.png | Bin .../resources/gfx/Sprites/player1/face 3.png | Bin .../resources/gfx/Sprites/player1/face 4.png | Bin .../resources/gfx/Sprites/player1/face 5.png | Bin .../resources/gfx/Sprites/player1/face 6.png | Bin .../resources/gfx/Sprites/player1/face 7.png | Bin .../resources/gfx/Sprites/player1/face 8.png | Bin .../resources/gfx/Sprites/player1/face 9.png | Bin .../resources/gfx/Sprites/player1/leg 1.png | Bin .../resources/gfx/Sprites/player1/leg 2.png | Bin .../resources/gfx/Sprites/player1/leg 3.png | Bin .../resources/gfx/Sprites/player1/leg 4.png | Bin .../resources/gfx/Sprites/player1/leg 5.png | Bin .../resources/gfx/Sprites/player1/leg 6.png | Bin .../resources/gfx/Sprites/player1/leg 7.png | Bin .../gfx/Sprites/player2/player arm 1.png | Bin .../gfx/Sprites/player2/player body 1.png | Bin .../gfx/Sprites/player2/player face 1.png | Bin .../gfx/Sprites/player2/player leg 1.png | Bin .../gfx/Sprites/player2/player leg 2.png | Bin .../gfx/Sprites/player2/playerTest.png | Bin .../player3/player #3/player arm 1.png | Bin .../player3/player #3/player body 1.png | Bin .../player3/player #3/player head 3.png | Bin .../player3/player #3/player legs 1.png | Bin .../player3/player #3/player legs 2.png | Bin .../player3/player #3/player legs 4.png | Bin .../gfx/Sprites/player3/player arm 1.png | Bin .../gfx/Sprites/player3/player body 1.png | Bin .../gfx/Sprites/player3/player head 1.png | Bin .../gfx/Sprites/player3/player head 2.png | Bin .../gfx/Sprites/player3/player head 3.png | Bin .../gfx/Sprites/player3/player head 4.png | Bin .../gfx/Sprites/player3/player legs 1.png | Bin .../gfx/Sprites/player3/player legs 2.png | Bin .../gfx/Sprites/player3/player legs 3.png | Bin .../gfx/Sprites/player3/player legs 4.png | Bin .../gfx/Sprites/spritesheets/all 01.png | Bin .../spritesheets/plant spritesheet 1.png | Bin .../spritesheets/plant spritesheet 2.png | Bin .../spritesheets/platform spritesheet 1.png | Bin .../spritesheets/player spritesheet 0.1.png | Bin .../spritesheets/player spritesheet 2.png | Bin .../spritesheets/player spritesheet 3.png | Bin .../resources/gfx/Sprites/stone/stone 1.png | Bin .../resources/gfx/Sprites/stone/stone 10.png | Bin .../resources/gfx/Sprites/stone/stone 11.png | Bin .../resources/gfx/Sprites/stone/stone 12.png | Bin .../resources/gfx/Sprites/stone/stone 13.png | Bin .../resources/gfx/Sprites/stone/stone 14.png | Bin .../resources/gfx/Sprites/stone/stone 15.png | Bin .../resources/gfx/Sprites/stone/stone 16.png | Bin .../resources/gfx/Sprites/stone/stone 17.png | Bin .../resources/gfx/Sprites/stone/stone 18.png | Bin .../resources/gfx/Sprites/stone/stone 19.png | Bin .../resources/gfx/Sprites/stone/stone 2.png | Bin .../resources/gfx/Sprites/stone/stone 20.png | Bin .../resources/gfx/Sprites/stone/stone 21.png | Bin .../resources/gfx/Sprites/stone/stone 22.png | Bin .../resources/gfx/Sprites/stone/stone 23.png | Bin .../resources/gfx/Sprites/stone/stone 24.png | Bin .../resources/gfx/Sprites/stone/stone 25.png | Bin .../resources/gfx/Sprites/stone/stone 3.png | Bin .../resources/gfx/Sprites/stone/stone 4.png | Bin .../resources/gfx/Sprites/stone/stone 5.png | Bin .../resources/gfx/Sprites/stone/stone 6.png | Bin .../resources/gfx/Sprites/stone/stone 7.png | Bin .../resources/gfx/Sprites/stone/stone 8.png | Bin .../resources/gfx/Sprites/stone/stone 9.png | Bin .../gfx/Sprites/stone/stone block 1.png | Bin .../gfx/Sprites/stone/stone block 10.png | Bin .../gfx/Sprites/stone/stone block 11.png | Bin .../gfx/Sprites/stone/stone block 12.png | Bin .../gfx/Sprites/stone/stone block 2.png | Bin .../gfx/Sprites/stone/stone block 3.png | Bin .../gfx/Sprites/stone/stone block 4.png | Bin .../gfx/Sprites/stone/stone block 5.png | Bin .../gfx/Sprites/stone/stone block 6.png | Bin .../gfx/Sprites/stone/stone block 7.png | Bin .../gfx/Sprites/stone/stone block 8.png | Bin .../gfx/Sprites/stone/stone block 9.png | Bin .../resources/gfx/Sprites/transparent.png | Bin .../Sprites/weapons/guns/pistol 1-gold.png | Bin .../Sprites/weapons/guns/pistol 1-grass.png | Bin .../gfx/Sprites/weapons/guns/pistol 1.png | Bin .../gfx/Sprites/weapons/swords/weapon 1.png | Bin .../gfx/Sprites/weapons/swords/weapon 10.png | Bin .../gfx/Sprites/weapons/swords/weapon 11.png | Bin .../gfx/Sprites/weapons/swords/weapon 12.png | Bin .../gfx/Sprites/weapons/swords/weapon 13.png | Bin .../gfx/Sprites/weapons/swords/weapon 14.png | Bin .../gfx/Sprites/weapons/swords/weapon 15.png | Bin .../gfx/Sprites/weapons/swords/weapon 16.png | Bin .../gfx/Sprites/weapons/swords/weapon 2.png | Bin .../gfx/Sprites/weapons/swords/weapon 3.png | Bin .../gfx/Sprites/weapons/swords/weapon 4.png | Bin .../gfx/Sprites/weapons/swords/weapon 5.png | Bin .../gfx/Sprites/weapons/swords/weapon 6.png | Bin .../gfx/Sprites/weapons/swords/weapon 7.png | Bin .../gfx/Sprites/weapons/swords/weapon 8.png | Bin .../gfx/Sprites/weapons/swords/weapon 9.png | Bin .../weapons/wizard weapons/magic staff 1.png | Bin {Fifth => Third}/resources/gfx/bg.png | Bin {Fifth => Third}/resources/gfx/gfx.png | Bin {Fifth => Third}/resources/gfx/gfx2.png | Bin .../resources/gfx/playerSpritesheet.png | Bin .../resources/gfx/player_run.png | Bin Third/resources/gfx/sheet.png | Bin 0 -> 266171 bytes .../Sprites => Third/resources/gfx}/yrl.png | Bin Third/resources/level/dirt.lvl | 1 + Third/resources/level/island.lvl | 1 + Third/resources/level/testlevel.lvl | 131 ++++++++ {Fifth => Third}/resources/map/testMap1.map | 7 +- Third/resources/map/testMap2.map | 56 ++++ .../scripts/Standard/BinderController.lua | 58 ++++ .../scripts/Standard/BuilderController.lua | 283 ++++++++++++++++++ .../scripts/Standard/ChatController.lua | 116 +++---- .../resources/scripts/Standard/Controller.lua | 24 ++ .../scripts/Standard/ExplodeOnDeath.lua | 6 +- .../scripts/Standard/GraphicScript.lua | 6 +- .../resources/scripts/Standard/Living.lua | 14 +- .../resources/scripts/Standard/Movable.lua | 55 +--- Third/resources/scripts/Standard/Npc.lua | 163 ++++++++++ .../resources/scripts/Standard/Particle.lua | 0 .../resources/scripts/Standard/Projectile.lua | 14 +- Third/resources/scripts/Standard/Shooter.lua | 49 +++ .../resources/scripts/Standard/bitwise.lua | 1 + Third/resources/scripts/Standard/class.lua | 46 +++ .../resources/scripts/Standard/json.lua | 0 .../resources/scripts/Standard/standard.lua | 31 +- {Fifth => Third}/resources/shader/light.frag | 4 +- .../resources/shader/pixelate.frag | 0 Third/resources/template/frog.tmp | 36 +++ {Fifth => Third}/resources/ttf/font.ttf | Bin 609 files changed, 1731 insertions(+), 1177 deletions(-) delete mode 100755 Fifth/CClient.cpp delete mode 100755 Fifth/CClient.h delete mode 100755 Fifth/CGame_onEvent.cpp delete mode 100755 Fifth/CInstance.cpp delete mode 100755 Fifth/CServer.cpp delete mode 100755 Fifth/CServer.h delete mode 100755 Fifth/CServerInstance.cpp delete mode 100755 Fifth/CServerInstance.h delete mode 100755 Fifth/CTile.cpp delete mode 100755 Fifth/CTile.h delete mode 100644 Fifth/resources/gfx/frogs.png delete mode 100644 Fifth/resources/gfx/player_run.png delete mode 100755 Fifth/resources/gfx/sheet.png delete mode 100755 Fifth/resources/map/testMap2.map delete mode 100755 Fifth/resources/scripts/Standard/Controller.lua delete mode 100755 Fifth/resources/scripts/Standard/Npc.lua delete mode 100755 Fifth/resources/scripts/Standard/class.lua rename {Fifth => Third}/CAnimation.cpp (95%) rename {Fifth => Third}/CAnimation.h (100%) rename {Fifth => Third}/CAssetManager.cpp (85%) rename {Fifth => Third}/CAssetManager.h (90%) rename {Fifth => Third}/CBackground.cpp (100%) rename {Fifth => Third}/CBackground.h (100%) rename {Fifth => Third}/CBody.cpp (100%) rename {Fifth => Third}/CBody.h (90%) rename {Fifth => Third}/CCamera.cpp (96%) rename {Fifth => Third}/CCamera.h (100%) rename {Fifth => Third}/CChatBubble.cpp (100%) rename {Fifth => Third}/CChatBubble.h (100%) rename {Fifth => Third}/CCombatText.cpp (100%) rename {Fifth => Third}/CCombatText.h (100%) rename {Fifth => Third}/CComponent.cpp (89%) rename {Fifth => Third}/CComponent.h (96%) rename {Fifth => Third}/CEntity.cpp (91%) rename {Fifth => Third}/CEntity.h (100%) rename {Fifth => Third}/CEntityManager.cpp (83%) rename {Fifth => Third}/CEntityManager.h (93%) rename {Fifth => Third}/CGame.cpp (84%) rename {Fifth => Third}/CGame.h (95%) create mode 100755 Third/CGame_onEvent.cpp rename {Fifth => Third}/CGuiText.cpp (100%) rename {Fifth => Third}/CGuiText.h (100%) create mode 100755 Third/CInstance.cpp rename {Fifth => Third}/CInstance.h (79%) rename {Fifth => Third}/CLuaObject.cpp (68%) rename {Fifth => Third}/CLuaObject.h (91%) rename {Fifth => Third}/CLuaScript.cpp (100%) rename {Fifth => Third}/CLuaScript.h (100%) rename {Fifth => Third}/CNetwork.cpp (100%) rename {Fifth => Third}/CNetwork.h (100%) rename {Fifth => Third}/CSerializable.cpp (100%) rename {Fifth => Third}/CSerializable.h (100%) rename {Fifth => Third}/CSprite.cpp (100%) rename {Fifth => Third}/CSprite.h (98%) rename {Fifth => Third}/CSpriteSheet.cpp (100%) rename {Fifth => Third}/CSpriteSheet.h (100%) rename {Fifth => Third}/CText.cpp (100%) rename {Fifth => Third}/CText.h (100%) create mode 100755 Third/CTile.cpp create mode 100755 Third/CTile.h rename {Fifth => Third}/CWindow.cpp (100%) rename {Fifth => Third}/CWindow.h (100%) rename {Fifth => Third}/Define.h (78%) rename {Fifth => Third}/LuaBridge/LuaBridge.h (100%) rename {Fifth => Third}/LuaBridge/RefCountedObject.h (100%) rename {Fifth => Third}/LuaBridge/RefCountedPtr.h (100%) rename {Fifth => Third}/LuaBridge/detail/CFunctions.h (100%) rename {Fifth => Third}/LuaBridge/detail/ClassInfo.h (100%) rename {Fifth => Third}/LuaBridge/detail/Constructor.h (100%) rename {Fifth => Third}/LuaBridge/detail/FuncTraits.h (100%) rename {Fifth => Third}/LuaBridge/detail/Iterator.h (100%) rename {Fifth => Third}/LuaBridge/detail/LuaException.h (100%) rename {Fifth => Third}/LuaBridge/detail/LuaHelpers.h (100%) rename {Fifth => Third}/LuaBridge/detail/LuaRef.h (100%) rename {Fifth => Third}/LuaBridge/detail/Namespace.h (100%) rename {Fifth => Third}/LuaBridge/detail/Stack.h (100%) rename {Fifth => Third}/LuaBridge/detail/TypeList.h (100%) rename {Fifth => Third}/LuaBridge/detail/TypeTraits.h (100%) rename {Fifth => Third}/LuaBridge/detail/Userdata.h (100%) rename {Fifth => Third}/LuaBridge/detail/dump.h (100%) rename {Fifth => Third}/NFile.cpp (50%) rename {Fifth => Third}/NFile.h (92%) rename {Fifth => Third}/NMouse.cpp (100%) rename {Fifth => Third}/NMouse.h (100%) rename {Fifth => Third}/NSurface.cpp (99%) rename {Fifth => Third}/NSurface.h (100%) rename {Fifth => Third}/ResourcePath.hpp (100%) rename {Fifth => Third}/ResourcePath.mm (100%) rename {Fifth => Third}/lua/Makefile (100%) rename {Fifth => Third}/lua/lapi.c (100%) rename {Fifth => Third}/lua/lapi.h (100%) rename {Fifth => Third}/lua/lapi.o (100%) rename {Fifth => Third}/lua/lauxlib.c (100%) rename {Fifth => Third}/lua/lauxlib.h (100%) rename {Fifth => Third}/lua/lauxlib.o (100%) rename {Fifth => Third}/lua/lbaselib.c (100%) rename {Fifth => Third}/lua/lbaselib.o (100%) rename {Fifth => Third}/lua/lcode.c (100%) rename {Fifth => Third}/lua/lcode.h (100%) rename {Fifth => Third}/lua/lcode.o (100%) rename {Fifth => Third}/lua/ldblib.c (100%) rename {Fifth => Third}/lua/ldblib.o (100%) rename {Fifth => Third}/lua/ldebug.c (100%) rename {Fifth => Third}/lua/ldebug.h (100%) rename {Fifth => Third}/lua/ldebug.o (100%) rename {Fifth => Third}/lua/ldo.c (100%) rename {Fifth => Third}/lua/ldo.h (100%) rename {Fifth => Third}/lua/ldo.o (100%) rename {Fifth => Third}/lua/ldump.c (100%) rename {Fifth => Third}/lua/ldump.o (100%) rename {Fifth => Third}/lua/lfunc.c (100%) rename {Fifth => Third}/lua/lfunc.h (100%) rename {Fifth => Third}/lua/lfunc.o (100%) rename {Fifth => Third}/lua/lgc.c (100%) rename {Fifth => Third}/lua/lgc.h (100%) rename {Fifth => Third}/lua/lgc.o (100%) rename {Fifth => Third}/lua/liblua.a (100%) rename {Fifth => Third}/lua/linit.c (100%) rename {Fifth => Third}/lua/linit.o (100%) rename {Fifth => Third}/lua/liolib.c (100%) rename {Fifth => Third}/lua/liolib.o (100%) rename {Fifth => Third}/lua/llex.c (100%) rename {Fifth => Third}/lua/llex.h (100%) rename {Fifth => Third}/lua/llex.o (100%) rename {Fifth => Third}/lua/llimits.h (100%) rename {Fifth => Third}/lua/lmathlib.c (100%) rename {Fifth => Third}/lua/lmathlib.o (100%) rename {Fifth => Third}/lua/lmem.c (100%) rename {Fifth => Third}/lua/lmem.h (100%) rename {Fifth => Third}/lua/lmem.o (100%) rename {Fifth => Third}/lua/loadlib.c (100%) rename {Fifth => Third}/lua/loadlib.o (100%) rename {Fifth => Third}/lua/lobject.c (100%) rename {Fifth => Third}/lua/lobject.h (100%) rename {Fifth => Third}/lua/lobject.o (100%) rename {Fifth => Third}/lua/lopcodes.c (100%) rename {Fifth => Third}/lua/lopcodes.h (100%) rename {Fifth => Third}/lua/lopcodes.o (100%) rename {Fifth => Third}/lua/loslib.c (100%) rename {Fifth => Third}/lua/loslib.o (100%) rename {Fifth => Third}/lua/lparser.c (100%) rename {Fifth => Third}/lua/lparser.h (100%) rename {Fifth => Third}/lua/lparser.o (100%) rename {Fifth => Third}/lua/lstate.c (100%) rename {Fifth => Third}/lua/lstate.h (100%) rename {Fifth => Third}/lua/lstate.o (100%) rename {Fifth => Third}/lua/lstring.c (100%) rename {Fifth => Third}/lua/lstring.h (100%) rename {Fifth => Third}/lua/lstring.o (100%) rename {Fifth => Third}/lua/lstrlib.c (100%) rename {Fifth => Third}/lua/lstrlib.o (100%) rename {Fifth => Third}/lua/ltable.c (100%) rename {Fifth => Third}/lua/ltable.h (100%) rename {Fifth => Third}/lua/ltable.o (100%) rename {Fifth => Third}/lua/ltablib.c (100%) rename {Fifth => Third}/lua/ltablib.o (100%) rename {Fifth => Third}/lua/ltm.c (100%) rename {Fifth => Third}/lua/ltm.h (100%) rename {Fifth => Third}/lua/ltm.o (100%) rename {Fifth => Third}/lua/lua (100%) rename {Fifth => Third}/lua/lua.c (100%) rename {Fifth => Third}/lua/lua.h (100%) rename {Fifth => Third}/lua/lua.o (100%) rename {Fifth => Third}/lua/luac (100%) rename {Fifth => Third}/lua/luac.c (100%) rename {Fifth => Third}/lua/luac.o (100%) rename {Fifth => Third}/lua/luaconf.h (100%) rename {Fifth => Third}/lua/lualib.h (100%) rename {Fifth => Third}/lua/lundump.c (100%) rename {Fifth => Third}/lua/lundump.h (100%) rename {Fifth => Third}/lua/lundump.o (100%) rename {Fifth => Third}/lua/lvm.c (100%) rename {Fifth => Third}/lua/lvm.h (100%) rename {Fifth => Third}/lua/lvm.o (100%) rename {Fifth => Third}/lua/lzio.c (100%) rename {Fifth => Third}/lua/lzio.h (100%) rename {Fifth => Third}/lua/lzio.o (100%) rename {Fifth => Third}/lua/print.c (100%) rename {Fifth => Third}/lua/print.o (100%) rename {Fifth => Third}/main.cpp (100%) rename {Fifth => Third}/rapidjson/allocators.h (100%) rename {Fifth => Third}/rapidjson/document.h (100%) rename {Fifth => Third}/rapidjson/encodedstream.h (100%) rename {Fifth => Third}/rapidjson/encodings.h (100%) rename {Fifth => Third}/rapidjson/error/en.h (100%) rename {Fifth => Third}/rapidjson/error/error.h (100%) rename {Fifth => Third}/rapidjson/filereadstream.h (100%) rename {Fifth => Third}/rapidjson/filewritestream.h (100%) rename {Fifth => Third}/rapidjson/internal/biginteger.h (100%) rename {Fifth => Third}/rapidjson/internal/diyfp.h (100%) rename {Fifth => Third}/rapidjson/internal/dtoa.h (100%) rename {Fifth => Third}/rapidjson/internal/ieee754.h (100%) rename {Fifth => Third}/rapidjson/internal/itoa.h (100%) rename {Fifth => Third}/rapidjson/internal/meta.h (100%) rename {Fifth => Third}/rapidjson/internal/pow10.h (100%) rename {Fifth => Third}/rapidjson/internal/stack.h (100%) rename {Fifth => Third}/rapidjson/internal/strfunc.h (100%) rename {Fifth => Third}/rapidjson/internal/strtod.h (100%) rename {Fifth => Third}/rapidjson/memorybuffer.h (100%) rename {Fifth => Third}/rapidjson/memorystream.h (100%) rename {Fifth => Third}/rapidjson/msinttypes/inttypes.h (100%) rename {Fifth => Third}/rapidjson/msinttypes/stdint.h (100%) rename {Fifth => Third}/rapidjson/pointer.h (100%) rename {Fifth => Third}/rapidjson/prettywriter.h (100%) rename {Fifth => Third}/rapidjson/rapidjson.h (100%) rename {Fifth => Third}/rapidjson/reader.h (100%) rename {Fifth => Third}/rapidjson/stringbuffer.h (100%) rename {Fifth => Third}/rapidjson/writer.h (100%) create mode 100755 Third/resources/config/binds.cfg rename {Fifth => Third}/resources/gfx/Sprites/Art/paintings/base.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/Art/paintings/painting 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/Art/paintings/painting 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/Art/paintings/painting 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/Evil cat/cat frame 0.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/Evil cat/cat frame 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/Evil cat/cat frame 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/backgrounds/background 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/backgrounds/background 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/backgrounds/background 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/backgrounds/background 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/backgrounds/background 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/backgrounds/background 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/backgrounds/background 7.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/backgrounds/background 8.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/backgrounds/background 9.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/barrels/Barrel 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/barrels/Barrel 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/barrels/Barrel 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/block 1 [16x16].png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/block 2 [16x16].png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/block 3 [16x16].png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/block 4 [16x16].png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/block 5 [16x16] .png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/block 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 10.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 11.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 12.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 13.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 14.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 15.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 7.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 8.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/bricks 9.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/blocks (16 x 16)/tile 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/chests/chest 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/chests/chest 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/chests/chest 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/chests/chest 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/chests/chest 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/clouds/cloud 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/clouds/cloud 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/clouds/cloud 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/cracks/cracks 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/cracks/cracks 10.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/cracks/cracks 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/cracks/cracks 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/cracks/cracks 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/cracks/cracks 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/cracks/cracks 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/cracks/cracks 7.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/cracks/cracks 8.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/cracks/cracks 9.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/crosshairs/hitmarker 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/crosshairs/hitmarker 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/crosshairs/hitmarker 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/crosshairs/hitmarker 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/crosshairs/hitmarker 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/crosshairs/hitmarker 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/crosshairs/hitmarker 7.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/enemies/bee.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/enemies/enemy 1 idle f1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/enemies/enemy 1 idle f2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/enemies/enemy 1 running f1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/enemies/enemy 1 running f2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/enemies/fred [HD].png (100%) rename {Fifth => Third}/resources/gfx/Sprites/enemies/yrl/yrl AL 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/enemies/yrl/yrl AL 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/enemies/yrl/yrl AL 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/enemies/yrl/yrl AL 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/enemies/yrl/yrl body 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/enemies/yrl/yrl face 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/enemies/yrl/yrl face 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/enemies/yrl/yrl face 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/houses/House 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/houses/mini house 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/icons/icon [basic].png (100%) rename {Fifth => Third}/resources/gfx/Sprites/icons/icon.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/icons/icon_1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/icons/icon_2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/items/apple 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/items/apple 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/items/apple 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/items/bomb 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/items/bomb 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/items/bomb 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/items/bomb 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/items/bomb 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/items/bomb 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/Tree 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/Tree 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/birch 0.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/birch 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/birch 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/birch 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/birch.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/bush 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/bush 10.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/bush 11.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/bush 12.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/bush 13.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/bush 14.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/bush 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/bush 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/bush 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/bush 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/bush 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/bush 7.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/bush 8.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/bush 9.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/grass 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/grass 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 10.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 11.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 12.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 13.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 14.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 15.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 16.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 17.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 18.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 19.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 20.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 21.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 7.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 8.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/plant 9.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 10.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 11.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 12.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 13.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 14.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 15.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 16.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 17.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 18.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 19.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 20.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 21.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 22.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 23.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 24.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 25.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 26.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 7.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 8.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/tree 9.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/vine 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/vine 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/vine 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/vine 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/nature/vine 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/other/baloon(0).png (100%) rename {Fifth => Third}/resources/gfx/Sprites/other/baloon(1).png (100%) rename {Fifth => Third}/resources/gfx/Sprites/other/baloon(2).png (100%) rename {Fifth => Third}/resources/gfx/Sprites/other/bench.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/other/holy stone 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/other/moon 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/other/moon 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/other/portal 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/other/public/another guy.psd (100%) rename {Fifth => Third}/resources/gfx/Sprites/other/public/some guy.psd (100%) rename {Fifth => Third}/resources/gfx/Sprites/other/realm flag 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/other/realm flag 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/other/sign 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/pets/pet 1 (idle (1)).png (100%) rename {Fifth => Third}/resources/gfx/Sprites/pets/pet 1 (idle (2)).png (100%) rename {Fifth => Third}/resources/gfx/Sprites/pets/pet 1 (running (1)).png (100%) rename {Fifth => Third}/resources/gfx/Sprites/pets/pet 1 (running (1.1)).png (100%) rename {Fifth => Third}/resources/gfx/Sprites/pets/pet 1 (running (2)).png (100%) rename {Fifth => Third}/resources/gfx/Sprites/pets/pet 1 (running (2.1)).png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player armour/shoulder armour 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/__player__.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/bodyarmour-1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/bodyarmour-2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/bodyarmour-3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/frame 0.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/frame 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/frame 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/frame a.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/frame b.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/frame c.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/main player/arm 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/main player/arm 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/main player/arm 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/main player/arm 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/main player/arm 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/main player/head 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/main player/part 1.1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/main player/part 2.1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/main player/part 3.1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/main player/part 4.1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/main player/part 4.2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/main player/player.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/part 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/part 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/part 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player 02 running f1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player 02 running f2 v1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player 02 running f2 v2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player asset.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player idle f1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player idle f2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player running f1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player running f2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player running f3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player running f4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player running f5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player01 running f1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player01 running f2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/player_1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player/test.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/arm 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/arm 10.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/arm 11.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/arm 12.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/arm 13.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/arm 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/arm 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/arm 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/arm 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/arm 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/arm 7.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/arm 8.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/arm 9.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/body 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/body 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/body 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/body 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/body 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/body 7.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 10.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 11.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 12.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 13.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 14.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 15.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 16.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 17.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 18.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 19.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 20.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 21.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 22.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 23.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 24.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 25.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 26.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 7.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 8.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/face 9.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/leg 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/leg 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/leg 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/leg 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/leg 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/leg 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player1/leg 7.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player2/player arm 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player2/player body 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player2/player face 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player2/player leg 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player2/player leg 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player2/playerTest.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player #3/player arm 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player #3/player body 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player #3/player head 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player #3/player legs 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player #3/player legs 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player #3/player legs 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player arm 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player body 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player head 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player head 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player head 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player head 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player legs 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player legs 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player legs 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/player3/player legs 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/spritesheets/all 01.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/spritesheets/plant spritesheet 1.png (100%) rename Fifth/resources/gfx/sheet-2.png => Third/resources/gfx/Sprites/spritesheets/plant spritesheet 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/spritesheets/platform spritesheet 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/spritesheets/player spritesheet 0.1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/spritesheets/player spritesheet 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/spritesheets/player spritesheet 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 10.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 11.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 12.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 13.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 14.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 15.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 16.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 17.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 18.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 19.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 20.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 21.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 22.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 23.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 24.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 25.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 7.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 8.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone 9.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone block 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone block 10.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone block 11.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone block 12.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone block 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone block 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone block 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone block 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone block 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone block 7.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone block 8.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/stone/stone block 9.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/transparent.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/guns/pistol 1-gold.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/guns/pistol 1-grass.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/guns/pistol 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 1.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 10.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 11.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 12.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 13.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 14.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 15.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 16.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 2.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 3.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 4.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 5.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 6.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 7.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 8.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/swords/weapon 9.png (100%) rename {Fifth => Third}/resources/gfx/Sprites/weapons/wizard weapons/magic staff 1.png (100%) rename {Fifth => Third}/resources/gfx/bg.png (100%) rename {Fifth => Third}/resources/gfx/gfx.png (100%) rename {Fifth => Third}/resources/gfx/gfx2.png (100%) rename {Fifth => Third}/resources/gfx/playerSpritesheet.png (100%) rename Fifth/resources/gfx/player_run_.png => Third/resources/gfx/player_run.png (100%) create mode 100755 Third/resources/gfx/sheet.png rename {Fifth/resources/gfx/Sprites => Third/resources/gfx}/yrl.png (100%) create mode 100755 Third/resources/level/dirt.lvl create mode 100755 Third/resources/level/island.lvl create mode 100755 Third/resources/level/testlevel.lvl rename {Fifth => Third}/resources/map/testMap1.map (62%) create mode 100755 Third/resources/map/testMap2.map create mode 100755 Third/resources/scripts/Standard/BinderController.lua create mode 100755 Third/resources/scripts/Standard/BuilderController.lua rename {Fifth => Third}/resources/scripts/Standard/ChatController.lua (67%) create mode 100755 Third/resources/scripts/Standard/Controller.lua rename {Fifth => Third}/resources/scripts/Standard/ExplodeOnDeath.lua (94%) rename {Fifth => Third}/resources/scripts/Standard/GraphicScript.lua (94%) rename {Fifth => Third}/resources/scripts/Standard/Living.lua (93%) rename {Fifth => Third}/resources/scripts/Standard/Movable.lua (80%) create mode 100755 Third/resources/scripts/Standard/Npc.lua rename {Fifth => Third}/resources/scripts/Standard/Particle.lua (100%) rename {Fifth => Third}/resources/scripts/Standard/Projectile.lua (89%) create mode 100755 Third/resources/scripts/Standard/Shooter.lua rename {Fifth => Third}/resources/scripts/Standard/bitwise.lua (99%) create mode 100755 Third/resources/scripts/Standard/class.lua rename {Fifth => Third}/resources/scripts/Standard/json.lua (100%) rename {Fifth => Third}/resources/scripts/Standard/standard.lua (94%) rename {Fifth => Third}/resources/shader/light.frag (98%) rename {Fifth => Third}/resources/shader/pixelate.frag (100%) create mode 100755 Third/resources/template/frog.tmp rename {Fifth => Third}/resources/ttf/font.ttf (100%) diff --git a/Fifth/CClient.cpp b/Fifth/CClient.cpp deleted file mode 100755 index 14f4773..0000000 --- a/Fifth/CClient.cpp +++ /dev/null @@ -1,13 +0,0 @@ -//// -//// CClient.cpp -//// Fifth-Server -//// -//// Created by Didrik Munther on 21/05/15. -//// Copyright (c) 2015 Didrik Munther. All rights reserved. -//// -// -//#include "CClient.h" -// -//CClient::CClient(sf::TcpSocket* tcpSocket) { -// -//} \ No newline at end of file diff --git a/Fifth/CClient.h b/Fifth/CClient.h deleted file mode 100755 index 46fb60c..0000000 --- a/Fifth/CClient.h +++ /dev/null @@ -1,23 +0,0 @@ -//// -//// CClient.h -//// Fifth-Server -//// -//// Created by Didrik Munther on 21/05/15. -//// Copyright (c) 2015 Didrik Munther. All rights reserved. -//// -// -//#ifndef __Fifth_Server__CClient__ -//#define __Fifth_Server__CClient__ -// -//#include -// -//class CClient { -// -//public: -// CClient(sf::TcpSocket* tcpSocket); -// -// sf::TcpSocket tcpSocket; -// -//}; -// -//#endif /* defined(__Fifth_Server__CClient__) */ diff --git a/Fifth/CGame_onEvent.cpp b/Fifth/CGame_onEvent.cpp deleted file mode 100755 index b3f0b3d..0000000 --- a/Fifth/CGame_onEvent.cpp +++ /dev/null @@ -1,184 +0,0 @@ -// -// CGame_onEvent.cpp -// Fifth -// -// Created by Didrik Munther on 22/09/15. -// Copyright (c) 2015 Didrik Munther. All rights reserved. -// - -#include "CGame.h" -#include "CBackground.h" -#include "CAssetManager.h" - -#include "NFile.h" -#include "NMouse.h" - -#include "CEntity.h" - - -void CGame::loadQuickSave() { - quickSave = NFile::readFromFile("quicksave.save"); - - std::cout << quickSave << "\n--------------------\n"; - - if(quickSave == "{}") - return; - - rapidjson::Document d; - d.Parse(quickSave.c_str()); - - instance.entityManager.onCleanup(); - - instance.entityManager.onDeserialize(&d["this"], &instance); - - instance.player = instance.entityManager.getEntity("5:Player"); - instance.controller = instance.entityManager.getEntity("Controller"); - - instance.camera->setTarget(instance.player, true); -} - -void CGame::_handleKeyStates() { - - if(!isFocused) - return; - - const Uint8* keystate = SDL_GetKeyboardState(NULL); - - if(instance.controller) - instance.controller->onKeyStates(&instance, keystate); - if(ignoreEvents) return; - if(instance.player) - instance.player->onKeyStates(&instance, keystate); -} - -void CGame::_onEvent(SDL_Event* event) { - - //if(event->key.repeat != 0) return; - - CComponent* movable = nullptr; - if(instance.player) - movable = instance.player->getComponent("Standard/Movable"); - - switch(event->type) { - case SDL_QUIT: - _isRunning = false; - break; - - case SDL_WINDOWEVENT: - switch(event->window.event) { - case SDL_WINDOWEVENT_FOCUS_GAINED: - isFocused = true; - break; - - case SDL_WINDOWEVENT_FOCUS_LOST: - isFocused = false; - break; - } - break; - - case SDL_TEXTINPUT: - instance.controller->onTextInput(&instance, (std::string)event->text.text); - if(ignoreEvents) break; - instance.player->onTextInput(&instance, (std::string)event->text.text); - break; - - case SDL_KEYDOWN: - instance.controller->onEvent(&instance, event->key.keysym.sym, true); - if(ignoreEvents) break; - instance.player->onEvent(&instance, event->key.keysym.sym, true); - - switch(event->key.keysym.sym) { - - case SDLK_ESCAPE: - _isRunning = false; - break; - - case SDLK_4: - { - if(instance.window.newWindow(_intro, 640, 480)) { - NFile::log(LogType::ERROR, "Window.onInit failed: ", SDL_GetError()); - } - instance.camera->onInit(&instance.window); - instance.loadAssets("resources/map/testMap1.assets"); - restart(); - } - break; - - case SDLK_g: - { - rapidjson::Document d; - d.Parse("{}"); - - rapidjson::Value entityValues(rapidjson::kObjectType); - instance.entityManager.onSerialize(&entityValues, &d.GetAllocator(), &instance); - - d.AddMember("this", entityValues, d.GetAllocator()); - - rapidjson::StringBuffer sb; - rapidjson::Writer writer(sb); - d.Accept(writer); - -// std::cout << sb.GetString() << "\n---------------\n"; -// quickSave = sb.GetString(); - NFile::clearFile("quicksave.save"); - NFile::writeToFile("quicksave.save", sb.GetString()); - } - break; - - case SDLK_h: - { - loadQuickSave(); - } - break; - - default: - break; - - } - break; - - case SDL_KEYUP: - if(instance.controller) - instance.controller->onEvent(&instance, event->key.keysym.sym, false); - if(ignoreEvents) break; - if(instance.player) - instance.player->onEvent(&instance, event->key.keysym.sym, false); - break; - - default: - break; - - case SDL_MOUSEBUTTONDOWN: - { - bool type = 0; - - if(NMouse::leftMouseButtonPressed()) { -// auto tempTarget = instance.entityManager.getEntityAtCoordinate(NMouse::relativeMouseX(instance.camera), NMouse::relativeMouseY(instance.camera)); -// if(tempTarget != nullptr) { -// std::string toSay = "Name: \"" + instance.entityManager.getNameOfEntity(tempTarget) + -// "\", CollisionLayer: " + std::to_string(tempTarget->collisionLayer); -// tempTarget->say(toSay, "TESTFONT", ChatBubbleType::SAY); -// } - } - - if(NMouse::rightMouseButtonPressed()) { - type = 1; - auto tempTarget = instance.entityManager.getEntityAtCoordinate(NMouse::relativeMouseX(instance.camera), NMouse::relativeMouseY(instance.camera)); - if(tempTarget != nullptr) { - tempTarget->isDead = true; - } - } - - int x = NMouse::relativeMouseX(instance.camera); - int y = NMouse::relativeMouseY(instance.camera); - auto entities = instance.entityManager.getEntitiesAtCoordinate(x, y); - - for(auto& i: entities) { - i->onClick(x, y, &instance); - } - - } - break; - } - -} \ No newline at end of file diff --git a/Fifth/CInstance.cpp b/Fifth/CInstance.cpp deleted file mode 100755 index 80934aa..0000000 --- a/Fifth/CInstance.cpp +++ /dev/null @@ -1,40 +0,0 @@ -// -// CInstance.cpp -// Fifth -// -// Created by Didrik Munther on 06/05/15. -// Copyright (c) 2015 Didrik Munther. All rights reserved. -// - -#include "CInstance.h" -#include "NFile.h" -#include "CAssetManager.h" - - -CInstance::CInstance(CGame* game) - : game(game) - , L(luaL_newstate()) - , camera(new CCamera()) - , gravity(3.0f) -{ - -} - -CInstance::~CInstance() { - delete camera; -} - -void CInstance::loadAssets(std::string path) { - //CAssetManager::onCleanup(CLEAN_FLAGS::NOT_LUA_SCRIPTS); - NFile::loadAssets(path, this); - -} - -void CInstance::doLine(std::string line) { - luaL_dostring(L, line.c_str()); -} - -void CInstance::closeInstance() { - entityManager.onCleanup(); - lua_close(L); -} \ No newline at end of file diff --git a/Fifth/CServer.cpp b/Fifth/CServer.cpp deleted file mode 100755 index eebb7e8..0000000 --- a/Fifth/CServer.cpp +++ /dev/null @@ -1,139 +0,0 @@ -//// -//// CServer.cpp -//// Fifth-Server -//// -//// Created by Didrik Munther on 21/05/15. -//// Copyright (c) 2015 Didrik Munther. All rights reserved. -//// -// -//#include "CServer.h" -//#include -//#include -// -//#include "rapidjson/document.h" -//#include "rapidjson/writer.h" -//#include "rapidjson/stringbuffer.h" -// -//#include "NFile.h" -// -//CServer::CServer() : -// _isRunning(false), _inputThread(&CServer::_handleInput, this), -// _ns(1000.0f / (float)60), _delta(0), _frames(0), _updates(0), -// _lastTime(_clock.getElapsedTime().asMilliseconds()), _timer(_clock.getElapsedTime().asMilliseconds()) { -//} -// -//int CServer::onExecute() { -// -// NFile::log(LogType::ALERT, "Starting server..."); -// -// if(_onInit() == -1) -// return -1; -// -// while(_isRunning) { -// -// float now = _clock.getElapsedTime().asMilliseconds(); -// _delta += (now - _lastTime) / _ns; -// _lastTime = now; -// -// while(_delta >= 1) { -// _onLoop(); -// -// _updates++; -// _delta--; -// -// _frames++; -// -// if(_clock.getElapsedTime().asMilliseconds() - _timer > 1000) { -// _timer += 1000; -// _updates = 0; -// _frames = 0; -// } -// -// } -// -// } -// -// NFile::log(LogType::ALERT, "Shutting server down."); -// -// return _onCleanup(); -// -//} -// -//int CServer::_onInit() { -// -// const char* jsonString = " {\"entities\":\ -// [\ -// {\"name\":\"m:aTree\",\"posX\":10,\"posY\":20},\ -// {\"name\":\"l:aBush\",\"posX\":23,\"posY\":43}\ -// ]\ -// }"; -// -// rapidjson::Document d; -// -// if(!d.Parse<0>(jsonString).HasParseError()) { -// const rapidjson::Value& entities = d["entities"]; -// for(rapidjson::SizeType i = 0; i < entities.Size(); i++) { -// const rapidjson::Value& entity = entities[i]; -// printf("Entity: \"%s\", Pos: %s, %s\n", entity["name"].GetString(), std::to_string(entity["posX"].GetInt()).c_str(), std::to_string(entity["posY"].GetInt()).c_str()); -// -// } -// } -// -// _inputThread.launch(); -// -// _isRunning = true; -// -// NFile::log(LogType::SUCCESS, "Server started!"); -// return 0; -//} -// -//void CServer::_onLoop() { -// { -// auto instances = _instanceVector.begin(); -// while(instances != _instanceVector.end()) { -// auto instance = instances->second; -// instance->entityManager.onLoop(); -// -// auto clients = instance->_clients.begin(); -// while(clients != instance->_clients.end()) { -// auto client = clients->second; -// -// // ADD ALL ENTITIES INTO A JSON STRING AND SEND IT TO THE CLIENTS TCP SOCKET -// } -// -// ++instances; -// } -// } -//} -// -//void CServer::_handleInput() { -// -// while(_isRunning) { -// std::string i; getline(std::cin, i); -// -// if (i == "") { } -// else if(i == "quit") { _isRunning = false; } -// else if(i == "addentity") { /* instance.entityManager.addEntity(Box{0, 0, 0, 0}, SDL_Color{255,0,255}); */ } -// else { std::cout << "Command not recognized.\n"; } -// } -// -//} -// -//int CServer::_onRestart() { -// _onCleanup(); -// return 0; -//} -// -//int CServer::_onCleanup() { -// -// { -// auto i = _instanceVector.begin(); -// while(i != _instanceVector.end()) { -// delete i->second; -// _instanceVector.erase(i++->first); -// } -// _instanceVector.clear(); -// } -// -// return 0; -//} \ No newline at end of file diff --git a/Fifth/CServer.h b/Fifth/CServer.h deleted file mode 100755 index c1fafa4..0000000 --- a/Fifth/CServer.h +++ /dev/null @@ -1,54 +0,0 @@ -//// -//// CServer.h -//// Fifth-Server -//// -//// Created by Didrik Munther on 21/05/15. -//// Copyright (c) 2015 Didrik Munther. All rights reserved. -//// -// -//#ifndef __Fifth_Server__CServer__ -//#define __Fifth_Server__CServer__ -// -//#include -//#include "CServerInstance.h" -// -//class CServer { -// -//public: -// CServer(); -// -// int onExecute(); -// -//private: -// int _onInit(); -// int _onRestart(); -// -// void _onLoop(); -// -// int _onCleanup(); -// -// void _handleInput(); -// -// bool _isRunning; -// -// // Timer -// -// float _lastTime; -// float _timer; -// const float _ns; -// float _delta; -// int _frames; -// int _updates; -// -// // Misc -// -// //CInstance instance; -// std::map _instanceVector; -// -// sf::Thread _inputThread; -// -// -// -//}; -// -//#endif /* defined(__Fifth_Server__CServer__) */ diff --git a/Fifth/CServerInstance.cpp b/Fifth/CServerInstance.cpp deleted file mode 100755 index a3132bb..0000000 --- a/Fifth/CServerInstance.cpp +++ /dev/null @@ -1,19 +0,0 @@ -//// -//// CServerInstance.cpp -//// Fifth -//// -//// Created by Didrik Munther on 28/05/15. -//// Copyright (c) 2015 Didrik Munther. All rights reserved. -//// -// -//#include "CServerInstance.h" -// -//CServerInstance::CServerInstance() { } -// -//CServerInstance::~CServerInstance() { -// closeInstance(); -//} -// -//void CServerInstance::closeInstance() { -// entityManager.onCleanup(); -//} \ No newline at end of file diff --git a/Fifth/CServerInstance.h b/Fifth/CServerInstance.h deleted file mode 100755 index b318879..0000000 --- a/Fifth/CServerInstance.h +++ /dev/null @@ -1,30 +0,0 @@ -//// -//// CServerInstance.h -//// Fifth -//// -//// Created by Didrik Munther on 28/05/15. -//// Copyright (c) 2015 Didrik Munther. All rights reserved. -//// -// -//#ifndef __Fifth__CServerInstance__ -//#define __Fifth__CServerInstance__ -// -//#include -//#include "CClient.h" -//#include -//#include "CEntityManager.h" -// -//class CServerInstance { -// -//public: -// CServerInstance(); -// ~CServerInstance(); -// -// CEntityManager entityManager; -// std::map _clients; -// -// void closeInstance(); -// -//}; -// -//#endif /* defined(__Fifth__CServerInstance__) */ diff --git a/Fifth/CTile.cpp b/Fifth/CTile.cpp deleted file mode 100755 index a843f9b..0000000 --- a/Fifth/CTile.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// -// CTile.cpp -// Third -// -// Created by Didrik Munther on 02/04/15. -// Copyright (c) 2015 Didrik Munther. All rights reserved. -// - -#include "CTile.h" -#include "CAssetManager.h" -#include "CWindow.h" -#include "CCamera.h" - - -CTile::CTile(std::string spriteKey) - : sprite(CAssetManager::getSprite(spriteKey)) -{ } - -void CTile::onRender(CWindow* window, CCamera* camera, RenderFlags renderFlags) { - -} \ No newline at end of file diff --git a/Fifth/CTile.h b/Fifth/CTile.h deleted file mode 100755 index 71dc29b..0000000 --- a/Fifth/CTile.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// CTile.h -// Third -// -// Created by Didrik Munther on 02/04/15. -// Copyright (c) 2015 Didrik Munther. All rights reserved. -// - -#ifndef __Third__CTile__ -#define __Third__CTile__ - -#include -#include - -#include "CSprite.h" - - -class CWindow; -class CCamera; -enum RenderFlags; - -class CTile { - -public: - CTile(std::string spriteKey); // Tile sets its sprite instantly instead of having a sprite key saved - - void onRender(CWindow* window, CCamera* camera, RenderFlags renderFlags); - -private: - CSprite* sprite; - -}; - -#endif /* defined(__Third__CTile__) */ diff --git a/Fifth/resources/gfx/frogs.png b/Fifth/resources/gfx/frogs.png deleted file mode 100644 index 2e8f244b369d536f5f5b78f77cead07be851599c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6444 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 diff --git a/Fifth/resources/gfx/player_run.png b/Fifth/resources/gfx/player_run.png deleted file mode 100644 index 5d96357c35ace0b7056d250d949744e2a57f3eef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16616 zcmeHPO>9*~6rS6^*Z11e@*@a{Jer^>gvbIET`1TRXb7Y+ECd&VP$LU|lqMJ@5sf4o zUAS?Bk{B1b(wMj~h7ep3Ly9IWs01}MAg1BRTH4a`3hniL=e@biyYJq)bMF+N#-8N9 znL9J*J7>;0bLPC4!uuVY)-`12WrPq7?d#i~qxKLz+1eWV{H1x{Vrpt$+OV#TTB2O* z@wcc+?_0lRzYujZ@i^khrw`I#s;hnD+Ej0SMLJV^{IfUuXy}n$o1gD$-Mf2t=bkQl z6{7XE&h1^DJF^FNb-j{Z*S@hMyLV4^dv@dY9UotL@dc7A+S}G_e%*1ht9wr}$JED^ z1*R-8Wq~OR{2wjg+~-ZZKK!`yZ25iS|MAyy>mMmU${~>e8k4$nmu=c-Hyey{>u(}o8vrH% zItOBI_R2M4Y~(M|v~+pY(!hBe{>jka7NgwyN6FU)fQ19y*((mPt?e#axMO zOMYP5=nsBSQViSu+sJ0#B=%D?0B>N<*2Q9C*%`0+f%9<>;>k2E5SW)nLPw=Xdm6># zS0Cn~)bf+w6fmUoy}^KvCBL=)q>>dzx%E#XUkw0}1VHhl^Zn`5;-^J@q9R?zPv)sp zLIy(h$}f2=!D$!6^Cx&j_66c%$^j5T7oXO+goH%h``7QN_ZmtD}_5Lknv+i;2 zUlIUu0U*^!F0Kh&1qg!PCvNk!LGVZz8-7~{KnGilvg;qm{{8@91H=K4Uh}nV1Y89u z3S}_hiXaM->0=i*{5B4dde~z8EA%h2|6|{tdPa!+-vZFV4DvQ5HiV%ko2)G8in=glb3(&$PYAz~_A__szU`mIp%JEwZd8o4P z5?Y-+g_XM=|Jax-($g=G(P+xQNb_#1KcHu+`rd!~KH38Kr3NIokV$ z%1Uu)a1fZLd$85tmG+0wEg`noDdPdaftT*y74MpF!2M*#49NB9=Iz^}Yh(oPI+@;j z>HuSc+KL3cz$w!I8p(c>bRaU7&lqr`N@0dn*A)8hv01Z3Egb*^0O;cQcpM#y^ap=u ze?J;i{W$=^01DGvtpPaV^2_s|*Q=}f^x|zr;dcUcUe|x%&K;hvr_JMOtgRIXr%l6H ziJUMT!l)qLyNwipF?m@A^iNmhw>UeK5g*c1kZ-Jm)D1Y(NRK$=jE)MNc{iPo!-lnd zfK>ZSd&U8hd)M*E0FWnE8pegO5OLChP$rHOu)c>*9U>18a28fo#lq+q8Uk*gZ{Y61`8)yXHfrK4FwJY0ko*TUK}R9h@_p-4y*eojWeqg| zi3fM5gJ6h5Nc*S*x+n-cZrlK?=^e~sl)8iWk9r{D0I>e>K|xp68~)KbGR~gVwK4!O z=Ag(!5Ws-}1siVw3w;jc>jRGejhqfefupPVO^V6%*qG`-c}2;zu5|)V%N0t0VT9mT z>VdFjoN6}|8(u3{0pbGe3S}W5u?^=(WC7?OL>PyiiHxs-ARKi}4FHUD5NI64ClRMm ziDDju6;vcLzLf*7e@IsHWtNw0w-5aq=m0GJALp28B?l{}HoQBq8x#OV3j$uG zGXkbUhuEn&nI;qxPBv)+pI<0D`R4P1csMn{2v-Ni&cD&oK=2 z!2LzZ!?y!d(w%%$4Bfg(t3-7|63k7uUXzU%wWTO|QS*8H*6x)^{7dow0^~=)C!hR? a@AJF)_2LivFm;Ni(o8TL8a@Q$@ z+MWr)%OfO{C;qsbjvh7!pQttVNB)&ENVMBEiS^Mc&^|g+z8+Py#T4yj#7s?tJM60I zeb}@+Nhhx6*`>hu^?E(KbSEvKClW4BwtxEJk~XR>=;2e;dKAjr_N=T)I2{}Ir#-2i z_feAX(f)+eo=uXgB-CU^sI;z{sI#yI9 zYrj9P^K`}oM~Z^4yd;+HC144dxtF(5d6BNY^R3+-PefyyJ~}(jH=mXzBviQaYiDU~ z{$L8kZQWk7L3uAv!EzzVekf*-TGC>8wewD)Uis|H^zF>Vq~0lp8|FJjN_I7XYDeGq zSZ8-cuU`A_RVu5SGEv+;ilKsoFA}WnQ;xhAKyOSed;m zm)w;~bTzAa3ye_BO_oVsr(;O>RV#eQacOJvWH7Dp3hcs?%H*5!<}LDE^OKfqQQfcP zK2v*ZTdsf;NJy`%c0iAejN*&bHE@%y?qyNgaKBJhxXurHD}q0Yb|@$&cM7oKSNV%k z-NAaxlXKBSJ!j(5OzfJNO||l+Zo-m;TH==+v2_&lZQsmd@6gqE;ztZk3O1NEEc)56 zZfOkNPMMXG1Jhzf>9uRLRFNT@ZUT7)lbc92xd;ArrCm~=;XskDv&+`5J+^N*u zE>`d0lvfIk;BHpVWi#l@pU?HIg2}lmeMc(Vd*|l;a1C9@vgVB2C@P88ExS)ic!vl;*{n&fD|L`=j=SFyR)N ziI9O#&s-Q50;a(|H$>4pF^{6bq;4s0iM%Bna4Xj+uXzfu=Kf+I7y?S_0X&&W<=G~R zufuj)pxIWnHxRcs+h(qCPW{Yi_5`qWl783o!5@C=B@q050B)l-tf#qoy- zct1J}_(JcN-*(Omgp4{BakIN^TtEAsr?uVG_-EeReW@KSSRg@{D&PsqB_JZJc+npD z68qW8eq%`N$DqERN0NB~M4@Acn2#+RZs{|U8M3};etLH}mn*S1GYhrY7@bsO_19Ke zjwk7lnWN-kaoR|W>p#d?t{r&x?=OF~9GWha7n~mFR!y`G4~kcKYTpojdw69+z0`-cwzd-I zN@o>*Uz)P;Xk;YDJdeJfKs)OXoaqfu%d*E)vC28=i{4Io4PW@9TlVy-VRlz#i91G@ zrd551=YlNBp0K=4`T9MrNcf41zKhl@R0yGf1oOj%hfHG~o6hy>?AUvN&> z{QEbbehcbikiU5RWy`{#>%wgPjh;OV11QB=cbDvJ9y(_T`@jVsMp9w<$wL=a1)-3( zCBxN#5@3e$Z7A&<;&lGL>vv3=pwpy$3haL=%jiFoW-!M=<{F|<-MJFee102l<7$90 zbaKlUK9Y2cEdMMjZ1-!Qs?Ldc<9CM=iK|GIE$MD&DciF@zppgN%Sa>^8(2#)gsDc! zjm5#l-UY;4r8-MugdCL>Z`VvlDE1ui+;HqN|Gha+NN~^FU{e6@Zsu;#?wD=ph-+qj z)d%V28rvC98zHzI0gWdX39Sg61#R@^^!e6%+sF=d%MZCDvv}eFEWq&akmy^#>*7Pv zcgv4muLNh;wsH3wZ*vZO@7*aufM$C`Ib_-4K%Z81 zLz0cs$>OcR9GiX^sI42YnY$k=05MOGwubs^=&^=uG`mvpcP@D7uE|zo<`)DgjD)DS z*<7NYQfv+65H?gDG?@ksAG-GFrYiR^8e0c1F?r;>>>>>> Malaxiz/network - ], - - "sprites": [ - {"name":"player", "spriteSheetKey":"MAIN3", "offsets":[0, 0, 16, 30]}, - -<<<<<<< HEAD - {"name":"test0", "spriteSheetKey":"MAIN3", "offsets":[96, 0, 16, 30]}, - {"name":"test1", "spriteSheetKey":"MAIN3", "offsets":[0, 0, 16, 30]}, - {"name":"test2", "spriteSheetKey":"MAIN3", "offsets":[16, 0, 16, 30]}, - {"name":"test3", "spriteSheetKey":"MAIN3", "offsets":[32, 0, 16, 30]}, - {"name":"test4", "spriteSheetKey":"MAIN3", "offsets":[48, 0, 16, 30]}, - {"name":"test5", "spriteSheetKey":"MAIN3", "offsets":[64, 0, 16, 30]}, - {"name":"test6", "spriteSheetKey":"MAIN3", "offsets":[80, 0, 16, 30]}, -======= - {"name":"test1", "spriteSheetKey":"MAIN3", "offsets":[0, 0, 16, 24]}, - {"name":"test2", "spriteSheetKey":"MAIN3", "offsets":[16, 0, 16, 24]}, - {"name":"test3", "spriteSheetKey":"MAIN3", "offsets":[32, 0, 16, 24]}, - {"name":"test4", "spriteSheetKey":"MAIN3", "offsets":[48, 0, 16, 24]}, - {"name":"test5", "spriteSheetKey":"MAIN3", "offsets":[64, 0, 16, 24]}, - {"name":"test6", "spriteSheetKey":"MAIN3", "offsets":[80, 0, 16, 24]}, ->>>>>>> Malaxiz/network - - {"name":"lua", "spriteSheetKey":"MAIN", "offsets":[48, 32, 16, 16]}, - - {"name":"bunny", "spriteSheetKey":"MAIN", "offsets":[48, 16, 16, 16]}, -<<<<<<< HEAD - {"name":"bunnyJump", "spriteSheetKey":"MAIN", "offsets":[64, 16, 16, 16]}, - - {"name":"frog-0", "spriteSheetKey":"SHEET", "offsets":[0,0,16,16]}, - {"name":"frog-1", "spriteSheetKey":"SHEET", "offsets":[16,0,16,16]}, - {"name":"frog-2", "spriteSheetKey":"SHEET", "offsets":[32,0,16,16]} -======= - {"name":"bunnyJump", "spriteSheetKey":"MAIN", "offsets":[64, 16, 16, 16]} ->>>>>>> Malaxiz/network - ], - - "scripts": [ - "Standard/Movable", - "Standard/Living", - "Standard/ChatController", - "Standard/Projectile", - "Standard/Npc", - "Standard/Particle", - "Standard/Serializable", - "Standard/GraphicScript", - "Standard/ExplodeOnDeath" - ] -} \ No newline at end of file diff --git a/Fifth/resources/scripts/Standard/Controller.lua b/Fifth/resources/scripts/Standard/Controller.lua deleted file mode 100755 index ff73b28..0000000 --- a/Fifth/resources/scripts/Standard/Controller.lua +++ /dev/null @@ -1,127 +0,0 @@ --- Controller.lua - -local Controller = class ( - function(self, parent, component) - self.parent = parent - self.component = component - end -) - -function Controller:onInit() - self.parent:addProperty(EntityProperty.STATIC) - self.parent:addProperty(EntityProperty.HIDDEN) - self.parent:removeProperty(EntityProperty.COLLIDABLE) - self.component.instance.gravity = 0.6 - - self.component.instance:loadAssets("resources/map/testMap2.map") - self.component.instance:loadAssets("resources/map/testMap1.map") -end - -function Controller:onEvent(key, keyDown) - if(self.component.instance.game.ignoreEvents) then do return end end - - if(keyDown) then - if(key == KeyCode._0) then -- Camera sway - self.component.instance.camera.cameraSway = self.component.instance.camera.cameraSway + 10 - end - - if(key == KeyCode._9) then - camera = self.component.instance.camera - if(camera.cameraSway <= 10) then - camera.cameraSway = 1 - else - camera.cameraSway = camera.cameraSway - 10 - end - end - - if(key == KeyCode._8) then - - end - - if(key == KeyCode._3) then -- Collision borders - self.parent.entityManager:toggleRenderFlag(RenderFlags.COLLISION_BORDERS) - end - - if(key == KeyCode._5) then -- Restart game - self:restart() - end - - if(key == KeyCode._6) then -- Random string for player to say - chars = "abcdefghijklmnopqrstuvxyz " - toSay = "" - for i = 0, 20 do - rand = math.random(string.len(chars)) - toSay = toSay .. string.sub(chars, rand, rand) - end - - self.component.instance.player:say(toSay, "TESTFONT", ChatBubbleType.YELL) - end - - if(key == KeyCode._m) then -- Render collision area - self.parent.entityManager:toggleRenderFlag(RenderFlags.COLLISION_AREA) - end - - if(key == KeyCode._n) then - self.parent.entityManager:toggleRenderFlag(RenderFlags.COLLISION_GRID) - end - - if(key == KeyCode._b) then - self.parent.entityManager:toggleRenderFlag(RenderFlags.ENTITY_GRID) - end - - if(key == KeyCode._x) then - self.parent.entityManager:toggleRenderFlag(RenderFlags.RENDER_COMBAT_TEXT) - end - - if(key == KeyCode._7) then - self.component.instance.camera:addCameraShake(50) - end - - if(key == KeyCode._RIGHTBRACKET) then - self.component.instance.gravity = 0.3 - end - - if(key == KeyCode._LEFTBRACKET) then - self.component.instance.gravity = 0 - end - - if(key == KeyCode._j) then -- Create an npc entity - mX, mY = self.component:getRelativeMouse() - temp = self.parent.entityManager:createSpriteEntity(Box(mX, mY, 64, 64), "frog-move") - self.parent.entityManager:addEntity(temp, "") - temp:setSpriteStateType("WALKING", "frog-move") - temp:setSpriteStateType("ASCENDING", "frog-1") - temp:setSpriteStateType("DESCENDING", "frog-1") - temp:addComponent(self.component.instance, game.getScript("Standard/Living")) - temp:addComponent(self.component.instance, game.getScript("Standard/Npc")) - temp:addComponent(self.component.instance, game.getScript("Standard/Movable")) - temp:getComponent("Standard/Npc").target = self.component.instance.player - temp:getComponent("Standard/Movable"):onDeserialize('{"walking_movement_speed":4.0, "jumpPower":10.0}') - - end - - if(key == KeyCode._l) then -- Create a blue block - mX, mY = self.component:getRelativeMouse() - temp = self.parent.entityManager:createColoredEntity(Box(mX, mY, 40, 40), Color(0, 0, 255, 255)) - self.parent.entityManager:addEntity(temp, "") - temp:addProperty(EntityProperty.STATIC) - end - if(key == KeyCode._k) then -- Create a red block - mX, mY = self.component:getRelativeMouse() - temp = self.parent.entityManager:createColoredEntity(Box(mX, mY, 40, 40), Color(255, 0, 0, 255)) - self.parent.entityManager:addEntity(temp, "") - end - if(key == KeyCode._q) then - self.parent.entityManager:getEntity("5:Player"):getComponent("Standard/Living"):heal(400,self.parent) - end - - end -end - -function Controller:restart() - self.component.instance.game:restart() -end - -function create(parent, component) - return Controller(parent, component) -end \ No newline at end of file diff --git a/Fifth/resources/scripts/Standard/Npc.lua b/Fifth/resources/scripts/Standard/Npc.lua deleted file mode 100755 index bef6006..0000000 --- a/Fifth/resources/scripts/Standard/Npc.lua +++ /dev/null @@ -1,98 +0,0 @@ --- Npc.lua - -local Npc = class ( - function(self, parent, component) - self.parent = parent - self.component = component - - self.target = nil - self.targetName = "" - end -) - -function Npc:onInit() - movable = self.parent:getComponent("Standard/Movable") - if(movable ~= nil) then - movable.jumpPower = 2 - end -end - -function Npc:onLoop() - movable = self.parent:getComponent("Standard/Movable") - if(movable == nil) then - do return end - end - - target = self.target - - if(self.target == nil and self.targetName ~= "") then - self.target = self.parent.entityManager:getEntity(self.targetName) - end - - if(target ~= nil) then - targetBox = target.body.box - thisBox = self.parent.body.box - - targetX = 0 - targetY = targetBox.y - if(not target:hasProperty(EntityProperty.FLIP)) then - targetX = targetBox.x - else - targetX = targetBox.x + targetBox.w - end - targetX = targetX + (math.sin(game.getTime()) * 200) -- make them act more like bees - - thisX = thisBox.x - thisY = thisBox.y - - if(targetX > thisX) then - movable:goRight() - elseif(targetX < thisX) then - movable:goLeft() - end - - if(thisY > targetY) then - targetMovable = self.target:getComponent("Standard/Movable") - if(targetMovable ~= nil) then - if(not targetMovable.isFlying) then - movable:jump() - end - else - movable:jump() - end - end - end -end - -function Npc:onCollision(target, sides) - if(target:compare(self.target)) then - living = target:getComponent("Standard/Living") - if(living ~= nil) then -<<<<<<< HEAD - living:damage(1, self.parent) -======= - living:damage(50, self.parent) ->>>>>>> Malaxiz/network - end - end -end - -function Npc:onSerialize() - c = self.component - - c:addString("target", self.parent.entityManager:getNameOfEntity(self.target)) -end - -function Npc:onDeserialize(value) - decoded = json.decode(value) - - if(decoded.target ~= nil) then - self.target = getVal(self.target, self.parent.entityManager:getEntity(decoded.target)) - self.targetName = decoded.target - end - -end - -function create(parent, component) - return Npc(parent, component) -end \ No newline at end of file diff --git a/Fifth/resources/scripts/Standard/class.lua b/Fifth/resources/scripts/Standard/class.lua deleted file mode 100755 index dfb5167..0000000 --- a/Fifth/resources/scripts/Standard/class.lua +++ /dev/null @@ -1,46 +0,0 @@ --- class.lua - --- Compatible with Lua 5.1 (not 5.0). -function class(base, init) -local c = {} -- a new class instance -if not init and type(base) == 'function' then -init = base -base = nil -elseif type(base) == 'table' then --- our new class is a shallow copy of the base class! -for i,v in pairs(base) do -c[i] = v -end -c._base = base -end --- the class will be the metatable for all its objects, --- and they will look up their methods in it. -c.__index = c - --- expose a constructor which can be called by () -local mt = {} -mt.__call = function(class_tbl, ...) -local obj = {} -setmetatable(obj,c) -if init then -init(obj,...) -else --- make sure that any stuff from the base class is initialized! -if base and base.init then -base.init(obj, ...) -end -end -return obj -end -c.init = init -c.is_a = function(self, klass) -local m = getmetatable(self) -while m do -if m == klass then return true end -m = m._base -end -return false -end -setmetatable(c, mt) -return c -end \ No newline at end of file diff --git a/Fifth/CAnimation.cpp b/Third/CAnimation.cpp similarity index 95% rename from Fifth/CAnimation.cpp rename to Third/CAnimation.cpp index 5c6d88d..2b64c26 100755 --- a/Fifth/CAnimation.cpp +++ b/Third/CAnimation.cpp @@ -50,6 +50,8 @@ void CAnimation::onRender(CEntity* entity, Box destination, bool flip, int angle if(currentFrame >= sprites.size()) currentFrame = 0; + + _source = *CAssetManager::getSprite(sprites[currentFrame])->getSource(); } auto sprite = CAssetManager::getSprite(sprites[currentFrame]); diff --git a/Fifth/CAnimation.h b/Third/CAnimation.h similarity index 100% rename from Fifth/CAnimation.h rename to Third/CAnimation.h diff --git a/Fifth/CAssetManager.cpp b/Third/CAssetManager.cpp similarity index 85% rename from Fifth/CAssetManager.cpp rename to Third/CAssetManager.cpp index 3aad9df..6f39948 100755 --- a/Fifth/CAssetManager.cpp +++ b/Third/CAssetManager.cpp @@ -10,12 +10,14 @@ #include "NFile.h" #include "CSpriteSheet.h" #include "CLuaScript.h" +#include "CTile.h" std::map CAssetManager::_Sprites; std::map CAssetManager::_SpriteSheets; std::map CAssetManager::_Fonts; std::map CAssetManager::_LuaScripts; +std::map CAssetManager::_Tilesets; int CAssetManager::_assetId = 0; CAssetManager::CAssetManager() { } @@ -102,6 +104,18 @@ CLuaScript* CAssetManager::addLuaScript(lua_State* L, std::string path) { } } +Tileset* CAssetManager::addTileset(std::string name, Tileset* tileSet) { + if(_Tilesets.find(name) != _Tilesets.end()) { + NFile::log(LogType::WARNING, "Couldn't add tileset: \"", name, "\", because it already exists"); + return _Tilesets[name]; + } else { + _Tilesets[name] = tileSet; + if(DEBUG) + NFile::log(LogType::SUCCESS, "Added tileset: \"", name, "\"."); + return tileSet; + } +} + CSprite* CAssetManager::getSprite(std::string key) { auto it = _Sprites.find(key); if(it == _Sprites.end()) @@ -126,6 +140,14 @@ TTF_Font* CAssetManager::getFont(std::string key) { return it->second; } +Tileset* CAssetManager::getTileset(std::string key) { + auto it = _Tilesets.find(key); + if(it == _Tilesets.end()) + return nullptr; + else + return it->second; +} + CLuaScript* CAssetManager::getLuaScript(std::string key) { auto it = _LuaScripts.find(key); if(it == _LuaScripts.end()) @@ -177,6 +199,19 @@ void CAssetManager::onCleanup(CLEAN_FLAGS flags /* = CLEAN_FLAGS::EVERYTHING */) NFile::log(LogType::SUCCESS, "Unloaded assets: ", toWrite); } + { + std::string toWrite = ""; + auto i = _Tilesets.begin(); + while(i != _Tilesets.end()) { + toWrite += "\"" + i->first + "\", "; + delete i->second; + _Tilesets.erase(i++->first); + } + _Tilesets.clear(); + if(toWrite != "") + NFile::log(LogType::SUCCESS, "Unloaded assets: ", toWrite); + } + if(!(flags & CLEAN_FLAGS::NOT_LUA_SCRIPTS)) { std::string toWrite = ""; auto i = _LuaScripts.begin(); diff --git a/Fifth/CAssetManager.h b/Third/CAssetManager.h similarity index 90% rename from Fifth/CAssetManager.h rename to Third/CAssetManager.h index 3622a5b..8b4e18d 100755 --- a/Fifth/CAssetManager.h +++ b/Third/CAssetManager.h @@ -21,6 +21,8 @@ class CSpriteContainer; class CLuaScript; class lua_State; +struct Tileset; + enum CLEAN_FLAGS { EVERYTHING = 0, NOT_LUA_SCRIPTS = 1 << 0 @@ -38,11 +40,13 @@ class CAssetManager { static CSpriteSheet* addSpriteSheet(std::string name, SDL_Renderer* renderer, std::string fileName); static TTF_Font* addFont(std::string name, std::string fileName, int size); static CLuaScript* addLuaScript(lua_State* L, std::string path); + static Tileset* addTileset(std::string name, Tileset* tileset); static CSprite* getSprite(std::string key); static CSpriteSheet* getSpriteSheet(std::string key); static TTF_Font* getFont(std::string key); static CLuaScript* getLuaScript(std::string key); + static Tileset* getTileset(std::string key); static void removeSpriteContainer(std::string key); @@ -53,6 +57,7 @@ class CAssetManager { static std::map _SpriteSheets; static std::map _Fonts; static std::map _LuaScripts; + static std::map _Tilesets; static int _assetId; }; diff --git a/Fifth/CBackground.cpp b/Third/CBackground.cpp similarity index 100% rename from Fifth/CBackground.cpp rename to Third/CBackground.cpp diff --git a/Fifth/CBackground.h b/Third/CBackground.h similarity index 100% rename from Fifth/CBackground.h rename to Third/CBackground.h diff --git a/Fifth/CBody.cpp b/Third/CBody.cpp similarity index 100% rename from Fifth/CBody.cpp rename to Third/CBody.cpp diff --git a/Fifth/CBody.h b/Third/CBody.h similarity index 90% rename from Fifth/CBody.h rename to Third/CBody.h index 363c74c..fb10039 100755 --- a/Fifth/CBody.h +++ b/Third/CBody.h @@ -13,10 +13,6 @@ #include "Define.h" -struct Position { - int x, y; -}; - class CBody { public: @@ -41,6 +37,10 @@ class CBody { setBox(x, y, _rect.w, _rect.h); } + void setDimension(int w, int h) { + setBox(_rect.x, _rect.y, w, h); + } + Position getCenter() { return Position{getX() + getW() / 2, getY() + getH() / 2}; } Box _rect; diff --git a/Fifth/CCamera.cpp b/Third/CCamera.cpp similarity index 96% rename from Fifth/CCamera.cpp rename to Third/CCamera.cpp index 1118dc3..6a5c338 100755 --- a/Fifth/CCamera.cpp +++ b/Third/CCamera.cpp @@ -13,8 +13,10 @@ #include "CEntity.h" -CCamera::CCamera() : - _offset{0, 0, 0, 0}, cameraSway(10) { +CCamera::CCamera() + : _offset{0, 0, 0, 0}, cameraSway(10) + , _target(nullptr) +{ } void CCamera::onInit(CWindow* window) { diff --git a/Fifth/CCamera.h b/Third/CCamera.h similarity index 100% rename from Fifth/CCamera.h rename to Third/CCamera.h diff --git a/Fifth/CChatBubble.cpp b/Third/CChatBubble.cpp similarity index 100% rename from Fifth/CChatBubble.cpp rename to Third/CChatBubble.cpp diff --git a/Fifth/CChatBubble.h b/Third/CChatBubble.h similarity index 100% rename from Fifth/CChatBubble.h rename to Third/CChatBubble.h diff --git a/Fifth/CCombatText.cpp b/Third/CCombatText.cpp similarity index 100% rename from Fifth/CCombatText.cpp rename to Third/CCombatText.cpp diff --git a/Fifth/CCombatText.h b/Third/CCombatText.h similarity index 100% rename from Fifth/CCombatText.h rename to Third/CCombatText.h diff --git a/Fifth/CComponent.cpp b/Third/CComponent.cpp similarity index 89% rename from Fifth/CComponent.cpp rename to Third/CComponent.cpp index 55fd34a..be8e311 100755 --- a/Fifth/CComponent.cpp +++ b/Third/CComponent.cpp @@ -14,14 +14,13 @@ CComponent::CComponent(CEntity* parent, CInstance* instance, CLuaScript* script) : parent(parent) , object(parent, this, script) + , instance(instance) , tempWindow(nullptr) , tempCamera(nullptr) , tempRenderflags(nullptr) - , tempInstance(nullptr) , tempValue(nullptr) , tempAlloc(nullptr) { - onInit(instance); } CComponent::~CComponent() { @@ -32,25 +31,17 @@ void CComponent::onInit(CInstance* instance) { if(!object.hasReference("onInit")) return; - tempInstance = instance; - callSimpleFunction("onInit"); - - tempInstance = nullptr; } void CComponent::onEvent(CInstance* instance, int key, bool keyDown) { if(!object.hasReference("onEvent")) return; - tempInstance = instance; - object.beginCall("onEvent"); object.pushObject(key); object.pushObject((bool)keyDown); object.endCall(2, 0); - - tempInstance = nullptr; } void CComponent::onKeyStates(CInstance* instance, const Uint8* keystates) { @@ -59,27 +50,21 @@ void CComponent::onKeyStates(CInstance* instance, const Uint8* keystates) { KeyState state{keystates}; - tempInstance = instance; - object.beginCall("onKeyStates"); object.pushObject(state); object.endCall(1, 0); - - tempInstance = nullptr; } void CComponent::onLoop(CInstance* instance) { if(!object.hasReference("onLoop")) return; - tempInstance = instance; tempCamera = instance->camera; tempWindow = &instance->window; callSimpleFunction("onLoop"); - tempInstance = nullptr; tempCamera = nullptr; tempWindow = nullptr; } @@ -137,54 +122,49 @@ void CComponent::onSerialize(rapidjson::Value* value, rapidjson::Document::Alloc tempValue = value; tempAlloc = alloc; - tempInstance = instance; object.beginCall("onSerialize"); object.endCall(0, 0); tempValue = nullptr; tempAlloc = nullptr; - tempInstance = nullptr; } void CComponent::onDeserialize(std::string value, CInstance* instance) { if(!object.hasReference("onDeserialize")) return; - tempInstance = instance; - object.beginCall("onDeserialize"); object.pushObject(value); object.endCall(1, 0); - - tempInstance = nullptr; } void CComponent::onClick(int x, int y, CInstance* instance) { if(!object.hasReference("onClick")) return; - tempInstance = instance; - object.beginCall("onClick"); object.pushObject(x); object.pushObject(y); object.endCall(2, 0); - - tempInstance = nullptr; } void CComponent::onTextInput(CInstance* instance, std::string input) { if(!object.hasReference("onTextInput")) return; - tempInstance = instance; - object.beginCall("onTextInput"); object.pushObject(input); object.endCall(1, 0); +} + +void CComponent::onComponentAdd(CInstance* instance, std::string component) { + if(!object.hasReference("onComponentAdd")) + return; - tempInstance = nullptr; + object.beginCall("onComponentAdd"); + object.pushObject(component); + object.endCall(1, 0); } void CComponent::callSimpleFunction(std::string function) { @@ -223,9 +203,9 @@ void CComponent::renderText(int x, int y, int size, std::string text, std::strin int CComponent::getRelativeMouse(lua_State* L) { int x, y; - if(tempInstance != nullptr) { - x = NMouse::relativeMouseX(tempInstance->camera); - y = NMouse::relativeMouseY(tempInstance->camera); + if(instance != nullptr) { + x = NMouse::relativeMouseX(instance->camera); + y = NMouse::relativeMouseY(instance->camera); } else if(tempCamera != nullptr) { x = NMouse::relativeMouseX(tempCamera); y = NMouse::relativeMouseY(tempCamera); diff --git a/Fifth/CComponent.h b/Third/CComponent.h similarity index 96% rename from Fifth/CComponent.h rename to Third/CComponent.h index 8ceaf1e..1876c3f 100755 --- a/Fifth/CComponent.h +++ b/Third/CComponent.h @@ -59,6 +59,7 @@ class CComponent { void onEvent(CInstance* instance, int key, bool keyDown); void onKeyStates(CInstance* instance, const Uint8* keystates); void onTextInput(CInstance* instance, std::string input); + void onComponentAdd(CInstance* instance, std::string component); void callSimpleFunction(std::string function); @@ -79,7 +80,7 @@ class CComponent { // == - CInstance* tempInstance; + CInstance* instance; int getRelativeMouse(lua_State* L); int getMouse(lua_State* L); diff --git a/Fifth/CEntity.cpp b/Third/CEntity.cpp similarity index 91% rename from Fifth/CEntity.cpp rename to Third/CEntity.cpp index 5f33a16..14322b5 100755 --- a/Fifth/CEntity.cpp +++ b/Third/CEntity.cpp @@ -58,6 +58,9 @@ void CEntity::_cleanUpTextVector() { } void CEntity::onLoop(CInstance* instance) { + if(instance->isPaused && instance->player != this && instance->controller != this) + return; + _hasMoved = false; auto i = guiTextVector.begin(); @@ -133,15 +136,7 @@ void CEntity::onRender(CWindow* window, CCamera* camera, RenderFlags renderFlags NSurface::renderRect(x, y, w, h, window, color.r, color.g, color.b); else { -<<<<<<< HEAD - int spriteWidth = body->getW(); - int spriteHeight = body->getH(); - int lean = 0;//(body->velX / 4.0f) /* + sin(body->getX() * 200) * 2*/; - - getSprite()->onRender(this, Box{x, y, spriteWidth, spriteHeight}, hasProperty(EntityProperty::FLIP), lean, transparency, window, camera, renderFlags); -======= getSprite()->onRender(this, Box{x, y, body->getW(), body->getH()}, hasProperty(EntityProperty::FLIP), angle, transparency, window, camera, renderFlags); ->>>>>>> Malaxiz/network } } @@ -324,12 +319,37 @@ CComponent* CEntity::addComponent(CInstance* instance, CLuaScript* script) { NFile::log(LogType::WARNING, "Luascript ", script->getName(), " is invalid, and could not be added to entity as a component."); return nullptr; } else if(getComponent(script->getName())) { - //NFile::log(LogType::WARNING, "Component already exists: ", script->getName(), "."); + if(DEBUG) + NFile::log(LogType::WARNING, "Component already exists: ", script->getName(), "."); delete components[script->getName()]; + components.erase(script->getName()); } CComponent* component = new CComponent(this, instance, script); components[script->getName()] = component; + component->onInit(instance); + + for(auto& i: components) { + component->onComponentAdd(instance, i.second->object.getScript()->getName()); + i.second->onComponentAdd(instance, script->getName()); + } + + auto require = component->object.getTable("require"); // TODO: Add recursion protection, and perhaps a require depth limit. + for(auto& i: require) { + std::string name = i.second.cast(); + if(getComponent(name)) { + if(DEBUG) + NFile::log(LogType::WARNING, "Couldn't add the required component \"", name, "\" to component \"", script->getName(), "\". Because the component already exist."); + continue; + } + auto scriptToAdd = CAssetManager::getLuaScript(name); + if(!scriptToAdd) { + NFile::log(LogType::WARNING, "Couldn't add the required component \"", name, "\" to component \"", script->getName(), "\". Because the script doesn't exist."); + } else { + CEntity::addComponent(instance, scriptToAdd); + } + } + return component; } @@ -443,6 +463,8 @@ bool CEntity::_collision(int x, int y, std::vector* entities) { } void CEntity::move(std::vector* entities, CInstance* instance) { + if(instance->isPaused && instance->player != this && instance->controller != this) + return; if(hasProperty(EntityProperty::STATIC) || isDead) { body->velY = body->velX = 0; diff --git a/Fifth/CEntity.h b/Third/CEntity.h similarity index 100% rename from Fifth/CEntity.h rename to Third/CEntity.h diff --git a/Fifth/CEntityManager.cpp b/Third/CEntityManager.cpp similarity index 83% rename from Fifth/CEntityManager.cpp rename to Third/CEntityManager.cpp index 321009a..371c1bb 100755 --- a/Fifth/CEntityManager.cpp +++ b/Third/CEntityManager.cpp @@ -18,12 +18,14 @@ #include "CGuiText.h" #include "CBackground.h" #include "CInstance.h" +#include "CTile.h" -CEntityManager::CEntityManager() : entityID(0), _gridSize(128) { - renderFlags = RenderFlags::CLEAR | - RenderFlags::RENDER_COMBAT_TEXT; -} +CEntityManager::CEntityManager() + : entityID(0) + , _gridSize(TILE_SIZE) // Don't touch this, tile collision is dependent on it ctrl-f: TILECOL + , renderFlags(RenderFlags::CLEAR | RenderFlags::RENDER_COMBAT_TEXT) +{} std::string CEntityManager::addEntity(CEntity* entity, std::string name /* = "" */) { if(name == "") { @@ -44,7 +46,8 @@ std::string CEntityManager::addEntity(CEntity* entity, std::string name /* = "" CEntity* CEntityManager::getEntity(std::string name) { if(_entities.find(name) == _entities.end()) { - //NFile::log(LogType::WARNING, "Couldn't get entity: ", name, ", because it doesn't exist."); + if(DEBUG) + NFile::log(LogType::WARNING, "Couldn't get entity: ", name, ", because it doesn't exist."); return nullptr; } else { return _entities[name]; @@ -75,6 +78,10 @@ int CEntityManager::pushEntities(lua_State* L) { return 1; } +int CEntityManager::getEntityCount() { + return (int)_entities.size(); +} + CEntity* CEntityManager::getEntityAtCoordinate(int x, int y, CEntity* except /* = nullptr */) { for (auto &i: _entities) { if(i.second->coordinateCollision(x, y, 1, 1)) { @@ -125,6 +132,33 @@ void CEntityManager::addBackground(std::string name, CBackground* background) { _backgrounds[name] = background; } +void CEntityManager::addTile(int x, int y, std::string tileset) { + int posX = floor((float)x / TILE_SIZE); + int posY = floor((float)y / TILE_SIZE); + + if(CTile::tileExist(&_tiles, posX, posY)) + return; + + CTile* tile = new CTile(tileset, posX, posY); + _tiles[posX][posY] = tile; + + tile->updateIndex(&_tiles); + tile->updateAdjecent(&_tiles); +} + +void CEntityManager::removeTile(int x, int y) { + int posX = floor((float)x / TILE_SIZE); + int posY = floor((float)y / TILE_SIZE); + + if(!CTile::tileExist(&_tiles, posX, posY)) + return; + + auto tile = _tiles[posX][posY]; + _tiles[posX].erase(posY); + tile->updateAdjecent(&_tiles); + delete tile; +} + void CEntityManager::addRenderFlag(RenderFlags renderFlag) { renderFlags |= (int)renderFlag; } @@ -152,6 +186,12 @@ void CEntityManager::onRender(CWindow* window, CCamera* camera) { } } + for (auto &tileRow: _tiles) { + for(auto &tile: tileRow.second) { + tile.second->onRender(window, camera, (RenderFlags)renderFlags); + } + } + for (auto &i: _particles) i->onRender(window, camera, (RenderFlags)renderFlags); @@ -257,10 +297,6 @@ std::vector getGrid(CEntity* target, int gridSize) { int upperLeftCorner[2] = {(targetX - (targetX % gridSize)) / gridSize, (targetY - (targetY % gridSize)) / gridSize}; - //int upperRightCorner[2] = {(targetX + targetW - ((targetX + targetW) % gridSize)) / gridSize, - // (targetY - (targetY % gridSize)) / gridSize}; - int lowerLeftCorner[2] = {(targetX - (targetX % gridSize)) / gridSize, - (targetY + targetH - ((targetY + targetH) % gridSize)) / gridSize}; int lowerRightCorner[2] = {(targetX + targetW - ((targetX + targetW) % gridSize)) / gridSize, (targetY + targetH - ((targetY + targetH) % gridSize)) / gridSize}; @@ -268,7 +304,7 @@ std::vector getGrid(CEntity* target, int gridSize) { int margin = 1; - if(upperLeftCorner[1] - margin < lowerLeftCorner[1] + margin) { + if(upperLeftCorner[1] - margin < lowerRightCorner[1] + margin) { for(int y = upperLeftCorner[1] - margin; y < lowerRightCorner[1] + margin; y++) { if(upperLeftCorner[0] - margin < lowerRightCorner[0] + margin) { loopX(upperLeftCorner[0] - margin, lowerRightCorner[0] + margin, y, &toReturn); @@ -317,6 +353,18 @@ void CEntityManager::onLoop(CInstance* instance) { } } + for(auto &tileRow: _tiles) { + for(auto &tile: tileRow.second) { + auto target = tile.second; + + _CollisionVector[target->posY][target->posX].push_back(target); // TILECOL + +// for(auto &coords: getGrid(target, _gridSize)) { +// _CollisionVector[coords.y][coords.x].push_back(target); +// } + } + } + for(auto &entity: _deadEntities) { auto target = entity.second; target->gridCoordinates.clear(); @@ -448,9 +496,31 @@ void CEntityManager::onSerialize(rapidjson::Value* value, rapidjson::Document::A backgroundValues.AddMember(rapidjson::Value(i.first.c_str(), *alloc), background, *alloc); } + rapidjson::Value tileValues(rapidjson::kObjectType); + std::map> tiles; + for(auto& tileRow: _tiles) { + for(auto& tileObj: tileRow.second) { + auto tile = tileObj.second; + std::string tileset = tile->tilesetKey; + tiles[tileset].push_back(tile); + } + } + + for(auto& i: tiles) { + rapidjson::Value tileOfTilesetValue(rapidjson::kArrayType); + + for(auto& tile: i.second) { + rapidjson::Value positionValues(rapidjson::kArrayType); + tile->onSerialize(&positionValues, alloc, instance); + tileOfTilesetValue.PushBack(positionValues, *alloc); + } + tileValues.AddMember(rapidjson::Value(i.first.c_str(), *alloc), tileOfTilesetValue, *alloc); + } + value->AddMember("entities", entityValues, *alloc); value->AddMember("backgrounds", backgroundValues, *alloc); value->AddMember("entityID", rapidjson::Value(entityID), *alloc); + value->AddMember("tiles", tileValues, *alloc); } void CEntityManager::onDeserialize(rapidjson::Value* value, CInstance* instance) { @@ -507,6 +577,19 @@ void CEntityManager::onDeserialize(rapidjson::Value* value, CInstance* instance) entity->onDeserialize(entityValue, instance); } } + + if(value->HasMember("tiles")) { + const rapidjson::Value& tileValues = (*value)["tiles"]; + + for(rapidjson::Value::ConstMemberIterator i = tileValues.MemberBegin(); i != tileValues.MemberEnd(); i++) { + const rapidjson::Value* tileValue = &i->value; + std::string tileset = i->name.GetString(); + std::vector> positions; + + for(rapidjson::SizeType position = 0; position != tileValue->Size(); position++) + addTile((*tileValue)[position][0].GetInt() * TILE_SIZE, (*tileValue)[position][1].GetInt() * TILE_SIZE, tileset); + } + } } void CEntityManager::onEvent(CInstance *instance, int key, bool keyDown) { @@ -556,6 +639,19 @@ void CEntityManager::entityCleanup() { } _backgrounds.clear(); } + + { + auto i = _tiles.begin(); + while(i != _tiles.end()) { + auto i2 = i->second.begin(); + while(i2 != i->second.end()) { + delete i2->second; + i->second.erase(i2++->first); + } + _tiles.erase(i++->first); + } + _tiles.clear(); + } } void CEntityManager::particleCleanup() { diff --git a/Fifth/CEntityManager.h b/Third/CEntityManager.h similarity index 93% rename from Fifth/CEntityManager.h rename to Third/CEntityManager.h index 46e40a1..2282bc5 100755 --- a/Fifth/CEntityManager.h +++ b/Third/CEntityManager.h @@ -33,6 +33,7 @@ class CWindow; class CInstance; class lua_State; class CGame; +class CTile; class CEntityManager : public CSerializable { @@ -45,6 +46,7 @@ class CEntityManager : public CSerializable { std::string getNameOfEntity(CEntity* entity); CBackground* getBackground(std::string name); std::string addEntity(CEntity* entity, std::string name = ""); + void addTile(int x, int y, std::string tileset); void addParticle(CEntity* particle); void addGuiText(CGuiText* guiText); void addBackground(std::string name, CBackground* background); @@ -55,6 +57,8 @@ class CEntityManager : public CSerializable { void onRender(CWindow* window, CCamera* camera); void onCleanup(); + void removeTile(int x, int y); + void onSerialize(rapidjson::Value* value, rapidjson::Document::AllocatorType* alloc, CInstance* instance); void onDeserialize(rapidjson::Value* value, CInstance* instance); @@ -68,6 +72,7 @@ class CEntityManager : public CSerializable { void particleCleanup(); void guiTextCleanup(); + int getEntityCount(); int entityID; int renderFlags; @@ -78,13 +83,14 @@ class CEntityManager : public CSerializable { void addRenderFlag(int renderFlag) { addRenderFlag((RenderFlags)renderFlag); } void removeRenderFlag(int renderFlag) { removeRenderFlag((RenderFlags)renderFlag); } void toggleRenderFlag(int renderFlag) { toggleRenderFlag((RenderFlags)renderFlag); } - + private: std::map _entities; std::vector _particles; std::vector _guiTextElements; std::map _deadEntities; std::map _backgrounds; + std::map> _tiles; diff --git a/Fifth/CGame.cpp b/Third/CGame.cpp similarity index 84% rename from Fifth/CGame.cpp rename to Third/CGame.cpp index 1fb1d44..d2df2b0 100755 --- a/Fifth/CGame.cpp +++ b/Third/CGame.cpp @@ -9,7 +9,6 @@ #include #include #include -#include #include #include @@ -74,6 +73,10 @@ int CGame::onExecute() { _updates++; _delta--; + + auto sayer = instance.entityManager.getEntity("n:bush"); + if(sayer) + sayer->say(_title.str() + " Gravity: " + std::to_string(instance.gravity), "TESTFONT", ChatBubbleType::INSTANT_TALK); } _onRender(); @@ -86,7 +89,6 @@ int CGame::onExecute() { _title << _updates << " ups, " << _frames << " fps"; _updates = 0; _frames = 0; - } } @@ -97,11 +99,10 @@ int CGame::onExecute() { } int CGame::_onInit() { -#ifdef __APPLE__ + _initRelativePaths(); -#endif NFile::clearFile(LOG_FILE); // Clear log file - srand((Uint16)time(0)); + srand((Uint16)time(nullptr)); NFile::log(LogType::ALERT, "Initializing game..."); @@ -142,72 +143,18 @@ void CGame::_restart() { instance.L = luaL_newstate(); _initLua(); - CBackground* background = new CBackground("background", 0.1, BackgroundOffset{0, -450, 1.75f}); - instance.entityManager.addBackground("main", background); - -<<<<<<< HEAD - CAnimation* anim = new CAnimation({"test6", "test5", "test4", "test3", "test2", "test1"}, 10); - //CAnimation* anim = new CAnimation({"test6"}, 10); - CAssetManager::addSprite(anim, "test7"); - - //frog-move - CAnimation* frog_anim = new CAnimation({"frog-0" , "frog-2"}, 10); - CAssetManager::addSprite(frog_anim, "frog-move"); - -======= CAnimation* anim = new CAnimation({"test1", "test2", "test3", "test4", "test5", "test6"}, 10); CAssetManager::addSprite(anim, "test7"); ->>>>>>> Malaxiz/network auto controller = CAssetManager::addLuaScript(instance.L, "resources/scripts/Standard/Controller.lua"); auto temp = new CEntity(Box{0, 0, 0, 0}, Color{0, 0, 0, 0}); instance.entityManager.addEntity(temp, "Controller"); temp->addComponent(&instance, controller); - auto chatController = CAssetManager::getLuaScript("Standard/ChatController"); - temp->addComponent(&instance, chatController); instance.controller = temp; - auto movable = CAssetManager::getLuaScript("Standard/Movable"); - auto living = CAssetManager::getLuaScript("Standard/Living"); - -<<<<<<< HEAD - temp = new CEntity(Box{50, -500, 64, 64}, "frog-0"); - instance.entityManager.addEntity(temp, "5:Player"); - temp->spriteStateTypes["WALKING"] = "frog-move"; - temp->spriteStateTypes["ASCENDING"] = "frog-1"; - temp->spriteStateTypes["DESCENDING"] = "frog-1"; -======= - temp = new CEntity(Box{50, -500, 16 * 4, 32 * 4}, "test2"); - instance.entityManager.addEntity(temp, "5:Player"); - temp->spriteStateTypes["WALKING"] = "test7"; - temp->spriteStateTypes["ASCENDING"] = "test4"; - temp->spriteStateTypes["DESCENDING"] = "test1"; ->>>>>>> Malaxiz/network - temp->addComponent(&instance, movable); - temp->addComponent(&instance, living); - instance.player = temp; - instance.camera->setTarget(temp); - - temp = new CEntity(Box{100, -334, 32 * 6, 32 * 12}, "tree-2"); - instance.entityManager.addEntity(temp, "n:tree"); - temp->collisionLayer = CollisionLayers::LAYER4; - temp->addProperty(EntityProperty::STATIC); - - temp = new CEntity(Box{0, 50, 5000, 20}, Color{255, 0, 0, 255}); - instance.entityManager.addEntity(temp); - temp->collisionLayer = -129; // all layers - temp->addProperty(EntityProperty::STATIC); - - temp = new CEntity(Box{0, -4950, 20, 5000}, Color{255, 0, 0, 255}); - instance.entityManager.addEntity(temp); - temp->collisionLayer = -129; - temp->addProperty(EntityProperty::STATIC); - - temp = new CEntity(Box{5000, -4930, 20, 5000}, Color{255, 0, 0, 255}); - instance.entityManager.addEntity(temp); - temp->collisionLayer = -129; - temp->addProperty(EntityProperty::STATIC); + NFile::loadLevel("island.lvl", &instance); + instance.loadedMap = "island.lvl"; toRestart = false; } @@ -215,6 +162,7 @@ void CGame::_restart() { void CGame::_initRelativePaths() { // ---------------------------------------------------------------------------- // This makes relative paths work in C++ in Xcode by changing directory to the Resources folder inside the .app bundle + #ifdef __APPLE__ CFBundleRef mainBundle = CFBundleGetMainBundle(); CFURLRef resourcesURL = CFBundleCopyResourcesDirectoryURL(mainBundle); char path[PATH_MAX]; @@ -227,6 +175,7 @@ void CGame::_initRelativePaths() { chdir(path); _path = path; NFile::log(LogType::ALERT, "Current Path: ", path); + #endif // ---------------------------------------------------------------------------- } @@ -261,6 +210,11 @@ void CGame::_initLua() { .addFunction("getScreenHeight", &CGame::getHeight) .addFunction("addSprite", (std::string (*)(CSprite*, std::string)) &CAssetManager::addSprite) .addFunction("createSprite", (CSprite* (*)(CSpriteSheet*, Box)) &CAssetManager::createSprite) + .addFunction("log", (void (*)(int, std::string)) &NFile::log) + .addFunction("writeToFile", (void (*)(std::string, std::string)) &NFile::luaWriteToFile) + .addFunction("readFile", &NFile::readFromFile) + .addFunction("clearFile", &NFile::clearFile) + .addFunction("tileSize", &CGame::tileSize) .endNamespace() .beginClass("LuaObject") @@ -308,19 +262,25 @@ void CGame::_initLua() { .addFunction("addFloat", &CComponent::addFloat) .addCFunction("getRelativeMouse", &CComponent::getRelativeMouse) .addCFunction("getMouse", &CComponent::getMouse) - .addData("instance", &CComponent::tempInstance) + .addData("instance", &CComponent::instance) .addData("camera", &CComponent::tempCamera) .addData("object", &CComponent::object) .endClass() .beginClass("Box") .addConstructor() - .addData("x", &Box::x) + .addData("x", &Box::x) // Cannot change these values in lua .addData("y", &Box::y) .addData("w", &Box::w) .addData("h", &Box::h) .endClass() + .beginClass("Position") + .addConstructor() + .addData("x", &Position::x) + .addData("y", &Position::y) + .endClass() + .beginClass("Color") .addConstructor() .endClass() @@ -342,7 +302,7 @@ void CGame::_initLua() { .beginClass("GuiText") .addConstructor() .endClass() - + .beginClass("CombatText") .addConstructor() .endClass() @@ -353,16 +313,16 @@ void CGame::_initLua() { .addData("game", &CInstance::game) .addData("camera", &CInstance::camera) .addData("gravity", &CInstance::gravity) + .addData("isPaused", &CInstance::isPaused) .addFunction("loadAssets", &CInstance::loadAssets) .addFunction("doLine", &CInstance::doLine) -<<<<<<< HEAD - .addFunction("sys" , &CInstance::sys) -======= ->>>>>>> Malaxiz/network + .addFunction("loadLevel", &CInstance::loadLevel) + .addFunction("onSerialize", &CInstance::onSerialize) .endClass() .beginClass("Camera") .addFunction("addCameraShake", &CCamera::addCameraShake) + .addFunction("setTarget", &CCamera::setTarget) .addData("cameraSway", &CCamera::cameraSway) .addFunction("offsetX", &CCamera::offsetX) .addFunction("offsetY", &CCamera::offsetY) @@ -381,6 +341,7 @@ void CGame::_initLua() { .addData("box", &CBody::_rect) .addFunction("setBox", &CBody::setBox) .addFunction("setPosition", &CBody::setPosition) + .addFunction("setDimension", &CBody::setDimension) .endClass() .beginClass("KeyState") @@ -398,9 +359,12 @@ void CGame::_initLua() { .beginClass("EntityManager") .addFunction("addEntity", &CEntityManager::addEntity) .addFunction("addParticle", &CEntityManager::addParticle) + .addFunction("addTile", &CEntityManager::addTile) + .addFunction("removeTile", &CEntityManager::removeTile) .addFunction("getEntity", &CEntityManager::getEntity) .addFunction("getNameOfEntity", &CEntityManager::getNameOfEntity) .addFunction("getEntityAtCoordinate", &CEntityManager::getEntityAtCoordinate) + .addFunction("getEntityCount", &CEntityManager::getEntityCount) .addCFunction("getEntities", &CEntityManager::pushEntities) .addFunction("createColoredEntity", (CEntity* (CEntityManager::*)(Box, Color)) &CEntityManager::createEntity) .addFunction("createSpriteEntity", (CEntity* (CEntityManager::*)(Box, std::string)) &CEntityManager::createEntity) @@ -430,6 +394,7 @@ int CGame::getTime() { } void CGame::_onLoop() { + instance.onLoop(); instance.entityManager.onLoop(&instance); instance.camera->onLoop(); } diff --git a/Fifth/CGame.h b/Third/CGame.h similarity index 95% rename from Fifth/CGame.h rename to Third/CGame.h index f160854..0da86a6 100755 --- a/Fifth/CGame.h +++ b/Third/CGame.h @@ -10,10 +10,8 @@ #define __Third__CGame__ #include -#include #include #include -#include #include #include "CInstance.h" @@ -68,6 +66,7 @@ class CGame { bool toRestart; static int getTime(); + static int tileSize() { return TILE_SIZE; } static int getWidth() { return SCREEN_WIDTH; } static int getHeight() { return SCREEN_HEIGHT; } @@ -75,7 +74,6 @@ class CGame { std::string _path; std::string quickSave; - void loadQuickSave(); }; diff --git a/Third/CGame_onEvent.cpp b/Third/CGame_onEvent.cpp new file mode 100755 index 0000000..825b792 --- /dev/null +++ b/Third/CGame_onEvent.cpp @@ -0,0 +1,117 @@ +// +// CGame_onEvent.cpp +// Fifth +// +// Created by Didrik Munther on 22/09/15. +// Copyright (c) 2015 Didrik Munther. All rights reserved. +// + +#include "CGame.h" +#include "CBackground.h" +#include "CAssetManager.h" + +#include "NFile.h" +#include "NMouse.h" + +#include "CEntity.h" + + +void CGame::_handleKeyStates() { + + if(!isFocused) + return; + + const Uint8* keystate = SDL_GetKeyboardState(NULL); + + if(instance.controller) + instance.controller->onKeyStates(&instance, keystate); + if(ignoreEvents) return; + if(instance.player) + instance.player->onKeyStates(&instance, keystate); +} + +void CGame::_onEvent(SDL_Event* event) { + + //if(event->key.repeat != 0) return; + + switch(event->type) { + case SDL_QUIT: + _isRunning = false; + break; + + case SDL_WINDOWEVENT: + switch(event->window.event) { + case SDL_WINDOWEVENT_FOCUS_GAINED: + isFocused = true; + break; + + case SDL_WINDOWEVENT_FOCUS_LOST: + isFocused = false; + break; + } + break; + + case SDL_TEXTINPUT: + if(instance.controller) + instance.controller->onTextInput(&instance, (std::string)event->text.text); + if(ignoreEvents) break; + if(instance.player) + instance.player->onTextInput(&instance, (std::string)event->text.text); + break; + + case SDL_KEYDOWN: + if(instance.controller) + instance.controller->onEvent(&instance, event->key.keysym.sym, true); + if(ignoreEvents) break; + if(instance.player) + instance.player->onEvent(&instance, event->key.keysym.sym, true); + + switch(event->key.keysym.sym) { + + case SDLK_ESCAPE: + _isRunning = false; + break; + +// case SDLK_4: +// { +// if(instance.window.newWindow(_intro, 640, 480)) { +// NFile::log(LogType::ERROR, "Window.onInit failed: ", SDL_GetError()); +// } +// instance.camera->onInit(&instance.window); +// instance.loadAssets("resources/map/testMap1.assets"); +// restart(); +// } +// break; + + default: + break; + + } + break; + + case SDL_KEYUP: + if(instance.controller) + instance.controller->onEvent(&instance, event->key.keysym.sym, false); + if(ignoreEvents) break; + if(instance.player) + instance.player->onEvent(&instance, event->key.keysym.sym, false); + break; + + default: + break; + + case SDL_MOUSEBUTTONDOWN: + { + int x = NMouse::relativeMouseX(instance.camera); + int y = NMouse::relativeMouseY(instance.camera); + auto entities = instance.entityManager.getEntitiesAtCoordinate(x, y); + + for(auto& i: entities) { + i->onClick(x, y, &instance); + } + + } + break; + } + +} \ No newline at end of file diff --git a/Fifth/CGuiText.cpp b/Third/CGuiText.cpp similarity index 100% rename from Fifth/CGuiText.cpp rename to Third/CGuiText.cpp diff --git a/Fifth/CGuiText.h b/Third/CGuiText.h similarity index 100% rename from Fifth/CGuiText.h rename to Third/CGuiText.h diff --git a/Third/CInstance.cpp b/Third/CInstance.cpp new file mode 100755 index 0000000..aa0bb5f --- /dev/null +++ b/Third/CInstance.cpp @@ -0,0 +1,89 @@ +// +// CInstance.cpp +// Fifth +// +// Created by Didrik Munther on 06/05/15. +// Copyright (c) 2015 Didrik Munther. All rights reserved. +// + +#include "CInstance.h" +#include "NFile.h" +#include "CAssetManager.h" + + +CInstance::CInstance(CGame* game) + : game(game) + , L(luaL_newstate()) + , camera(new CCamera()) + , gravity(3.0f) + , isPaused(false) + , doLoadLevel(false) + , levelToLoad("") + , player(nullptr), controller(nullptr) + , loadedMap("") +{ + +} + +CInstance::~CInstance() { + delete camera; +} + +void CInstance::onLoop() { + if(doLoadLevel) { + _loadLevel(levelToLoad); + levelToLoad = ""; + } +} + +void CInstance::loadAssets(std::string path) { + //CAssetManager::onCleanup(CLEAN_FLAGS::NOT_LUA_SCRIPTS); + NFile::loadAssets(path, this); +} + +void CInstance::doLine(std::string line) { + luaL_dostring(L, line.c_str()); +} + +void CInstance::loadLevel(std::string fileName) { + levelToLoad = fileName; + doLoadLevel = true; +} + +void CInstance::_loadLevel(std::string fileName) { + entityManager.onCleanup(); + player = nullptr; + controller = nullptr; + camera->setTarget(nullptr); + doLoadLevel = false; + if(NFile::loadLevel(fileName, this) == -1) { + NFile::log(LogType::ALERT, "Reverting loaded map to: \"", loadedMap, "\"."); + NFile::loadLevel(loadedMap, this); + } else { + loadedMap = fileName; + } +} + +std::string CInstance::onSerialize() { + rapidjson::Document d; + d.Parse("{}"); + + rapidjson::Value values(rapidjson::kObjectType); + entityManager.onSerialize(&values, &d.GetAllocator(), this); + + values.AddMember("player", rapidjson::Value(entityManager.getNameOfEntity(player).c_str(), d.GetAllocator()), d.GetAllocator()); + values.AddMember("controller", rapidjson::Value(entityManager.getNameOfEntity(controller).c_str(), d.GetAllocator()), d.GetAllocator()); + + d.AddMember("this", values, d.GetAllocator()); + + rapidjson::StringBuffer sb; + rapidjson::Writer writer(sb); + d.Accept(writer); + + return sb.GetString(); +} + +void CInstance::closeInstance() { + entityManager.onCleanup(); + lua_close(L); +} \ No newline at end of file diff --git a/Fifth/CInstance.h b/Third/CInstance.h similarity index 79% rename from Fifth/CInstance.h rename to Third/CInstance.h index 9748bf8..ba91561 100755 --- a/Fifth/CInstance.h +++ b/Third/CInstance.h @@ -43,15 +43,20 @@ class CInstance { CGame* game; float gravity; + bool isPaused; void loadAssets(std::string path); void doLine(std::string line); + void loadLevel(std::string fileName); + std::string levelToLoad = ""; + bool doLoadLevel; + void _loadLevel(std::string fileName); + + std::string onSerialize(); void closeInstance(); - void sys(std::string sys) { - system(sys.c_str()); - } + std::string loadedMap; }; diff --git a/Fifth/CLuaObject.cpp b/Third/CLuaObject.cpp similarity index 68% rename from Fifth/CLuaObject.cpp rename to Third/CLuaObject.cpp index 468a1aa..b10e583 100755 --- a/Fifth/CLuaObject.cpp +++ b/Third/CLuaObject.cpp @@ -36,6 +36,25 @@ void CLuaObject::endCall() { endCall(0, 0); } +std::vector> CLuaObject::getTable(std::string name) { + std::vector> toReturn = {}; + auto L = _script->getState(); + + luabridge::LuaRef table = _object[name]; + if(!table.isNil()) { + table.push(L); + push(L, luabridge::Nil ()); + while(lua_next (L, -2)) { +// luabridge::LuaRef key = luabridge::LuaRef::fromStack (L, -2); +// luabridge::LuaRef val = luabridge::LuaRef::fromStack (L, -1); + toReturn.push_back(std::make_pair(luabridge::LuaRef::fromStack (L, -2), luabridge::LuaRef::fromStack (L, -1))); + lua_pop(L, 1); + } + } + + return toReturn; +} + void CLuaObject::selectScript() { _object.push(_script->getState()); } diff --git a/Fifth/CLuaObject.h b/Third/CLuaObject.h similarity index 91% rename from Fifth/CLuaObject.h rename to Third/CLuaObject.h index c572c9b..e6d27ab 100755 --- a/Fifth/CLuaObject.h +++ b/Third/CLuaObject.h @@ -11,6 +11,7 @@ #include #include +#include #include "CLuaScript.h" @@ -27,6 +28,8 @@ class CLuaObject { void endCall(int argc, int results); void endCall(); + std::vector> getTable(std::string name); + template void callSetFunction(std::string function, T t) { beginCall(function); diff --git a/Fifth/CLuaScript.cpp b/Third/CLuaScript.cpp similarity index 100% rename from Fifth/CLuaScript.cpp rename to Third/CLuaScript.cpp diff --git a/Fifth/CLuaScript.h b/Third/CLuaScript.h similarity index 100% rename from Fifth/CLuaScript.h rename to Third/CLuaScript.h diff --git a/Fifth/CNetwork.cpp b/Third/CNetwork.cpp similarity index 100% rename from Fifth/CNetwork.cpp rename to Third/CNetwork.cpp diff --git a/Fifth/CNetwork.h b/Third/CNetwork.h similarity index 100% rename from Fifth/CNetwork.h rename to Third/CNetwork.h diff --git a/Fifth/CSerializable.cpp b/Third/CSerializable.cpp similarity index 100% rename from Fifth/CSerializable.cpp rename to Third/CSerializable.cpp diff --git a/Fifth/CSerializable.h b/Third/CSerializable.h similarity index 100% rename from Fifth/CSerializable.h rename to Third/CSerializable.h diff --git a/Fifth/CSprite.cpp b/Third/CSprite.cpp similarity index 100% rename from Fifth/CSprite.cpp rename to Third/CSprite.cpp diff --git a/Fifth/CSprite.h b/Third/CSprite.h similarity index 98% rename from Fifth/CSprite.h rename to Third/CSprite.h index 3a5adb8..d3186eb 100755 --- a/Fifth/CSprite.h +++ b/Third/CSprite.h @@ -33,7 +33,7 @@ class CSprite { virtual void onRender(CEntity* entity, Box destination, bool flip, int angle, int alpha, CWindow* window, CCamera* camera, RenderFlags renderFlags); -private: +protected: CSpriteSheet* _spriteSheet; // Don't modify from here Box _source; diff --git a/Fifth/CSpriteSheet.cpp b/Third/CSpriteSheet.cpp similarity index 100% rename from Fifth/CSpriteSheet.cpp rename to Third/CSpriteSheet.cpp diff --git a/Fifth/CSpriteSheet.h b/Third/CSpriteSheet.h similarity index 100% rename from Fifth/CSpriteSheet.h rename to Third/CSpriteSheet.h diff --git a/Fifth/CText.cpp b/Third/CText.cpp similarity index 100% rename from Fifth/CText.cpp rename to Third/CText.cpp diff --git a/Fifth/CText.h b/Third/CText.h similarity index 100% rename from Fifth/CText.h rename to Third/CText.h diff --git a/Third/CTile.cpp b/Third/CTile.cpp new file mode 100755 index 0000000..80a13ae --- /dev/null +++ b/Third/CTile.cpp @@ -0,0 +1,66 @@ +// +// CTile.cpp +// Third +// +// Created by Didrik Munther on 02/04/15. +// Copyright (c) 2015 Didrik Munther. All rights reserved. +// + +#include "CTile.h" +#include "CAssetManager.h" +#include "CWindow.h" +#include "CCamera.h" + +#include "NSurface.h" + + +CTile::CTile(std::string tileset, int posX, int posY) + : CEntity(Box{posX * TILE_SIZE, posY * TILE_SIZE, TILE_SIZE, TILE_SIZE}, "") + , tileset(CAssetManager::getTileset(tileset)) + , tilesetKey(tileset) + , posX(posX), posY(posY) + , tileIndex(0) +{ + addProperty(EntityProperty::STATIC); +} + +void CTile::onRender(CWindow* window, CCamera* camera, RenderFlags renderFlags) { + if(!camera->collision(this)) + return; + + int x = posX * TILE_SIZE - camera->offsetX(); + int y = posY * TILE_SIZE - camera->offsetY(); + + if(tileset) + NSurface::renderSprite(x, y, TILE_SIZE, TILE_SIZE, CAssetManager::getSprite((*tileset)[tileIndex]), window, SDL_RendererFlip::SDL_FLIP_NONE); + else + NSurface::renderRect(x, y, TILE_SIZE, TILE_SIZE, window, 255, 0, 255); +} + +void CTile::onSerialize(rapidjson::Value* value, rapidjson::Document::AllocatorType* alloc, CInstance* instance) { + value->PushBack(rapidjson::Value(posX), *alloc); + value->PushBack(rapidjson::Value(posY), *alloc); +} + +void CTile::updateIndex(std::map>* _tiles) { + tileIndex = 0; + if(tileExist(_tiles, posX, posY-1) && (*_tiles)[posX][posY-1]->tilesetKey == tilesetKey) + tileIndex += 1; + if(tileExist(_tiles, posX+1, posY) && (*_tiles)[posX+1][posY]->tilesetKey == tilesetKey) + tileIndex += 2; + if(tileExist(_tiles, posX, posY+1) && (*_tiles)[posX][posY+1]->tilesetKey == tilesetKey) + tileIndex += 4; + if(tileExist(_tiles, posX-1, posY) && (*_tiles)[posX-1][posY]->tilesetKey == tilesetKey) + tileIndex += 8; +} + +void CTile::updateAdjecent(std::map>* _tiles) { + if(tileExist(_tiles, posX, posY-1)) + (*_tiles)[posX][posY-1]->updateIndex(_tiles); + if(tileExist(_tiles, posX+1, posY)) + (*_tiles)[posX+1][posY]->updateIndex(_tiles); + if(tileExist(_tiles, posX, posY+1)) + (*_tiles)[posX][posY+1]->updateIndex(_tiles); + if(tileExist(_tiles, posX-1, posY)) + (*_tiles)[posX-1][posY]->updateIndex(_tiles); +} \ No newline at end of file diff --git a/Third/CTile.h b/Third/CTile.h new file mode 100755 index 0000000..a2a3bc6 --- /dev/null +++ b/Third/CTile.h @@ -0,0 +1,59 @@ +// +// CTile.h +// Third +// +// Created by Didrik Munther on 02/04/15. +// Copyright (c) 2015 Didrik Munther. All rights reserved. +// + +#ifndef __Third__CTile__ +#define __Third__CTile__ + +#include +#include +#include + +#include "Define.h" +#include "CEntity.h" + + +class CWindow; +class CCamera; + +struct Tileset { + std::string spriteKeys[16]; + + std::string operator[](int i) { + if(i <= 15 && i >= 0) + return spriteKeys[i]; + else + return ""; + } +}; + +class CTile : public CEntity { + +public: + CTile(std::string tileset, int posX, int posY); + + void onRender(CWindow* window, CCamera* camera, RenderFlags renderFlags); + void onSerialize(rapidjson::Value* value, rapidjson::Document::AllocatorType* alloc, CInstance* instance); + + void updateIndex(std::map>* _tiles); + void updateAdjecent(std::map>* _tiles); + + int posX, posY; + + static inline bool tileExist(std::map>* tiles, int posX, int posY) { + return tiles->find(posX) != tiles->end() && (*tiles)[posX].find(posY) != (*tiles)[posX].end(); + } + + std::string tilesetKey; + +private: + Tileset* tileset; + int tileIndex; + +}; + +#endif /* defined(__Third__CTile__) */ diff --git a/Fifth/CWindow.cpp b/Third/CWindow.cpp similarity index 100% rename from Fifth/CWindow.cpp rename to Third/CWindow.cpp diff --git a/Fifth/CWindow.h b/Third/CWindow.h similarity index 100% rename from Fifth/CWindow.h rename to Third/CWindow.h diff --git a/Fifth/Define.h b/Third/Define.h similarity index 78% rename from Fifth/Define.h rename to Third/Define.h index 1942e4e..6da5f77 100755 --- a/Fifth/Define.h +++ b/Third/Define.h @@ -13,14 +13,28 @@ #ifndef __Third__Define__ #define __Third__Define__ -const int SCREEN_WIDTH = 1280; -const int SCREEN_HEIGHT = 720; +const bool DEBUG = false; + +const int SCREEN_WIDTH = 1440; +const int SCREEN_HEIGHT = 920; const int SCREEN_BPP = 32; -const int GAME_INTERVAL = 60; +const int GAME_INTERVAL = 60; +const int TILE_SIZE = 64; const char LOG_FILE[] = "debug.log"; +struct Position { + int x, y; + + Position(int x, int y) + : x(x), y(y) {} +}; + +struct Area { + int w, h; +}; + struct Box { int x, y; int w, h; @@ -38,10 +52,6 @@ struct Box { operator SDL_Rect() const { return SDL_Rect{x, y, w, h}; } }; -struct Area { - int w, h; -}; - enum RenderFlags { CLEAR = 0, COLLISION_BORDERS = 1 << 0, diff --git a/Fifth/LuaBridge/LuaBridge.h b/Third/LuaBridge/LuaBridge.h similarity index 100% rename from Fifth/LuaBridge/LuaBridge.h rename to Third/LuaBridge/LuaBridge.h diff --git a/Fifth/LuaBridge/RefCountedObject.h b/Third/LuaBridge/RefCountedObject.h similarity index 100% rename from Fifth/LuaBridge/RefCountedObject.h rename to Third/LuaBridge/RefCountedObject.h diff --git a/Fifth/LuaBridge/RefCountedPtr.h b/Third/LuaBridge/RefCountedPtr.h similarity index 100% rename from Fifth/LuaBridge/RefCountedPtr.h rename to Third/LuaBridge/RefCountedPtr.h diff --git a/Fifth/LuaBridge/detail/CFunctions.h b/Third/LuaBridge/detail/CFunctions.h similarity index 100% rename from Fifth/LuaBridge/detail/CFunctions.h rename to Third/LuaBridge/detail/CFunctions.h diff --git a/Fifth/LuaBridge/detail/ClassInfo.h b/Third/LuaBridge/detail/ClassInfo.h similarity index 100% rename from Fifth/LuaBridge/detail/ClassInfo.h rename to Third/LuaBridge/detail/ClassInfo.h diff --git a/Fifth/LuaBridge/detail/Constructor.h b/Third/LuaBridge/detail/Constructor.h similarity index 100% rename from Fifth/LuaBridge/detail/Constructor.h rename to Third/LuaBridge/detail/Constructor.h diff --git a/Fifth/LuaBridge/detail/FuncTraits.h b/Third/LuaBridge/detail/FuncTraits.h similarity index 100% rename from Fifth/LuaBridge/detail/FuncTraits.h rename to Third/LuaBridge/detail/FuncTraits.h diff --git a/Fifth/LuaBridge/detail/Iterator.h b/Third/LuaBridge/detail/Iterator.h similarity index 100% rename from Fifth/LuaBridge/detail/Iterator.h rename to Third/LuaBridge/detail/Iterator.h diff --git a/Fifth/LuaBridge/detail/LuaException.h b/Third/LuaBridge/detail/LuaException.h similarity index 100% rename from Fifth/LuaBridge/detail/LuaException.h rename to Third/LuaBridge/detail/LuaException.h diff --git a/Fifth/LuaBridge/detail/LuaHelpers.h b/Third/LuaBridge/detail/LuaHelpers.h similarity index 100% rename from Fifth/LuaBridge/detail/LuaHelpers.h rename to Third/LuaBridge/detail/LuaHelpers.h diff --git a/Fifth/LuaBridge/detail/LuaRef.h b/Third/LuaBridge/detail/LuaRef.h similarity index 100% rename from Fifth/LuaBridge/detail/LuaRef.h rename to Third/LuaBridge/detail/LuaRef.h diff --git a/Fifth/LuaBridge/detail/Namespace.h b/Third/LuaBridge/detail/Namespace.h similarity index 100% rename from Fifth/LuaBridge/detail/Namespace.h rename to Third/LuaBridge/detail/Namespace.h diff --git a/Fifth/LuaBridge/detail/Stack.h b/Third/LuaBridge/detail/Stack.h similarity index 100% rename from Fifth/LuaBridge/detail/Stack.h rename to Third/LuaBridge/detail/Stack.h diff --git a/Fifth/LuaBridge/detail/TypeList.h b/Third/LuaBridge/detail/TypeList.h similarity index 100% rename from Fifth/LuaBridge/detail/TypeList.h rename to Third/LuaBridge/detail/TypeList.h diff --git a/Fifth/LuaBridge/detail/TypeTraits.h b/Third/LuaBridge/detail/TypeTraits.h similarity index 100% rename from Fifth/LuaBridge/detail/TypeTraits.h rename to Third/LuaBridge/detail/TypeTraits.h diff --git a/Fifth/LuaBridge/detail/Userdata.h b/Third/LuaBridge/detail/Userdata.h similarity index 100% rename from Fifth/LuaBridge/detail/Userdata.h rename to Third/LuaBridge/detail/Userdata.h diff --git a/Fifth/LuaBridge/detail/dump.h b/Third/LuaBridge/detail/dump.h similarity index 100% rename from Fifth/LuaBridge/detail/dump.h rename to Third/LuaBridge/detail/dump.h diff --git a/Fifth/NFile.cpp b/Third/NFile.cpp similarity index 50% rename from Fifth/NFile.cpp rename to Third/NFile.cpp index 9d6eae9..f3beaf6 100755 --- a/Fifth/NFile.cpp +++ b/Third/NFile.cpp @@ -13,6 +13,8 @@ #include "NFile.h" #include "Define.h" #include "CAssetManager.h" +#include "CEntityManager.h" +#include "CTile.h" rapidjson::Document NFile::loadJsonFile(std::string fileName) { @@ -59,7 +61,7 @@ std::string NFile::readFromFile(std::string fileName) { } void NFile::loadAssets(std::string fileName, CInstance* instance) { - + fileName = "resources/map/" + fileName; log(LogType::ALERT, "Loading map: \"", fileName.c_str(), "\""); rapidjson::Document d = loadJsonFile(fileName); @@ -73,10 +75,40 @@ void NFile::loadAssets(std::string fileName, CInstance* instance) { loadSpriteSheets(&d, instance); loadSprites(&d); loadScripts(&d, instance); + loadTilesets(&d); log(LogType::SUCCESS, "Loaded map: \"", fileName.c_str(), "\" as \"", d["name"].GetString(), "\""); } +int NFile::loadLevel(std::string fileName, CInstance* instance) { + fileName = "resources/level/" + fileName; + log(LogType::ALERT, "Loading level: \"", fileName.c_str(), "\""); + + rapidjson::Document d = loadJsonFile(fileName); + + std::string error = ""; + if(d.HasMember("JSONParsingError")) + error = d["JSONParsingError"].GetString(); + else if(!d["this"].HasMember("player")) + error = "No player"; + else if(!d["this"].HasMember("controller")) + error = "No controller"; + + if(error != "") { + NFile::log(LogType::ERROR, "Could not load level \"", fileName, "\". (Reason: \"", error, "\")"); + return -1; + } + + instance->entityManager.onDeserialize(&d["this"], instance); + instance->player = instance->entityManager.getEntity(d["this"]["player"].GetString()); + instance->controller = instance->entityManager.getEntity(d["this"]["controller"].GetString()); + instance->camera->setTarget(instance->player); + + NFile::log(LogType::SUCCESS, "Loaded level: \"", fileName.c_str(), "\""); + + return 0; +} + void NFile::loadFonts(rapidjson::Document* d) { if(!d->HasMember("fonts")) return; @@ -112,13 +144,63 @@ void NFile::loadSprites(rapidjson::Document* d) { const rapidjson::Value& sprites = (*d)["sprites"]; // Sprites for(rapidjson::SizeType i = 0; i < sprites.Size(); i++) { const rapidjson::Value& sprite = sprites[i]; - if(!(sprite.HasMember("name") && sprite.HasMember("spriteSheetKey") && sprite.HasMember("offsets"))) + if(!(sprite.HasMember("name") && sprite.HasMember("spriteSheetKey"))) + continue; + + if(sprite.HasMember("offsets")) { + const rapidjson::Value& offsets = sprite["offsets"]; + CAssetManager::addSprite(sprite["name"].GetString(), + sprite["spriteSheetKey"].GetString(), + Box{offsets[0].GetInt(), offsets[1].GetInt(), offsets[2].GetInt(), offsets[3].GetInt()}); + } else if(sprite.HasMember("tileset")) { + std::string name = sprite["name"].GetString(); + std::string spriteSheetKey = sprite["spriteSheetKey"].GetString(); + int startX = sprite["tileset"][0].GetInt(); + int startY = sprite["tileset"][1].GetInt(); + int tileSize = sprite["tileset"][2].GetInt(); + + for(int y = 0; y < 4; y++) { + for(int x = 0; x < 4; x++) { + CAssetManager::addSprite(name + std::to_string(y * 4 + x), + spriteSheetKey, + Box{startX + x * tileSize, startY + y * tileSize, tileSize, tileSize}); + } + } + } + } +} + +void NFile::loadTilesets(rapidjson::Document* d) { + if(!d->HasMember("tilesets")) + return; + + const rapidjson::Value& tilesets = (*d)["tilesets"]; // Sprite sheets + for(rapidjson::SizeType i = 0; i < tilesets.Size(); i++) { + const rapidjson::Value& tileset = tilesets[i]; + if(!tileset.HasMember("name")) continue; - const rapidjson::Value& offsets = sprite["offsets"]; - CAssetManager::addSprite(sprite["name"].GetString(), - sprite["spriteSheetKey"].GetString(), - Box{offsets[0].GetInt(), offsets[1].GetInt(), offsets[2].GetInt(), offsets[3].GetInt()}); + if(tileset.HasMember("sprites")) { + const rapidjson::Value& sprites = tileset["sprites"]; + if(sprites.Size() < 16) + continue; + + Tileset* set = new Tileset; + for(rapidjson::SizeType sprite = 0; sprite < 16; sprite++) { + set->spriteKeys[sprite] = sprites[sprite].GetString(); + } + CAssetManager::addTileset(tileset["name"].GetString(), set); + } else if(tileset.HasMember("spriteSequence")) { + std::string stem = tileset["spriteSequence"].GetString(); + + Tileset* set = new Tileset; + for(int sprite = 0; sprite < 16; sprite++) { + set->spriteKeys[sprite] = stem + std::to_string(sprite); + } + CAssetManager::addTileset(tileset["name"].GetString(), set); + } + + } } @@ -137,6 +219,31 @@ void NFile::loadScripts(rapidjson::Document* d, CInstance* instance) { } } +void NFile::log(int type, std::string msg) { + std::string prepend = ""; + + LogType logType = (LogType)type; + switch(logType) { + case SUCCESS: + prepend = "[LSUCCESS] "; + break; + case ALERT: + prepend = "[LALERT] "; + break; + case ERROR: + prepend = "[LERROR] "; + break; + case WARNING: + prepend = "[LWARNING] "; + break; + } + + msg = prepend + msg + "\n"; + + _print(msg); + writeToFile(LOG_FILE, msg); +} + void NFile::clearFile(std::string fileName) { std::ofstream file(fileName); file.close(); diff --git a/Fifth/NFile.h b/Third/NFile.h similarity index 92% rename from Fifth/NFile.h rename to Third/NFile.h index a29dd44..aa0f359 100755 --- a/Fifth/NFile.h +++ b/Third/NFile.h @@ -42,6 +42,7 @@ class NFile { // Load functions static rapidjson::Document loadJsonFile(std::string fileName); static void loadAssets(std::string fileName, CInstance* instance); + static int loadLevel(std::string fileName, CInstance* instance); static void execCommand(rapidjson::Document command, CInstance* instance); static void parseCommands(rapidjson::Document commands, CInstance* instance); @@ -56,6 +57,10 @@ class NFile { file.close(); } + static void luaWriteToFile(std::string fileName, std::string msg) { + writeToFile(fileName, msg); + } + static void clearFile(std::string fileName); // Misc functions @@ -92,6 +97,8 @@ class NFile { } + static void log(int type, std::string msg); + private: /* Invalid operands error here means that @@ -123,6 +130,7 @@ class NFile { static void loadFonts(rapidjson::Document* d); static void loadSpriteSheets(rapidjson::Document* d, CInstance* instance); static void loadSprites(rapidjson::Document* d); + static void loadTilesets(rapidjson::Document* d); static void loadScripts(rapidjson::Document* d, CInstance* instance); }; diff --git a/Fifth/NMouse.cpp b/Third/NMouse.cpp similarity index 100% rename from Fifth/NMouse.cpp rename to Third/NMouse.cpp diff --git a/Fifth/NMouse.h b/Third/NMouse.h similarity index 100% rename from Fifth/NMouse.h rename to Third/NMouse.h diff --git a/Fifth/NSurface.cpp b/Third/NSurface.cpp similarity index 99% rename from Fifth/NSurface.cpp rename to Third/NSurface.cpp index a73d22b..39ed07f 100755 --- a/Fifth/NSurface.cpp +++ b/Third/NSurface.cpp @@ -24,6 +24,7 @@ Line Line::normalizeWithCamera(CCamera* camera) { void NSurface::renderRect(int x, int y, int w, int h, CWindow* window, int r, int g, int b, int a /* = 255 */) { SDL_Rect rect{x, y, w, h}; + SDL_SetRenderDrawColor(window->getRenderer(), r, g, b, a); SDL_RenderFillRect(window->getRenderer(), &rect); } diff --git a/Fifth/NSurface.h b/Third/NSurface.h similarity index 100% rename from Fifth/NSurface.h rename to Third/NSurface.h diff --git a/Fifth/ResourcePath.hpp b/Third/ResourcePath.hpp similarity index 100% rename from Fifth/ResourcePath.hpp rename to Third/ResourcePath.hpp diff --git a/Fifth/ResourcePath.mm b/Third/ResourcePath.mm similarity index 100% rename from Fifth/ResourcePath.mm rename to Third/ResourcePath.mm diff --git a/Fifth/lua/Makefile b/Third/lua/Makefile similarity index 100% rename from Fifth/lua/Makefile rename to Third/lua/Makefile diff --git a/Fifth/lua/lapi.c b/Third/lua/lapi.c similarity index 100% rename from Fifth/lua/lapi.c rename to Third/lua/lapi.c diff --git a/Fifth/lua/lapi.h b/Third/lua/lapi.h similarity index 100% rename from Fifth/lua/lapi.h rename to Third/lua/lapi.h diff --git a/Fifth/lua/lapi.o b/Third/lua/lapi.o similarity index 100% rename from Fifth/lua/lapi.o rename to Third/lua/lapi.o diff --git a/Fifth/lua/lauxlib.c b/Third/lua/lauxlib.c similarity index 100% rename from Fifth/lua/lauxlib.c rename to Third/lua/lauxlib.c diff --git a/Fifth/lua/lauxlib.h b/Third/lua/lauxlib.h similarity index 100% rename from Fifth/lua/lauxlib.h rename to Third/lua/lauxlib.h diff --git a/Fifth/lua/lauxlib.o b/Third/lua/lauxlib.o similarity index 100% rename from Fifth/lua/lauxlib.o rename to Third/lua/lauxlib.o diff --git a/Fifth/lua/lbaselib.c b/Third/lua/lbaselib.c similarity index 100% rename from Fifth/lua/lbaselib.c rename to Third/lua/lbaselib.c diff --git a/Fifth/lua/lbaselib.o b/Third/lua/lbaselib.o similarity index 100% rename from Fifth/lua/lbaselib.o rename to Third/lua/lbaselib.o diff --git a/Fifth/lua/lcode.c b/Third/lua/lcode.c similarity index 100% rename from Fifth/lua/lcode.c rename to Third/lua/lcode.c diff --git a/Fifth/lua/lcode.h b/Third/lua/lcode.h similarity index 100% rename from Fifth/lua/lcode.h rename to Third/lua/lcode.h diff --git a/Fifth/lua/lcode.o b/Third/lua/lcode.o similarity index 100% rename from Fifth/lua/lcode.o rename to Third/lua/lcode.o diff --git a/Fifth/lua/ldblib.c b/Third/lua/ldblib.c similarity index 100% rename from Fifth/lua/ldblib.c rename to Third/lua/ldblib.c diff --git a/Fifth/lua/ldblib.o b/Third/lua/ldblib.o similarity index 100% rename from Fifth/lua/ldblib.o rename to Third/lua/ldblib.o diff --git a/Fifth/lua/ldebug.c b/Third/lua/ldebug.c similarity index 100% rename from Fifth/lua/ldebug.c rename to Third/lua/ldebug.c diff --git a/Fifth/lua/ldebug.h b/Third/lua/ldebug.h similarity index 100% rename from Fifth/lua/ldebug.h rename to Third/lua/ldebug.h diff --git a/Fifth/lua/ldebug.o b/Third/lua/ldebug.o similarity index 100% rename from Fifth/lua/ldebug.o rename to Third/lua/ldebug.o diff --git a/Fifth/lua/ldo.c b/Third/lua/ldo.c similarity index 100% rename from Fifth/lua/ldo.c rename to Third/lua/ldo.c diff --git a/Fifth/lua/ldo.h b/Third/lua/ldo.h similarity index 100% rename from Fifth/lua/ldo.h rename to Third/lua/ldo.h diff --git a/Fifth/lua/ldo.o b/Third/lua/ldo.o similarity index 100% rename from Fifth/lua/ldo.o rename to Third/lua/ldo.o diff --git a/Fifth/lua/ldump.c b/Third/lua/ldump.c similarity index 100% rename from Fifth/lua/ldump.c rename to Third/lua/ldump.c diff --git a/Fifth/lua/ldump.o b/Third/lua/ldump.o similarity index 100% rename from Fifth/lua/ldump.o rename to Third/lua/ldump.o diff --git a/Fifth/lua/lfunc.c b/Third/lua/lfunc.c similarity index 100% rename from Fifth/lua/lfunc.c rename to Third/lua/lfunc.c diff --git a/Fifth/lua/lfunc.h b/Third/lua/lfunc.h similarity index 100% rename from Fifth/lua/lfunc.h rename to Third/lua/lfunc.h diff --git a/Fifth/lua/lfunc.o b/Third/lua/lfunc.o similarity index 100% rename from Fifth/lua/lfunc.o rename to Third/lua/lfunc.o diff --git a/Fifth/lua/lgc.c b/Third/lua/lgc.c similarity index 100% rename from Fifth/lua/lgc.c rename to Third/lua/lgc.c diff --git a/Fifth/lua/lgc.h b/Third/lua/lgc.h similarity index 100% rename from Fifth/lua/lgc.h rename to Third/lua/lgc.h diff --git a/Fifth/lua/lgc.o b/Third/lua/lgc.o similarity index 100% rename from Fifth/lua/lgc.o rename to Third/lua/lgc.o diff --git a/Fifth/lua/liblua.a b/Third/lua/liblua.a similarity index 100% rename from Fifth/lua/liblua.a rename to Third/lua/liblua.a diff --git a/Fifth/lua/linit.c b/Third/lua/linit.c similarity index 100% rename from Fifth/lua/linit.c rename to Third/lua/linit.c diff --git a/Fifth/lua/linit.o b/Third/lua/linit.o similarity index 100% rename from Fifth/lua/linit.o rename to Third/lua/linit.o diff --git a/Fifth/lua/liolib.c b/Third/lua/liolib.c similarity index 100% rename from Fifth/lua/liolib.c rename to Third/lua/liolib.c diff --git a/Fifth/lua/liolib.o b/Third/lua/liolib.o similarity index 100% rename from Fifth/lua/liolib.o rename to Third/lua/liolib.o diff --git a/Fifth/lua/llex.c b/Third/lua/llex.c similarity index 100% rename from Fifth/lua/llex.c rename to Third/lua/llex.c diff --git a/Fifth/lua/llex.h b/Third/lua/llex.h similarity index 100% rename from Fifth/lua/llex.h rename to Third/lua/llex.h diff --git a/Fifth/lua/llex.o b/Third/lua/llex.o similarity index 100% rename from Fifth/lua/llex.o rename to Third/lua/llex.o diff --git a/Fifth/lua/llimits.h b/Third/lua/llimits.h similarity index 100% rename from Fifth/lua/llimits.h rename to Third/lua/llimits.h diff --git a/Fifth/lua/lmathlib.c b/Third/lua/lmathlib.c similarity index 100% rename from Fifth/lua/lmathlib.c rename to Third/lua/lmathlib.c diff --git a/Fifth/lua/lmathlib.o b/Third/lua/lmathlib.o similarity index 100% rename from Fifth/lua/lmathlib.o rename to Third/lua/lmathlib.o diff --git a/Fifth/lua/lmem.c b/Third/lua/lmem.c similarity index 100% rename from Fifth/lua/lmem.c rename to Third/lua/lmem.c diff --git a/Fifth/lua/lmem.h b/Third/lua/lmem.h similarity index 100% rename from Fifth/lua/lmem.h rename to Third/lua/lmem.h diff --git a/Fifth/lua/lmem.o b/Third/lua/lmem.o similarity index 100% rename from Fifth/lua/lmem.o rename to Third/lua/lmem.o diff --git a/Fifth/lua/loadlib.c b/Third/lua/loadlib.c similarity index 100% rename from Fifth/lua/loadlib.c rename to Third/lua/loadlib.c diff --git a/Fifth/lua/loadlib.o b/Third/lua/loadlib.o similarity index 100% rename from Fifth/lua/loadlib.o rename to Third/lua/loadlib.o diff --git a/Fifth/lua/lobject.c b/Third/lua/lobject.c similarity index 100% rename from Fifth/lua/lobject.c rename to Third/lua/lobject.c diff --git a/Fifth/lua/lobject.h b/Third/lua/lobject.h similarity index 100% rename from Fifth/lua/lobject.h rename to Third/lua/lobject.h diff --git a/Fifth/lua/lobject.o b/Third/lua/lobject.o similarity index 100% rename from Fifth/lua/lobject.o rename to Third/lua/lobject.o diff --git a/Fifth/lua/lopcodes.c b/Third/lua/lopcodes.c similarity index 100% rename from Fifth/lua/lopcodes.c rename to Third/lua/lopcodes.c diff --git a/Fifth/lua/lopcodes.h b/Third/lua/lopcodes.h similarity index 100% rename from Fifth/lua/lopcodes.h rename to Third/lua/lopcodes.h diff --git a/Fifth/lua/lopcodes.o b/Third/lua/lopcodes.o similarity index 100% rename from Fifth/lua/lopcodes.o rename to Third/lua/lopcodes.o diff --git a/Fifth/lua/loslib.c b/Third/lua/loslib.c similarity index 100% rename from Fifth/lua/loslib.c rename to Third/lua/loslib.c diff --git a/Fifth/lua/loslib.o b/Third/lua/loslib.o similarity index 100% rename from Fifth/lua/loslib.o rename to Third/lua/loslib.o diff --git a/Fifth/lua/lparser.c b/Third/lua/lparser.c similarity index 100% rename from Fifth/lua/lparser.c rename to Third/lua/lparser.c diff --git a/Fifth/lua/lparser.h b/Third/lua/lparser.h similarity index 100% rename from Fifth/lua/lparser.h rename to Third/lua/lparser.h diff --git a/Fifth/lua/lparser.o b/Third/lua/lparser.o similarity index 100% rename from Fifth/lua/lparser.o rename to Third/lua/lparser.o diff --git a/Fifth/lua/lstate.c b/Third/lua/lstate.c similarity index 100% rename from Fifth/lua/lstate.c rename to Third/lua/lstate.c diff --git a/Fifth/lua/lstate.h b/Third/lua/lstate.h similarity index 100% rename from Fifth/lua/lstate.h rename to Third/lua/lstate.h diff --git a/Fifth/lua/lstate.o b/Third/lua/lstate.o similarity index 100% rename from Fifth/lua/lstate.o rename to Third/lua/lstate.o diff --git a/Fifth/lua/lstring.c b/Third/lua/lstring.c similarity index 100% rename from Fifth/lua/lstring.c rename to Third/lua/lstring.c diff --git a/Fifth/lua/lstring.h b/Third/lua/lstring.h similarity index 100% rename from Fifth/lua/lstring.h rename to Third/lua/lstring.h diff --git a/Fifth/lua/lstring.o b/Third/lua/lstring.o similarity index 100% rename from Fifth/lua/lstring.o rename to Third/lua/lstring.o diff --git a/Fifth/lua/lstrlib.c b/Third/lua/lstrlib.c similarity index 100% rename from Fifth/lua/lstrlib.c rename to Third/lua/lstrlib.c diff --git a/Fifth/lua/lstrlib.o b/Third/lua/lstrlib.o similarity index 100% rename from Fifth/lua/lstrlib.o rename to Third/lua/lstrlib.o diff --git a/Fifth/lua/ltable.c b/Third/lua/ltable.c similarity index 100% rename from Fifth/lua/ltable.c rename to Third/lua/ltable.c diff --git a/Fifth/lua/ltable.h b/Third/lua/ltable.h similarity index 100% rename from Fifth/lua/ltable.h rename to Third/lua/ltable.h diff --git a/Fifth/lua/ltable.o b/Third/lua/ltable.o similarity index 100% rename from Fifth/lua/ltable.o rename to Third/lua/ltable.o diff --git a/Fifth/lua/ltablib.c b/Third/lua/ltablib.c similarity index 100% rename from Fifth/lua/ltablib.c rename to Third/lua/ltablib.c diff --git a/Fifth/lua/ltablib.o b/Third/lua/ltablib.o similarity index 100% rename from Fifth/lua/ltablib.o rename to Third/lua/ltablib.o diff --git a/Fifth/lua/ltm.c b/Third/lua/ltm.c similarity index 100% rename from Fifth/lua/ltm.c rename to Third/lua/ltm.c diff --git a/Fifth/lua/ltm.h b/Third/lua/ltm.h similarity index 100% rename from Fifth/lua/ltm.h rename to Third/lua/ltm.h diff --git a/Fifth/lua/ltm.o b/Third/lua/ltm.o similarity index 100% rename from Fifth/lua/ltm.o rename to Third/lua/ltm.o diff --git a/Fifth/lua/lua b/Third/lua/lua similarity index 100% rename from Fifth/lua/lua rename to Third/lua/lua diff --git a/Fifth/lua/lua.c b/Third/lua/lua.c similarity index 100% rename from Fifth/lua/lua.c rename to Third/lua/lua.c diff --git a/Fifth/lua/lua.h b/Third/lua/lua.h similarity index 100% rename from Fifth/lua/lua.h rename to Third/lua/lua.h diff --git a/Fifth/lua/lua.o b/Third/lua/lua.o similarity index 100% rename from Fifth/lua/lua.o rename to Third/lua/lua.o diff --git a/Fifth/lua/luac b/Third/lua/luac similarity index 100% rename from Fifth/lua/luac rename to Third/lua/luac diff --git a/Fifth/lua/luac.c b/Third/lua/luac.c similarity index 100% rename from Fifth/lua/luac.c rename to Third/lua/luac.c diff --git a/Fifth/lua/luac.o b/Third/lua/luac.o similarity index 100% rename from Fifth/lua/luac.o rename to Third/lua/luac.o diff --git a/Fifth/lua/luaconf.h b/Third/lua/luaconf.h similarity index 100% rename from Fifth/lua/luaconf.h rename to Third/lua/luaconf.h diff --git a/Fifth/lua/lualib.h b/Third/lua/lualib.h similarity index 100% rename from Fifth/lua/lualib.h rename to Third/lua/lualib.h diff --git a/Fifth/lua/lundump.c b/Third/lua/lundump.c similarity index 100% rename from Fifth/lua/lundump.c rename to Third/lua/lundump.c diff --git a/Fifth/lua/lundump.h b/Third/lua/lundump.h similarity index 100% rename from Fifth/lua/lundump.h rename to Third/lua/lundump.h diff --git a/Fifth/lua/lundump.o b/Third/lua/lundump.o similarity index 100% rename from Fifth/lua/lundump.o rename to Third/lua/lundump.o diff --git a/Fifth/lua/lvm.c b/Third/lua/lvm.c similarity index 100% rename from Fifth/lua/lvm.c rename to Third/lua/lvm.c diff --git a/Fifth/lua/lvm.h b/Third/lua/lvm.h similarity index 100% rename from Fifth/lua/lvm.h rename to Third/lua/lvm.h diff --git a/Fifth/lua/lvm.o b/Third/lua/lvm.o similarity index 100% rename from Fifth/lua/lvm.o rename to Third/lua/lvm.o diff --git a/Fifth/lua/lzio.c b/Third/lua/lzio.c similarity index 100% rename from Fifth/lua/lzio.c rename to Third/lua/lzio.c diff --git a/Fifth/lua/lzio.h b/Third/lua/lzio.h similarity index 100% rename from Fifth/lua/lzio.h rename to Third/lua/lzio.h diff --git a/Fifth/lua/lzio.o b/Third/lua/lzio.o similarity index 100% rename from Fifth/lua/lzio.o rename to Third/lua/lzio.o diff --git a/Fifth/lua/print.c b/Third/lua/print.c similarity index 100% rename from Fifth/lua/print.c rename to Third/lua/print.c diff --git a/Fifth/lua/print.o b/Third/lua/print.o similarity index 100% rename from Fifth/lua/print.o rename to Third/lua/print.o diff --git a/Fifth/main.cpp b/Third/main.cpp similarity index 100% rename from Fifth/main.cpp rename to Third/main.cpp diff --git a/Fifth/rapidjson/allocators.h b/Third/rapidjson/allocators.h similarity index 100% rename from Fifth/rapidjson/allocators.h rename to Third/rapidjson/allocators.h diff --git a/Fifth/rapidjson/document.h b/Third/rapidjson/document.h similarity index 100% rename from Fifth/rapidjson/document.h rename to Third/rapidjson/document.h diff --git a/Fifth/rapidjson/encodedstream.h b/Third/rapidjson/encodedstream.h similarity index 100% rename from Fifth/rapidjson/encodedstream.h rename to Third/rapidjson/encodedstream.h diff --git a/Fifth/rapidjson/encodings.h b/Third/rapidjson/encodings.h similarity index 100% rename from Fifth/rapidjson/encodings.h rename to Third/rapidjson/encodings.h diff --git a/Fifth/rapidjson/error/en.h b/Third/rapidjson/error/en.h similarity index 100% rename from Fifth/rapidjson/error/en.h rename to Third/rapidjson/error/en.h diff --git a/Fifth/rapidjson/error/error.h b/Third/rapidjson/error/error.h similarity index 100% rename from Fifth/rapidjson/error/error.h rename to Third/rapidjson/error/error.h diff --git a/Fifth/rapidjson/filereadstream.h b/Third/rapidjson/filereadstream.h similarity index 100% rename from Fifth/rapidjson/filereadstream.h rename to Third/rapidjson/filereadstream.h diff --git a/Fifth/rapidjson/filewritestream.h b/Third/rapidjson/filewritestream.h similarity index 100% rename from Fifth/rapidjson/filewritestream.h rename to Third/rapidjson/filewritestream.h diff --git a/Fifth/rapidjson/internal/biginteger.h b/Third/rapidjson/internal/biginteger.h similarity index 100% rename from Fifth/rapidjson/internal/biginteger.h rename to Third/rapidjson/internal/biginteger.h diff --git a/Fifth/rapidjson/internal/diyfp.h b/Third/rapidjson/internal/diyfp.h similarity index 100% rename from Fifth/rapidjson/internal/diyfp.h rename to Third/rapidjson/internal/diyfp.h diff --git a/Fifth/rapidjson/internal/dtoa.h b/Third/rapidjson/internal/dtoa.h similarity index 100% rename from Fifth/rapidjson/internal/dtoa.h rename to Third/rapidjson/internal/dtoa.h diff --git a/Fifth/rapidjson/internal/ieee754.h b/Third/rapidjson/internal/ieee754.h similarity index 100% rename from Fifth/rapidjson/internal/ieee754.h rename to Third/rapidjson/internal/ieee754.h diff --git a/Fifth/rapidjson/internal/itoa.h b/Third/rapidjson/internal/itoa.h similarity index 100% rename from Fifth/rapidjson/internal/itoa.h rename to Third/rapidjson/internal/itoa.h diff --git a/Fifth/rapidjson/internal/meta.h b/Third/rapidjson/internal/meta.h similarity index 100% rename from Fifth/rapidjson/internal/meta.h rename to Third/rapidjson/internal/meta.h diff --git a/Fifth/rapidjson/internal/pow10.h b/Third/rapidjson/internal/pow10.h similarity index 100% rename from Fifth/rapidjson/internal/pow10.h rename to Third/rapidjson/internal/pow10.h diff --git a/Fifth/rapidjson/internal/stack.h b/Third/rapidjson/internal/stack.h similarity index 100% rename from Fifth/rapidjson/internal/stack.h rename to Third/rapidjson/internal/stack.h diff --git a/Fifth/rapidjson/internal/strfunc.h b/Third/rapidjson/internal/strfunc.h similarity index 100% rename from Fifth/rapidjson/internal/strfunc.h rename to Third/rapidjson/internal/strfunc.h diff --git a/Fifth/rapidjson/internal/strtod.h b/Third/rapidjson/internal/strtod.h similarity index 100% rename from Fifth/rapidjson/internal/strtod.h rename to Third/rapidjson/internal/strtod.h diff --git a/Fifth/rapidjson/memorybuffer.h b/Third/rapidjson/memorybuffer.h similarity index 100% rename from Fifth/rapidjson/memorybuffer.h rename to Third/rapidjson/memorybuffer.h diff --git a/Fifth/rapidjson/memorystream.h b/Third/rapidjson/memorystream.h similarity index 100% rename from Fifth/rapidjson/memorystream.h rename to Third/rapidjson/memorystream.h diff --git a/Fifth/rapidjson/msinttypes/inttypes.h b/Third/rapidjson/msinttypes/inttypes.h similarity index 100% rename from Fifth/rapidjson/msinttypes/inttypes.h rename to Third/rapidjson/msinttypes/inttypes.h diff --git a/Fifth/rapidjson/msinttypes/stdint.h b/Third/rapidjson/msinttypes/stdint.h similarity index 100% rename from Fifth/rapidjson/msinttypes/stdint.h rename to Third/rapidjson/msinttypes/stdint.h diff --git a/Fifth/rapidjson/pointer.h b/Third/rapidjson/pointer.h similarity index 100% rename from Fifth/rapidjson/pointer.h rename to Third/rapidjson/pointer.h diff --git a/Fifth/rapidjson/prettywriter.h b/Third/rapidjson/prettywriter.h similarity index 100% rename from Fifth/rapidjson/prettywriter.h rename to Third/rapidjson/prettywriter.h diff --git a/Fifth/rapidjson/rapidjson.h b/Third/rapidjson/rapidjson.h similarity index 100% rename from Fifth/rapidjson/rapidjson.h rename to Third/rapidjson/rapidjson.h diff --git a/Fifth/rapidjson/reader.h b/Third/rapidjson/reader.h similarity index 100% rename from Fifth/rapidjson/reader.h rename to Third/rapidjson/reader.h diff --git a/Fifth/rapidjson/stringbuffer.h b/Third/rapidjson/stringbuffer.h similarity index 100% rename from Fifth/rapidjson/stringbuffer.h rename to Third/rapidjson/stringbuffer.h diff --git a/Fifth/rapidjson/writer.h b/Third/rapidjson/writer.h similarity index 100% rename from Fifth/rapidjson/writer.h rename to Third/rapidjson/writer.h diff --git a/Third/resources/config/binds.cfg b/Third/resources/config/binds.cfg new file mode 100755 index 0000000..e247878 --- /dev/null +++ b/Third/resources/config/binds.cfg @@ -0,0 +1,27 @@ +{ + "binds": [ + {"_0": "self.component.instance.camera.cameraSway = self.component.instance.camera.cameraSway + 10"}, + {"_9": "camera = self.component.instance.camera; if(camera.cameraSway <= 10) then camera.cameraSway = 1; else camera.cameraSway = camera.cameraSway - 10 end"}, + {"_3": "self.parent.entityManager:toggleRenderFlag(RenderFlags.COLLISION_BORDERS)"}, + {"_5": "self.component.instance.game:restart()"}, + {"_6": "chars = \"abcdefghijklmnopqrstuvxyz \"; toSay = \"\"; for i = 0, 20 do rand = math.random(string.len(chars)); toSay = toSay .. string.sub(chars, rand, rand) end; self.component.instance.player:say(toSay, \"TESTFONT\", ChatBubbleType.YELL)"}, + {"_7": "self.component.instance.camera:addCameraShake(100)"}, + + {"_m": "self.parent.entityManager:toggleRenderFlag(RenderFlags.COLLISION_AREA)"}, + {"_n": "self.parent.entityManager:toggleRenderFlag(RenderFlags.COLLISION_GRID)"}, + {"_b": "self.parent.entityManager:toggleRenderFlag(RenderFlags.ENTITY_GRID)"}, + {"_x": "self.parent.entityManager:toggleRenderFlag(RenderFlags.RENDER_COMBAT_TEXT)"}, + {"_RIGHTBRACKET": "self.component.instance.gravity = 0.3"}, + {"_LEFTBRACKET": "self.component.instance.gravity = 0"}, + + {"_j": "mX, mY = self.component:getRelativeMouse(); temp = self.parent.entityManager:createSpriteEntity(Box(mX, mY, 16 * 4, 32 * 4), 'test7'); self.parent.entityManager:addEntity(temp, '');temp:addComponent(self.component.instance, game.getScript('Standard/Living'));temp:addComponent(self.component.instance, game.getScript('Standard/Npc'));temp:addComponent(self.component.instance, game.getScript('Standard/Movable'));temp:getComponent('Standard/Npc').target = self.component.instance.player;temp:getComponent('Standard/Movable'):onDeserialize('{\"walking_movement_speed\":3.0, \"jumpPower\":17.0}')"}, + + {"_l": "mX, mY = self.component:getRelativeMouse();temp = self.parent.entityManager:createColoredEntity(Box(mX, mY, 40, 40), Color(0, 0, 255, 255));self.parent.entityManager:addEntity(temp, '');temp:addProperty(EntityProperty.STATIC)"} + ], + + "commands": [ + {"_t": "tile dirt"}, + {"_y": "tile stone"}, + {"_u": "tilearea"} + ] +} \ No newline at end of file diff --git a/Fifth/resources/gfx/Sprites/Art/paintings/base.png b/Third/resources/gfx/Sprites/Art/paintings/base.png similarity index 100% rename from Fifth/resources/gfx/Sprites/Art/paintings/base.png rename to Third/resources/gfx/Sprites/Art/paintings/base.png diff --git a/Fifth/resources/gfx/Sprites/Art/paintings/painting 1.png b/Third/resources/gfx/Sprites/Art/paintings/painting 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/Art/paintings/painting 1.png rename to Third/resources/gfx/Sprites/Art/paintings/painting 1.png diff --git a/Fifth/resources/gfx/Sprites/Art/paintings/painting 2.png b/Third/resources/gfx/Sprites/Art/paintings/painting 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/Art/paintings/painting 2.png rename to Third/resources/gfx/Sprites/Art/paintings/painting 2.png diff --git a/Fifth/resources/gfx/Sprites/Art/paintings/painting 3.png b/Third/resources/gfx/Sprites/Art/paintings/painting 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/Art/paintings/painting 3.png rename to Third/resources/gfx/Sprites/Art/paintings/painting 3.png diff --git a/Fifth/resources/gfx/Sprites/Evil cat/cat frame 0.png b/Third/resources/gfx/Sprites/Evil cat/cat frame 0.png similarity index 100% rename from Fifth/resources/gfx/Sprites/Evil cat/cat frame 0.png rename to Third/resources/gfx/Sprites/Evil cat/cat frame 0.png diff --git a/Fifth/resources/gfx/Sprites/Evil cat/cat frame 1.png b/Third/resources/gfx/Sprites/Evil cat/cat frame 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/Evil cat/cat frame 1.png rename to Third/resources/gfx/Sprites/Evil cat/cat frame 1.png diff --git a/Fifth/resources/gfx/Sprites/Evil cat/cat frame 2.png b/Third/resources/gfx/Sprites/Evil cat/cat frame 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/Evil cat/cat frame 2.png rename to Third/resources/gfx/Sprites/Evil cat/cat frame 2.png diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 1.png b/Third/resources/gfx/Sprites/backgrounds/background 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/backgrounds/background 1.png rename to Third/resources/gfx/Sprites/backgrounds/background 1.png diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 2.png b/Third/resources/gfx/Sprites/backgrounds/background 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/backgrounds/background 2.png rename to Third/resources/gfx/Sprites/backgrounds/background 2.png diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 3.png b/Third/resources/gfx/Sprites/backgrounds/background 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/backgrounds/background 3.png rename to Third/resources/gfx/Sprites/backgrounds/background 3.png diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 4.png b/Third/resources/gfx/Sprites/backgrounds/background 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/backgrounds/background 4.png rename to Third/resources/gfx/Sprites/backgrounds/background 4.png diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 5.png b/Third/resources/gfx/Sprites/backgrounds/background 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/backgrounds/background 5.png rename to Third/resources/gfx/Sprites/backgrounds/background 5.png diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 6.png b/Third/resources/gfx/Sprites/backgrounds/background 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/backgrounds/background 6.png rename to Third/resources/gfx/Sprites/backgrounds/background 6.png diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 7.png b/Third/resources/gfx/Sprites/backgrounds/background 7.png similarity index 100% rename from Fifth/resources/gfx/Sprites/backgrounds/background 7.png rename to Third/resources/gfx/Sprites/backgrounds/background 7.png diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 8.png b/Third/resources/gfx/Sprites/backgrounds/background 8.png similarity index 100% rename from Fifth/resources/gfx/Sprites/backgrounds/background 8.png rename to Third/resources/gfx/Sprites/backgrounds/background 8.png diff --git a/Fifth/resources/gfx/Sprites/backgrounds/background 9.png b/Third/resources/gfx/Sprites/backgrounds/background 9.png similarity index 100% rename from Fifth/resources/gfx/Sprites/backgrounds/background 9.png rename to Third/resources/gfx/Sprites/backgrounds/background 9.png diff --git a/Fifth/resources/gfx/Sprites/barrels/Barrel 1.png b/Third/resources/gfx/Sprites/barrels/Barrel 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/barrels/Barrel 1.png rename to Third/resources/gfx/Sprites/barrels/Barrel 1.png diff --git a/Fifth/resources/gfx/Sprites/barrels/Barrel 2.png b/Third/resources/gfx/Sprites/barrels/Barrel 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/barrels/Barrel 2.png rename to Third/resources/gfx/Sprites/barrels/Barrel 2.png diff --git a/Fifth/resources/gfx/Sprites/barrels/Barrel 3.png b/Third/resources/gfx/Sprites/barrels/Barrel 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/barrels/Barrel 3.png rename to Third/resources/gfx/Sprites/barrels/Barrel 3.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 1 [16x16].png b/Third/resources/gfx/Sprites/blocks (16 x 16)/block 1 [16x16].png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 1 [16x16].png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/block 1 [16x16].png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 2 [16x16].png b/Third/resources/gfx/Sprites/blocks (16 x 16)/block 2 [16x16].png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 2 [16x16].png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/block 2 [16x16].png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 3 [16x16].png b/Third/resources/gfx/Sprites/blocks (16 x 16)/block 3 [16x16].png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 3 [16x16].png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/block 3 [16x16].png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 4 [16x16].png b/Third/resources/gfx/Sprites/blocks (16 x 16)/block 4 [16x16].png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 4 [16x16].png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/block 4 [16x16].png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 5 [16x16] .png b/Third/resources/gfx/Sprites/blocks (16 x 16)/block 5 [16x16] .png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 5 [16x16] .png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/block 5 [16x16] .png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 6.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/block 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/block 6.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/block 6.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 1.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 1.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 1.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 10.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 10.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 10.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 10.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 11.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 11.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 11.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 11.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 12.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 12.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 12.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 12.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 13.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 13.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 13.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 13.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 14.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 14.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 14.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 14.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 15.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 15.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 15.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 15.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 2.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 2.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 2.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 3.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 3.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 3.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 4.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 4.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 4.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 5.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 5.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 5.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 6.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 6.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 6.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 7.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 7.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 7.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 7.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 8.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 8.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 8.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 8.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 9.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 9.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/bricks 9.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/bricks 9.png diff --git a/Fifth/resources/gfx/Sprites/blocks (16 x 16)/tile 1.png b/Third/resources/gfx/Sprites/blocks (16 x 16)/tile 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/blocks (16 x 16)/tile 1.png rename to Third/resources/gfx/Sprites/blocks (16 x 16)/tile 1.png diff --git a/Fifth/resources/gfx/Sprites/chests/chest 1.png b/Third/resources/gfx/Sprites/chests/chest 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/chests/chest 1.png rename to Third/resources/gfx/Sprites/chests/chest 1.png diff --git a/Fifth/resources/gfx/Sprites/chests/chest 2.png b/Third/resources/gfx/Sprites/chests/chest 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/chests/chest 2.png rename to Third/resources/gfx/Sprites/chests/chest 2.png diff --git a/Fifth/resources/gfx/Sprites/chests/chest 3.png b/Third/resources/gfx/Sprites/chests/chest 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/chests/chest 3.png rename to Third/resources/gfx/Sprites/chests/chest 3.png diff --git a/Fifth/resources/gfx/Sprites/chests/chest 4.png b/Third/resources/gfx/Sprites/chests/chest 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/chests/chest 4.png rename to Third/resources/gfx/Sprites/chests/chest 4.png diff --git a/Fifth/resources/gfx/Sprites/chests/chest 5.png b/Third/resources/gfx/Sprites/chests/chest 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/chests/chest 5.png rename to Third/resources/gfx/Sprites/chests/chest 5.png diff --git a/Fifth/resources/gfx/Sprites/clouds/cloud 1.png b/Third/resources/gfx/Sprites/clouds/cloud 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/clouds/cloud 1.png rename to Third/resources/gfx/Sprites/clouds/cloud 1.png diff --git a/Fifth/resources/gfx/Sprites/clouds/cloud 2.png b/Third/resources/gfx/Sprites/clouds/cloud 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/clouds/cloud 2.png rename to Third/resources/gfx/Sprites/clouds/cloud 2.png diff --git a/Fifth/resources/gfx/Sprites/clouds/cloud 3.png b/Third/resources/gfx/Sprites/clouds/cloud 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/clouds/cloud 3.png rename to Third/resources/gfx/Sprites/clouds/cloud 3.png diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 1.png b/Third/resources/gfx/Sprites/cracks/cracks 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/cracks/cracks 1.png rename to Third/resources/gfx/Sprites/cracks/cracks 1.png diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 10.png b/Third/resources/gfx/Sprites/cracks/cracks 10.png similarity index 100% rename from Fifth/resources/gfx/Sprites/cracks/cracks 10.png rename to Third/resources/gfx/Sprites/cracks/cracks 10.png diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 2.png b/Third/resources/gfx/Sprites/cracks/cracks 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/cracks/cracks 2.png rename to Third/resources/gfx/Sprites/cracks/cracks 2.png diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 3.png b/Third/resources/gfx/Sprites/cracks/cracks 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/cracks/cracks 3.png rename to Third/resources/gfx/Sprites/cracks/cracks 3.png diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 4.png b/Third/resources/gfx/Sprites/cracks/cracks 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/cracks/cracks 4.png rename to Third/resources/gfx/Sprites/cracks/cracks 4.png diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 5.png b/Third/resources/gfx/Sprites/cracks/cracks 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/cracks/cracks 5.png rename to Third/resources/gfx/Sprites/cracks/cracks 5.png diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 6.png b/Third/resources/gfx/Sprites/cracks/cracks 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/cracks/cracks 6.png rename to Third/resources/gfx/Sprites/cracks/cracks 6.png diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 7.png b/Third/resources/gfx/Sprites/cracks/cracks 7.png similarity index 100% rename from Fifth/resources/gfx/Sprites/cracks/cracks 7.png rename to Third/resources/gfx/Sprites/cracks/cracks 7.png diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 8.png b/Third/resources/gfx/Sprites/cracks/cracks 8.png similarity index 100% rename from Fifth/resources/gfx/Sprites/cracks/cracks 8.png rename to Third/resources/gfx/Sprites/cracks/cracks 8.png diff --git a/Fifth/resources/gfx/Sprites/cracks/cracks 9.png b/Third/resources/gfx/Sprites/cracks/cracks 9.png similarity index 100% rename from Fifth/resources/gfx/Sprites/cracks/cracks 9.png rename to Third/resources/gfx/Sprites/cracks/cracks 9.png diff --git a/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 1.png b/Third/resources/gfx/Sprites/crosshairs/hitmarker 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/crosshairs/hitmarker 1.png rename to Third/resources/gfx/Sprites/crosshairs/hitmarker 1.png diff --git a/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 2.png b/Third/resources/gfx/Sprites/crosshairs/hitmarker 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/crosshairs/hitmarker 2.png rename to Third/resources/gfx/Sprites/crosshairs/hitmarker 2.png diff --git a/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 3.png b/Third/resources/gfx/Sprites/crosshairs/hitmarker 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/crosshairs/hitmarker 3.png rename to Third/resources/gfx/Sprites/crosshairs/hitmarker 3.png diff --git a/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 4.png b/Third/resources/gfx/Sprites/crosshairs/hitmarker 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/crosshairs/hitmarker 4.png rename to Third/resources/gfx/Sprites/crosshairs/hitmarker 4.png diff --git a/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 5.png b/Third/resources/gfx/Sprites/crosshairs/hitmarker 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/crosshairs/hitmarker 5.png rename to Third/resources/gfx/Sprites/crosshairs/hitmarker 5.png diff --git a/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 6.png b/Third/resources/gfx/Sprites/crosshairs/hitmarker 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/crosshairs/hitmarker 6.png rename to Third/resources/gfx/Sprites/crosshairs/hitmarker 6.png diff --git a/Fifth/resources/gfx/Sprites/crosshairs/hitmarker 7.png b/Third/resources/gfx/Sprites/crosshairs/hitmarker 7.png similarity index 100% rename from Fifth/resources/gfx/Sprites/crosshairs/hitmarker 7.png rename to Third/resources/gfx/Sprites/crosshairs/hitmarker 7.png diff --git a/Fifth/resources/gfx/Sprites/enemies/bee.png b/Third/resources/gfx/Sprites/enemies/bee.png similarity index 100% rename from Fifth/resources/gfx/Sprites/enemies/bee.png rename to Third/resources/gfx/Sprites/enemies/bee.png diff --git a/Fifth/resources/gfx/Sprites/enemies/enemy 1 idle f1.png b/Third/resources/gfx/Sprites/enemies/enemy 1 idle f1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/enemies/enemy 1 idle f1.png rename to Third/resources/gfx/Sprites/enemies/enemy 1 idle f1.png diff --git a/Fifth/resources/gfx/Sprites/enemies/enemy 1 idle f2.png b/Third/resources/gfx/Sprites/enemies/enemy 1 idle f2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/enemies/enemy 1 idle f2.png rename to Third/resources/gfx/Sprites/enemies/enemy 1 idle f2.png diff --git a/Fifth/resources/gfx/Sprites/enemies/enemy 1 running f1.png b/Third/resources/gfx/Sprites/enemies/enemy 1 running f1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/enemies/enemy 1 running f1.png rename to Third/resources/gfx/Sprites/enemies/enemy 1 running f1.png diff --git a/Fifth/resources/gfx/Sprites/enemies/enemy 1 running f2.png b/Third/resources/gfx/Sprites/enemies/enemy 1 running f2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/enemies/enemy 1 running f2.png rename to Third/resources/gfx/Sprites/enemies/enemy 1 running f2.png diff --git a/Fifth/resources/gfx/Sprites/enemies/fred [HD].png b/Third/resources/gfx/Sprites/enemies/fred [HD].png similarity index 100% rename from Fifth/resources/gfx/Sprites/enemies/fred [HD].png rename to Third/resources/gfx/Sprites/enemies/fred [HD].png diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 1.png b/Third/resources/gfx/Sprites/enemies/yrl/yrl AL 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 1.png rename to Third/resources/gfx/Sprites/enemies/yrl/yrl AL 1.png diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 2.png b/Third/resources/gfx/Sprites/enemies/yrl/yrl AL 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 2.png rename to Third/resources/gfx/Sprites/enemies/yrl/yrl AL 2.png diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 3.png b/Third/resources/gfx/Sprites/enemies/yrl/yrl AL 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 3.png rename to Third/resources/gfx/Sprites/enemies/yrl/yrl AL 3.png diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 4.png b/Third/resources/gfx/Sprites/enemies/yrl/yrl AL 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/enemies/yrl/yrl AL 4.png rename to Third/resources/gfx/Sprites/enemies/yrl/yrl AL 4.png diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl body 1.png b/Third/resources/gfx/Sprites/enemies/yrl/yrl body 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/enemies/yrl/yrl body 1.png rename to Third/resources/gfx/Sprites/enemies/yrl/yrl body 1.png diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 1.png b/Third/resources/gfx/Sprites/enemies/yrl/yrl face 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 1.png rename to Third/resources/gfx/Sprites/enemies/yrl/yrl face 1.png diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 2.png b/Third/resources/gfx/Sprites/enemies/yrl/yrl face 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 2.png rename to Third/resources/gfx/Sprites/enemies/yrl/yrl face 2.png diff --git a/Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 3.png b/Third/resources/gfx/Sprites/enemies/yrl/yrl face 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/enemies/yrl/yrl face 3.png rename to Third/resources/gfx/Sprites/enemies/yrl/yrl face 3.png diff --git a/Fifth/resources/gfx/Sprites/houses/House 1.png b/Third/resources/gfx/Sprites/houses/House 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/houses/House 1.png rename to Third/resources/gfx/Sprites/houses/House 1.png diff --git a/Fifth/resources/gfx/Sprites/houses/mini house 1.png b/Third/resources/gfx/Sprites/houses/mini house 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/houses/mini house 1.png rename to Third/resources/gfx/Sprites/houses/mini house 1.png diff --git a/Fifth/resources/gfx/Sprites/icons/icon [basic].png b/Third/resources/gfx/Sprites/icons/icon [basic].png similarity index 100% rename from Fifth/resources/gfx/Sprites/icons/icon [basic].png rename to Third/resources/gfx/Sprites/icons/icon [basic].png diff --git a/Fifth/resources/gfx/Sprites/icons/icon.png b/Third/resources/gfx/Sprites/icons/icon.png similarity index 100% rename from Fifth/resources/gfx/Sprites/icons/icon.png rename to Third/resources/gfx/Sprites/icons/icon.png diff --git a/Fifth/resources/gfx/Sprites/icons/icon_1.png b/Third/resources/gfx/Sprites/icons/icon_1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/icons/icon_1.png rename to Third/resources/gfx/Sprites/icons/icon_1.png diff --git a/Fifth/resources/gfx/Sprites/icons/icon_2.png b/Third/resources/gfx/Sprites/icons/icon_2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/icons/icon_2.png rename to Third/resources/gfx/Sprites/icons/icon_2.png diff --git a/Fifth/resources/gfx/Sprites/items/apple 1.png b/Third/resources/gfx/Sprites/items/apple 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/items/apple 1.png rename to Third/resources/gfx/Sprites/items/apple 1.png diff --git a/Fifth/resources/gfx/Sprites/items/apple 2.png b/Third/resources/gfx/Sprites/items/apple 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/items/apple 2.png rename to Third/resources/gfx/Sprites/items/apple 2.png diff --git a/Fifth/resources/gfx/Sprites/items/apple 3.png b/Third/resources/gfx/Sprites/items/apple 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/items/apple 3.png rename to Third/resources/gfx/Sprites/items/apple 3.png diff --git a/Fifth/resources/gfx/Sprites/items/bomb 1.png b/Third/resources/gfx/Sprites/items/bomb 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/items/bomb 1.png rename to Third/resources/gfx/Sprites/items/bomb 1.png diff --git a/Fifth/resources/gfx/Sprites/items/bomb 2.png b/Third/resources/gfx/Sprites/items/bomb 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/items/bomb 2.png rename to Third/resources/gfx/Sprites/items/bomb 2.png diff --git a/Fifth/resources/gfx/Sprites/items/bomb 3.png b/Third/resources/gfx/Sprites/items/bomb 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/items/bomb 3.png rename to Third/resources/gfx/Sprites/items/bomb 3.png diff --git a/Fifth/resources/gfx/Sprites/items/bomb 4.png b/Third/resources/gfx/Sprites/items/bomb 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/items/bomb 4.png rename to Third/resources/gfx/Sprites/items/bomb 4.png diff --git a/Fifth/resources/gfx/Sprites/items/bomb 5.png b/Third/resources/gfx/Sprites/items/bomb 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/items/bomb 5.png rename to Third/resources/gfx/Sprites/items/bomb 5.png diff --git a/Fifth/resources/gfx/Sprites/items/bomb 6.png b/Third/resources/gfx/Sprites/items/bomb 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/items/bomb 6.png rename to Third/resources/gfx/Sprites/items/bomb 6.png diff --git a/Fifth/resources/gfx/Sprites/nature/Tree 1.png b/Third/resources/gfx/Sprites/nature/Tree 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/Tree 1.png rename to Third/resources/gfx/Sprites/nature/Tree 1.png diff --git a/Fifth/resources/gfx/Sprites/nature/Tree 2.png b/Third/resources/gfx/Sprites/nature/Tree 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/Tree 2.png rename to Third/resources/gfx/Sprites/nature/Tree 2.png diff --git a/Fifth/resources/gfx/Sprites/nature/birch 0.png b/Third/resources/gfx/Sprites/nature/birch 0.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/birch 0.png rename to Third/resources/gfx/Sprites/nature/birch 0.png diff --git a/Fifth/resources/gfx/Sprites/nature/birch 1.png b/Third/resources/gfx/Sprites/nature/birch 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/birch 1.png rename to Third/resources/gfx/Sprites/nature/birch 1.png diff --git a/Fifth/resources/gfx/Sprites/nature/birch 2.png b/Third/resources/gfx/Sprites/nature/birch 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/birch 2.png rename to Third/resources/gfx/Sprites/nature/birch 2.png diff --git a/Fifth/resources/gfx/Sprites/nature/birch 3.png b/Third/resources/gfx/Sprites/nature/birch 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/birch 3.png rename to Third/resources/gfx/Sprites/nature/birch 3.png diff --git a/Fifth/resources/gfx/Sprites/nature/birch.png b/Third/resources/gfx/Sprites/nature/birch.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/birch.png rename to Third/resources/gfx/Sprites/nature/birch.png diff --git a/Fifth/resources/gfx/Sprites/nature/bush 1.png b/Third/resources/gfx/Sprites/nature/bush 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/bush 1.png rename to Third/resources/gfx/Sprites/nature/bush 1.png diff --git a/Fifth/resources/gfx/Sprites/nature/bush 10.png b/Third/resources/gfx/Sprites/nature/bush 10.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/bush 10.png rename to Third/resources/gfx/Sprites/nature/bush 10.png diff --git a/Fifth/resources/gfx/Sprites/nature/bush 11.png b/Third/resources/gfx/Sprites/nature/bush 11.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/bush 11.png rename to Third/resources/gfx/Sprites/nature/bush 11.png diff --git a/Fifth/resources/gfx/Sprites/nature/bush 12.png b/Third/resources/gfx/Sprites/nature/bush 12.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/bush 12.png rename to Third/resources/gfx/Sprites/nature/bush 12.png diff --git a/Fifth/resources/gfx/Sprites/nature/bush 13.png b/Third/resources/gfx/Sprites/nature/bush 13.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/bush 13.png rename to Third/resources/gfx/Sprites/nature/bush 13.png diff --git a/Fifth/resources/gfx/Sprites/nature/bush 14.png b/Third/resources/gfx/Sprites/nature/bush 14.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/bush 14.png rename to Third/resources/gfx/Sprites/nature/bush 14.png diff --git a/Fifth/resources/gfx/Sprites/nature/bush 2.png b/Third/resources/gfx/Sprites/nature/bush 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/bush 2.png rename to Third/resources/gfx/Sprites/nature/bush 2.png diff --git a/Fifth/resources/gfx/Sprites/nature/bush 3.png b/Third/resources/gfx/Sprites/nature/bush 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/bush 3.png rename to Third/resources/gfx/Sprites/nature/bush 3.png diff --git a/Fifth/resources/gfx/Sprites/nature/bush 4.png b/Third/resources/gfx/Sprites/nature/bush 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/bush 4.png rename to Third/resources/gfx/Sprites/nature/bush 4.png diff --git a/Fifth/resources/gfx/Sprites/nature/bush 5.png b/Third/resources/gfx/Sprites/nature/bush 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/bush 5.png rename to Third/resources/gfx/Sprites/nature/bush 5.png diff --git a/Fifth/resources/gfx/Sprites/nature/bush 6.png b/Third/resources/gfx/Sprites/nature/bush 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/bush 6.png rename to Third/resources/gfx/Sprites/nature/bush 6.png diff --git a/Fifth/resources/gfx/Sprites/nature/bush 7.png b/Third/resources/gfx/Sprites/nature/bush 7.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/bush 7.png rename to Third/resources/gfx/Sprites/nature/bush 7.png diff --git a/Fifth/resources/gfx/Sprites/nature/bush 8.png b/Third/resources/gfx/Sprites/nature/bush 8.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/bush 8.png rename to Third/resources/gfx/Sprites/nature/bush 8.png diff --git a/Fifth/resources/gfx/Sprites/nature/bush 9.png b/Third/resources/gfx/Sprites/nature/bush 9.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/bush 9.png rename to Third/resources/gfx/Sprites/nature/bush 9.png diff --git a/Fifth/resources/gfx/Sprites/nature/grass 1.png b/Third/resources/gfx/Sprites/nature/grass 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/grass 1.png rename to Third/resources/gfx/Sprites/nature/grass 1.png diff --git a/Fifth/resources/gfx/Sprites/nature/grass 2.png b/Third/resources/gfx/Sprites/nature/grass 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/grass 2.png rename to Third/resources/gfx/Sprites/nature/grass 2.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 1.png b/Third/resources/gfx/Sprites/nature/plant 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 1.png rename to Third/resources/gfx/Sprites/nature/plant 1.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 10.png b/Third/resources/gfx/Sprites/nature/plant 10.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 10.png rename to Third/resources/gfx/Sprites/nature/plant 10.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 11.png b/Third/resources/gfx/Sprites/nature/plant 11.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 11.png rename to Third/resources/gfx/Sprites/nature/plant 11.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 12.png b/Third/resources/gfx/Sprites/nature/plant 12.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 12.png rename to Third/resources/gfx/Sprites/nature/plant 12.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 13.png b/Third/resources/gfx/Sprites/nature/plant 13.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 13.png rename to Third/resources/gfx/Sprites/nature/plant 13.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 14.png b/Third/resources/gfx/Sprites/nature/plant 14.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 14.png rename to Third/resources/gfx/Sprites/nature/plant 14.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 15.png b/Third/resources/gfx/Sprites/nature/plant 15.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 15.png rename to Third/resources/gfx/Sprites/nature/plant 15.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 16.png b/Third/resources/gfx/Sprites/nature/plant 16.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 16.png rename to Third/resources/gfx/Sprites/nature/plant 16.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 17.png b/Third/resources/gfx/Sprites/nature/plant 17.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 17.png rename to Third/resources/gfx/Sprites/nature/plant 17.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 18.png b/Third/resources/gfx/Sprites/nature/plant 18.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 18.png rename to Third/resources/gfx/Sprites/nature/plant 18.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 19.png b/Third/resources/gfx/Sprites/nature/plant 19.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 19.png rename to Third/resources/gfx/Sprites/nature/plant 19.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 2.png b/Third/resources/gfx/Sprites/nature/plant 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 2.png rename to Third/resources/gfx/Sprites/nature/plant 2.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 20.png b/Third/resources/gfx/Sprites/nature/plant 20.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 20.png rename to Third/resources/gfx/Sprites/nature/plant 20.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 21.png b/Third/resources/gfx/Sprites/nature/plant 21.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 21.png rename to Third/resources/gfx/Sprites/nature/plant 21.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 3.png b/Third/resources/gfx/Sprites/nature/plant 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 3.png rename to Third/resources/gfx/Sprites/nature/plant 3.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 4.png b/Third/resources/gfx/Sprites/nature/plant 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 4.png rename to Third/resources/gfx/Sprites/nature/plant 4.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 5.png b/Third/resources/gfx/Sprites/nature/plant 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 5.png rename to Third/resources/gfx/Sprites/nature/plant 5.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 6.png b/Third/resources/gfx/Sprites/nature/plant 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 6.png rename to Third/resources/gfx/Sprites/nature/plant 6.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 7.png b/Third/resources/gfx/Sprites/nature/plant 7.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 7.png rename to Third/resources/gfx/Sprites/nature/plant 7.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 8.png b/Third/resources/gfx/Sprites/nature/plant 8.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 8.png rename to Third/resources/gfx/Sprites/nature/plant 8.png diff --git a/Fifth/resources/gfx/Sprites/nature/plant 9.png b/Third/resources/gfx/Sprites/nature/plant 9.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/plant 9.png rename to Third/resources/gfx/Sprites/nature/plant 9.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 10.png b/Third/resources/gfx/Sprites/nature/tree 10.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 10.png rename to Third/resources/gfx/Sprites/nature/tree 10.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 11.png b/Third/resources/gfx/Sprites/nature/tree 11.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 11.png rename to Third/resources/gfx/Sprites/nature/tree 11.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 12.png b/Third/resources/gfx/Sprites/nature/tree 12.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 12.png rename to Third/resources/gfx/Sprites/nature/tree 12.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 13.png b/Third/resources/gfx/Sprites/nature/tree 13.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 13.png rename to Third/resources/gfx/Sprites/nature/tree 13.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 14.png b/Third/resources/gfx/Sprites/nature/tree 14.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 14.png rename to Third/resources/gfx/Sprites/nature/tree 14.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 15.png b/Third/resources/gfx/Sprites/nature/tree 15.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 15.png rename to Third/resources/gfx/Sprites/nature/tree 15.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 16.png b/Third/resources/gfx/Sprites/nature/tree 16.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 16.png rename to Third/resources/gfx/Sprites/nature/tree 16.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 17.png b/Third/resources/gfx/Sprites/nature/tree 17.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 17.png rename to Third/resources/gfx/Sprites/nature/tree 17.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 18.png b/Third/resources/gfx/Sprites/nature/tree 18.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 18.png rename to Third/resources/gfx/Sprites/nature/tree 18.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 19.png b/Third/resources/gfx/Sprites/nature/tree 19.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 19.png rename to Third/resources/gfx/Sprites/nature/tree 19.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 20.png b/Third/resources/gfx/Sprites/nature/tree 20.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 20.png rename to Third/resources/gfx/Sprites/nature/tree 20.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 21.png b/Third/resources/gfx/Sprites/nature/tree 21.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 21.png rename to Third/resources/gfx/Sprites/nature/tree 21.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 22.png b/Third/resources/gfx/Sprites/nature/tree 22.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 22.png rename to Third/resources/gfx/Sprites/nature/tree 22.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 23.png b/Third/resources/gfx/Sprites/nature/tree 23.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 23.png rename to Third/resources/gfx/Sprites/nature/tree 23.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 24.png b/Third/resources/gfx/Sprites/nature/tree 24.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 24.png rename to Third/resources/gfx/Sprites/nature/tree 24.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 25.png b/Third/resources/gfx/Sprites/nature/tree 25.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 25.png rename to Third/resources/gfx/Sprites/nature/tree 25.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 26.png b/Third/resources/gfx/Sprites/nature/tree 26.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 26.png rename to Third/resources/gfx/Sprites/nature/tree 26.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 3.png b/Third/resources/gfx/Sprites/nature/tree 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 3.png rename to Third/resources/gfx/Sprites/nature/tree 3.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 4.png b/Third/resources/gfx/Sprites/nature/tree 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 4.png rename to Third/resources/gfx/Sprites/nature/tree 4.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 5.png b/Third/resources/gfx/Sprites/nature/tree 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 5.png rename to Third/resources/gfx/Sprites/nature/tree 5.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 6.png b/Third/resources/gfx/Sprites/nature/tree 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 6.png rename to Third/resources/gfx/Sprites/nature/tree 6.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 7.png b/Third/resources/gfx/Sprites/nature/tree 7.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 7.png rename to Third/resources/gfx/Sprites/nature/tree 7.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 8.png b/Third/resources/gfx/Sprites/nature/tree 8.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 8.png rename to Third/resources/gfx/Sprites/nature/tree 8.png diff --git a/Fifth/resources/gfx/Sprites/nature/tree 9.png b/Third/resources/gfx/Sprites/nature/tree 9.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/tree 9.png rename to Third/resources/gfx/Sprites/nature/tree 9.png diff --git a/Fifth/resources/gfx/Sprites/nature/vine 1.png b/Third/resources/gfx/Sprites/nature/vine 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/vine 1.png rename to Third/resources/gfx/Sprites/nature/vine 1.png diff --git a/Fifth/resources/gfx/Sprites/nature/vine 2.png b/Third/resources/gfx/Sprites/nature/vine 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/vine 2.png rename to Third/resources/gfx/Sprites/nature/vine 2.png diff --git a/Fifth/resources/gfx/Sprites/nature/vine 3.png b/Third/resources/gfx/Sprites/nature/vine 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/vine 3.png rename to Third/resources/gfx/Sprites/nature/vine 3.png diff --git a/Fifth/resources/gfx/Sprites/nature/vine 4.png b/Third/resources/gfx/Sprites/nature/vine 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/vine 4.png rename to Third/resources/gfx/Sprites/nature/vine 4.png diff --git a/Fifth/resources/gfx/Sprites/nature/vine 5.png b/Third/resources/gfx/Sprites/nature/vine 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/nature/vine 5.png rename to Third/resources/gfx/Sprites/nature/vine 5.png diff --git a/Fifth/resources/gfx/Sprites/other/baloon(0).png b/Third/resources/gfx/Sprites/other/baloon(0).png similarity index 100% rename from Fifth/resources/gfx/Sprites/other/baloon(0).png rename to Third/resources/gfx/Sprites/other/baloon(0).png diff --git a/Fifth/resources/gfx/Sprites/other/baloon(1).png b/Third/resources/gfx/Sprites/other/baloon(1).png similarity index 100% rename from Fifth/resources/gfx/Sprites/other/baloon(1).png rename to Third/resources/gfx/Sprites/other/baloon(1).png diff --git a/Fifth/resources/gfx/Sprites/other/baloon(2).png b/Third/resources/gfx/Sprites/other/baloon(2).png similarity index 100% rename from Fifth/resources/gfx/Sprites/other/baloon(2).png rename to Third/resources/gfx/Sprites/other/baloon(2).png diff --git a/Fifth/resources/gfx/Sprites/other/bench.png b/Third/resources/gfx/Sprites/other/bench.png similarity index 100% rename from Fifth/resources/gfx/Sprites/other/bench.png rename to Third/resources/gfx/Sprites/other/bench.png diff --git a/Fifth/resources/gfx/Sprites/other/holy stone 1.png b/Third/resources/gfx/Sprites/other/holy stone 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/other/holy stone 1.png rename to Third/resources/gfx/Sprites/other/holy stone 1.png diff --git a/Fifth/resources/gfx/Sprites/other/moon 1.png b/Third/resources/gfx/Sprites/other/moon 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/other/moon 1.png rename to Third/resources/gfx/Sprites/other/moon 1.png diff --git a/Fifth/resources/gfx/Sprites/other/moon 2.png b/Third/resources/gfx/Sprites/other/moon 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/other/moon 2.png rename to Third/resources/gfx/Sprites/other/moon 2.png diff --git a/Fifth/resources/gfx/Sprites/other/portal 1.png b/Third/resources/gfx/Sprites/other/portal 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/other/portal 1.png rename to Third/resources/gfx/Sprites/other/portal 1.png diff --git a/Fifth/resources/gfx/Sprites/other/public/another guy.psd b/Third/resources/gfx/Sprites/other/public/another guy.psd similarity index 100% rename from Fifth/resources/gfx/Sprites/other/public/another guy.psd rename to Third/resources/gfx/Sprites/other/public/another guy.psd diff --git a/Fifth/resources/gfx/Sprites/other/public/some guy.psd b/Third/resources/gfx/Sprites/other/public/some guy.psd similarity index 100% rename from Fifth/resources/gfx/Sprites/other/public/some guy.psd rename to Third/resources/gfx/Sprites/other/public/some guy.psd diff --git a/Fifth/resources/gfx/Sprites/other/realm flag 1.png b/Third/resources/gfx/Sprites/other/realm flag 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/other/realm flag 1.png rename to Third/resources/gfx/Sprites/other/realm flag 1.png diff --git a/Fifth/resources/gfx/Sprites/other/realm flag 2.png b/Third/resources/gfx/Sprites/other/realm flag 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/other/realm flag 2.png rename to Third/resources/gfx/Sprites/other/realm flag 2.png diff --git a/Fifth/resources/gfx/Sprites/other/sign 1.png b/Third/resources/gfx/Sprites/other/sign 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/other/sign 1.png rename to Third/resources/gfx/Sprites/other/sign 1.png diff --git a/Fifth/resources/gfx/Sprites/pets/pet 1 (idle (1)).png b/Third/resources/gfx/Sprites/pets/pet 1 (idle (1)).png similarity index 100% rename from Fifth/resources/gfx/Sprites/pets/pet 1 (idle (1)).png rename to Third/resources/gfx/Sprites/pets/pet 1 (idle (1)).png diff --git a/Fifth/resources/gfx/Sprites/pets/pet 1 (idle (2)).png b/Third/resources/gfx/Sprites/pets/pet 1 (idle (2)).png similarity index 100% rename from Fifth/resources/gfx/Sprites/pets/pet 1 (idle (2)).png rename to Third/resources/gfx/Sprites/pets/pet 1 (idle (2)).png diff --git a/Fifth/resources/gfx/Sprites/pets/pet 1 (running (1)).png b/Third/resources/gfx/Sprites/pets/pet 1 (running (1)).png similarity index 100% rename from Fifth/resources/gfx/Sprites/pets/pet 1 (running (1)).png rename to Third/resources/gfx/Sprites/pets/pet 1 (running (1)).png diff --git a/Fifth/resources/gfx/Sprites/pets/pet 1 (running (1.1)).png b/Third/resources/gfx/Sprites/pets/pet 1 (running (1.1)).png similarity index 100% rename from Fifth/resources/gfx/Sprites/pets/pet 1 (running (1.1)).png rename to Third/resources/gfx/Sprites/pets/pet 1 (running (1.1)).png diff --git a/Fifth/resources/gfx/Sprites/pets/pet 1 (running (2)).png b/Third/resources/gfx/Sprites/pets/pet 1 (running (2)).png similarity index 100% rename from Fifth/resources/gfx/Sprites/pets/pet 1 (running (2)).png rename to Third/resources/gfx/Sprites/pets/pet 1 (running (2)).png diff --git a/Fifth/resources/gfx/Sprites/pets/pet 1 (running (2.1)).png b/Third/resources/gfx/Sprites/pets/pet 1 (running (2.1)).png similarity index 100% rename from Fifth/resources/gfx/Sprites/pets/pet 1 (running (2.1)).png rename to Third/resources/gfx/Sprites/pets/pet 1 (running (2.1)).png diff --git a/Fifth/resources/gfx/Sprites/player armour/shoulder armour 1.png b/Third/resources/gfx/Sprites/player armour/shoulder armour 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player armour/shoulder armour 1.png rename to Third/resources/gfx/Sprites/player armour/shoulder armour 1.png diff --git a/Fifth/resources/gfx/Sprites/player/__player__.png b/Third/resources/gfx/Sprites/player/__player__.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/__player__.png rename to Third/resources/gfx/Sprites/player/__player__.png diff --git a/Fifth/resources/gfx/Sprites/player/bodyarmour-1.png b/Third/resources/gfx/Sprites/player/bodyarmour-1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/bodyarmour-1.png rename to Third/resources/gfx/Sprites/player/bodyarmour-1.png diff --git a/Fifth/resources/gfx/Sprites/player/bodyarmour-2.png b/Third/resources/gfx/Sprites/player/bodyarmour-2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/bodyarmour-2.png rename to Third/resources/gfx/Sprites/player/bodyarmour-2.png diff --git a/Fifth/resources/gfx/Sprites/player/bodyarmour-3.png b/Third/resources/gfx/Sprites/player/bodyarmour-3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/bodyarmour-3.png rename to Third/resources/gfx/Sprites/player/bodyarmour-3.png diff --git a/Fifth/resources/gfx/Sprites/player/frame 0.png b/Third/resources/gfx/Sprites/player/frame 0.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/frame 0.png rename to Third/resources/gfx/Sprites/player/frame 0.png diff --git a/Fifth/resources/gfx/Sprites/player/frame 1.png b/Third/resources/gfx/Sprites/player/frame 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/frame 1.png rename to Third/resources/gfx/Sprites/player/frame 1.png diff --git a/Fifth/resources/gfx/Sprites/player/frame 2.png b/Third/resources/gfx/Sprites/player/frame 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/frame 2.png rename to Third/resources/gfx/Sprites/player/frame 2.png diff --git a/Fifth/resources/gfx/Sprites/player/frame a.png b/Third/resources/gfx/Sprites/player/frame a.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/frame a.png rename to Third/resources/gfx/Sprites/player/frame a.png diff --git a/Fifth/resources/gfx/Sprites/player/frame b.png b/Third/resources/gfx/Sprites/player/frame b.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/frame b.png rename to Third/resources/gfx/Sprites/player/frame b.png diff --git a/Fifth/resources/gfx/Sprites/player/frame c.png b/Third/resources/gfx/Sprites/player/frame c.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/frame c.png rename to Third/resources/gfx/Sprites/player/frame c.png diff --git a/Fifth/resources/gfx/Sprites/player/main player/arm 1.png b/Third/resources/gfx/Sprites/player/main player/arm 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/main player/arm 1.png rename to Third/resources/gfx/Sprites/player/main player/arm 1.png diff --git a/Fifth/resources/gfx/Sprites/player/main player/arm 2.png b/Third/resources/gfx/Sprites/player/main player/arm 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/main player/arm 2.png rename to Third/resources/gfx/Sprites/player/main player/arm 2.png diff --git a/Fifth/resources/gfx/Sprites/player/main player/arm 3.png b/Third/resources/gfx/Sprites/player/main player/arm 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/main player/arm 3.png rename to Third/resources/gfx/Sprites/player/main player/arm 3.png diff --git a/Fifth/resources/gfx/Sprites/player/main player/arm 4.png b/Third/resources/gfx/Sprites/player/main player/arm 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/main player/arm 4.png rename to Third/resources/gfx/Sprites/player/main player/arm 4.png diff --git a/Fifth/resources/gfx/Sprites/player/main player/arm 5.png b/Third/resources/gfx/Sprites/player/main player/arm 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/main player/arm 5.png rename to Third/resources/gfx/Sprites/player/main player/arm 5.png diff --git a/Fifth/resources/gfx/Sprites/player/main player/head 1.png b/Third/resources/gfx/Sprites/player/main player/head 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/main player/head 1.png rename to Third/resources/gfx/Sprites/player/main player/head 1.png diff --git a/Fifth/resources/gfx/Sprites/player/main player/part 1.1.png b/Third/resources/gfx/Sprites/player/main player/part 1.1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/main player/part 1.1.png rename to Third/resources/gfx/Sprites/player/main player/part 1.1.png diff --git a/Fifth/resources/gfx/Sprites/player/main player/part 2.1.png b/Third/resources/gfx/Sprites/player/main player/part 2.1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/main player/part 2.1.png rename to Third/resources/gfx/Sprites/player/main player/part 2.1.png diff --git a/Fifth/resources/gfx/Sprites/player/main player/part 3.1.png b/Third/resources/gfx/Sprites/player/main player/part 3.1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/main player/part 3.1.png rename to Third/resources/gfx/Sprites/player/main player/part 3.1.png diff --git a/Fifth/resources/gfx/Sprites/player/main player/part 4.1.png b/Third/resources/gfx/Sprites/player/main player/part 4.1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/main player/part 4.1.png rename to Third/resources/gfx/Sprites/player/main player/part 4.1.png diff --git a/Fifth/resources/gfx/Sprites/player/main player/part 4.2.png b/Third/resources/gfx/Sprites/player/main player/part 4.2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/main player/part 4.2.png rename to Third/resources/gfx/Sprites/player/main player/part 4.2.png diff --git a/Fifth/resources/gfx/Sprites/player/main player/player.png b/Third/resources/gfx/Sprites/player/main player/player.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/main player/player.png rename to Third/resources/gfx/Sprites/player/main player/player.png diff --git a/Fifth/resources/gfx/Sprites/player/part 1.png b/Third/resources/gfx/Sprites/player/part 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/part 1.png rename to Third/resources/gfx/Sprites/player/part 1.png diff --git a/Fifth/resources/gfx/Sprites/player/part 2.png b/Third/resources/gfx/Sprites/player/part 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/part 2.png rename to Third/resources/gfx/Sprites/player/part 2.png diff --git a/Fifth/resources/gfx/Sprites/player/part 3.png b/Third/resources/gfx/Sprites/player/part 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/part 3.png rename to Third/resources/gfx/Sprites/player/part 3.png diff --git a/Fifth/resources/gfx/Sprites/player/player 02 running f1.png b/Third/resources/gfx/Sprites/player/player 02 running f1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player 02 running f1.png rename to Third/resources/gfx/Sprites/player/player 02 running f1.png diff --git a/Fifth/resources/gfx/Sprites/player/player 02 running f2 v1.png b/Third/resources/gfx/Sprites/player/player 02 running f2 v1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player 02 running f2 v1.png rename to Third/resources/gfx/Sprites/player/player 02 running f2 v1.png diff --git a/Fifth/resources/gfx/Sprites/player/player 02 running f2 v2.png b/Third/resources/gfx/Sprites/player/player 02 running f2 v2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player 02 running f2 v2.png rename to Third/resources/gfx/Sprites/player/player 02 running f2 v2.png diff --git a/Fifth/resources/gfx/Sprites/player/player 2.png b/Third/resources/gfx/Sprites/player/player 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player 2.png rename to Third/resources/gfx/Sprites/player/player 2.png diff --git a/Fifth/resources/gfx/Sprites/player/player asset.png b/Third/resources/gfx/Sprites/player/player asset.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player asset.png rename to Third/resources/gfx/Sprites/player/player asset.png diff --git a/Fifth/resources/gfx/Sprites/player/player idle f1.png b/Third/resources/gfx/Sprites/player/player idle f1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player idle f1.png rename to Third/resources/gfx/Sprites/player/player idle f1.png diff --git a/Fifth/resources/gfx/Sprites/player/player idle f2.png b/Third/resources/gfx/Sprites/player/player idle f2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player idle f2.png rename to Third/resources/gfx/Sprites/player/player idle f2.png diff --git a/Fifth/resources/gfx/Sprites/player/player running f1.png b/Third/resources/gfx/Sprites/player/player running f1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player running f1.png rename to Third/resources/gfx/Sprites/player/player running f1.png diff --git a/Fifth/resources/gfx/Sprites/player/player running f2.png b/Third/resources/gfx/Sprites/player/player running f2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player running f2.png rename to Third/resources/gfx/Sprites/player/player running f2.png diff --git a/Fifth/resources/gfx/Sprites/player/player running f3.png b/Third/resources/gfx/Sprites/player/player running f3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player running f3.png rename to Third/resources/gfx/Sprites/player/player running f3.png diff --git a/Fifth/resources/gfx/Sprites/player/player running f4.png b/Third/resources/gfx/Sprites/player/player running f4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player running f4.png rename to Third/resources/gfx/Sprites/player/player running f4.png diff --git a/Fifth/resources/gfx/Sprites/player/player running f5.png b/Third/resources/gfx/Sprites/player/player running f5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player running f5.png rename to Third/resources/gfx/Sprites/player/player running f5.png diff --git a/Fifth/resources/gfx/Sprites/player/player01 running f1.png b/Third/resources/gfx/Sprites/player/player01 running f1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player01 running f1.png rename to Third/resources/gfx/Sprites/player/player01 running f1.png diff --git a/Fifth/resources/gfx/Sprites/player/player01 running f2.png b/Third/resources/gfx/Sprites/player/player01 running f2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player01 running f2.png rename to Third/resources/gfx/Sprites/player/player01 running f2.png diff --git a/Fifth/resources/gfx/Sprites/player/player_1.png b/Third/resources/gfx/Sprites/player/player_1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/player_1.png rename to Third/resources/gfx/Sprites/player/player_1.png diff --git a/Fifth/resources/gfx/Sprites/player/test.png b/Third/resources/gfx/Sprites/player/test.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player/test.png rename to Third/resources/gfx/Sprites/player/test.png diff --git a/Fifth/resources/gfx/Sprites/player1/arm 1.png b/Third/resources/gfx/Sprites/player1/arm 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/arm 1.png rename to Third/resources/gfx/Sprites/player1/arm 1.png diff --git a/Fifth/resources/gfx/Sprites/player1/arm 10.png b/Third/resources/gfx/Sprites/player1/arm 10.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/arm 10.png rename to Third/resources/gfx/Sprites/player1/arm 10.png diff --git a/Fifth/resources/gfx/Sprites/player1/arm 11.png b/Third/resources/gfx/Sprites/player1/arm 11.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/arm 11.png rename to Third/resources/gfx/Sprites/player1/arm 11.png diff --git a/Fifth/resources/gfx/Sprites/player1/arm 12.png b/Third/resources/gfx/Sprites/player1/arm 12.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/arm 12.png rename to Third/resources/gfx/Sprites/player1/arm 12.png diff --git a/Fifth/resources/gfx/Sprites/player1/arm 13.png b/Third/resources/gfx/Sprites/player1/arm 13.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/arm 13.png rename to Third/resources/gfx/Sprites/player1/arm 13.png diff --git a/Fifth/resources/gfx/Sprites/player1/arm 2.png b/Third/resources/gfx/Sprites/player1/arm 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/arm 2.png rename to Third/resources/gfx/Sprites/player1/arm 2.png diff --git a/Fifth/resources/gfx/Sprites/player1/arm 3.png b/Third/resources/gfx/Sprites/player1/arm 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/arm 3.png rename to Third/resources/gfx/Sprites/player1/arm 3.png diff --git a/Fifth/resources/gfx/Sprites/player1/arm 4.png b/Third/resources/gfx/Sprites/player1/arm 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/arm 4.png rename to Third/resources/gfx/Sprites/player1/arm 4.png diff --git a/Fifth/resources/gfx/Sprites/player1/arm 5.png b/Third/resources/gfx/Sprites/player1/arm 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/arm 5.png rename to Third/resources/gfx/Sprites/player1/arm 5.png diff --git a/Fifth/resources/gfx/Sprites/player1/arm 6.png b/Third/resources/gfx/Sprites/player1/arm 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/arm 6.png rename to Third/resources/gfx/Sprites/player1/arm 6.png diff --git a/Fifth/resources/gfx/Sprites/player1/arm 7.png b/Third/resources/gfx/Sprites/player1/arm 7.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/arm 7.png rename to Third/resources/gfx/Sprites/player1/arm 7.png diff --git a/Fifth/resources/gfx/Sprites/player1/arm 8.png b/Third/resources/gfx/Sprites/player1/arm 8.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/arm 8.png rename to Third/resources/gfx/Sprites/player1/arm 8.png diff --git a/Fifth/resources/gfx/Sprites/player1/arm 9.png b/Third/resources/gfx/Sprites/player1/arm 9.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/arm 9.png rename to Third/resources/gfx/Sprites/player1/arm 9.png diff --git a/Fifth/resources/gfx/Sprites/player1/body 1.png b/Third/resources/gfx/Sprites/player1/body 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/body 1.png rename to Third/resources/gfx/Sprites/player1/body 1.png diff --git a/Fifth/resources/gfx/Sprites/player1/body 2.png b/Third/resources/gfx/Sprites/player1/body 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/body 2.png rename to Third/resources/gfx/Sprites/player1/body 2.png diff --git a/Fifth/resources/gfx/Sprites/player1/body 4.png b/Third/resources/gfx/Sprites/player1/body 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/body 4.png rename to Third/resources/gfx/Sprites/player1/body 4.png diff --git a/Fifth/resources/gfx/Sprites/player1/body 5.png b/Third/resources/gfx/Sprites/player1/body 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/body 5.png rename to Third/resources/gfx/Sprites/player1/body 5.png diff --git a/Fifth/resources/gfx/Sprites/player1/body 6.png b/Third/resources/gfx/Sprites/player1/body 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/body 6.png rename to Third/resources/gfx/Sprites/player1/body 6.png diff --git a/Fifth/resources/gfx/Sprites/player1/body 7.png b/Third/resources/gfx/Sprites/player1/body 7.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/body 7.png rename to Third/resources/gfx/Sprites/player1/body 7.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 1.png b/Third/resources/gfx/Sprites/player1/face 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 1.png rename to Third/resources/gfx/Sprites/player1/face 1.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 10.png b/Third/resources/gfx/Sprites/player1/face 10.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 10.png rename to Third/resources/gfx/Sprites/player1/face 10.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 11.png b/Third/resources/gfx/Sprites/player1/face 11.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 11.png rename to Third/resources/gfx/Sprites/player1/face 11.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 12.png b/Third/resources/gfx/Sprites/player1/face 12.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 12.png rename to Third/resources/gfx/Sprites/player1/face 12.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 13.png b/Third/resources/gfx/Sprites/player1/face 13.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 13.png rename to Third/resources/gfx/Sprites/player1/face 13.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 14.png b/Third/resources/gfx/Sprites/player1/face 14.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 14.png rename to Third/resources/gfx/Sprites/player1/face 14.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 15.png b/Third/resources/gfx/Sprites/player1/face 15.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 15.png rename to Third/resources/gfx/Sprites/player1/face 15.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 16.png b/Third/resources/gfx/Sprites/player1/face 16.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 16.png rename to Third/resources/gfx/Sprites/player1/face 16.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 17.png b/Third/resources/gfx/Sprites/player1/face 17.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 17.png rename to Third/resources/gfx/Sprites/player1/face 17.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 18.png b/Third/resources/gfx/Sprites/player1/face 18.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 18.png rename to Third/resources/gfx/Sprites/player1/face 18.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 19.png b/Third/resources/gfx/Sprites/player1/face 19.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 19.png rename to Third/resources/gfx/Sprites/player1/face 19.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 2.png b/Third/resources/gfx/Sprites/player1/face 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 2.png rename to Third/resources/gfx/Sprites/player1/face 2.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 20.png b/Third/resources/gfx/Sprites/player1/face 20.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 20.png rename to Third/resources/gfx/Sprites/player1/face 20.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 21.png b/Third/resources/gfx/Sprites/player1/face 21.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 21.png rename to Third/resources/gfx/Sprites/player1/face 21.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 22.png b/Third/resources/gfx/Sprites/player1/face 22.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 22.png rename to Third/resources/gfx/Sprites/player1/face 22.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 23.png b/Third/resources/gfx/Sprites/player1/face 23.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 23.png rename to Third/resources/gfx/Sprites/player1/face 23.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 24.png b/Third/resources/gfx/Sprites/player1/face 24.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 24.png rename to Third/resources/gfx/Sprites/player1/face 24.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 25.png b/Third/resources/gfx/Sprites/player1/face 25.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 25.png rename to Third/resources/gfx/Sprites/player1/face 25.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 26.png b/Third/resources/gfx/Sprites/player1/face 26.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 26.png rename to Third/resources/gfx/Sprites/player1/face 26.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 3.png b/Third/resources/gfx/Sprites/player1/face 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 3.png rename to Third/resources/gfx/Sprites/player1/face 3.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 4.png b/Third/resources/gfx/Sprites/player1/face 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 4.png rename to Third/resources/gfx/Sprites/player1/face 4.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 5.png b/Third/resources/gfx/Sprites/player1/face 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 5.png rename to Third/resources/gfx/Sprites/player1/face 5.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 6.png b/Third/resources/gfx/Sprites/player1/face 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 6.png rename to Third/resources/gfx/Sprites/player1/face 6.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 7.png b/Third/resources/gfx/Sprites/player1/face 7.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 7.png rename to Third/resources/gfx/Sprites/player1/face 7.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 8.png b/Third/resources/gfx/Sprites/player1/face 8.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 8.png rename to Third/resources/gfx/Sprites/player1/face 8.png diff --git a/Fifth/resources/gfx/Sprites/player1/face 9.png b/Third/resources/gfx/Sprites/player1/face 9.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/face 9.png rename to Third/resources/gfx/Sprites/player1/face 9.png diff --git a/Fifth/resources/gfx/Sprites/player1/leg 1.png b/Third/resources/gfx/Sprites/player1/leg 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/leg 1.png rename to Third/resources/gfx/Sprites/player1/leg 1.png diff --git a/Fifth/resources/gfx/Sprites/player1/leg 2.png b/Third/resources/gfx/Sprites/player1/leg 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/leg 2.png rename to Third/resources/gfx/Sprites/player1/leg 2.png diff --git a/Fifth/resources/gfx/Sprites/player1/leg 3.png b/Third/resources/gfx/Sprites/player1/leg 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/leg 3.png rename to Third/resources/gfx/Sprites/player1/leg 3.png diff --git a/Fifth/resources/gfx/Sprites/player1/leg 4.png b/Third/resources/gfx/Sprites/player1/leg 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/leg 4.png rename to Third/resources/gfx/Sprites/player1/leg 4.png diff --git a/Fifth/resources/gfx/Sprites/player1/leg 5.png b/Third/resources/gfx/Sprites/player1/leg 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/leg 5.png rename to Third/resources/gfx/Sprites/player1/leg 5.png diff --git a/Fifth/resources/gfx/Sprites/player1/leg 6.png b/Third/resources/gfx/Sprites/player1/leg 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/leg 6.png rename to Third/resources/gfx/Sprites/player1/leg 6.png diff --git a/Fifth/resources/gfx/Sprites/player1/leg 7.png b/Third/resources/gfx/Sprites/player1/leg 7.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player1/leg 7.png rename to Third/resources/gfx/Sprites/player1/leg 7.png diff --git a/Fifth/resources/gfx/Sprites/player2/player arm 1.png b/Third/resources/gfx/Sprites/player2/player arm 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player2/player arm 1.png rename to Third/resources/gfx/Sprites/player2/player arm 1.png diff --git a/Fifth/resources/gfx/Sprites/player2/player body 1.png b/Third/resources/gfx/Sprites/player2/player body 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player2/player body 1.png rename to Third/resources/gfx/Sprites/player2/player body 1.png diff --git a/Fifth/resources/gfx/Sprites/player2/player face 1.png b/Third/resources/gfx/Sprites/player2/player face 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player2/player face 1.png rename to Third/resources/gfx/Sprites/player2/player face 1.png diff --git a/Fifth/resources/gfx/Sprites/player2/player leg 1.png b/Third/resources/gfx/Sprites/player2/player leg 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player2/player leg 1.png rename to Third/resources/gfx/Sprites/player2/player leg 1.png diff --git a/Fifth/resources/gfx/Sprites/player2/player leg 2.png b/Third/resources/gfx/Sprites/player2/player leg 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player2/player leg 2.png rename to Third/resources/gfx/Sprites/player2/player leg 2.png diff --git a/Fifth/resources/gfx/Sprites/player2/playerTest.png b/Third/resources/gfx/Sprites/player2/playerTest.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player2/playerTest.png rename to Third/resources/gfx/Sprites/player2/playerTest.png diff --git a/Fifth/resources/gfx/Sprites/player3/player #3/player arm 1.png b/Third/resources/gfx/Sprites/player3/player #3/player arm 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player #3/player arm 1.png rename to Third/resources/gfx/Sprites/player3/player #3/player arm 1.png diff --git a/Fifth/resources/gfx/Sprites/player3/player #3/player body 1.png b/Third/resources/gfx/Sprites/player3/player #3/player body 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player #3/player body 1.png rename to Third/resources/gfx/Sprites/player3/player #3/player body 1.png diff --git a/Fifth/resources/gfx/Sprites/player3/player #3/player head 3.png b/Third/resources/gfx/Sprites/player3/player #3/player head 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player #3/player head 3.png rename to Third/resources/gfx/Sprites/player3/player #3/player head 3.png diff --git a/Fifth/resources/gfx/Sprites/player3/player #3/player legs 1.png b/Third/resources/gfx/Sprites/player3/player #3/player legs 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player #3/player legs 1.png rename to Third/resources/gfx/Sprites/player3/player #3/player legs 1.png diff --git a/Fifth/resources/gfx/Sprites/player3/player #3/player legs 2.png b/Third/resources/gfx/Sprites/player3/player #3/player legs 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player #3/player legs 2.png rename to Third/resources/gfx/Sprites/player3/player #3/player legs 2.png diff --git a/Fifth/resources/gfx/Sprites/player3/player #3/player legs 4.png b/Third/resources/gfx/Sprites/player3/player #3/player legs 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player #3/player legs 4.png rename to Third/resources/gfx/Sprites/player3/player #3/player legs 4.png diff --git a/Fifth/resources/gfx/Sprites/player3/player arm 1.png b/Third/resources/gfx/Sprites/player3/player arm 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player arm 1.png rename to Third/resources/gfx/Sprites/player3/player arm 1.png diff --git a/Fifth/resources/gfx/Sprites/player3/player body 1.png b/Third/resources/gfx/Sprites/player3/player body 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player body 1.png rename to Third/resources/gfx/Sprites/player3/player body 1.png diff --git a/Fifth/resources/gfx/Sprites/player3/player head 1.png b/Third/resources/gfx/Sprites/player3/player head 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player head 1.png rename to Third/resources/gfx/Sprites/player3/player head 1.png diff --git a/Fifth/resources/gfx/Sprites/player3/player head 2.png b/Third/resources/gfx/Sprites/player3/player head 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player head 2.png rename to Third/resources/gfx/Sprites/player3/player head 2.png diff --git a/Fifth/resources/gfx/Sprites/player3/player head 3.png b/Third/resources/gfx/Sprites/player3/player head 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player head 3.png rename to Third/resources/gfx/Sprites/player3/player head 3.png diff --git a/Fifth/resources/gfx/Sprites/player3/player head 4.png b/Third/resources/gfx/Sprites/player3/player head 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player head 4.png rename to Third/resources/gfx/Sprites/player3/player head 4.png diff --git a/Fifth/resources/gfx/Sprites/player3/player legs 1.png b/Third/resources/gfx/Sprites/player3/player legs 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player legs 1.png rename to Third/resources/gfx/Sprites/player3/player legs 1.png diff --git a/Fifth/resources/gfx/Sprites/player3/player legs 2.png b/Third/resources/gfx/Sprites/player3/player legs 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player legs 2.png rename to Third/resources/gfx/Sprites/player3/player legs 2.png diff --git a/Fifth/resources/gfx/Sprites/player3/player legs 3.png b/Third/resources/gfx/Sprites/player3/player legs 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player legs 3.png rename to Third/resources/gfx/Sprites/player3/player legs 3.png diff --git a/Fifth/resources/gfx/Sprites/player3/player legs 4.png b/Third/resources/gfx/Sprites/player3/player legs 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/player3/player legs 4.png rename to Third/resources/gfx/Sprites/player3/player legs 4.png diff --git a/Fifth/resources/gfx/Sprites/spritesheets/all 01.png b/Third/resources/gfx/Sprites/spritesheets/all 01.png similarity index 100% rename from Fifth/resources/gfx/Sprites/spritesheets/all 01.png rename to Third/resources/gfx/Sprites/spritesheets/all 01.png diff --git a/Fifth/resources/gfx/Sprites/spritesheets/plant spritesheet 1.png b/Third/resources/gfx/Sprites/spritesheets/plant spritesheet 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/spritesheets/plant spritesheet 1.png rename to Third/resources/gfx/Sprites/spritesheets/plant spritesheet 1.png diff --git a/Fifth/resources/gfx/sheet-2.png b/Third/resources/gfx/Sprites/spritesheets/plant spritesheet 2.png similarity index 100% rename from Fifth/resources/gfx/sheet-2.png rename to Third/resources/gfx/Sprites/spritesheets/plant spritesheet 2.png diff --git a/Fifth/resources/gfx/Sprites/spritesheets/platform spritesheet 1.png b/Third/resources/gfx/Sprites/spritesheets/platform spritesheet 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/spritesheets/platform spritesheet 1.png rename to Third/resources/gfx/Sprites/spritesheets/platform spritesheet 1.png diff --git a/Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 0.1.png b/Third/resources/gfx/Sprites/spritesheets/player spritesheet 0.1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 0.1.png rename to Third/resources/gfx/Sprites/spritesheets/player spritesheet 0.1.png diff --git a/Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 2.png b/Third/resources/gfx/Sprites/spritesheets/player spritesheet 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 2.png rename to Third/resources/gfx/Sprites/spritesheets/player spritesheet 2.png diff --git a/Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 3.png b/Third/resources/gfx/Sprites/spritesheets/player spritesheet 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/spritesheets/player spritesheet 3.png rename to Third/resources/gfx/Sprites/spritesheets/player spritesheet 3.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 1.png b/Third/resources/gfx/Sprites/stone/stone 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 1.png rename to Third/resources/gfx/Sprites/stone/stone 1.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 10.png b/Third/resources/gfx/Sprites/stone/stone 10.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 10.png rename to Third/resources/gfx/Sprites/stone/stone 10.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 11.png b/Third/resources/gfx/Sprites/stone/stone 11.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 11.png rename to Third/resources/gfx/Sprites/stone/stone 11.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 12.png b/Third/resources/gfx/Sprites/stone/stone 12.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 12.png rename to Third/resources/gfx/Sprites/stone/stone 12.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 13.png b/Third/resources/gfx/Sprites/stone/stone 13.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 13.png rename to Third/resources/gfx/Sprites/stone/stone 13.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 14.png b/Third/resources/gfx/Sprites/stone/stone 14.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 14.png rename to Third/resources/gfx/Sprites/stone/stone 14.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 15.png b/Third/resources/gfx/Sprites/stone/stone 15.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 15.png rename to Third/resources/gfx/Sprites/stone/stone 15.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 16.png b/Third/resources/gfx/Sprites/stone/stone 16.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 16.png rename to Third/resources/gfx/Sprites/stone/stone 16.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 17.png b/Third/resources/gfx/Sprites/stone/stone 17.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 17.png rename to Third/resources/gfx/Sprites/stone/stone 17.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 18.png b/Third/resources/gfx/Sprites/stone/stone 18.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 18.png rename to Third/resources/gfx/Sprites/stone/stone 18.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 19.png b/Third/resources/gfx/Sprites/stone/stone 19.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 19.png rename to Third/resources/gfx/Sprites/stone/stone 19.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 2.png b/Third/resources/gfx/Sprites/stone/stone 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 2.png rename to Third/resources/gfx/Sprites/stone/stone 2.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 20.png b/Third/resources/gfx/Sprites/stone/stone 20.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 20.png rename to Third/resources/gfx/Sprites/stone/stone 20.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 21.png b/Third/resources/gfx/Sprites/stone/stone 21.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 21.png rename to Third/resources/gfx/Sprites/stone/stone 21.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 22.png b/Third/resources/gfx/Sprites/stone/stone 22.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 22.png rename to Third/resources/gfx/Sprites/stone/stone 22.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 23.png b/Third/resources/gfx/Sprites/stone/stone 23.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 23.png rename to Third/resources/gfx/Sprites/stone/stone 23.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 24.png b/Third/resources/gfx/Sprites/stone/stone 24.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 24.png rename to Third/resources/gfx/Sprites/stone/stone 24.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 25.png b/Third/resources/gfx/Sprites/stone/stone 25.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 25.png rename to Third/resources/gfx/Sprites/stone/stone 25.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 3.png b/Third/resources/gfx/Sprites/stone/stone 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 3.png rename to Third/resources/gfx/Sprites/stone/stone 3.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 4.png b/Third/resources/gfx/Sprites/stone/stone 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 4.png rename to Third/resources/gfx/Sprites/stone/stone 4.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 5.png b/Third/resources/gfx/Sprites/stone/stone 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 5.png rename to Third/resources/gfx/Sprites/stone/stone 5.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 6.png b/Third/resources/gfx/Sprites/stone/stone 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 6.png rename to Third/resources/gfx/Sprites/stone/stone 6.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 7.png b/Third/resources/gfx/Sprites/stone/stone 7.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 7.png rename to Third/resources/gfx/Sprites/stone/stone 7.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 8.png b/Third/resources/gfx/Sprites/stone/stone 8.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 8.png rename to Third/resources/gfx/Sprites/stone/stone 8.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone 9.png b/Third/resources/gfx/Sprites/stone/stone 9.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone 9.png rename to Third/resources/gfx/Sprites/stone/stone 9.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 1.png b/Third/resources/gfx/Sprites/stone/stone block 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone block 1.png rename to Third/resources/gfx/Sprites/stone/stone block 1.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 10.png b/Third/resources/gfx/Sprites/stone/stone block 10.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone block 10.png rename to Third/resources/gfx/Sprites/stone/stone block 10.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 11.png b/Third/resources/gfx/Sprites/stone/stone block 11.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone block 11.png rename to Third/resources/gfx/Sprites/stone/stone block 11.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 12.png b/Third/resources/gfx/Sprites/stone/stone block 12.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone block 12.png rename to Third/resources/gfx/Sprites/stone/stone block 12.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 2.png b/Third/resources/gfx/Sprites/stone/stone block 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone block 2.png rename to Third/resources/gfx/Sprites/stone/stone block 2.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 3.png b/Third/resources/gfx/Sprites/stone/stone block 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone block 3.png rename to Third/resources/gfx/Sprites/stone/stone block 3.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 4.png b/Third/resources/gfx/Sprites/stone/stone block 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone block 4.png rename to Third/resources/gfx/Sprites/stone/stone block 4.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 5.png b/Third/resources/gfx/Sprites/stone/stone block 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone block 5.png rename to Third/resources/gfx/Sprites/stone/stone block 5.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 6.png b/Third/resources/gfx/Sprites/stone/stone block 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone block 6.png rename to Third/resources/gfx/Sprites/stone/stone block 6.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 7.png b/Third/resources/gfx/Sprites/stone/stone block 7.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone block 7.png rename to Third/resources/gfx/Sprites/stone/stone block 7.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 8.png b/Third/resources/gfx/Sprites/stone/stone block 8.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone block 8.png rename to Third/resources/gfx/Sprites/stone/stone block 8.png diff --git a/Fifth/resources/gfx/Sprites/stone/stone block 9.png b/Third/resources/gfx/Sprites/stone/stone block 9.png similarity index 100% rename from Fifth/resources/gfx/Sprites/stone/stone block 9.png rename to Third/resources/gfx/Sprites/stone/stone block 9.png diff --git a/Fifth/resources/gfx/Sprites/transparent.png b/Third/resources/gfx/Sprites/transparent.png similarity index 100% rename from Fifth/resources/gfx/Sprites/transparent.png rename to Third/resources/gfx/Sprites/transparent.png diff --git a/Fifth/resources/gfx/Sprites/weapons/guns/pistol 1-gold.png b/Third/resources/gfx/Sprites/weapons/guns/pistol 1-gold.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/guns/pistol 1-gold.png rename to Third/resources/gfx/Sprites/weapons/guns/pistol 1-gold.png diff --git a/Fifth/resources/gfx/Sprites/weapons/guns/pistol 1-grass.png b/Third/resources/gfx/Sprites/weapons/guns/pistol 1-grass.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/guns/pistol 1-grass.png rename to Third/resources/gfx/Sprites/weapons/guns/pistol 1-grass.png diff --git a/Fifth/resources/gfx/Sprites/weapons/guns/pistol 1.png b/Third/resources/gfx/Sprites/weapons/guns/pistol 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/guns/pistol 1.png rename to Third/resources/gfx/Sprites/weapons/guns/pistol 1.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 1.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 1.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 1.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 10.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 10.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 10.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 10.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 11.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 11.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 11.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 11.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 12.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 12.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 12.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 12.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 13.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 13.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 13.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 13.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 14.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 14.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 14.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 14.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 15.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 15.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 15.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 15.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 16.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 16.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 16.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 16.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 2.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 2.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 2.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 2.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 3.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 3.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 3.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 3.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 4.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 4.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 4.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 4.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 5.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 5.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 5.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 5.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 6.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 6.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 6.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 6.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 7.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 7.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 7.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 7.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 8.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 8.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 8.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 8.png diff --git a/Fifth/resources/gfx/Sprites/weapons/swords/weapon 9.png b/Third/resources/gfx/Sprites/weapons/swords/weapon 9.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/swords/weapon 9.png rename to Third/resources/gfx/Sprites/weapons/swords/weapon 9.png diff --git a/Fifth/resources/gfx/Sprites/weapons/wizard weapons/magic staff 1.png b/Third/resources/gfx/Sprites/weapons/wizard weapons/magic staff 1.png similarity index 100% rename from Fifth/resources/gfx/Sprites/weapons/wizard weapons/magic staff 1.png rename to Third/resources/gfx/Sprites/weapons/wizard weapons/magic staff 1.png diff --git a/Fifth/resources/gfx/bg.png b/Third/resources/gfx/bg.png similarity index 100% rename from Fifth/resources/gfx/bg.png rename to Third/resources/gfx/bg.png diff --git a/Fifth/resources/gfx/gfx.png b/Third/resources/gfx/gfx.png similarity index 100% rename from Fifth/resources/gfx/gfx.png rename to Third/resources/gfx/gfx.png diff --git a/Fifth/resources/gfx/gfx2.png b/Third/resources/gfx/gfx2.png similarity index 100% rename from Fifth/resources/gfx/gfx2.png rename to Third/resources/gfx/gfx2.png diff --git a/Fifth/resources/gfx/playerSpritesheet.png b/Third/resources/gfx/playerSpritesheet.png similarity index 100% rename from Fifth/resources/gfx/playerSpritesheet.png rename to Third/resources/gfx/playerSpritesheet.png diff --git a/Fifth/resources/gfx/player_run_.png b/Third/resources/gfx/player_run.png similarity index 100% rename from Fifth/resources/gfx/player_run_.png rename to Third/resources/gfx/player_run.png diff --git a/Third/resources/gfx/sheet.png b/Third/resources/gfx/sheet.png new file mode 100755 index 0000000000000000000000000000000000000000..7fb28c3cdd95efde8e35b2ff66d3e240038a435e GIT binary patch literal 266171 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 self.pos2.x) then + temp = self.pos1.x + self.pos1.x = self.pos2.x + self.pos2.x = temp + end + if(self.pos1.y > self.pos2.y) then + temp = self.pos1.y + self.pos1.y = self.pos2.y + self.pos2.y = temp + end + + for y = self.pos1.y, self.pos2.y, tileSize do + for x = self.pos1.x, self.pos2.x, tileSize do + self.parent.entityManager:addTile(x, y, self.tileset) + end + end + + self.pos1 = nil + self.pos2 = nil + end + end +end + +function BuilderController:onKeyStates(state) + self.mX, self.mY = self.component:getRelativeMouse() + self.mouseDown = game:leftMousePressed() + self.rightMouseDown = game:rightMousePressed() +end + +function BuilderController:onRenderAdditional() + if(self.isTiling) then + tileSize = game.tileSize() + colorR = 0 + colorG = 255 + if(self.rightMouseDown) then + colorR = 255 + colorG = 0 + end + for k, v in pairs(self.brushes[self.brush]) do + self.component:renderRect(self.mX - self.component.camera:offsetX() + v.x * tileSize - tileSize / 2, self.mY - self.component.camera:offsetY() + v.y * tileSize - tileSize / 2, tileSize, tileSize, colorR, colorG, 0, 100) + end + end + if(self.isTileArea) then + self.component:renderRect(self.pos1.x - self.component.camera:offsetX(), self.pos1.y - self.component.camera:offsetY(), self.mX - self.pos1.x, self.mY - self.pos1.y, 255, 255, 0, 100) + end +end + +function create(parent, component) + return BuilderController(parent, component) +end \ No newline at end of file diff --git a/Fifth/resources/scripts/Standard/ChatController.lua b/Third/resources/scripts/Standard/ChatController.lua similarity index 67% rename from Fifth/resources/scripts/Standard/ChatController.lua rename to Third/resources/scripts/Standard/ChatController.lua index cdc65d0..975b33f 100755 --- a/Fifth/resources/scripts/Standard/ChatController.lua +++ b/Third/resources/scripts/Standard/ChatController.lua @@ -7,19 +7,28 @@ local ChatController = class ( self.isTyping = false self.buffer = "" - self.currentChatIndex = 1 - self.chatArray = {""} - + self.width = 50 self.initWidth = self.width self.height = 40 - self.maxBufferSize = 1024 + self.maxBufferSize = 100000000 self.shift = false self.currentPos = 0 + + self.registered = {} end ) +function ChatController:onInit() + self:registerCommand("restart", self) + self:registerCommand("pause", self) + self:registerCommand("script", self) + self:registerCommand("lua", self) + self:registerCommand("load", self) + self:registerCommand("save", self) +end + function ChatController:isKeyCode(key) for k, v in pairs(KeyCode) do if(v == key) then @@ -30,27 +39,25 @@ function ChatController:isKeyCode(key) return false end -function ChatController:parse(input) - if(string.sub(input, 1, 1) == "/") then - input = string.sub(input, 2, string.len(input)) - - commands = {} - for w in input:gmatch("%S+") do table.insert(commands, w) end +-- command: str, component: LuaComponentObj +function ChatController:registerCommand(command, component) -<<<<<<< HEAD - len = table.getn(commands) - parameters = "" - for i = 2,len do - parameters = parameters .. commands[i] .. " " - end - -======= ->>>>>>> Malaxiz/network - -- PARSING + if(self.registered[command] ~= nil) then + game.log(LogType.ERROR, "Could not register command \"" .. command .. "\" because it already exists") + else + self.registered[command] = component + end +end - if(commands[1] == "restart") then self.component.instance.game:restart() end +function ChatController:onChatCommand(commands) + if(commands[1] == "restart") then + self.component.instance.game:restart() + elseif(commands[1] == "pause") then + self.component.instance.isPaused = not self.component.instance.isPaused + end - if(commands[1] == "script" and commands[2] ~= nil) then + if(commands[2] ~= nil) then + if(commands[1] == "script") then comp = commands[2] mX, mY = self.component:getRelativeMouse() temp = self.parent.entityManager:createSpriteEntity(Box(mX, mY, 16 * 4, 16 * 4), "lua") @@ -63,22 +70,43 @@ function ChatController:parse(input) end end - if((commands[1] == "exec" or commands[1] == "eval") and commands[2] ~= nil) then -<<<<<<< HEAD - line = "return function(self) " .. parameters .. " end" -======= + if(commands[1] == "lua") then len = table.getn(commands) result = "" for i = 2,len do result = result .. commands[i] .. " " - end + end line = "return function(self) " .. result .. " end" ->>>>>>> Malaxiz/network if(not pcall(function() func = loadstring(line)() end) or not pcall(function() func(self) end)) then - print("Error in executing: " .. commands[2]) + print("Error in executing: " .. result) end end + if(commands[1] == "load") then + self.component.instance:loadLevel(commands[2] .. ".lvl") + end + + if(commands[1] == "save") then + path = "resources/level/" .. commands[2] .. ".lvl" + serialized = self.component.instance:onSerialize() + game.clearFile(path) + game.writeToFile(path, serialized) + end + end +end + +function ChatController:parse(input) + if(string.sub(input, 1, 1) == "/") then + input = string.sub(input, 2, string.len(input)) + + commands = {} + for w in input:gmatch("%S+") do table.insert(commands, w) end + + comp = self.registered[commands[1]] + if(comp ~= nil) then + comp:onChatCommand(commands) + end + return "" end @@ -99,38 +127,12 @@ function ChatController:onTextInput(input) self.buffer = self.buffer .. input end end + end function ChatController:onEvent(key, keyDown) if(not keyDown) then do return end end -<<<<<<< HEAD - if(key == KeyCode._ARROW_UP) then - if(table.getn(self.chatArray) > 1 and self.currentChatIndex > 1 and self.chatArray[self.currentChatIndex] ~= nil) then - self.buffer = self.chatArray[self.currentChatIndex] - self.currentChatIndex = self.currentChatIndex - 1 - end - end - - if(key == KeyCode._ARROW_DOWN) then - if(self.currentChatIndex < table.getn(self.chatArray) and self.chatArray[self.currentChatIndex] ~= nil) then - self.buffer = self.chatArray[self.currentChatIndex] - self.currentChatIndex = self.currentChatIndex + 1 -======= - if(key == KeyCode._ARROW_DOWN) then - if(table.getn(self.chatArray) > 1 and self.currentChatIndex > 1 and self.chatArray[self.currentChatIndex] ~= nil) then - self.currentChatIndex = self.currentChatIndex - 1 - self.buffer = self.chatArray[self.currentChatIndex] - end - end - if(key == KeyCode._ARROW_UP) then - if(self.currentChatIndex < table.getn(self.chatArray) and self.chatArray[self.currentChatIndex] ~= nil) then - self.currentChatIndex = self.currentChatIndex + 1 - self.buffer = self.chatArray[self.currentChatIndex] ->>>>>>> Malaxiz/network - end - end - if(key == KeyCode._RETURN or key == KeyCode._SLASH) then if(key == KeyCode._SLASH) then self.isTyping = true @@ -143,9 +145,7 @@ function ChatController:onEvent(key, keyDown) if(toSay ~= "") then self.component.instance.player:say(toSay, "TESTFONT", ChatBubbleType.SAY) end - table.insert(self.chatArray, self.buffer) self.buffer = "" - self.currentChatIndex = table.getn(self.chatArray) self.component.instance.game.ignoreEvents = false do return end else diff --git a/Third/resources/scripts/Standard/Controller.lua b/Third/resources/scripts/Standard/Controller.lua new file mode 100755 index 0000000..7c0df09 --- /dev/null +++ b/Third/resources/scripts/Standard/Controller.lua @@ -0,0 +1,24 @@ +-- Controller.lua + +local Controller = class ( + function(self, parent, component) + self.parent = parent + self.component = component + end +) + +function Controller:onInit() + self.parent:addProperty(EntityProperty.STATIC) + self.parent:addProperty(EntityProperty.HIDDEN) + self.parent:removeProperty(EntityProperty.COLLIDABLE) + self.component.instance.gravity = 0.8 + + self.component.instance:loadAssets("testMap2.map") + self.component.instance:loadAssets("testMap1.map") + + --self.component.instance:loadLevel("testlevel.lvl") +end + +function create(parent, component) + return Controller(parent, component) +end \ No newline at end of file diff --git a/Fifth/resources/scripts/Standard/ExplodeOnDeath.lua b/Third/resources/scripts/Standard/ExplodeOnDeath.lua similarity index 94% rename from Fifth/resources/scripts/Standard/ExplodeOnDeath.lua rename to Third/resources/scripts/Standard/ExplodeOnDeath.lua index b28b7ec..25ece3a 100755 --- a/Fifth/resources/scripts/Standard/ExplodeOnDeath.lua +++ b/Third/resources/scripts/Standard/ExplodeOnDeath.lua @@ -52,10 +52,6 @@ function ExplodeOnDeath:explodeParticle(sx, sy, sw, sh, tx, ty, tw, th, spriteNa eBox = Box(tx, ty, tw, th) particle = entityManager:createSpriteEntity(eBox, spriteName) - --if(parent:hasProperty(EntityProperty.FLIP)) then - -- particle:addProperty(EntityProperty.FLIP) - --end - force = 20 body = particle.body @@ -63,7 +59,7 @@ function ExplodeOnDeath:explodeParticle(sx, sy, sw, sh, tx, ty, tw, th, spriteNa body.velY = self.parent.body.velY + -10 + -math.random(force) / 2 particle:addComponent(self.component.instance, game.getScript("Standard/Particle")) - particle:getComponent("Standard/Particle"):onDeserialize('{"livingTime":5}') + particle:getComponent("Standard/Particle"):onDeserialize('{"livingTime":' .. ((math.random(50) + 25) / 10) .. '}') if(not self.parent:hasProperty(EntityProperty.COLLIDABLE)) then particle:removeProperty(EntityProperty.COLLIDABLE) diff --git a/Fifth/resources/scripts/Standard/GraphicScript.lua b/Third/resources/scripts/Standard/GraphicScript.lua similarity index 94% rename from Fifth/resources/scripts/Standard/GraphicScript.lua rename to Third/resources/scripts/Standard/GraphicScript.lua index 640a05e..f52ecb9 100755 --- a/Fifth/resources/scripts/Standard/GraphicScript.lua +++ b/Third/resources/scripts/Standard/GraphicScript.lua @@ -2,11 +2,10 @@ local GraphicScript = class( function(self, parent, component) - self.parent = parent self.component = component + self.require = {"Standard/ExplodeOnDeath"} - parent:addComponent(self.component.instance, game.getScript("Standard/ExplodeOnDeath")) parent:addProperty(EntityProperty.STATIC) parent:removeProperty(EntityProperty.COLLIDABLE) parent.defaultSprite = "lua" @@ -34,8 +33,6 @@ function GraphicScript:onLoop() end end -<<<<<<< HEAD -======= function GraphicScript:onSerialize() c = self.component @@ -52,7 +49,6 @@ function GraphicScript:onDeserialize(value) end end ->>>>>>> Malaxiz/network function GraphicScript:onClick() x, y = self.component:getRelativeMouse() x2, y2 = self.component:getMouse() diff --git a/Fifth/resources/scripts/Standard/Living.lua b/Third/resources/scripts/Standard/Living.lua similarity index 93% rename from Fifth/resources/scripts/Standard/Living.lua rename to Third/resources/scripts/Standard/Living.lua index ef3b277..7b1a1ae 100755 --- a/Fifth/resources/scripts/Standard/Living.lua +++ b/Third/resources/scripts/Standard/Living.lua @@ -4,8 +4,7 @@ local Living = class ( function(self, parent, component) self.parent = parent self.component = component - - self.parent:addComponent(self.component.instance, game.getScript("Standard/ExplodeOnDeath")) + self.require = {"Standard/ExplodeOnDeath"} self.VALUE_HEALTH = 0 self.VALUE_KEVLAR = 1 @@ -21,10 +20,17 @@ local Living = class ( -- temp self.values[self.VALUE_HEALTH] = 750 self.values[self.VALUE_KEVLAR] = 500 + -- /temp + + self.listeners = {} end ) +function Living:listenForHealth(component) + table.insert(self.listeners, component) +end + function Living:onRenderAdditional() if(self.parent.isDead) then do return end @@ -100,6 +106,10 @@ function Living:damage(amount, damager) textObject = CombatText(thisX, thisY, damageColor, 20, "-" .. damageDone, "TESTFONT") self.parent:addCombatText(textObject) + for k,v in pairs(self.listeners) do + v:onLivingDamage(damageDone) + end + return damageDone end diff --git a/Fifth/resources/scripts/Standard/Movable.lua b/Third/resources/scripts/Standard/Movable.lua similarity index 80% rename from Fifth/resources/scripts/Standard/Movable.lua rename to Third/resources/scripts/Standard/Movable.lua index 7486142..e47a9d3 100755 --- a/Fifth/resources/scripts/Standard/Movable.lua +++ b/Third/resources/scripts/Standard/Movable.lua @@ -6,7 +6,7 @@ local Movable = class ( self.component = component self.body = parent.body - self.jumpPower = 13.0 + self.jumpPower = 17.0 self.accelerationX = 1.5 self.accelerationY = 100.0 self.stoppingAccelerationX = 1.5 @@ -18,8 +18,8 @@ local Movable = class ( self.hasWalkedY = false self.isFlying = false - - + self.angleFactor = -1.0 + self.WALKING_MOVEMENT = 0 self.SNEAKING_MOVEMENT = 1 self.RUNNING_MOVEMENT = 2 @@ -79,11 +79,8 @@ function Movable:onLoop() self.parent:setSprite(self.parent:getSpriteFromState("FLYING")) end -<<<<<<< HEAD -======= - self.parent.angle = -(body.velX / 2.0) + self.parent.angle = (body.velX / -self.angleFactor) ->>>>>>> Malaxiz/network end function Movable:onEvent(key, keyDown) @@ -125,50 +122,6 @@ function Movable:onKeyStates(state) if(state:hasState(ScanCode._S)) then self:goDown() end - - if(game:leftMousePressed() and not self.parent.isDead) then - box = self.parent.body.box - thisX = box.x - thisY = box.y - - for i = 0, 0 do - -<<<<<<< HEAD - spawnX = thisX - spawnY = thisY + 40 -======= - spawnX = thisX + 20 - spawnY = thisY + 60 ->>>>>>> Malaxiz/network - if(self.parent:hasProperty(EntityProperty.FLIP)) then - spawnX = thisX + 5 - end - -<<<<<<< HEAD - bullet = self.parent.entityManager:createColoredEntity(Box(spawnX, spawnY, 8, 8), Color(math.random(255), 255, 0, 255)) -======= - bullet = self.parent.entityManager:createColoredEntity(Box(spawnX, spawnY, 15, 2), Color(255, 5, 0, 255)) ->>>>>>> Malaxiz/network - self.parent.entityManager:addParticle(bullet) - script = game.getScript("Standard/Projectile") - bullet:addComponent(self.component.instance, script) - bullet:getComponent("Standard/Projectile"):onDeserialize('{"owner":"' .. self.parent.entityManager:getNameOfEntity(self.parent) .. '"}') - - tBody = self.parent.body - bBody = bullet:getComponent("Standard/Projectile").parent.body -- must do it this way - - bBody.velX = 25 + (math.random(5) - 2.5) - bBody.velY = -5 + (math.random(5) - 2.5) - if(self.parent:hasProperty(EntityProperty.FLIP)) then - bBody.velX = bBody.velX * -1 - end - - bBody.velX = bBody.velX + tBody.velX - bBody.velY = bBody.velY + tBody.velY - - end - - end end function Movable:onSerialize() diff --git a/Third/resources/scripts/Standard/Npc.lua b/Third/resources/scripts/Standard/Npc.lua new file mode 100755 index 0000000..ace75c8 --- /dev/null +++ b/Third/resources/scripts/Standard/Npc.lua @@ -0,0 +1,163 @@ +-- Npc.lua + +local Npc = class ( + function(self, parent, component) + self.parent = parent + self.component = component + + self.target = nil + self.targetName = "" + self.range = 500 + self.runSpeed = 4 + + self.lastTime = game.getTime() + + self.roam = true + self.roamSpeed = 1 + self.standing = true + self.standTimer = 0 + self.standTime = 1100 + self.walkingTimer = 0 + self.walkingTime = 1000 + self.walkingDirection = true -- right + + self.chased = false + self.chasedSpeed = 8 + self.chasedTimer = 0 + self.chasedTime = 2000 + end +) + +function Npc:onComponentAdd(component) + if(component == "Standard/Movable") then + movable = self.parent:getComponent(component) + movable.jumpPower = 2 + elseif(component == "Standard/Living") then + living = self.parent:getComponent(component) + living:listenForHealth(self) + end +end + +function Npc:onLoop() + movable = self.parent:getComponent("Standard/Movable") + if(movable == nil) then + do return end + end + + target = self.target + + if(self.target == nil and self.targetName ~= "") then + self.target = self.parent.entityManager:getEntity(self.targetName) + end + + if(target ~= nil) then + targetBox = target.body.box + thisBox = self.parent.body.box + + if(math.sqrt(math.pow(thisBox.x - targetBox.x, 2) + math.pow(thisBox.y - targetBox.y, 2)) > self.range) then + + if(self.roam) then + movable.movementSpeeds[movable.WALKING_MOVEMENT] = self.roamSpeed + + time = game.getTime() + dTime = time - self.lastTime + self.lastTime = time + + if(self.chased) then + movable.movementSpeeds[movable.WALKING_MOVEMENT] = self.chasedSpeed + self.chasedTimer = self.chasedTimer + time + if(self.chasedTimer > self.chasedTime) then + self.chasedTimer = 0 + self.chased = false + end + elseif(self.standing) then + self.standTimer = self.standTimer + dTime + if(self.standTimer > self.standTime) then + self.standing = false + self.standTimer = 0 + end + end + + self.walkingTimer = self.walkingTimer + dTime + if(self.walkingTimer > self.walkingTime) then + self.walkingTimer = 0 + self.standing = true + end + + if(math.random(50) == 1) then + self.walkingDirection = math.random(100) < 50 + end + + if(self.walkingDirection) then + movable:goRight() + else + movable:goLeft() + end + + end + else + movable.movementSpeeds[movable.WALKING_MOVEMENT] = self.runSpeed + targetX = 0 + targetY = targetBox.y + if(not target:hasProperty(EntityProperty.FLIP)) then + targetX = targetBox.x + else + targetX = targetBox.x + targetBox.w + end + targetX = targetX + (math.sin(game.getTime()) * 100) -- make them act more like bees + + thisX = thisBox.x + thisY = thisBox.y + + if(targetX > thisX) then + movable:goRight() + elseif(targetX < thisX) then + movable:goLeft() + end + + if(thisY > targetY) then + targetMovable = self.target:getComponent("Standard/Movable") + if(targetMovable ~= nil) then + if(not targetMovable.isFlying) then + movable:jump() + end + else + movable:jump() + end + end + end + end +end + +function Npc:onCollision(target, sides) + if(target:compare(self.target)) then + living = target:getComponent("Standard/Living") + if(living ~= nil) then + living:damage(50, self.parent) + end + end +end + +function Npc:onSerialize() + c = self.component + + c:addString("target", self.parent.entityManager:getNameOfEntity(self.target)) +end + +function Npc:onDeserialize(value) + decoded = json.decode(value) + + if(decoded.target ~= nil) then + self.target = getVal(self.target, self.parent.entityManager:getEntity(decoded.target)) + self.targetName = decoded.target + end + +end + +function Npc:onLivingDamage(amount) + self.chased = true +end + +function create(parent, component) + return Npc(parent, component) +end \ No newline at end of file diff --git a/Fifth/resources/scripts/Standard/Particle.lua b/Third/resources/scripts/Standard/Particle.lua similarity index 100% rename from Fifth/resources/scripts/Standard/Particle.lua rename to Third/resources/scripts/Standard/Particle.lua diff --git a/Fifth/resources/scripts/Standard/Projectile.lua b/Third/resources/scripts/Standard/Projectile.lua similarity index 89% rename from Fifth/resources/scripts/Standard/Projectile.lua rename to Third/resources/scripts/Standard/Projectile.lua index 754f08d..5755e50 100755 --- a/Fifth/resources/scripts/Standard/Projectile.lua +++ b/Third/resources/scripts/Standard/Projectile.lua @@ -4,6 +4,8 @@ local Projectile = class( function(self, parent, component) self.parent = parent self.component = component + self.require = {"Standard/Particle"} + self.body = parent.body self.box = self.body.box @@ -12,14 +14,16 @@ local Projectile = class( self.positions = {} self.positionsSize = 0 - if(self.parent:getComponent("Standard/Particle") == nil) then - self.parent:addComponent(self.component.instance, game.getScript("Standard/Particle")) - self.parent:getComponent("Standard/Particle").livingTime = 5 - end - end ) +function Projectile:onComponentAdd(component) + if(component == "Standard/Particle") then + particle = self.parent:getComponent(component) + particle.livingTime = 5 + end +end + function Projectile:onInit() --[[ diff --git a/Third/resources/scripts/Standard/Shooter.lua b/Third/resources/scripts/Standard/Shooter.lua new file mode 100755 index 0000000..8c4f7a8 --- /dev/null +++ b/Third/resources/scripts/Standard/Shooter.lua @@ -0,0 +1,49 @@ +-- Shooter.lua + +local Shooter = class( + function(self, parent, component) + self.parent = parent + self.component = component + end +) + +function Shooter:onKeyStates(state) + if(game:leftMousePressed() and not self.parent.isDead) then + box = self.parent.body.box + thisX = box.x + thisY = box.y + thisW = box.w + + for i = 0, 0 do + spawnX = thisX + thisW - 10 + spawnY = thisY + 68 + if(self.parent:hasProperty(EntityProperty.FLIP)) then + spawnX = spawnX - thisW + end + + --bullet = self.parent.entityManager:createColoredEntity(Box(spawnX, spawnY, 14, 10), Color(255, 5, 0, 255)) + bullet = self.parent.entityManager:createSpriteEntity(Box(spawnX, spawnY, 12, 6), "bullet") + self.parent.entityManager:addParticle(bullet) + script = game.getScript("Standard/Projectile") + bullet:addComponent(self.component.instance, script) + bullet:getComponent("Standard/Projectile"):onDeserialize('{"owner":"' .. self.parent.entityManager:getNameOfEntity(self.parent) .. '"}') + + tBody = self.parent.body + bBody = bullet:getComponent("Standard/Projectile").parent.body -- must do it this way + + bBody.velX = 25 + (math.random(5) - 2.5) + bBody.velY = -5 + (math.random(5) - 2.5) + if(self.parent:hasProperty(EntityProperty.FLIP)) then + bBody.velX = bBody.velX * -1 + end + + bBody.velX = bBody.velX + tBody.velX + bBody.velY = bBody.velY + tBody.velY + + end + end +end + +function create(parent, component) + return Shooter(parent, component) +end \ No newline at end of file diff --git a/Fifth/resources/scripts/Standard/bitwise.lua b/Third/resources/scripts/Standard/bitwise.lua similarity index 99% rename from Fifth/resources/scripts/Standard/bitwise.lua rename to Third/resources/scripts/Standard/bitwise.lua index 6c647e4..322b632 100755 --- a/Fifth/resources/scripts/Standard/bitwise.lua +++ b/Third/resources/scripts/Standard/bitwise.lua @@ -1,4 +1,5 @@ -- bitwise.lua + function BitXOR(a,b)--Bitwise xor local p,c=1,0 while a>0 and b>0 do diff --git a/Third/resources/scripts/Standard/class.lua b/Third/resources/scripts/Standard/class.lua new file mode 100755 index 0000000..3885a1b --- /dev/null +++ b/Third/resources/scripts/Standard/class.lua @@ -0,0 +1,46 @@ +-- class.lua + +-- Compatible with Lua 5.1 (not 5.0). +function class(base, init) + local c = {} -- a new class instance + if not init and type(base) == 'function' then + init = base + base = nil + elseif type(base) == 'table' then + -- our new class is a shallow copy of the base class! + for i,v in pairs(base) do + c[i] = v + end + c._base = base + end + -- the class will be the metatable for all its objects, + -- and they will look up their methods in it. + c.__index = c + + -- expose a constructor which can be called by () + local mt = {} + mt.__call = function(class_tbl, ...) + local obj = {} + setmetatable(obj,c) + if init then + init(obj,...) + else + -- make sure that any stuff from the base class is initialized! + if base and base.init then + base.init(obj, ...) + end + end + return obj + end + c.init = init + c.is_a = function(self, klass) + local m = getmetatable(self) + while m do + if m == klass then return true end + m = m._base + end + return false + end + setmetatable(c, mt) + return c +end \ No newline at end of file diff --git a/Fifth/resources/scripts/Standard/json.lua b/Third/resources/scripts/Standard/json.lua similarity index 100% rename from Fifth/resources/scripts/Standard/json.lua rename to Third/resources/scripts/Standard/json.lua diff --git a/Fifth/resources/scripts/Standard/standard.lua b/Third/resources/scripts/Standard/standard.lua similarity index 94% rename from Fifth/resources/scripts/Standard/standard.lua rename to Third/resources/scripts/Standard/standard.lua index 7020821..c0b87a1 100755 --- a/Fifth/resources/scripts/Standard/standard.lua +++ b/Third/resources/scripts/Standard/standard.lua @@ -53,12 +53,16 @@ RenderFlags = { RENDER_COMBAT_TEXT = 128 } +LogType = { + SUCCESS = 0, + ERROR = 1, + WARNING = 2, + ALERT = 3 +} + KeyCode = { _UNKNOWN = 0, - _ARROW_LEFT = 1073741904, - _ARROW_RIGHT = 1073741903, - _ARROW_UP = 1073741906, - _ARROW_DOWN = 1073741905, + _RETURN = 13, _ESCAPE = 27, _BACKSPACE = 8, @@ -132,14 +136,10 @@ KeyCode = { _ou = 246, _ao = 228, _uo = 229, -<<<<<<< HEAD - _PARA = 167 -======= _PARA = 167, _ARROW_UP = 1073741906, _ARROW_DOWN = 1073741905 ->>>>>>> Malaxiz/network } ScanCode = { @@ -403,7 +403,7 @@ ScanCode = { _SLEEP = 282, _APP1 = 283, - _APP2 = 284, + _APP2 = 284 } function toKeyCode(code) @@ -431,3 +431,16 @@ end function getVal(var, val) return (val ~= nil and val or var) end + +function Autotable(dim) + local MT = {}; + for i=1, dim do + MT[i] = {__index = function(t, k) + if i < dim then + t[k] = setmetatable({}, MT[i+1]) + return t[k]; + end + end} + end + return setmetatable({}, MT[1]); +end diff --git a/Fifth/resources/shader/light.frag b/Third/resources/shader/light.frag similarity index 98% rename from Fifth/resources/shader/light.frag rename to Third/resources/shader/light.frag index 6f8dc9b..42b7a8f 100755 --- a/Fifth/resources/shader/light.frag +++ b/Third/resources/shader/light.frag @@ -7,7 +7,9 @@ uniform float frag_LightAttenuation; // We could call this its luminosity uniform vec2 frag_ScreenResolution; // We need this because SFML reverses the Y axis. Note: we could just be using a single float for the Y resolution. -void main() { +void main() + +{ vec2 baseDistance = gl_FragCoord.xy; // Storing our pixel's position diff --git a/Fifth/resources/shader/pixelate.frag b/Third/resources/shader/pixelate.frag similarity index 100% rename from Fifth/resources/shader/pixelate.frag rename to Third/resources/shader/pixelate.frag diff --git a/Third/resources/template/frog.tmp b/Third/resources/template/frog.tmp new file mode 100755 index 0000000..6750b0b --- /dev/null +++ b/Third/resources/template/frog.tmp @@ -0,0 +1,36 @@ +{ + "entity": { + "name": "frog", + + "w":64, + "h":128, + "velX":0.0, + "velY":0.0, + "spriteKeys":{ + "ASCENDING":"bunnyJump", + "DESCENDING":"bunnyJump", + "WALKING":"bunny" + }, + "defaultSpriteKey":"bunny", + "colorR":255, + "colorG":0, + "colorB":255, + "colorA":255, + "properties":3, + "collisionLayers":1, + "components":{ + "Standard/ExplodeOnDeath":{ + }, + "Standard/Living":{ + "health":750, + "kevlar":500 + }, + "Standard/Movable":{ + "walking_movement_speed":10.0, + "running_movement_speed":20.0, + "sneaking_movement_speed":5.0, + "isFlying":0 + } + } + } +} \ No newline at end of file diff --git a/Fifth/resources/ttf/font.ttf b/Third/resources/ttf/font.ttf similarity index 100% rename from Fifth/resources/ttf/font.ttf rename to Third/resources/ttf/font.ttf From 5a0e374e2db1cb914da926c44e89473e07a3b204 Mon Sep 17 00:00:00 2001 From: Azinum Date: Mon, 2 May 2016 20:14:32 +0200 Subject: [PATCH 8/8] Added birch --- Third/resources/gfx/sheet#2.png | Bin 0 -> 266171 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 Third/resources/gfx/sheet#2.png diff --git a/Third/resources/gfx/sheet#2.png b/Third/resources/gfx/sheet#2.png new file mode 100755 index 0000000000000000000000000000000000000000..7fb28c3cdd95efde8e35b2ff66d3e240038a435e GIT binary patch literal 266171 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