From dd2debc0bdd4db3001566d18a4a70be984b120a6 Mon Sep 17 00:00:00 2001 From: lustlion Date: Sun, 28 Nov 2021 03:38:30 +0100 Subject: [PATCH] uh, a lot happened, i murdered physics code, redesigned tiles & levels, now i need to make another level editor. I'm sorry game. I'm sorry git. --- assets/terrain/tileset.png | Bin 2387 -> 0 bytes assets/tileset/books.png | Bin 0 -> 1157 bytes assets/tileset/bricks.png | Bin 0 -> 1602 bytes assets/tileset/demoncity.png | Bin 0 -> 2579 bytes assets/tileset/library.png | Bin 0 -> 4123 bytes assets/ui/magic.png | Bin 0 -> 1645 bytes data/levels/2.json | 1 - data/levels/3.json | 1 - data/levels/33 (2).json | 1 - data/levels/33.json | 1 - data/levels/LevelProperties.lua | 30 - data/levels/ewae.json | 1 - data/levels/level1.json | 1 - data/levels/level1.lua | 16 + data/levels/level2.json | 1 - data/levels/level3.json | 1 - data/levels/tileset.json | 1 - data/scripts/debug.lua | 19 +- data/scripts/entities/arrow.lua | 22 +- data/scripts/entities/player.lua | 218 ++----- data/scripts/entity.lua | 39 +- data/scripts/enums.lua | 14 +- data/scripts/level.lua | 95 ++- data/scripts/lights.lua | 72 +-- data/scripts/objects.lua | 54 +- data/{tiles.lua => tileset/bricks.lua} | 698 +++++++++++---------- data/tileset/library.lua | 80 +++ main.lua | 18 +- to_do.txt | 8 +- unused slash dev/spa receptionist name.txt | 2 + 30 files changed, 701 insertions(+), 693 deletions(-) delete mode 100644 assets/terrain/tileset.png create mode 100644 assets/tileset/books.png create mode 100644 assets/tileset/bricks.png create mode 100644 assets/tileset/demoncity.png create mode 100644 assets/tileset/library.png create mode 100644 assets/ui/magic.png delete mode 100644 data/levels/2.json delete mode 100644 data/levels/3.json delete mode 100644 data/levels/33 (2).json delete mode 100644 data/levels/33.json delete mode 100644 data/levels/LevelProperties.lua delete mode 100644 data/levels/ewae.json delete mode 100644 data/levels/level1.json create mode 100644 data/levels/level1.lua delete mode 100644 data/levels/level2.json delete mode 100644 data/levels/level3.json delete mode 100644 data/levels/tileset.json rename data/{tiles.lua => tileset/bricks.lua} (94%) create mode 100644 data/tileset/library.lua create mode 100644 unused slash dev/spa receptionist name.txt diff --git a/assets/terrain/tileset.png b/assets/terrain/tileset.png deleted file mode 100644 index d7b46ef37da6022d456382463a854a71b96621b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2387 zcmeAS@N?(olHy`uVBq!ia0vp^7Z?~A8#tJOtk=yltPBjy3;{kNu0Za8Ah@IlWQ>B* z5EyA8VDmgF66j~fk|4ie28U-i(ij-n7(HDaLn`LHoz+{k*no#EvEqOEK2PDM+&|r+ zH(uGD-Fj!)#*0eIPLoorkM7F-T~_=5)}`b2w@rI5|8Ns|_BU_3+m>hXZmrv5Tpq7B z)W0&LK4L}W!mM7MmRFzWd*6__&~x(RWv7>cQT_ktY|q~Cg6sCpkFrizf2y{KZ?a>b zXWuS#dfm2I%Tt#h-)3K9W$&M{`q-|k&+j)lomGvN-2ds^!k5Jpu0370`^lS@nawxs z{~0r>PB}IsU`w*J;%ieIv%1rECY%3H4k&Tu`(3SgX|c(Tr+(L`-qf3UFaD117XD2l zUEWpeFH|qjbXxjxr#O?c)6L`l>({nTt2}QRQ0ez>YkJzB#F=3lpMR`$+8q1o%FjTibbBcXsK4EZd|wZr>@qNmev5nYuEp+`pkTO;VtXX<$KP37T+ED@#AN^ zq=PrN-R^ky_ri*RU0elDiTC-#uU+Nxjd!o=(fWM6+ej>`xc-IUD!q?xUpTHli$Aol ze$|CMdA*&%;iqH{9=iB`SKpVA6-M<-WWH@W?bQ4F#Fl{Mf2yy3yEz>-5L$Ki|L2}N zO#5p1wysm|&EUTJJiqU*UH+Ci{m*`Xyry%%dAqz+vRu)xS5t1Kv|n1!ohlx?+UjWO z{jguP3pdz_E{t8Sp5-O5aNesgp)c7MD$k!3aD{7@)7N57g^<@dOLHS%7A~Avtlm54 z60cJt+sl9JLzc%ay)X2$=;1nrYdclG+>2iIWx)lHbZzdXUj3YB=U8X9c$sswR>$$K zp1dBY=lH+<<^s*v=Uy`lsdC6zwt4Ed_DgS_rakwQdU$5PhRC~(UoJiWVJo${vrm5O zsZtGrs{hqa8PZ*L3!mzi96j!kvBsv>Dg63vV<*A-&+(VT9XaKEcWg5iywzV;y*pgv zf%5$qU%fUx`L=)iHj#z4D;L-V278>I-g|zsg40K>(?y%D(wvwBE!uTj*LBrczKdF$ zyYKYe={LTrwhLI9H@@~w3|sN-r~j_CbqVFWiv9TO({FDRc-5!-H_CZ?K>du66^pIj zADUu!G+%e8bt{|Kmik3iLRqG*yIXfHR@$Po@j_AQ)wA5D_D)twnl*i%W@d6CAozx7F_PN#9=|h6_9G{DWle-r$uxnvsxImEPE$sCBO)Zqo&GcIS`b;v T#gsh(R2zD_`njxgN@xNA8ng5u diff --git a/assets/tileset/books.png b/assets/tileset/books.png new file mode 100644 index 0000000000000000000000000000000000000000..bde318d3975f12df207cf466208f2e29fba4b7bd GIT binary patch literal 1157 zcmV;01bX|4P)Px(KS@MERCt{2Tw8MMAPj|0w^L{T%c!#;`jJ3op(l3y80*a3nd=xmLD)GW&FPIY zPbKY$Jk1$ihyAdBr2Rl3a3sn+6=@ex@4o@ZQ*xY+D&OS5wdPkFZ;1i<=|R)eW5v3p&o~)MPJ1HYd9wIT+4-^x?gcF%OTaKW9yyC&lpgAOjV;PH`MIGmy?)_1 zwOBd5!$s~XL}O8Nv80sJ_lT2wpgNm#cD<{WQc8M0iP`{g$uWhC3KgP7D;ZppN|A5or{69yTJ2djtwK{Oe{PFRFOG1jMv!wznj+>9H_ap z6!>ENJQXfic)n6PVF6U&LbxJ4F>pIpyLUkh72q0sj;BSFssGt~q2bqpupjo1u>b!A z*x?;fMA#4efk5CuG_FYCv*8yL$V+p2NO{A18prc?*A(w8jL~>#Ee8~>M#>@|Eb(%D zxi%-957IczK8%;kf#e&`6PB^&g|p4&n4-Wbf9mI(e+iZnugNXwGKKXi+7PMlYnqSS17gFI^H=%Ccl&AKlMPjUV3GwFz<=Iml0sQU{(nc?>Fmw0U3(g)~bAo9`W z1pbp^74l~7lSuNTa#SCLyVm4b8^(2G_1QI^u>B?7q#X4a^#*ELe3A`Ia$WvAn|9JY zxIoBpTP}gJ50v1S>^%6noRII3*2pSEFEsKqg= zch3`^T)wG>*QgD10c;WY*2&{IY0L$CnqU?mp+1&pURe~?52_HW4;DS2>|S%ewR;$z zo&^D_Xxmt-0aoRNT%Gp!00B^p@8b;1*FAef@ne3S1ZtOClCA&QJD{`hz+wO1_M;CF z_QQT4aC>m)$vu=>mBW1ms7F1IZlN+2UDEh^&Dpo;q5NIL-3N|?co=Ri=fCE?ZfJp{ z;*lC^lCEK&qX;gCU05L3!XW+x2={}Bg$x?M#R*WZ7|iG5%XVCT;4?56zzD}$@0)(; zLXE5RpVrh8e(*2~l0Qdwr2c}&Pv7B)_7!ltKaH4DzhmZU&R1G6vGZRC(FX|ox3>QW X*C(=U@B@>Q00000NkvXXu0mjf+CD5- literal 0 HcmV?d00001 diff --git a/assets/tileset/bricks.png b/assets/tileset/bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..035bc32949c3a13aba26477ac2952b865c875cd3 GIT binary patch literal 1602 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 Z{{c_xAO|+Vb&vo6002ovPDHLkV1k(p1w{Y= literal 0 HcmV?d00001 diff --git a/assets/ui/magic.png b/assets/ui/magic.png new file mode 100644 index 0000000000000000000000000000000000000000..8cd8c2b11f0fa293d9d99902c45aa0060d8c76b7 GIT binary patch literal 1645 zcmajgdpOf;00;1&LyU}yN;@vC(hX@vwHc?9*v1GOGc`^rbDP>kbB`=Voepi(rgfP` zn941zq2+ocn!6&UorYpAt6VzkInH^`f9HLk_kEw|{p5#i}KcSq5LF&pCkpd$tHx;V8<3XV4h2cj4P~U<&bigx;J$}?B?DanFT=gf|oc562 zd$adAv04*50+OtrpdMvAXo(D+9^e0B?2xe`pbC$Csi9U}==wdgQP750K`6)Br2Uj% z(_k2FXhH(KTIJJ_!PA!NXPD$k#7Yv>@cRyy!Vd7g5+o$qEnEbEtCaGQStDI(oPIM^ zp_ur6N^8Nu?$+n4ZBqG;d)jNlij1+{J!G)zK<~0E-N3WauRddk>*oB{oGK-sZ+V!7 ztT9RpkFPwY`c4nv=!;3zBH2dIBEyyENjT8CYBBUdAa1r#Sv#yJdk?F(~#_poOUa~R&Bb@Lx5+^7(z?0QPBgf zx2>`0%bI-)eKYjtqC!!w$Ym(hZ(Q7JarsQp7V$2FZH3}q$XZ(TZ%jG}8b}0xX+iPNn$Ia`)e z{suqZziKTYDs=cJoxb@%qtoY_=malH*14}5ToO0RR|y^|_cg_d4A4n;!I#9bF;%uM zzGUvh0r(tzZ&pJ&F)En|dz4YO2L+;BGB`dj|LEx4e_)o;mY38SHP9|-#VC4Bz*~#W z(-~xQ@2m+YAH51Mr*wztCdb0+vH9JB-V8_@0g$-8mwkmw0(YEp*O| zYk{C@`CiHn3`qro>|gHKrAaA9vy~P%R5gOYys*v(%a-4O1u{v)nH9thMCiMIk@*uj zxF&m|t3N-MIDAjSE0?QRcw9%wSq1v8LI|Tgv5O+~_wHl*Pzar9P9*+k{ZyN}*bnVo=r{<6Mm8p%_(X)u{V&a|9V>OHqb z2$cG4>pDf6z1OP!UNR%_5v7{)=RA#a|wvvXgm2AH6E(^PScH+J@_9^C+-959J zD<_pl&nbe8B_wev+J0rU5B2kRoR+2P0<#}=s(o)TF4QwUr0hZ%F)!FCcYv&NkWjDI zU6iomV53f=KcjaHofqlfW9Qar)7my4Zb&F;PBxgyQFk3eh4xG(v#(dufR;I~*^HR9 z3zkF2=>*&3MW?fz$;2RGK&M&68$y7ad5fhEZF?kE&6?oC+9(Fuc*q*;o%s(&nyqd5 zTKJL4oe`nOXj^BfPq$g}jyx4_B)horCBil1Ljh%F^(& ziKylg!53y@+KP<|x>sUu%U1Doz5sqEwGA!2bKZd=@Q4?^kg4mH9sbR$(OJv@=kOmr zO&t$>bz@T`cH%pw+S1i?pixzem5)m_EiBQ(EMUGKTA9<0=t*A|N1tv-!4@z{u&o8Rx`cA@e#gMCv zyx^&h*duuvF?z=DU(7iN|CR3*Z!xICb|EF^+nehVt&FXRaaN}e*h>4?4hEA He&_!Jz0oDp literal 0 HcmV?d00001 diff --git a/data/levels/2.json b/data/levels/2.json deleted file mode 100644 index 65e5c9e..0000000 --- a/data/levels/2.json +++ /dev/null @@ -1 +0,0 @@ -[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[202,202,202,202,202,202,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,202,0,202,202,202,202,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,106,106,106,106,106,106,106,106,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,119,119,119,119,119,119,119,130,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,119,119,119,119,119,119,119,119,130,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,119,119,119,119,119,119,119,119,119,130,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,119,119,119,119,119,119,119,119,119,119,130,106,106,106,106,106,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]] \ No newline at end of file diff --git a/data/levels/3.json b/data/levels/3.json deleted file mode 100644 index ddff12a..0000000 --- a/data/levels/3.json +++ /dev/null @@ -1 +0,0 @@ -[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[186,186,0,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,183,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[186,186,0,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[186,186,0,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,153,0,0,188,189,189,189,189,190,0,0],[186,186,0,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,157,0,0,201,229,229,229,187,203,0,0],[186,186,0,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,157,0,0,0,229,226,226,229,0,0,0],[186,186,0,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,0,0,0,0,191,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,157,0,0,0,229,226,226,229,0,0,0],[186,186,0,186,186,183,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,183,202,202,202,202,208,183,185,185,185,185,185,185,185,185,185,185,185,185,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,157,0,0,0,229,226,226,229,0,0,0],[186,186,0,186,186,183,0,0,0,0,0,196,0,0,0,0,0,196,0,0,0,0,0,196,0,0,0,0,0,196,0,0,0,0,204,183,186,186,186,186,186,186,186,186,186,186,186,186,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,222,157,0,0,0,229,226,226,229,0,0,0],[186,186,0,186,186,183,0,0,0,0,0,199,0,0,0,0,0,198,0,0,0,0,0,199,0,0,0,0,0,198,0,0,0,0,204,183,186,186,186,186,186,186,186,186,186,186,186,186,183,0,0,0,0,308,309,0,0,0,0,0,0,0,0,0,0,10,223,222,157,157,0,0,0,229,226,226,229,0,0,0],[186,186,0,0,0,0,0,0,0,0,0,198,0,0,0,0,0,199,0,0,0,0,0,198,0,0,0,0,0,199,0,0,0,0,204,183,186,186,186,186,186,186,186,186,186,186,186,186,183,0,0,0,0,310,0,0,0,0,0,0,0,0,0,10,157,223,104,0,157,157,0,0,0,229,226,226,229,0,0,0],[186,186,186,186,186,183,0,0,0,0,0,198,0,0,0,0,0,198,0,0,0,0,0,199,0,0,0,0,0,199,0,0,0,0,204,183,186,186,186,186,186,186,186,186,186,186,186,186,183,5,0,0,0,310,0,0,0,0,0,0,0,10,222,157,104,0,0,0,157,157,0,0,0,229,226,226,229,0,0,0],[186,186,186,186,186,183,0,0,0,0,0,197,0,0,0,0,0,197,0,0,0,0,0,197,0,0,0,0,0,197,0,0,0,0,217,183,186,186,186,186,186,186,186,186,186,186,186,186,183,18,8,9,0,311,0,0,0,0,0,10,222,222,104,0,0,0,0,0,157,157,0,0,0,229,226,226,229,0,0,0],[186,186,186,186,186,183,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,183,186,186,186,186,186,186,186,186,186,186,186,186,183,15,21,22,2,2,2,2,2,2,157,157,157,2,2,2,2,2,2,2,157,157,2,2,2,229,226,226,229,2,2,2],[186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,229,226,226,229,15,15,15],[186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,229,226,226,229,15,15,15],[186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,229,226,226,229,15,15,15],[186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,229,226,226,229,15,15,15],[186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,229,226,226,229,15,15,15],[186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,183,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,229,226,226,229,15,15,15]] \ No newline at end of file diff --git a/data/levels/33 (2).json b/data/levels/33 (2).json deleted file mode 100644 index 837b13e..0000000 --- a/data/levels/33 (2).json +++ /dev/null @@ -1 +0,0 @@ -[[1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,1,21,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,1,1,1,1,1,8,5,5,5,5,5,5,5,5,5,5,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,1,1,1,1,8,20,0,0,41,0,41,0,41,0,0,41,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,17,17,17],[1,1,1,1,8,20,0,0,0,41,0,41,0,53,0,0,41,0,0,0,0,0,0,0,10,17,17,12,4,4,4,4,4,4,4,4,22,1,1,1],[1,1,1,8,20,0,0,0,0,54,0,41,0,0,0,0,41,0,0,0,0,6,4,4,22,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,3,0,0,0,0,0,0,0,41,0,0,0,0,41,0,0,0,0,19,5,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,3,0,0,0,0,0,0,0,49,50,50,50,50,51,0,0,0,0,0,0,19,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,50,50,50,50,50,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]] \ No newline at end of file diff --git a/data/levels/33.json b/data/levels/33.json deleted file mode 100644 index 1612df3..0000000 --- a/data/levels/33.json +++ /dev/null @@ -1 +0,0 @@ -[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,162,163,163,163,164,0,0,0,0,0,0,0,0,0],[154,155,0,0,0,0,144,145,145,146,176,176,176,144,145,145,146,0,0,0,0,152,153],[175,182,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,169,177],[0,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,0],[0,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,0],[0,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,0],[0,181,0,162,164,0,0,0,0,0,0,0,0,0,0,0,0,0,162,164,0,178,0],[0,0,0,175,177,0,0,0,0,0,0,0,0,0,0,0,0,0,175,177,0,0,0],[0,0,0,0,0,0,144,145,145,145,145,145,145,145,145,145,146,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]] \ No newline at end of file diff --git a/data/levels/LevelProperties.lua b/data/levels/LevelProperties.lua deleted file mode 100644 index febc239..0000000 --- a/data/levels/LevelProperties.lua +++ /dev/null @@ -1,30 +0,0 @@ -LevelProperties = { - pos = { - x = 0, - y = 0 - }, - offset = { - x = 0, - y = 0 - } -} - -TileProperties = { - width = 16, - height = 16, - scale = game.scale, - tileset = love.graphics.newImage("assets/terrain/tileset.png") -} - -TileCollisions = { - whole = { 001, 002, 003, 004, 005, 006, 007, 008, 009, 010, 011, 012, 013, 014, 015, 016, 018, 019, 020, 021, 022, 024, 025, 026, 027, 028, 029, 030, 031, 032, 033, 034, 035, 036, 037, 038, 039, 040, 041, 042, 043, 044, 045, 049, 050, 051, 052, 054, 055, 056, 057, 061, 062, 063, 064, 065, 066, 067, 068, 069, 85, 086, 087, 088, 089, 090, 091, 092, 093, 094, 095, 096, 097, 098, 099, 100, 101, 102, 103, 104, 105, 106, 107, 108,113, 114, 115, 116, 125, 126, 127, 128, 133, 134, 135, 136, 137, 138, 139, 140, 145, 146, 147, 148, 149, 150, 151, 152 }, - platform = { 046, 047, 048, 058, 059, 060 }, - ramp_topright_bot = { 109, 161, 117, 157 }, - ramp_topright_top = { 110, 162, 118, 158 }, - ramp_topleft_top = { 111, 163, 119, 159 }, - ramp_topleft_bot = { 112, 164, 120, 160 }, - ramp_botright_bot = { 073, 077, 081, 121 }, - ramp_botright_top = { 074, 078, 082, 122 }, - ramp_botleft_top = { 075, 079, 083, 123 }, - ramp_botleft_bot = { 076, 080, 084, 124 } -} diff --git a/data/levels/ewae.json b/data/levels/ewae.json deleted file mode 100644 index 1612df3..0000000 --- a/data/levels/ewae.json +++ /dev/null @@ -1 +0,0 @@ -[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,162,163,163,163,164,0,0,0,0,0,0,0,0,0],[154,155,0,0,0,0,144,145,145,146,176,176,176,144,145,145,146,0,0,0,0,152,153],[175,182,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,169,177],[0,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,0],[0,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,0],[0,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,0],[0,181,0,162,164,0,0,0,0,0,0,0,0,0,0,0,0,0,162,164,0,178,0],[0,0,0,175,177,0,0,0,0,0,0,0,0,0,0,0,0,0,175,177,0,0,0],[0,0,0,0,0,0,144,145,145,145,145,145,145,145,145,145,146,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]] \ No newline at end of file diff --git a/data/levels/level1.json b/data/levels/level1.json deleted file mode 100644 index 296c839..0000000 --- a/data/levels/level1.json +++ /dev/null @@ -1 +0,0 @@ -[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,5,5,5,5,5,5,5,5,5,5,5,9,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66],[68,68,68,68,68,68,68,68,6,4,4,31,32,0,0,0,0,0,55,0,0,0,0,0,0,0,0,2,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66],[66,66,66,66,66,66,66,66,66,66,66,66,30,31,32,0,0,0,0,0,0,0,0,0,0,0,0,2,66,66,66,66,66,66,66,66,66,66,66,66,66,8,5,5,5,5,5,5,5,5,5,5,5,5,9,66,66,66,66,66],[66,66,66,66,66,66,66,66,66,66,66,66,66,66,30,4,4,4,4,4,7,0,0,0,0,0,0,2,66,66,66,66,66,66,66,66,66,66,66,66,66,3,0,0,0,0,0,0,0,0,0,0,0,0,2,66,66,66,66,66],[66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,3,14,0,0,0,0,0,2,66,66,66,66,66,66,66,66,66,66,66,66,66,3,0,0,0,0,0,0,0,0,0,0,0,0,2,66,66,66,66,66],[66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,3,0,14,0,0,0,0,19,5,5,5,5,5,5,5,5,5,5,5,5,5,20,0,0,0,0,0,0,0,0,0,0,0,0,2,66,66,66,66,66],[66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,3,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,66,66,66,66,66],[66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,3,0,0,0,14,0,0,0,0,55,0,0,0,0,55,0,0,0,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,66,66,66,66,66],[66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,66,66,66,66,66],[66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,3,0,0,0,0,0,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,22,66,66,66,66,66],[66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,8,5,5,5,5,20,0,0,0,0,6,22,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66],[66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,3,0,0,0,0,0,0,0,0,6,22,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66],[66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,3,0,0,55,0,0,0,0,6,22,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66],[66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,3,0,0,0,0,0,0,6,22,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66],[66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,21,4,4,4,4,4,4,22,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66],[66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66]] \ No newline at end of file diff --git a/data/levels/level1.lua b/data/levels/level1.lua new file mode 100644 index 0000000..bd8aeeb --- /dev/null +++ b/data/levels/level1.lua @@ -0,0 +1,16 @@ +return { + name = "level1", + tileset = tileset.library, + tiles = { + { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13}, + { }, + { 0, 0, 0, 0, 0, 0, 5,25,26, 6,25,26, 7, 0, 5,25,26, 7}, + { 0, 0, 0, 0, 0, 0, 5,37,38, 6,37,38, 7, 0, 5,37,38, 7}, + { 0, 0, 0, 0, 0, 0, 5,37,38, 6,37,38, 7, 0, 5,37,38, 7}, + { 0, 0, 0, 0, 0, 0, 5,49,50, 6,49,50, 7, 0, 5,49,50, 7}, + { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13}, + }, + objects = {} +} diff --git a/data/levels/level2.json b/data/levels/level2.json deleted file mode 100644 index 65e5c9e..0000000 --- a/data/levels/level2.json +++ /dev/null @@ -1 +0,0 @@ -[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[202,202,202,202,202,202,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,202,0,202,202,202,202,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,106,106,106,106,106,106,106,106,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,119,119,119,119,119,119,119,130,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,119,119,119,119,119,119,119,119,130,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,119,119,119,119,119,119,119,119,119,130,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,119,119,119,119,119,119,119,119,119,119,130,106,106,106,106,106,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]] \ No newline at end of file diff --git a/data/levels/level3.json b/data/levels/level3.json deleted file mode 100644 index 638683e..0000000 --- a/data/levels/level3.json +++ /dev/null @@ -1 +0,0 @@ -[[119,119,119,0,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119],[119,119,119,0,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119],[119,119,119,0,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119],[132,132,132,0,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132],[0,110,110,110,110,0,290,0,110,111,111,111,0,111,110,110,112,112,110,0,290,0,0,110,110,110,0,0,110,0,112,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,0,0],[0,0,0,0,0,0,290,0,0,0,0,0,0,0,0,0,0,0,0,0,290,0,0,0,0,0,0,0,0,0,0,290,0,0,0,162,163,163,163,163,163,163,163,163,163,163,164,0,152,153,290,193,194],[0,0,0,0,0,0,290,0,0,0,0,0,0,0,0,0,0,0,0,0,290,0,0,0,0,0,0,0,0,0,0,290,0,0,0,175,176,176,176,176,176,176,176,176,176,176,177,0,169,166,106,206,207],[0,0,0,0,0,0,290,0,0,0,0,0,0,0,0,0,0,0,0,162,300,163,163,163,164,0,0,0,0,0,0,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,179,119,219,207],[0,0,0,0,0,162,300,163,164,0,0,0,0,0,0,0,0,0,0,175,301,176,176,176,177,0,0,0,0,0,0,290,0,0,0,308,309,0,0,0,0,0,242,0,0,152,153,0,178,179,119,219,207],[0,0,0,0,0,175,301,176,177,0,0,0,0,0,0,0,0,0,0,0,290,0,0,0,0,0,0,0,0,0,0,290,0,0,0,310,0,257,258,259,0,0,255,0,0,165,166,106,106,121,119,219,207],[0,0,0,0,0,0,290,0,0,0,0,0,0,0,0,0,0,0,0,0,290,0,0,0,0,0,0,0,0,0,0,290,0,0,0,310,0,270,271,272,0,267,268,269,0,165,179,119,119,119,119,219,207],[0,0,0,0,188,189,302,190,0,0,0,0,0,0,0,0,0,0,0,0,290,0,0,0,0,0,0,0,0,0,0,290,244,245,0,311,0,283,0,285,0,280,281,282,0,178,179,119,119,119,119,219,207],[0,0,0,0,201,202,303,203,0,0,0,0,0,0,0,0,0,0,0,0,290,0,0,0,0,0,0,114,115,106,106,106,158,106,106,161,160,106,157,106,158,160,106,157,106,106,121,119,119,119,119,219,207],[0,0,0,0,0,0,290,0,0,0,0,0,0,0,0,0,0,0,0,0,290,0,0,114,115,106,106,127,119,119,119,119,119,119,160,119,119,119,119,157,159,119,119,119,119,119,119,119,119,119,119,219,207],[106,106,106,106,304,305,291,287,287,306,307,109,0,0,0,0,0,0,0,114,307,106,106,127,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,219,207],[119,119,119,119,119,130,106,106,106,127,129,130,116,117,0,114,115,106,106,127,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,219,207],[157,157,157,157,157,157,157,157,157,157,157,157,157,157,176,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157],[119,119,119,119,119,119,119,157,119,157,119,119,119,120,0,118,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119],[119,119,119,119,119,119,119,158,119,160,119,119,119,120,0,118,119,119,119,119,119,119,119,119,119,119,119,119,119,184,119,185,119,119,119,183,67,67,119,119,119,119,119,184,184,183,186,186,183,184,186,183,183],[119,119,119,119,119,119,119,160,119,159,119,119,135,133,0,118,119,119,119,119,119,119,119,119,119,119,119,135,132,183,119,186,119,119,119,186,67,67,119,119,119,119,119,186,0,0,0,0,0,0,0,0,0],[119,119,119,119,119,119,119,159,119,158,119,119,120,0,0,131,134,119,119,119,119,119,119,119,135,132,132,133,0,186,119,183,119,119,119,185,67,67,119,119,119,119,119,186,0,0,0,0,0,0,0,0,0],[119,119,119,119,119,119,119,160,119,160,119,119,120,0,0,0,118,119,119,119,119,119,135,132,133,0,0,0,0,185,119,185,119,119,119,184,67,67,67,119,119,119,119,184,0,0,191,192,0,0,0,0,0],[119,119,119,119,119,119,119,158,119,157,119,135,133,0,0,0,131,134,119,119,119,119,120,0,112,0,0,0,0,184,186,184,183,185,184,186,184,186,184,185,184,186,184,185,202,202,208,185,185,184,185,186,184],[119,119,119,119,119,119,119,159,119,158,119,120,0,0,0,0,0,118,119,119,132,119,120,0,0,0,0,0,0,0,0,196,0,0,0,196,0,290,0,196,0,0,0,196,0,0,204,183,119,119,119,119,119],[160,159,157,160,157,160,158,157,159,158,159,157,0,0,0,0,0,159,157,159,0,158,159,0,0,0,0,0,0,0,0,199,0,0,0,199,0,290,0,198,0,0,0,199,0,0,204,186,119,119,119,119,119],[119,119,119,119,119,119,119,120,112,170,0,0,0,0,0,0,0,0,0,170,0,0,0,0,0,0,0,0,0,0,0,197,0,0,0,197,189,302,189,197,0,0,0,197,0,0,204,185,119,119,119,119,119],[119,119,119,119,119,119,119,130,109,171,0,0,0,0,0,0,0,0,0,172,0,0,0,174,0,0,0,114,115,186,185,183,184,184,184,184,202,303,202,185,184,186,184,184,184,186,185,184,119,119,119,119,119],[119,119,119,119,119,119,119,119,130,106,109,162,163,163,163,163,163,164,0,171,115,159,0,171,0,114,157,127,119,185,119,183,119,119,119,186,0,290,0,183,119,119,119,185,119,119,119,119,119,119,119,119,119],[160,158,159,160,159,159,158,159,157,158,160,157,176,176,176,176,176,160,157,158,159,159,160,158,157,127,119,119,119,185,119,184,119,119,119,184,287,291,287,184,119,119,119,184,119,119,119,119,119,119,119,119,119],[119,119,119,119,119,119,119,160,119,158,119,130,109,0,0,0,0,118,119,119,119,119,119,119,119,119,119,119,119,184,119,183,119,119,119,186,288,288,288,185,119,119,119,186,119,119,119,119,119,119,119,119,119],[119,119,119,119,119,119,119,160,119,157,119,119,130,116,117,125,126,118,119,119,119,119,119,119,119,119,119,119,119,186,119,185,119,119,119,184,289,289,289,184,119,119,119,186,119,119,119,119,119,119,119,119,119],[119,119,119,119,119,119,119,159,119,158,119,119,119,119,130,106,106,121,119,119,119,119,119,119,119,119,119,119,119,183,119,184,119,119,119,185,289,289,289,183,119,119,119,185,119,119,119,119,119,119,119,119,119],[119,119,119,119,119,119,119,158,119,158,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,186,119,186,119,119,119,184,289,289,289,184,119,119,119,183,119,119,119,119,119,119,119,119,119],[119,119,119,119,119,119,119,157,119,157,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,184,119,183,67,67,119,184,289,289,289,186,119,119,119,185,119,119,119,119,119,119,119,119,119],[119,119,119,119,119,119,119,160,119,158,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,186,119,183,119,119,119,184,289,289,289,183,119,119,119,185,119,119,119,119,119,119,119,119,119],[119,119,119,119,119,119,119,158,119,159,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,183,119,186,119,119,119,183,289,289,289,186,119,119,119,186,119,119,119,119,119,119,119,119,119],[119,119,119,119,119,119,119,157,119,160,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,185,119,183,119,119,119,185,289,289,289,185,119,119,119,185,119,119,119,119,119,119,119,119,119],[209,209,209,209,209,209,209,159,119,158,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,186,119,186,119,119,119,183,289,289,289,184,119,119,119,185,119,119,119,119,119,119,119,119,119]] \ No newline at end of file diff --git a/data/levels/tileset.json b/data/levels/tileset.json deleted file mode 100644 index 73f03a4..0000000 --- a/data/levels/tileset.json +++ /dev/null @@ -1 +0,0 @@ -[[107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105],[120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118],[120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,192,118],[122,167,182,1,2,3,4,5,6,7,8,9,10,11,12,13,208,205,121],[119,180,168,14,15,16,17,18,19,20,21,22,23,24,25,26,204,218,119],[119,180,168,27,28,29,30,31,32,33,34,35,36,37,38,39,204,218,119],[119,180,168,40,41,42,43,44,45,46,47,48,49,50,51,52,204,218,119],[119,180,168,53,54,55,56,57,58,59,60,61,62,63,64,65,204,218,119],[119,180,182,66,67,68,69,70,71,72,73,74,75,76,77,78,208,218,119],[119,180,168,79,80,81,82,83,84,85,86,87,88,89,90,91,204,218,119],[119,180,168,92,93,94,95,96,97,98,99,100,101,102,103,104,204,218,119],[119,180,168,105,106,107,108,109,110,111,112,113,114,115,116,117,204,218,119],[119,180,182,118,119,120,121,122,123,124,125,126,127,128,129,130,208,218,119],[119,180,168,131,132,133,134,135,136,137,138,139,140,141,142,143,204,218,119],[119,180,168,144,145,146,147,148,149,150,151,152,153,154,155,156,204,218,119],[119,180,168,157,158,159,160,161,162,163,164,165,166,167,168,169,204,218,119],[119,180,182,170,171,172,173,174,175,176,177,178,179,180,181,182,208,218,119],[119,180,168,183,184,185,186,187,188,189,190,191,192,193,194,195,204,218,119],[119,180,168,196,197,198,199,200,201,202,203,204,205,206,207,208,204,218,119],[119,180,168,209,210,211,212,213,214,215,216,217,218,219,220,221,204,218,119],[119,180,182,222,223,224,225,226,227,228,229,230,231,232,233,234,208,218,119],[119,180,168,235,236,237,238,239,240,241,242,243,244,245,246,247,204,218,119],[119,180,168,248,249,250,251,252,253,254,255,256,257,258,259,260,204,218,119],[119,180,168,261,262,263,264,265,266,267,268,269,270,271,272,273,204,218,119],[119,180,182,274,275,276,277,278,279,280,281,282,283,284,285,286,208,218,119],[119,180,168,287,288,289,290,291,292,293,294,295,296,297,298,299,204,218,119],[119,180,168,300,301,302,303,304,305,306,307,308,309,310,311,312,204,218,119],[119,120,181,0,0,0,0,0,0,0,0,0,0,0,0,0,217,118,119],[119,122,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,121,119],[119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119]] \ No newline at end of file diff --git a/data/scripts/debug.lua b/data/scripts/debug.lua index 7a48d0a..40c91eb 100644 --- a/data/scripts/debug.lua +++ b/data/scripts/debug.lua @@ -6,7 +6,7 @@ for _, light in pairs(Lights) do love.graphics.print(light.pos.x,light.pos.x,light.pos.y+40) end -love.graphics.print("time: "..fps_total..", fps: "..fps_draw..", frametime: "..math.floor(current_dt* 1000).."ms", 10*textScale, 0*textScale, 0, textScale) + love.graphics.print("time: "..fps_total..", fps: "..fps_draw..", frametime: "..math.floor(current_dt* 1000).."ms", 10*textScale, 0*textScale, 0, textScale) love.graphics.setColor(1,1,1) -- lots of variables @@ -25,9 +25,24 @@ love.graphics.print("time: "..fps_total..", fps: "..fps_draw..", frametime: "..m -- player isOnGroundCheck love.graphics.setColor(1,0,0) - love.graphics.points(-Camera.pos.x + main_Player.pos.x, -Camera.pos.y + main_Player.pos.y) end function DebugColisions() objects.DrawCollisions() end + +function DebugEntities() + for _, enty in pairs(LoadedEntities) do + -- draw center GREEN + love.graphics.setColor(0,1,0) + love.graphics.circle("fill", -Camera.pos.x + enty.pos.x, -Camera.pos.y + enty.pos.y, 1) + -- draw collision box PURPLE + love.graphics.setColor(0,1,1) + love.graphics.points( + -Camera.pos.x + enty.pos.x + enty.boxCollision.from.x, -Camera.pos.y + enty.pos.y + enty.boxCollision.from.y, + -Camera.pos.x + enty.pos.x + enty.boxCollision.from.x, -Camera.pos.y + enty.pos.y + enty.boxCollision.to.y, + -Camera.pos.x + enty.pos.x + enty.boxCollision.to.x, -Camera.pos.y + enty.pos.y + enty.boxCollision.from.y, + -Camera.pos.x + enty.pos.x + enty.boxCollision.to.x, -Camera.pos.y + enty.pos.y + enty.boxCollision.to.y + ) + end +end diff --git a/data/scripts/entities/arrow.lua b/data/scripts/entities/arrow.lua index 439a5e0..f9bc79c 100644 --- a/data/scripts/entities/arrow.lua +++ b/data/scripts/entities/arrow.lua @@ -39,19 +39,33 @@ end function Arrow:DoPhysics() -- horizontal collisions - if not isThereAnyCollisionAt(self.pos.x + self.vel.x, self.pos.y) then + if not isThereAnyCollisionAt( + self.pos.x + self.vel.x, + self.pos.y + ) then self.pos.x = self.pos.x + self.vel.x else - while not isThereCollisionAt(self.pos.x + math.sign(self.vel.x), self.pos.y) do + while not isThereObjectAt( + self.pos.x + math.sign(self.vel.x), + self.pos.y, + objects.collisions + ) do self.pos.x = self.pos.x + math.sign(self.vel.x) end self.stuck = true end -- vertical collision - if not isThereAnyCollisionAt(self.pos.x, self.pos.y + self.vel.y) then + if not isThereAnyCollisionAt( + self.pos.x, + self.pos.y + self.vel.y + ) then self.pos.y = self.pos.y + self.vel.y else - while not isThereCollisionAt(self.pos.x, self.pos.y + math.sign(self.vel.y)) do + while not isThereObjectAt( + self.pos.x, + self.pos.y + math.sign(self.vel.y), + objects.collisions + ) do self.pos.y = self.pos.y + math.sign(self.vel.y) end self.stuck = true diff --git a/data/scripts/entities/player.lua b/data/scripts/entities/player.lua index 82d0ace..f3da319 100644 --- a/data/scripts/entities/player.lua +++ b/data/scripts/entities/player.lua @@ -3,26 +3,18 @@ function Player:New(x,y) local o = Entity:New(x,y) - Player.health = 3 + Player.health = 3 Player.coins = 0 -- physics - o.vel = { - x = 0, - y = 0 - } + o.moveSpeed = 1.5 - -- constants - o.acc = 45 - o.friction = 20 - o.gravity = 9.81 - o.climbHeight = 4 - o.jumpForce = 5 - o.maxSpeed = 600 - o.jumpMaxSpeed = 9.5 - o.zeroSpeed = 0.001 - o.lightRange = 20 + o.boxCollision = { + from = {x = -8, y = -16}, + to = {x = 8, y = 0} + } + o.lightRange = 32 -- status o.isJumping = false o.isOnGround = 0 @@ -31,14 +23,16 @@ o.canJump = true o.canFall = true o.canFriction = true - o.mask_type = animation.moth_mask - -- sprite - o.sprite_offset = {x = 8, y = 16} - o.target_offset = {x = 0, y = 12} - o.body = Animation:New(animation.nancy.idle) - o.mask = Animation:New(animation.moth_mask.idle) - -- lights + o.maskType = animation.moth_mask + -- sprite + o.sprite_offset = {x = 8, y = 16} + o.target_offset = {x = 0, y = 12} + o.body = Animation:New(animation.nancy.idle) + o.mask = Animation:New(animation.moth_mask.idle) + + -- lights + o.light = CreateLight(o.pos.x,o.pos.y,o.lightRange) setmetatable(o, self) self.__index = self @@ -47,64 +41,39 @@ end function Player:Smart() - -- PLATFORMER INPUT - if self.isOnGround > 0 then - -- apply friction + if love.keyboard.isDown("a") then self.vel.x = -self.moveSpeed + elseif love.keyboard.isDown("d") then self.vel.x = self.moveSpeed + else self.vel.x = 0 end + if love.keyboard.isDown("w") then self.vel.y = -self.moveSpeed + elseif love.keyboard.isDown("s") then self.vel.y = self.moveSpeed + else self.vel.y = 0 end +end - -- horizontal input (slide~~) - if love.keyboard.isDown('a',"left") then - self.vel.x = self.vel.x - self.acc*current_dt - end - if love.keyboard.isDown('d',"right") then - self.vel.x = self.vel.x + self.acc*current_dt - end - if self.canJump then - -- vertical input (jump!) - if love.keyboard.isDown("up", "w") and self.isJumping ~= true then - self.vel.y = self.vel.y - self.jumpForce - self.isOnGround = 0 - self.isJumping = true - end - end - end - - -- fall if down input on platforms - if not isThereCollisionAt( - self.pos.x, - self.pos.y + self.vel.y - ) and not isThereLadderAt( - self.pos.x, - self.pos.y + self.vel.y - ) and isTherePlatformAt( - self.pos.x, - self.pos.y + self.vel.y - ) and love.keyboard.isDown("down", "s") - then - self.pos.y = self.pos.y + tileProperties.height/3 - self.isOnGround = 0 - end +function Player:DoPhysics() + self.pos.x = self.pos.x + self.vel.x + self.pos.y = self.pos.y + self.vel.y end function Player:HandleAnimation() + self.light.pos.x = self.pos.x-self.target_offset.x + self.light.pos.y = self.pos.y-self.target_offset.y + -- flip sprite to look in the direction is moving if self.vel.x ~= 0 then self.sprite_flip.x = math.sign(self.vel.x) end - -- animation manager - if self.isOnLadder then - self.body = self.body:ChangeTo(animation.nancy.jump) - self.mask = self.mask:ChangeTo(self.mask_type.jump) - elseif self.isOnGround == 0 and self.isJumping and self.vel.y > 1.25 then + -- animation priority + if self.vel.y > 1.25 then self.body = self.body:ChangeTo(animation.nancy.fall) - self.mask = self.mask:ChangeTo(self.mask_type.fall) - elseif self.isOnGround == 0 and self.vel.y < 0 then + self.mask = self.mask:ChangeTo(self.maskType.fall) + elseif self.vel.y < 0 then self.body = self.body:ChangeTo(animation.nancy.jump) - self.mask = self.mask:ChangeTo(self.mask_type.jump) + self.mask = self.mask:ChangeTo(self.maskType.jump) elseif self.vel.x ~= 0 then self.body = self.body:ChangeTo(animation.nancy.run) - self.mask = self.mask:ChangeTo(self.mask_type.run) + self.mask = self.mask:ChangeTo(self.maskType.run) else self.body = self.body:ChangeTo(animation.nancy.idle) - self.mask = self.mask:ChangeTo(self.mask_type.idle) + self.mask = self.mask:ChangeTo(self.maskType.idle) end -- special case: idle animation gets slower by time @@ -114,124 +83,17 @@ function Player:HandleAnimation() self.body:Animate() self.body:Draw( - self.pos.x - Camera.pos.x - ( (self.sprite_offset.x) * math.cos(self.sprite_rotation) - (self.sprite_offset.y) * math.sin(self.sprite_rotation)) * self.sprite_scale.x * self.sprite_flip.x, - self.pos.y - Camera.pos.y - ( (self.sprite_offset.x) * math.sin(self.sprite_rotation) + (self.sprite_offset.y) * math.cos(self.sprite_rotation)) * self.sprite_scale.y * self.sprite_flip.y, + math.floor(self.pos.x) - Camera.pos.x - ( (self.sprite_offset.x) * math.cos(self.sprite_rotation) - (self.sprite_offset.y) * math.sin(self.sprite_rotation)) * self.sprite_scale.x * self.sprite_flip.x, + math.floor(self.pos.y)- Camera.pos.y - ( (self.sprite_offset.x) * math.sin(self.sprite_rotation) + (self.sprite_offset.y) * math.cos(self.sprite_rotation)) * self.sprite_scale.y * self.sprite_flip.y, self.sprite_rotation, self.sprite_scale.x * self.sprite_flip.x, self.sprite_scale.y * self.sprite_flip.y ) self.mask:Draw( - self.pos.x - Camera.pos.x - ( (self.sprite_offset.x) * math.cos(self.sprite_rotation) - (self.sprite_offset.y) * math.sin(self.sprite_rotation)) * self.sprite_scale.x * self.sprite_flip.x, - self.pos.y - Camera.pos.y - ( (self.sprite_offset.x) * math.sin(self.sprite_rotation) + (self.sprite_offset.y) * math.cos(self.sprite_rotation)) * self.sprite_scale.y * self.sprite_flip.y, + math.floor(self.pos.x) - Camera.pos.x - ( (self.sprite_offset.x) * math.cos(self.sprite_rotation) - (self.sprite_offset.y) * math.sin(self.sprite_rotation)) * self.sprite_scale.x * self.sprite_flip.x, + math.floor(self.pos.y)- Camera.pos.y - ( (self.sprite_offset.x) * math.sin(self.sprite_rotation) + (self.sprite_offset.y) * math.cos(self.sprite_rotation)) * self.sprite_scale.y * self.sprite_flip.y, self.sprite_rotation, self.sprite_scale.x * self.sprite_flip.x, self.sprite_scale.y * self.sprite_flip.y ) - - --[[ - love.graphics.print(self.body.frame .. "/".. self.body.frames.." - "..self.body.subframe.."/"..self.body.speed.." ("..current_dt..")") - love.graphics.print(animation.nancy.idle.path,0,20) - love.graphics.print(self.body.path,0,30) - ]] -end - -function Player:DoPhysics() - -- reset physics resolution - self.canFall = true - self.canJump = true - self.canFriction = true - -- reset flags - self.isOnLadder = false - -- truncate to max & min values - if math.abs(self.vel.x) > self.maxSpeed then - self.vel.x = self.maxSpeed * math.sign(self.vel.x) - end - if math.abs(self.vel.y) > self.maxSpeed then - self.vel.y = self.maxSpeed * math.sign(self.vel.y) - end - if math.abs(self.vel.x) < self.zeroSpeed then - self.vel.x = 0 - end - if math.abs(self.vel.y) < self.zeroSpeed then - self.vel.y = 0 - end - - -- if on air, say so! - if self.vel.y > 5 then - self.isJumping = true - end - - -- if its on ground, then say so. - if self.vel.y > 0 then - if isThereAnyCollisionAt( - self.pos.x, - self.pos.y + self.vel.y - ) then - self.isOnGround = self.coyoteValue - self.isJumping = false - end - end - -- horizontal collisions - if isThereAnyCollisionAt(self.pos.x + self.vel.x, self.pos.y) then - -- checks for ladders - if isThereLadderAt(self.pos.x + self.vel.x, self.pos.y) - and self.vel.x ~= 0 - and not isThereLadderAt(self.pos.x, self.pos.y) - then - self.vel.y = 0 - self.vel.x = 0 - - self.pos.y = self.pos.y - 4 * current_dt - - self.canFall = false - self.canJump = false - self.canFriction = false - - self.isOnLadder = true - self.isOnGround = self.coyoteValue - end - - -- checks for slopes - for i = 1, self.climbHeight do - if not isThereCollisionAt(self.pos.x + self.vel.x, self.pos.y - i) - and self.isOnGround > 0 then - - self.pos.x = self.pos.x + self.vel.x * 4/5 - self.pos.y = self.pos.y - i - - self.canFriction = false - break - end - end - - -- hey, you arent permanently stopped while collisioning, just lose a bit of force! - if self.canFriction then - self.vel.x = self.vel.x * (1 - math.min(current_dt * self.friction/15, 1)) - end - else - self.pos.x = self.pos.x + self.vel.x - end - - -- vertical collision - if self.vel.y > 0 - and isThereAnyCollisionAt(self.pos.x, self.pos.y + self.vel.y) then - self.isOnGround = self.coyoteValue - self.isJumping = false - self.vel.y = 0 - else - self.pos.y = self.pos.y + self.vel.y - self.isOnGround = math.max(self.isOnGround - 1, 0) - end - - -- drop. - if self.canFall then - self.vel.y = self.vel.y + 2*self.gravity * current_dt - end - - -- friction hard in ground, soft in air - if self.isOnGround > 0 then - self.vel.x = self.vel.x * (1 - math.min(current_dt * self.friction, 1)) - else - self.vel.x = self.vel.x * (1 - math.min(current_dt * self.friction/20, 1)) - end end diff --git a/data/scripts/entity.lua b/data/scripts/entity.lua index d5e807f..3f6cb23 100644 --- a/data/scripts/entity.lua +++ b/data/scripts/entity.lua @@ -5,6 +5,12 @@ function Entity:New(x,y) o = {} o.pos = {x = x, y = y} o.vel = {x = 0, y = 0} + + o.boxCollision = { + from = {x = x, y = y}, + to = {x = x, y = y} + } + o.class = "Entity" o.sprite_offset = {x = 0, y = 0} @@ -12,13 +18,44 @@ function Entity:New(x,y) o.sprite_rotation = math.rad(0) o.sprite_flip = { x = 1, y = 1} o.illuminated = false + setmetatable(o, self) self.__index = self return o end -function Entity:Move(target, speed) -- target = {tx int, ty int} / speed = int +-- returns true if theres a collision at that point. also marks collisioned tile as collision true +function Entity:isCollidingAt(x,y,object) + local result = false + for _, col in pairs(object) do + result = self.pos.x + self.boxCollision.from.x < col.to.x + and self.pos.x + self.boxCollision.to.x > col.from.x + and self.pos.y + self.boxCollision.from.y < col.to.y + and self.pos.y + self.boxCollision.to.y > col.from.y + if result == true then break end + end + return result +end +function Entity:isCollidingWith(entity) + return self.pos.x + self.boxCollision.from.x < entity.pos.x + entity.boxCollision.to.x + and self.pos.x + self.boxCollision.to.x > entity.pos.x + entity.boxCollision.from.x + and self.pos.y + self.boxCollision.from.y < entity.pos.y + entity.boxCollision.to.y + and self.pos.y + self.boxCollision.to.y > entity.pos.y + entity.boxCollision.from.y +end + +function Entity:isCollidingAtAll(x,y) + local result = false + if not result then + result = self:isCollidingAt(x,y,objects.collisions) + end + if not result then + result = self:isCollidingAt(x,y,objects.ladders) + end + if not result then + result = self:isCollidingAt(x,y,objects.platforms) + end + return result end --[[function Entity:Draw() diff --git a/data/scripts/enums.lua b/data/scripts/enums.lua index 6c0557e..edea2dc 100644 --- a/data/scripts/enums.lua +++ b/data/scripts/enums.lua @@ -1,4 +1,5 @@ --- animations +-- animationsç + -- all these are linear animations, maybe in the future make proper animations? animation = { kupo = { body = { @@ -63,6 +64,9 @@ animation = { } } +-- animation loader + -- im unsure if this is too memory expensive (probably) + -- this should go elsewhere, maybe for _, object in pairs(animation) do for _, anim in pairs(object) do anim.imgs = {} @@ -77,15 +81,21 @@ levelProperties = { x = 0, y = 0 }, + -- im unsure why there's offset at all, here offset = { x = 0, y = 0 } } +tileset = { + bricks = love.graphics.newImage("assets/tileset/bricks.png"), + books = love.graphics.newImage("assets/tileset/bricks.png"), + library = love.graphics.newImage("assets/tileset/library.png") +} + tileProperties = { width = 16, height = 16, scale = 1, - tileset = love.graphics.newImage("assets/terrain/tileset.png") } diff --git a/data/scripts/level.lua b/data/scripts/level.lua index 7904ada..77929ab 100644 --- a/data/scripts/level.lua +++ b/data/scripts/level.lua @@ -1,20 +1,22 @@ function LevelLoadTiles() - LevelInfo = {} - Tiles = dofile("Mothback/data/tiles.lua") --[[ on level format: id = tile identifier depth = order in the render force = rendering other tile instead of the one in this position - overlay = render another tile id + overlay = render another tile id or, if multiple tiles {id, id, id,} or overlay_depth = foreground/background overlay depth type = collision type + ]] - LevelTiles = json.decode(getInput("Mothback/data/levels/"..currLevel..".json")) - LevelInfo.Width = LevelGetWidth() - LevelInfo.Height = LevelGetHeight() + + LevelData = dofile("Mothback/data/levels/"..currLevel..".lua") + Tiles = dofile("Mothback/data/tileset/library.lua") + LevelTiles = LevelData.tiles + LevelData.Width = LevelGetWidth() + LevelData.Height = LevelGetHeight() LevelIndexTiles() TileCreateObjects() end @@ -35,8 +37,8 @@ function LevelIndexTiles() TileIndex = {} -- number of tiles in tileset! - local width = tileProperties.tileset:getPixelWidth()/tileProperties.width - local height = tileProperties.tileset:getPixelHeight()/tileProperties.height + local width = LevelData.tileset:getPixelWidth()/tileProperties.width + local height = LevelData.tileset:getPixelHeight()/tileProperties.height for i = 0, height do for j = 0, width do TileIndex[i*width+j+1] = love.graphics.newQuad( @@ -44,12 +46,12 @@ function LevelIndexTiles() i*tileProperties.height, tileProperties.width, tileProperties.height, - tileProperties.tileset:getDimensions() + LevelData.tileset:getDimensions() ) end end - +-- init animated tile properties for _, properties in pairs(Tiles) do if properties.animation ~= nil then properties.tileset = love.graphics.newImage("assets/terrain/"..properties.animation..".png") @@ -75,18 +77,44 @@ function LevelIndexTiles() image_count = image_count + 1 table.insert(properties.imgs,quad) - end end properties.image_count = image_count end end + +-- instance level tiles according to the properties + for i = 1, #LevelTiles do + for j = 1, #LevelTiles[i] do + local id = LevelTiles[i][j] + LevelTiles[i][j] = {} + local tile = LevelTiles[i][j] + tile.id = id + + for _, properties in pairs(Tiles) do + if properties.id == tile.id then + if type(properties.overlay) == "table" then + tile.display_overlay = properties.overlay[math.random(#properties.overlay)] + else + tile.display_overlay = properties.overlay + end + + if type(properties.force) == "table" then + tile.display = properties.force[math.random(#properties.force)] + else + tile.display = properties.force + end + end + end + + end + end end function LevelDisplayForeground() for i = 1, #LevelTiles do for j = 1, #LevelTiles[i] do - if LevelTiles[i][j] ~= 0 then + if LevelTiles[i][j].id ~= 0 then local depth = TileGetDepth(LevelTiles[i][j]) DrawTile( @@ -102,9 +130,10 @@ function LevelDisplayForeground() end function LevelDisplayBackground() + love.graphics.setColor(0.7,0.7,0.7) for i = 1, #LevelTiles do for j = 1, #LevelTiles[i] do - if LevelTiles[i][j] ~= 0 then + if LevelTiles[i][j].id ~= 0 then local depth = TileGetDepth(LevelTiles[i][j]) DrawTile( @@ -117,28 +146,28 @@ function LevelDisplayBackground() end end end + love.graphics.setColor(1,1,1) end - -function TileGetType(tile_id) +function TileGetType(tile) for _, properties in ipairs(Tiles) do - if properties.id == tile_id then + if properties.id == tile.id then return properties.type end end end -function TileGetDepth(tile_id) +function TileGetDepth(tile) for _, properties in ipairs(Tiles) do - if properties.id == tile_id then + if properties.id == tile.id then return properties.depth end end end -function TileGetLight(tile_id) +function TileGetLight(tile) for _, properties in ipairs(Tiles) do - if properties.id == tile_id then + if properties.id == tile.id then return properties.light end end @@ -165,7 +194,7 @@ function TileCreateObjects() for i = 1, #LevelTiles do for j = 1, #LevelTiles[i] do - if LevelTiles[i][j] ~= 0 then + if LevelTiles[i][j].id ~= 0 then local type = TileGetType(LevelTiles[i][j]) local light = TileGetLight(LevelTiles[i][j]) @@ -180,7 +209,7 @@ function TileCreateObjects() light ) end - + if type == "whole" then local col = Collision:New( base_x, @@ -471,9 +500,10 @@ function AnimateTiles() end end -function DrawTile(tile_id,x,y,depth) +function DrawTile(tile,x,y,depth) for _, properties in pairs(Tiles) do - if tile_id == properties.id then + if tile.id == properties.id then + if properties.animation ~= nil then if properties.imgs[properties.current_image] ~= nil and properties.depth == depth @@ -488,18 +518,20 @@ function DrawTile(tile_id,x,y,depth) ) end elseif properties.depth == depth then if properties.force ~= nil then + if properties.force ~= 0 then love.graphics.draw( - tileProperties.tileset, - TileIndex[properties.force], + LevelData.tileset, + TileIndex[tile.display], x, y, 0, tileProperties.scale, tileProperties.scale ) + end else love.graphics.draw( - tileProperties.tileset, + LevelData.tileset, TileIndex[properties.id], x, y, @@ -528,8 +560,8 @@ function DrawTile(tile_id,x,y,depth) end else love.graphics.draw( - tileProperties.tileset, - TileIndex[properties.overlay], + LevelData.tileset, + TileIndex[tile.display_overlay], x, y, 0, @@ -539,6 +571,11 @@ function DrawTile(tile_id,x,y,depth) end end end + --[[ + love.graphics.setColor(0,0,1) + love.graphics.print(tostring(tile.display),x+16,y) + love.graphics.setColor(1,1,1) + ]] end end end diff --git a/data/scripts/lights.lua b/data/scripts/lights.lua index e7c7660..aa84a96 100644 --- a/data/scripts/lights.lua +++ b/data/scripts/lights.lua @@ -5,15 +5,19 @@ function CreateDarkness() return love.graphics.newCanvas(game.width, game.height) end -function CreateLight(x,y,range) +function CreateLight(x,y,range,lum,flicker) local o = {} o.pos = { x = x, y = y } o.range = range + o.lum = lum or 1 + o.flicker_value = flicker or 1 o.flicker = 0 o.dim = 0 + o.flicker_speed = flicker_speed or 10 + o.flicker_time = 0 table.insert(Lights,o) return o end @@ -23,54 +27,46 @@ function SetDarkness() love.graphics.rectangle("fill",0,0,game.width,game.height) end -function DoDarkness() - love.graphics.setColor(0,0,0,1) - love.graphics.rectangle("fill",0,0,game.width,game.height) -end - function DoLights() - LightTimer = LightTimer + 1 - if LightTimer >= 3 then - LightTimer = LightTimer - 3 - for _, light in pairs(Lights) do - light.flicker = math.random(-1,1) - light.dim = (light.range+light.flicker)/2 + for _, light in pairs(Lights) do + light.flicker_time = light.flicker_time + 1 + + if light.flicker_time >= light.flicker_speed then + light.flicker_time = light.flicker_time - light.flicker_speed + light.flicker = 0 + math.random(-1,1) + light.flicker = math.min(math.max(light.flicker, -light.flicker_value),light.flicker_value) end end - - love.graphics.setBlendMode("replace") +--[[ -- first, border love.graphics.setColor(1,1,1) for _, light in pairs(Lights) do - --[[love.graphics.circle( - "fill", - light.pos.x - Camera.pos.x, - light.pos.y - Camera.pos.y, - light.range + light.flicker + 1 - )]] + love.graphics.circle( + "fill", + light.pos.x - Camera.pos.x, + light.pos.y - Camera.pos.y, + light.range + light.flicker + 1 + ) end + ]] + love.graphics.setBlendMode("replace") for _, enty in pairs(LoadedEntities) do end - love.graphics.setColor(0,0,0,0.5) - for _, light in pairs(Lights) do - love.graphics.circle( - "fill", - light.pos.x - Camera.pos.x, - light.pos.y - Camera.pos.y, - light.range + light.flicker - ) - end - -- then, light - love.graphics.setColor(0,0,0,0) - for _, light in pairs(Lights) do - love.graphics.circle( - "fill", - light.pos.x - Camera.pos.x, - light.pos.y - Camera.pos.y, - light.range + light.flicker - light.dim - ) + + local shades = 200 + for i=1, shades do + for _, light in pairs(Lights) do + local luminosity = shades*light.lum/100 + love.graphics.setColor(0,0,0,math.min(1,math.max(0,(shades-i-luminosity+1)/(shades-luminosity+1)))) + love.graphics.circle( + "fill", + light.pos.x - Camera.pos.x, + light.pos.y - Camera.pos.y, + (light.range + light.flicker)*(shades-i+1)/shades + ) + end end love.graphics.setBlendMode("alpha") end diff --git a/data/scripts/objects.lua b/data/scripts/objects.lua index b3f7286..1932081 100644 --- a/data/scripts/objects.lua +++ b/data/scripts/objects.lua @@ -6,7 +6,6 @@ objects = { ladders = {} } - -- level functions function objects.DrawCollisions() for _, col in pairs(objects.collisions) do @@ -24,32 +23,14 @@ function objects.DrawCollisions() end -- returns true if theres a collision at that point. also marks collisioned tile as collision true -function isThereCollisionAt(x,y) +function isThereObjectAt(x,y,objectType) local result = false - for _, col in pairs(objects.collisions) do - if x >= col.from.x and x <= col.to.x and y >= col.from.y and y <= col.to.y then - result = true - col.collision = true - end - end - return result -end - -function isTherePlatformAt(x,y) - local result = false - for _, col in pairs(objects.platforms) do - if x >= col.from.x and x <= col.to.x and y >= col.from.y and y <= col.to.y and col.disable ~= true then - result = true - col.collision = true - end - end - return result -end - -function isThereLadderAt(x,y) - local result = false - for _, col in pairs(objects.ladders) do - if x >= col.from.x and x <= col.to.x and y >= col.from.y and y <= col.to.y and col.disable ~= true then + for _, col in pairs(objectType) do + if x >= col.from.x + and x <= col.to.x + and y >= col.from.y + and y <= col.to.y + and col.disable ~= true then result = true col.collision = true end @@ -60,28 +41,13 @@ end function isThereAnyCollisionAt(x,y) local result = false if not result then - for _, col in pairs(objects.collisions) do - if x >= col.from.x and x <= col.to.x and y >= col.from.y and y <= col.to.y then - result = true - col.collision = true - end - end + result = isThereObjectAt(x,y,objects.collisions) end if not result then - for _, col in pairs(objects.ladders) do - if x >= col.from.x and x <= col.to.x and y >= col.from.y and y <= col.to.y and col.disable ~= true then - result = true - col.collision = true - end - end + result = isThereObjectAt(x,y,objects.ladders) end if not result then - for _, col in pairs(objects.platforms) do - if x >= col.from.x and x <= col.to.x and y >= col.from.y and y <= col.to.y and col.disable ~= true then - result = true - col.collision = true - end - end + result = isThereObjectAt(x,y,objects.platforms) end return result end diff --git a/data/tiles.lua b/data/tileset/bricks.lua similarity index 94% rename from data/tiles.lua rename to data/tileset/bricks.lua index 4d572ca..6e4603c 100644 --- a/data/tiles.lua +++ b/data/tileset/bricks.lua @@ -1,348 +1,350 @@ -return { - { - id = 1, - type = "whole", - depth = "foreground" - }, - { - id = 2, - type = "whole", - depth = "foreground" - }, - { - id = 3, - type = "whole", - depth = "foreground" - }, - { - id = 4, - type = "whole", - depth = "foreground" - }, - { - id = 5, - type = "whole", - depth = "foreground" - }, - { - id = 6, - type = "whole", - depth = "foreground" - }, - { - id = 7, - type = "whole", - depth = "foreground" - }, - { - id = 8, - type = "whole", - depth = "foreground" - }, - { - id = 9, - type = "whole", - depth = "foreground" - }, - { - id = 10, - type = "half_bottom", - depth = "foreground" - }, - { - id = 11, - type = "half_bottom", - depth = "foreground" - }, - { - id = 12, - type = "whole", - depth = "foreground" - }, - { - id = 13, - type = "whole", - depth = "foreground" - }, - { - id = 14, - type = "whole", - depth = "foreground" - }, - { - id = 15, - type = "half_right", - depth = "foreground" - }, - { - id = 16, - type = "half_left", - depth = "foreground" - }, - { - id = 17, - type = "half_bottom", - depth = "foreground" - }, - { - id = 18, - type = "half_top", - depth = "foreground" - }, - { - id = 19, - type = "whole", - depth = "foreground" - }, - { - id = 20, - type = "whole", - depth = "foreground" - }, - { - id = 21, - type = "whole", - depth = "foreground" - }, - { - id = 22, - type = "whole", - depth = "foreground" - }, - { - id = 23, - type = "half_top", - depth = "foreground" - }, - { - id = 24, - type = "half_top", - depth = "foreground" - }, - { - id = 25, - type = "whole", - depth = "foreground" - }, - { - id = 26, - type = "whole", - depth = "foreground" - }, - { - id = 27, - type = "ramp2_bot_right_half", - depth = "foreground" - }, - { - id = 28, - type = "ramp2_bot_right_whole", - depth = "foreground" - }, - { - id = 29, - type = "whole", - depth = "foreground" - }, - { - id = 30, - type = "whole", - depth = "foreground" - }, - { - id = 31, - type = "ramp2_bot_left_whole", - depth = "foreground" - }, - { - id = 32, - type = "ramp2_bot_left_half", - depth = "foreground" - }, - { - id = 33, - type = "empty", - depth = "foreground" - }, - { - id = 34, - type = "empty", - depth = "foreground" - }, - { - id = 35, - type = "empty", - depth = "foreground" - }, - { - id = 36, - type = "empty", - depth = "foreground" - }, - { - id = 37, - type = "empty", - depth = "foreground" - }, - { - id = 38, - type = "empty", - depth = "foreground" - }, - { - id = 39, - type = "whole", - depth = "foreground" - }, - { - id = 40, - type = "empty", - depth = "foreground" - }, - { - id = 41, - type = "empty", - depth = "foreground" - }, - { - id = 42, - type = "empty", - depth = "foreground" - }, - { - id = 43, - type = "empty", - depth = "foreground" - }, - { - id = 44, - type = "empty", - depth = "foreground" - }, - { - id = 45, - type = "empty", - depth = "foreground" - }, - { - id = 46, - type = "empty", - depth = "foreground" - }, - { - id = 47, - type = "empty", - depth = "foreground" - }, - { - id = 48, - type = "empty", - depth = "foreground" - }, - { - id = 49, - type = "whole", - depth = "foreground" - }, - { - id = 50, - type = "whole", - depth = "foreground" - }, - { - id = 51, - type = "whole", - depth = "foreground" - }, - { - id = 52, - type = "whole", - depth = "foreground" - }, - { - id = 53, - type = "empty", - depth = "foreground" - }, - { - id = 54, - type = "empty", - depth = "foreground" - }, - { - id = 55, - type = "empty", - depth = "foreground", - light = 60 - }, - { - id = 56, - type = "empty", - depth = "foreground" - }, - { - id = 57, - type = "empty", - depth = "foreground" - }, - { - id = 58, - type = "empty", - depth = "foreground" - }, - { - id = 59, - type = "empty", - depth = "foreground" - }, - { - id = 60, - type = "empty", - depth = "foreground" - }, - { - id = 61, - type = "empty", - depth = "foreground" - }, - { - id = 62, - type = "empty", - depth = "foreground" - }, - { - id = 63, - type = "empty", - depth = "foreground" - }, - { - id = 64, - type = "empty", - depth = "foreground" - }, - { - id = 65, - type = "whole", - depth = "foreground" - }, - { - id = 66, - type = "whole", - depth = "foreground" - }, - { - id = 67, - type = "whole", - depth = "foreground" - }, - { - id = 68, - type = "whole", - depth = "foreground" - }, - { - id = 119, - type = "whole", - depth = "foreground" - } -} +return { + { + id = 1, + force = 0, + overlay_tileset = tileset.books, + type = "whole", + depth = "foreground" + }, + { + id = 2, + type = "whole", + depth = "foreground" + }, + { + id = 3, + type = "whole", + depth = "foreground" + }, + { + id = 4, + type = "whole", + depth = "foreground" + }, + { + id = 5, + type = "whole", + depth = "foreground" + }, + { + id = 6, + type = "whole", + depth = "foreground" + }, + { + id = 7, + type = "whole", + depth = "foreground" + }, + { + id = 8, + type = "whole", + depth = "foreground" + }, + { + id = 9, + type = "whole", + depth = "foreground" + }, + { + id = 10, + type = "half_bottom", + depth = "foreground" + }, + { + id = 11, + type = "half_bottom", + depth = "foreground" + }, + { + id = 12, + type = "whole", + depth = "foreground" + }, + { + id = 13, + type = "whole", + depth = "foreground" + }, + { + id = 14, + type = "whole", + depth = "foreground" + }, + { + id = 15, + type = "half_right", + depth = "foreground" + }, + { + id = 16, + type = "half_left", + depth = "foreground" + }, + { + id = 17, + type = "half_bottom", + depth = "foreground" + }, + { + id = 18, + type = "half_top", + depth = "foreground" + }, + { + id = 19, + type = "whole", + depth = "foreground" + }, + { + id = 20, + type = "whole", + depth = "foreground" + }, + { + id = 21, + type = "whole", + depth = "foreground" + }, + { + id = 22, + type = "whole", + depth = "foreground" + }, + { + id = 23, + type = "half_top", + depth = "foreground" + }, + { + id = 24, + type = "half_top", + depth = "foreground" + }, + { + id = 25, + type = "whole", + depth = "foreground" + }, + { + id = 26, + type = "whole", + depth = "foreground" + }, + { + id = 27, + type = "ramp2_bot_right_half", + depth = "foreground" + }, + { + id = 28, + type = "ramp2_bot_right_whole", + depth = "foreground" + }, + { + id = 29, + type = "whole", + depth = "foreground" + }, + { + id = 30, + type = "whole", + depth = "foreground" + }, + { + id = 31, + type = "ramp2_bot_left_whole", + depth = "foreground" + }, + { + id = 32, + type = "ramp2_bot_left_half", + depth = "foreground" + }, + { + id = 33, + type = "empty", + depth = "foreground" + }, + { + id = 34, + type = "empty", + depth = "foreground" + }, + { + id = 35, + type = "empty", + depth = "foreground" + }, + { + id = 36, + type = "empty", + depth = "foreground" + }, + { + id = 37, + type = "empty", + depth = "foreground" + }, + { + id = 38, + type = "empty", + depth = "foreground" + }, + { + id = 39, + type = "whole", + depth = "foreground" + }, + { + id = 40, + type = "empty", + depth = "foreground" + }, + { + id = 41, + type = "empty", + depth = "foreground" + }, + { + id = 42, + type = "empty", + depth = "foreground" + }, + { + id = 43, + type = "empty", + depth = "foreground" + }, + { + id = 44, + type = "empty", + depth = "foreground" + }, + { + id = 45, + type = "empty", + depth = "foreground" + }, + { + id = 46, + type = "empty", + depth = "foreground" + }, + { + id = 47, + type = "empty", + depth = "foreground" + }, + { + id = 48, + type = "empty", + depth = "foreground" + }, + { + id = 49, + type = "whole", + depth = "foreground" + }, + { + id = 50, + type = "whole", + depth = "foreground" + }, + { + id = 51, + type = "whole", + depth = "foreground" + }, + { + id = 52, + type = "whole", + depth = "foreground" + }, + { + id = 53, + type = "empty", + depth = "foreground" + }, + { + id = 54, + type = "empty", + depth = "foreground" + }, + { + id = 55, + type = "empty", + depth = "foreground", + light = 60 + }, + { + id = 56, + type = "empty", + depth = "foreground" + }, + { + id = 57, + type = "empty", + depth = "foreground" + }, + { + id = 58, + type = "empty", + depth = "foreground" + }, + { + id = 59, + type = "empty", + depth = "foreground" + }, + { + id = 60, + type = "empty", + depth = "foreground" + }, + { + id = 61, + type = "empty", + depth = "foreground" + }, + { + id = 62, + type = "empty", + depth = "foreground" + }, + { + id = 63, + type = "empty", + depth = "foreground" + }, + { + id = 64, + type = "empty", + depth = "foreground" + }, + { + id = 65, + type = "whole", + depth = "foreground" + }, + { + id = 66, + type = "whole", + depth = "foreground" + }, + { + id = 67, + type = "whole", + depth = "foreground" + }, + { + id = 68, + type = "whole", + depth = "foreground" + }, + { + id = 119, + type = "whole", + depth = "foreground" + } +} diff --git a/data/tileset/library.lua b/data/tileset/library.lua new file mode 100644 index 0000000..c323a55 --- /dev/null +++ b/data/tileset/library.lua @@ -0,0 +1,80 @@ +return { + { + id = 1, + type = "whole", + depth = "foreground" + }, + { + id = 2, + type = "emtpy", + depth = "foreground" + }, + { + id = 5, + type = "emtpy", + depth = "background" + }, + { + id = 6, + type = "emtpy", + depth = "background" + }, + { + id = 7, + type = "emtpy", + depth = "background" + }, + { + id = 13, + type = "whole", + depth = "foreground" + }, + { + id = 25, + overlay = {17,19,21,23}, + type = "emtpy", + depth = "background" + }, + { + id = 26, + overlay = {18,20,22,24}, + type = "emtpy", + depth = "background" + }, + { + id = 37, + overlay = {29,31,33,35,42,44,46,48}, + type = "emtpy", + depth = "background" + }, + { + id = 38, + overlay = {30,32,34,36,41,43,45,47}, + type = "emtpy", + depth = "background" + }, + { + id = 49, + overlay = {53,55,57,59}, + type = "emtpy", + depth = "background" + }, + { + id = 50, + overlay = {54,56,58,60}, + type = "emtpy", + depth = "background" + }, + { + id = 61, + overlay = {1}, + type = "emtpy", + depth = "background" + }, + { + id = 62, + overlay = {1}, + type = "emtpy", + depth = "background" + } +} diff --git a/main.lua b/main.lua index 780a6c8..e4f10f0 100644 --- a/main.lua +++ b/main.lua @@ -34,6 +34,7 @@ function love.load() table.insert(LoadedEntities,main_Player) table.insert(LoadedEntities,Kupo:New(700,150)) table.insert(LoadedEntities,Kupo:New(800,150)) + CreateLight(200,64,80,nil,5,{1,0,0}) main_Player.sprite = love.graphics.newImage("assets/characters/nancy/idle1.png") end @@ -85,7 +86,7 @@ function love.keypressed(key) end if key == "f2" then - main_Player.pos.x, main_Player.pos.y = 0,-0.1 + main_Player.pos.x, main_Player.pos.y = -16,-0.1 end if key == "f3" then @@ -129,7 +130,7 @@ function love.draw() local pcr, pcg, pcb, pca = love.graphics.getColor() love.graphics.setCanvas(Canvas.Darkness) - DoDarkness() + SetDarkness() DoLights() DoBorder() @@ -137,19 +138,24 @@ function love.draw() love.graphics.setColor(1,1,1,1) love.graphics.setCanvas() love.graphics.scale(1,1) - --DrawDarkness() + DrawDarkness() -- HUD -- Scale control textScale = 0.5 --debug if debug then DebugUI() end - if debug_collision then DebugColisions() end + if debug_collision then + love.graphics.setCanvas(Canvas.Darkness) + SetDarkness() + love.graphics.setCanvas() + --DrawDarkness() + DebugColisions() + DebugEntities() + end -- reset color love.graphics.setColor(pcr,pcg,pcb,pca) - - local pcr, pcg, pcb, pca = love.graphics.getColor() if do_pause then PauseUI() end love.graphics.setColor(pcr,pcg,pcb,pca) diff --git a/to_do.txt b/to_do.txt index 75cc1f8..8ca1ba7 100644 --- a/to_do.txt +++ b/to_do.txt @@ -2,10 +2,14 @@ (X) REHANDLE ANIMATIONS (X) 3 COLOR PALETTE (GOLD) (X) MASKS FUNCTIONALITY -( ) MAKE ARROW CANVAS SO THAT ARROWS WHEN STUCK CAN BE STORED AS IMAGE AND ARE NOT LAGGY!!! +( ) MAKE ARROW CANVAS SO THAT +ARROWS WHEN STUCK CAN BE STORED +AS IMAGE AND NOT ENTITIES!!! ( ) DO GODS ( ) DO DAMAGE TO PLAYER ( ) DO FAIRY ( ) DO FLIES ( ) DO UI -( ) MAKE PHYSICS CONSISTENT +> ( ) MAKE PHYSICS CONSISTENT +> > ( ) MAKE HITBOXES +> > ( ) PHYSICS BY FRAME diff --git a/unused slash dev/spa receptionist name.txt b/unused slash dev/spa receptionist name.txt new file mode 100644 index 0000000..17080e6 --- /dev/null +++ b/unused slash dev/spa receptionist name.txt @@ -0,0 +1,2 @@ +Barry +Magma Crisp "Maggie"