From 1e1f9edb45c9bc3f49791ef64003f3b20bd4cf78 Mon Sep 17 00:00:00 2001 From: lustlion Date: Mon, 25 Oct 2021 01:41:40 +0200 Subject: [PATCH] kupo nice now bow nice aim nice arrow nice all nice --- assets/characters/kupo/kupo_arrow1.ase | Bin 0 -> 244 bytes assets/characters/kupo/kupo_arrow1.png | Bin 0 -> 92 bytes assets/characters/kupo/kupo_bow.ase | Bin 768 -> 731 bytes assets/terrain/background.png | Bin 11122 -> 0 bytes assets/terrain/bg_0.png | Bin 1279 -> 0 bytes assets/terrain/bg_1.png | Bin 3171 -> 0 bytes assets/terrain/bg_2.png | Bin 1378 -> 0 bytes assets/terrain/fg_0.png | Bin 262 -> 0 bytes assets/terrain/fg_1.png | Bin 927 -> 0 bytes assets/terrain/tileset2.png | Bin 11519 -> 0 bytes assets/terrain/waterfall_anim.gif | Bin 273 -> 0 bytes assets/terrain/waterfall_anim_strip_4.png | Bin 182 -> 0 bytes assets/terrain/waterfall_bottom_anim.gif | Bin 217 -> 0 bytes .../terrain/waterfall_bottom_anim_strip_4.png | Bin 173 -> 0 bytes data/scripts/debug.lua | 6 +- data/scripts/entities/arrow.lua | 57 ++++++++ data/scripts/entities/kupo.lua | 134 +++++++++++++++++- data/scripts/entities/player.lua | 79 ++++++----- data/scripts/entity.lua | 131 +++++++++++++---- data/scripts/enums.lua | 10 +- data/scripts/math.lua | 2 +- main.lua | 11 +- 22 files changed, 348 insertions(+), 82 deletions(-) create mode 100644 assets/characters/kupo/kupo_arrow1.ase create mode 100644 assets/characters/kupo/kupo_arrow1.png delete mode 100644 assets/terrain/background.png delete mode 100644 assets/terrain/bg_0.png delete mode 100644 assets/terrain/bg_1.png delete mode 100644 assets/terrain/bg_2.png delete mode 100644 assets/terrain/fg_0.png delete mode 100644 assets/terrain/fg_1.png delete mode 100644 assets/terrain/tileset2.png delete mode 100644 assets/terrain/waterfall_anim.gif delete mode 100644 assets/terrain/waterfall_anim_strip_4.png delete mode 100644 assets/terrain/waterfall_bottom_anim.gif delete mode 100644 assets/terrain/waterfall_bottom_anim_strip_4.png create mode 100644 data/scripts/entities/arrow.lua diff --git a/assets/characters/kupo/kupo_arrow1.ase b/assets/characters/kupo/kupo_arrow1.ase new file mode 100644 index 0000000000000000000000000000000000000000..9381795aa26cbc486edff49372fff7f3065afaee GIT binary patch literal 244 zcmeyuz`*ceDI7C}Su|mk08Rb%kqK_AERfHlz>H=WD}zsBWonT- zP?%K#BKMyOrUvBniaBr3ZscW9;9=SLX1~c6&3GoMr0eRjq71@o)LzEb2%Fb?mj7aY LU@zUcF?=Ne={+0# literal 0 HcmV?d00001 diff --git a/assets/characters/kupo/kupo_arrow1.png b/assets/characters/kupo/kupo_arrow1.png new file mode 100644 index 0000000000000000000000000000000000000000..000c64997df5b07142c7b61c9ab0e23546fa0bfd GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp@K+Md+1|&Tmw(XVHXF3N-cCM<%$fvOqqI0yCOjtPDPhm8nG@ zKw(w|h}?gm!yy3V^olvj2@C9g^s{MPwHHV`aAk5f+omY5ualFHt*Cp|Vz2tqUZ6^| z(AbiJVYVVWMfa}?cIUAf{yVy~Ug1m7 zqqHIh2F(jfZ$M#)Y(WSy7Wn5IPq;b>WI@oE$3f0(B(GfX*OBOXcRYwe9oQI z=RrMTabD?7HkuvL#M_a@W@dWi)p2$I6Ff<0)RxQ_amfA6In&WoVvU9UA{NamU!tuFy3JGc1sGaprp})BX2u#9{dM;)Idl2$j$)(%jBzo literal 768 zcmZQzW?*=*l#M|E2o)GWAO%dq2}U@JCX8yJslPrl!EKcV@>vvsjzR&f3_gjKsYQN3 zK~@Eb%zq}B3Xsz)<|HQ^;QOb{DC1So^gn`O@7acx>eqQvwoZAae!M5}?-kB^uSfL? zUy_WQL-sCVUxH@)PuTa#tHtl~B>n03 z{_pVOXd2tfDo;j+r`M#uWT9CTMYJ`xXC1=4`y^ky^0?UV&ATxzz}bFdg268N*^*O^ z$Q#zFJ&CJ&1+(ePRjDt9Xf`F1X45Lk8&?EY%g?t_H105*J)tg$Ve4D<6gJgF53fH9 zXFHy_e`Lq>c~u){I~iTXM-ORaORuWzYUI#-rKcPnsQ|;L|8&woL0u`Fmx{>`5jj0&p)(`}Us^01*zq ASpWb4 diff --git a/assets/terrain/background.png b/assets/terrain/background.png deleted file mode 100644 index 7903666f991d4c2b15400c6f70ab32d89cea7365..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11122 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 diff --git a/assets/terrain/bg_0.png b/assets/terrain/bg_0.png deleted file mode 100644 index 36250bca25992eb2b58dbe11939333811a1db716..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1279 zcmeAS@N?(olHy`uVBq!ia0vp^AAooP2OE$yy8SSffq~_ir;B4q#hkZyz4IQsNwi*6 zxp1UGe6DUv?9Dz#e;yU(-J{`uK4fQF z|G)H=alxtX-+HCHv#pDl?s>M)*S1e}+wIU7el>gc->quMt}}JBzRPy!GgpAu$@9L- zZ|2Vmdba*{!+EbA6;IRp3a{F&d)Jz`Q;1Yib;Je+nJ9G3mzYz0~E!D+J2QDQaxX; zG52qI?2=BhQhy!-JFVFp5)YV{L9&|}RYx%D`$G_dxSADMkPedxs>?qfsqviXL z>&#`^RabCt>d(zg#k-$BEPlFw&CBoywuhe<-~HvayX^Ud?zrDEwZ)s6oHwitd+>gF zS#a#iKTHSyC_;2oSw~1c2KP}d7j(+rcrQ#mF z%>7?&>Z50|-Fe(~IcxT}7#^!n7HgSison|d%M0ENbSZQ7vj@|E$$fhBZBF5ra)+IH zQ-1EQWzDPH{b=5Kp6ICK#mB$d*MGnD>+2P>+kftEW7_`bP~A4gr~lLD?vD<8Fm1l- zv^<>|wlAJv-gWEu;-g#^pZ~=2?Rd`3xON?n-ps$gsb{Y?&QJY!%_i#pg@8}8*>5+V zkGrY6QFrOQ??2P4|EKm&OZVmc{QdD``Pxs`<_nHJj;lRmy*=~g+{)MY9%-N7{I&et zzj&+Y*_r>g$vr sx7@$JM81Dzopr079K&0ssI2 diff --git a/assets/terrain/bg_1.png b/assets/terrain/bg_1.png deleted file mode 100644 index ff50f9a04598a1450cac73925c1baaba31f26d6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3171 zcmb`KX*d*$8pp>BvWyIhNrTMDQuZx-S(@y75@nAVvZV$MMrI~tvYwJXgCT1OS*9$> zHY5%+##*vu8E0%K;dbu#`#kr#&;9Ve@0Z`_-~0b3+FD=Z;}PWn004YurY82kFZ1^l za&i9Ns#EiK008g>GZRBcbnbc{<(^cFz(<-6O*!NP$DTN+;>47e-j(v=>xId=Jd-2A z#gEu11keeB8uf!#^9mcG>+*GAWGzUNicQNeL3zef03)n!%!#)Bz|qdFI|kIbK_pLF#8(Jp_^lq*AR5F@$IE< zsyf#szjhcLq2cq2P0}p~rkF3Z5~(K+*q=stU$Xd71@Yv8OOf}1% z(LM0UH}2aF;MR@rYH0yV?*zmz;P%FCZUkQ~s_RM>40fzkDUF&t$!a{c)p;Q5iQn77 zdngng%;$#B9`75kwWlM@#MFL16wGpt*+~?(PXTPL8fP5d$_>Bf-5YvojaRTja3a#L z%U;~s1xlJxN)Mu*#%8*KSmo_X4m#fx4twB)5k-`cm*TIOSO%xS8yD)-y(fMF#+~n#OZv{=ADb&y!YOv3VdEWiS{u}l`xlyj5-=9*tEXjwcn@2 zCHgYj;bzJ?NJW#BDe?xp)%l4!>wLO4H^F3@Ljy&2ei?w#AvRbcO<;%2xn$Hj2MxYm z9sKqL)C^tKQm$Q2RM^vZ@fAX%J;QPg#BBc7bLvE(%G2k42V1h2yR>O413oV|rk@aX z^gfd7lyJy{aB5o6iZI`Ebj;6R%JzbPS`W3OrwTjKbh{ckW?g>ETJ<>rNAw?_gRNoUJw%a zenqcLl(rpvKU1r5?!w9`ZW#6a#QK}GhRYY|O=FUXh{p~R%vCNQ+kO_ zze&*rDwoD)L{V|bWZOk zV>iHWtMjh6*IDJdHEVsymPEpoP0AZX0XEctQAZmFCWqy^Owo{!CdHIdpda+qR=Y3_ zwArj>gbS%aLVg9?A~QA~XIz}Fsrq4DS%WM{5o9ZGpmZ-lRZ8(A?Z%&+s~W-sz|}lG zo=q3n?4bU!z>EE_gyQrDG=L55D*B182w{l zXMk0rWUUCK7RFdoXBz>3d@o=we%&iKscu7Oku(}YzvIWB`&az)xh3Z8s3hyX26gIB zEBB&F_cR3##^jG04>bH^I8dqI_)YuUQ%vfWKor}*&E8D>M&za6jQrJs_+)g+!x>D* zxv`_?^v*xlT)~BVJPqXK(lT6BO9Vj8RTA#e+#?0v>4}M71*?0+Mv}$Ruf6a>AB78V zg?6D>lcPtnWB3u}E6PHXv!|b84b_-<*4>v#`r5~cGrUUOOsjRxdWx(9aCc8rvk4(d zaMR_%KRWn{+a?cOhmg%?JCDLFd5fxi1!{&pT|NRH^i&+;Jiy>mETma1(_Z?8hE0xI zz@ppZgFsS=xDtYI{K!SWb|=Al;GOf9?aztWmGdUTdZedQ`dNC$00wh>&lNI3Gii!uwv(h* zNPlRbtrQMPb)1{gV%^<>xu7EtpmgchsoBIN2%Q%6C=r4h7`Z7a9TXBEhzeKIRR3z} z|6^J+XOG@ZLg(ddV#j5;pE$SR8Idk6oc@;Xdx31vUx>O1wh4E-x02ntk%=!I2SGBB z+c+UjWUZy@14R89dnNyRb6`oot%w9?iZi#!27w5=SkS$si^%JgSE>y7 zHMA`MdYIOfLyq(2em&M!mMS9tr@$C>7H=ffd@o3BZv7FI+d^gD_F4AbhjIcI)6eo- zUg@?*LPAIe>d&iA>wZovI_uEgf^zu65+SQF?YIYCde0chH1kxHYwCxdESn6_eX%gh zNWt>kF=5OWEB)64&lpjLD16j<8CJLWIS@saq<@@QuK?CXSr8n17q zi`giv&`W*{U3=NcjHIvidj4zsFUwHKd{_CwVf2jT(qF$0YAAO3PJZVdNyL(hF0++x zhlK;9&sPa*<(=tx6ftEWV`nmC4erNqIT2{C`KAD9{819bY7qTu#Rnxxvp6c6$&8_erxGChLBM1+ccV?!vrmdJHfzyfW?`7Zl|a1r&e_{mk7+FC_pMPH&e@x7EsJZ= z#{<(Rlyr#U4J((|L(1G;HVEdP_T{$+&zV`t3iEouxztv~jOpgWc4UC5 zbi(?3rWmn^FqKEar<0T)cHL0ptbTE$H74Y0R$OBCH7EjbL!BGi$sX7D)^!z73;bWQ i@qZDY|If%T3G+{tyj$zu@xRLh!0f8ENwtwj{J#JqU&ht| diff --git a/assets/terrain/bg_2.png b/assets/terrain/bg_2.png deleted file mode 100644 index 1187e6c37d080c5d36dce3981df62a96d2b522dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1378 zcmcJP|2xwO0LQ1AFRLyW9Z8&9a&x}cx|AU!wTxcLAynlQbhGLIwhS)$rAkb#i z(ZH}ZYS&zCYP^+p2%@M`Aj&s~PTeyWw~eF6KcmCA1L!Nna}!+)#ATTg!S zhcyfJ7aVfUi5+d~`GZ^c4tGd^0WiM!Xg zLkX54Re;g+z1Cf;c@J9b8jyc(1tSVOw^xDa_e}OpP`o3o=#l&6|Ocvw5;2i zYf!7-pf2e+isforaJX_T=_#a?C6|(q6lnm4Sp}wL>4QQyyX$zSKTq#=;6v_BS!zsx zJe9&KQ!b0HBQ3KvDHmJ43UBOg!`1s`Juz#FA!PHr_$`V7f5jbi_TnOAW_|>EnxLGg ztAw@3BfOE`9ISQSDr+{lwx94gL$`q8cVM|+LV*WRiv1vBpdI(w)9INbUgr4*mPkQ6 z_K9EGkYQWS+KSScx?aT~eym9lje{gm>;s-@y5k+&aomDm8IAh_-T_R^a5!Qm=?S~0 zx{8;)9_cG;OZL16j>R$qPQ-mvixG{p5(Cyg_~Z@Z~i6vFtS*NdYT*o7%dKZC?{B1`5;;?C5 z>{WIhI%j7KHM}8xCp_pr7~|y7lUYr4)=3j6XMPLp58IkgmA-l!n21 zgRHtU2bQ-UNT&Oq&*0?KC!H-i>4^NjEps)Al4B7SmXqY5D{ zXL=zo=^y})wPa9}O*FSUu!_EtdQsdqNnBcn5VcW-pNL0op)>gVaZh_BQ*PTA!?>>LCim|0~0nD5ts3n_;+o)nF!;O_7gdph6wN1P{a#N1qTx9fbE89sh zkvnw$?mk6PWpr){KiO&onm2ZIx$E^HfvGQUeJ1#USgj}rxl3I30`V(iO{T@oLTS~V zp#~lK5rI7xmg8hoU(cQ<0;~{b{{Wbhp~Z;NYcfB08cf39{>OV diff --git a/assets/terrain/fg_0.png b/assets/terrain/fg_0.png deleted file mode 100644 index b21d7d119a5ef17af2021d6cf9fcaa74cde9673c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^AAooP2OE$yy8SQ}NS*a`aSW-L^Y*eMFN1;ri=l(; zp$Q%G8ytSbm}QEdNsnR%su?t(p}clo?JDI4`^8oaKhhI8(oj(u$hp%{s?lh Mr>mdKI;Vst0Kf+(hyVZp diff --git a/assets/terrain/fg_1.png b/assets/terrain/fg_1.png deleted file mode 100644 index acf2ec29c5a7bfcc644a026dd991d233c63c6cb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 927 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 Zz@rPR47joz<9}aI)s?kiHHy~Z{|9npdf@;7 diff --git a/assets/terrain/waterfall_anim.gif b/assets/terrain/waterfall_anim.gif deleted file mode 100644 index a7724fec12703008d46d1e43216e285ffd36aa42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 zcmZ?wbh9u|6kw2GC}&_${Lk&@8WQa67~pE8XTZ$J02KPk!pQ}sb%2-wq^uE0yDq%v z(Q*aIV3O+TUwQhi?xHzcZgm^i?Wtbh`pBa0S>~iytHiKt1?mIp25FT6YVCf+zZj_X i)TVoT+PT{ny_otev**>SMRAOTG?Q#E!pZpUwFUrUa$Lax diff --git a/assets/terrain/waterfall_anim_strip_4.png b/assets/terrain/waterfall_anim_strip_4.png deleted file mode 100644 index 871d47e16fa58b65a0f98046a4a88ce317ddce82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^4nQoy!3HF~w)}PhQnj8gjv*1PZ!e$bZE+A_4y;># zwy}U?%8?xtn750v1bR$!{knJUwKJc0yghE)F!Ox(n#Vua+i$VoTjKs!$E4vOgQ&}Q zQHS^mTprv(47?fQOBzbpFE@!eFyCU;RJeO^ivsI~hB8Mkk8%TD4@Q#(u@jgs$@)N) deyL>SzbtCc`SL>WZ=gdMJYD@<);T3K0RTOYK?eW; diff --git a/assets/terrain/waterfall_bottom_anim.gif b/assets/terrain/waterfall_bottom_anim.gif deleted file mode 100644 index 8237dc57b391417d12a5fe4475106e3e5c4a7615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217 zcmZ?wbh9u|6kyw^L!>YHM~As{`^N`oJSHXvU(<L?Vm z8G&lq;cA6IYES(*(7kq6L%QA0-~3G|2BRt#X-Qsrx@+#eNd|6J1vjjV&$lK8FfdpH E0NW`-PXGV_ diff --git a/assets/terrain/waterfall_bottom_anim_strip_4.png b/assets/terrain/waterfall_bottom_anim_strip_4.png deleted file mode 100644 index 8ac0191d7e25896c69b10bf5c2de626fd5dfae11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^4nWMo!3HEflYZU@QYD@)jv*eMZ$qNF4j6E37N2nM z|CCAGJJuhX@YVG7pUAo;ZoQccUFI?kp9bFhxNywy?-7myZvFT zqO`lI`h%IQ9byhsc8Xbd?3^|+;B{uHfA^XK 0 then + self.sprite_flip.x = 1 + else + angle = angle + math.rad(180) + end + + -- fix so it can rotate from 0 to 360 + if math.deg(self.bow_rotation - angle) < 0 then + self.bow_rotation = self.bow_rotation + math.rad(360) + end + + -- fix so it can rotate from 360 to 0 + if math.deg(self.bow_rotation - angle) > 180 then + self.bow_rotation = self.bow_rotation - math.rad(360) + end + + -- actual rotation + if self.bow_rotation < angle then + self.bow_rotation = self.bow_rotation + math.rad(2) + else + self.bow_rotation = self.bow_rotation - math.rad(2) + end + --set in place + if math.abs(math.deg(self.bow_rotation) - math.deg(angle)) < 2 then + self.bow_rotation = angle + end + + -- holding tight dispersion -- also affets arrows + if self.bow_rotation == angle then + self.bow_rotation = self.bow_rotation + math.rad(math.random(math.abs(self.bow_frame-self.bow_aim_frames-self.bow_frames)/2)) + end + + -- AIMING AI + + self.bow_subframe = self.bow_subframe + current_dt + + if self.bow_subframe > self.bow_speed then + self.bow_subframe = self.bow_subframe - self.bow_speed + if self.bow_frame == 3 then + self.bow_aim_frame = self.bow_aim_frame + 1 + if self.bow_aim_frame > self.bow_aim_frames then + self.bow_aim_frame = self.bow_aim_frame - self.bow_aim_frames + self.bow_frame = self.bow_frame + 1 + Arrow:New(self.pos.x,self.pos.y,self.bow_rotation,30) + end + else + self.bow_frame = self.bow_frame + 1 + end + if self.bow_frame > self.bow_frames + self.bow_extraframes then + self.bow_frame = self.bow_frame - self.bow_frames - self.bow_extraframes + end + end + else + self.bow_frame = 6 + self.draw_bow = true + -- rest bow animation + if distance_x > 0 then + if self.bow_rotation > math.rad(45) then + self.bow_rotation = self.bow_rotation - math.rad(3) + elseif self.bow_rotation < math.rad(45) then + self.bow_rotation = self.bow_rotation + math.rad(3) + end + + -- set in place + if math.abs(math.deg(self.bow_rotation) - 45) < 3 then + self.bow_rotation = math.rad(45) + end + self.sprite_flip.x = 1 + else + if self.bow_rotation > math.rad(135) then + self.bow_rotation = self.bow_rotation - math.rad(3) + elseif self.bow_rotation < math.rad(135) then + self.bow_rotation = self.bow_rotation + math.rad(3) + end + -- set in place + if math.abs(math.deg(self.bow_rotation) - 135) < 3 then + self.bow_rotation = math.rad(135) + end + self.sprite_flip.x = -1 + end + end + self.angle = angle end function Kupo:HandleAnimation() -- flip sprite to look in the direction is moving - if self.vel.x ~= 0 then self.flip.x = math.sign(self.vel.x) end + if self.vel.x ~= 0 then self.sprite_flip.x = math.sign(self.vel.x) end self:LoadAnimation(animation.kupo.body) + if self.draw_bow == true then + DrawAnimationFrame( + self.bow, + math.min(self.bow_frame,self.bow_frames), + self.pos.x + ( 8 * math.sin(self.bow_rotation)) * game.scale, + self.pos.y + (2 - 6 * math.cos(self.bow_rotation)) * game.scale, + self.bow_rotation + ) + end +if debug_collision then + love.graphics.setColor(1,0,0) + love.graphics.line( + self.pos.x - Camera.pos.x, + self.pos.y - Camera.pos.y, + self.target.x - Camera.pos.x, + self.target.y - Camera.pos.y + ) + love.graphics.circle( "line", self.pos.x - Camera.pos.x, self.pos.y - Camera.pos.y, self.range ) + love.graphics.setColor(1,1,1) + love.graphics.print(self.bow_rotation, self.pos.x, self.pos.y+30) + love.graphics.print(self.angle, self.pos.x, self.pos.y+50) + end end function Kupo:DoPhysics() diff --git a/data/scripts/entities/player.lua b/data/scripts/entities/player.lua index 4a58123..fb25470 100644 --- a/data/scripts/entities/player.lua +++ b/data/scripts/entities/player.lua @@ -1,6 +1,44 @@ Player = Entity:New(x,y) -function Player:DoInput() + + function Player:New(x,y) + local o = Entity:New(x,y) + Player.health = 3 + Player.coins = 0 + + -- physics + o.vel = { + x = 0, + y = 0 + } + -- constants + o.acc = 90 + o.friction = 20 + o.gravity = 9.81 + o.climbHeight = 4 + o.jumpForce = 5 + o.maxSpeed = 600 + o.jumpMaxSpeed = 9.5 + o.zeroSpeed = 0.001 + -- bools + o.isJumping = false + o.isOnGround = 0 + o.coyoteValue = 10 + o.isOnLadder = false + o.canJump = true + o.canFall = true + o.canFriction = true + + -- sprite + o.sprite_offset = {x = 8, y = 16} + o.target_offset = {x = 4, y = 12} + setmetatable(o, self) + self.__index = self + + return o + end + +function Player:Smart() -- PLATFORMER INPUT if self.isOnGround > 0 then -- apply friction @@ -42,7 +80,7 @@ end function Player:HandleAnimation() -- flip sprite to look in the direction is moving - if self.vel.x ~= 0 then self.flip.x = math.sign(self.vel.x) end + if self.vel.x ~= 0 then self.sprite_flip.x = math.sign(self.vel.x) end -- animation manager if self.isOnLadder then @@ -163,40 +201,3 @@ function Player:DoPhysics() self.vel.x = self.vel.x * (1 - math.min(current_dt * self.friction/20, 1)) end end - - -function Player:New(x,y) - local o = Entity:New(x,y) - Player.health = 3 - Player.coins = 0 - - -- physics - o.vel = { - x = 0, - y = 0 - } - -- constants - o.acc = 90 - o.friction = 20 - o.gravity = 9.81 - o.climbHeight = 4 - o.jumpForce = 5 - o.maxSpeed = 600 - o.jumpMaxSpeed = 9.5 - o.zeroSpeed = 0.001 - -- bools - o.isJumping = false - o.isOnGround = 0 - o.coyoteValue = 10 - o.isOnLadder = false - o.canJump = true - o.canFall = true - o.canFriction = true - - -- sprite - o.offset = {x = -8, y = -16} - setmetatable(o, self) - self.__index = self - - return o -end diff --git a/data/scripts/entity.lua b/data/scripts/entity.lua index 17f71e4..b5c25cd 100644 --- a/data/scripts/entity.lua +++ b/data/scripts/entity.lua @@ -6,12 +6,15 @@ function Entity:New(x,y) o.pos = {x = x, y = y} o.vel = {x = 0, y = 0} o.class = "Entity" - o.anim_subframe = 0 - o.anim_frame = 0 - o.anim_imgs = {} - o.offset = {x = 0, y = 0} - o.scale = {x = 1, y = 1} - o.flip = { x = 1, y = 1} + o.anim = {} + o.anim.subframe = 0 + o.anim.frame = 1 + o.anim.imgs = {} + o.animations = {} + o.sprite_offset = {x = 0, y = 0} + o.sprite_scale = {x = 1, y = 1} + o.sprite_rotation = math.rad(0) + o.sprite_flip = { x = 1, y = 1} setmetatable(o, self) self.__index = self return o @@ -23,52 +26,128 @@ end function Entity:Draw() if self.sprite ~= nil then + local relative_position_x = self.pos.x - Camera.pos.x + local relative_position_y = self.pos.y - Camera.pos.y + local origin_compensation_x = - ( (self.sprite_offset.x) * math.cos(self.sprite_rotation) - (self.sprite_offset.y) * math.sin(self.sprite_rotation)) * game.scale + local origin_compensation_y = - ( (self.sprite_offset.x) * math.sin(self.sprite_rotation) + (self.sprite_offset.y) * math.cos(self.sprite_rotation)) * game.scale + local dimensions_x = self.sprite_scale.x * self.sprite_flip.x + local dimensions_y = self.sprite_scale.y * self.sprite_flip.y love.graphics.draw( self.sprite, - self.pos.x - Camera.pos.x + self.offset.x * game.scale * self.scale.x * self.flip.x, - self.pos.y - Camera.pos.y + self.offset.y * game.scale * self.scale.y * self.flip.y, - 0, - game.scale * self.scale.x * self.flip.x, - game.scale * self.scale.y * self.flip.y + relative_position_x + origin_compensation_x * dimensions_x, + relative_position_y + origin_compensation_y * dimensions_y, + self.sprite_rotation, + game.scale * self.sprite_scale.x * self.sprite_flip.x, + game.scale * self.sprite_scale.y * self.sprite_flip.y ) + if debug_collision then + love.graphics.setColor(1, 0, 0) + love.graphics.circle( "line", relative_position_x, relative_position_y, 2 ) + love.graphics.setColor(0, 1 ,0) + love.graphics.circle( "line", + relative_position_x + origin_compensation_x * dimensions_x, + relative_position_y + origin_compensation_y * dimensions_y, + 2 + ) + end + love.graphics.setColor(1, 1 ,1) end end +function Entity:NewAnimation(anim,frames,speed) + local anim_data = { + frame = 1, + subframe = 1, + path = anim.path, + frames = anim.frames, + speed = anim.speed, + imgs = anim.imgs + } + self.animations[#self.animations+1] = anim_data + + return self.animations[#self.animations] +end + +function DrawAnimationFrame(animation, frame, x, y, rotate, sx, sy) + local x = x or 0 + local y = y or 0 + local sx = sx or 1 + local sy = sy or 1 + love.graphics.draw( + animation.imgs[frame], + x - Camera.pos.x, + y - Camera.pos.y, + rotate, + game.scale * sx, + game.scale * sy + ) +end + +function DrawAnimation(animation, x, y, rotate, sx, sy) + local x = x or 0 + local y = y or 0 + local sx = sx or 1 + local sy = sy or 1 + if game_paused ~= true then + -- try to animate + animation.subframe = animation.subframe + current_dt + + if animation.subframe >= animation.speed then + animation.frame = animation.frame + 1 + animation.subframe = animation.subframe - animation.speed + end + + -- cycle + if animation.frame >= animation.frames+1 then + animation.frame = animation.frame - animation.frames + end + end + love.graphics.draw( + animation.imgs[animation.frame], + x - Camera.pos.x, + y - Camera.pos.y, + rotate, + game.scale * sx, + game.scale * sy + ) +end + function Entity:Animate() if game_paused ~= true then -- try to animate - self.anim_subframe = self.anim_subframe + current_dt + self.anim.subframe = self.anim.subframe + current_dt - if self.anim_subframe >= self.anim_speed then - self.anim_frame = self.anim_frame + 1 - self.anim_subframe = self.anim_subframe - self.anim_speed + if self.anim.subframe >= self.anim.speed then + self.anim.frame = self.anim.frame + 1 + self.anim.subframe = self.anim.subframe - self.anim.speed end -- cycle - if self.anim_frame >= self.anim_frames+1 then - self.anim_frame = self.anim_frame - self.anim_frames + if self.anim.frame >= self.anim.frames+1 then + self.anim.frame = self.anim.frame - self.anim.frames end -- change - self.sprite = self.anim_imgs[self.anim_frame] + self.sprite = self.anim.imgs[self.anim.frame] end end function Entity:LoadAnimation(anim,frames,speed) - if self.anim_path ~= anim and self.anim_path ~= anim.path then + if self.anim.path ~= anim and self.anim.path ~= anim.path then if frames ~= nil and speed ~= nil then - self.anim_path = anim or nil - self.anim_frames = frames or 4 - self.anim_speed = speed or frames + self.anim.path = anim or nil + self.anim.frames = frames or 4 + self.anim.speed = speed or frames else - self.anim_path = anim.path - self.anim_frames = anim.frames - self.anim_speed = anim.speed + self.anim.path = anim.path + self.anim.frames = anim.frames + self.anim.speed = anim.speed end - self.anim_imgs = anim.imgs + self.anim.imgs = anim.imgs end end require "data/scripts/entities/kupo" +require "data/scripts/entities/arrow" require "data/scripts/entities/player" diff --git a/data/scripts/enums.lua b/data/scripts/enums.lua index de9de92..f5bfc0b 100644 --- a/data/scripts/enums.lua +++ b/data/scripts/enums.lua @@ -1,6 +1,3 @@ -image = { - background = love.graphics.newImage("assets/terrain/background.png") -} -- animations animation = { kupo = { @@ -12,7 +9,12 @@ animation = { bow = { path = "assets/characters/kupo/kupo_bow", frames = 6, - speed = 1/8 + speed = 1/10 + }, + arrow = { + path = "assets/characters/kupo/kupo_arrow", + frames = 1, + speed = 1 } }, nancy = { diff --git a/data/scripts/math.lua b/data/scripts/math.lua index 5501086..f2e3a48 100644 --- a/data/scripts/math.lua +++ b/data/scripts/math.lua @@ -6,4 +6,4 @@ function math.sign(x) else return 0 end -end \ No newline at end of file +end diff --git a/main.lua b/main.lua index 77b0989..1420dd3 100644 --- a/main.lua +++ b/main.lua @@ -11,7 +11,7 @@ function love.load() love.keyboard.setKeyRepeat(true) love.graphics.setDefaultFilter("nearest") -- good pixel game = { - scale = 2, + scale = 1, width = love.graphics.getWidth(), height = love.graphics.getHeight(), paused = false @@ -26,7 +26,8 @@ function love.load() main_Player = Player:New(1220,220) LoadedEntities = {} table.insert(LoadedEntities,main_Player) - table.insert(LoadedEntities,Kupo:New(800,200)) + table.insert(LoadedEntities,Kupo:New(700,200)) + table.insert(LoadedEntities,Kupo:New(500,300)) main_Player.sprite = love.graphics.newImage("assets/characters/nancy/idle1.png") main_Player:LoadAnimation(animation.nancy.idle) end @@ -52,10 +53,8 @@ function love.update(dt) if not do_pause then SetCollisionFlags(main_Player) for _, enty in pairs(LoadedEntities) do - enty:DoInput() + enty:Smart() enty:DoPhysics() - enty:HandleAnimation() - enty:Animate() end AnimateTiles() Camera:CenterAt(main_Player.pos.x, main_Player.pos.y,LevelInfo.Width,LevelInfo.Height) @@ -105,6 +104,8 @@ end function love.draw() LevelDisplayBackground() for _, enty in pairs(LoadedEntities) do + enty:HandleAnimation() + enty:Animate() enty:Draw() end LevelDisplayForeground()