From e1203e42b0489952c595d02aeb5ec99703d45a6a Mon Sep 17 00:00:00 2001 From: Ritchie Cunningham Date: Mon, 7 Mar 2022 13:45:31 +0000 Subject: [PATCH] [Fix] Animation [Add] Sound. --- bin/tfg/Game.class | Bin 9609 -> 9609 bytes bin/tfg/Location.class | Bin 2689 -> 2708 bytes bin/tfg/Map.class | Bin 3425 -> 3425 bytes bin/tfg/Player.class | Bin 3896 -> 5348 bytes bin/tfg/PlayerAction.class | Bin 0 -> 936 bytes bin/tfg/Tile.class | Bin 1755 -> 1742 bytes res/stuck.wav | Bin 0 -> 10188 bytes src/tfg/Game.java | 4 ++ src/tfg/Location.java | 5 ++ src/tfg/Map.java | 5 ++ src/tfg/Player.java | 94 ++++++++++++++++++++++++++++--------- src/tfg/PlayerAction.java | 7 +++ src/tfg/Tile.java | 6 ++- 13 files changed, 97 insertions(+), 24 deletions(-) create mode 100644 bin/tfg/PlayerAction.class create mode 100644 res/stuck.wav create mode 100644 src/tfg/PlayerAction.java diff --git a/bin/tfg/Game.class b/bin/tfg/Game.class index 4380cdf3562449d568f9a8e39bbf23aa30163240..7e40da1671b7b2863daad6751813d095a115d02b 100644 GIT binary patch delta 253 zcmWNMJ4*vm5QV=>5|U`(n%rGBQ6p{$KC2jm5b=SEf(uHFtBoL72=P@}SlXtr@nVtx zU?HrXU@ce+BG?G24e9KhZssuGIcM5IJ9xS=t|rb9nk+6kCUB^r?VZ_3d!)#dpm|+)y>@ z47128OKh>swoK2g@xnTjoLI-Z kRj2mBJI=Nw_DsGxXPgUZb{Qq|nY7YT&i{@nZF}X;KjIxNYXATM delta 253 zcmWNMy-R{o6o;Qnis`ivyYEFU-pCTAp-cp$2#bn>UMS3jrUao6m!^isRtJ|Z4*d@e z!P^!z2hBkQEkbkA*49}L9G>(1&Nf7djx|i+#R1;Fmgo9I6Nn72{YXs4ByW^U^n} j?fU6f>QvUA$v5Y6-33KDVKkGBD;-YcK8KWcKl!_Va`h~W diff --git a/bin/tfg/Location.class b/bin/tfg/Location.class index 438f446d14a749c4d170512a84a7b141d0f7d1a6..8832977d161e7ec8810874e22e2c31ae1cd5fb80 100644 GIT binary patch delta 622 zcmY+B%TE(g6vlruokwT9XlpHzmnLnZVH#0eqLGMCDul*Dq_GyMg6{_i_(({M8kB`= zuS=uu+*VD{7(-mSaN}RX!i5Vr;+dJ1GnsqNeCIpoeCOQd?8~hGV2}sz{oe`S z$Dpn#QqmiVS?8i+h-tlOb)_yTHlcjdTv1%*nto;FN;ecY@eQo<@rjxzvD=E-5U{Ib zXKEuMaz`;AQR?N1n#-d8WxcT5@Yt-M+wg8 z7%lP5NT?IxqftW@bK-`nq408q)zr_t%Fda_cdSQLmH!XXdoP;g{y%-QU&#Of delta 573 zcmY+AOHWf#6otQgdmr5EQCpP8Qc%+-MoXeLDEI&)kp_|?HPTpHMDYD84`oQSapDi? zCjJCxosht3 zdJBe0uFHm#O)eRBU_w&dG~D90ymE5GcMbOlEu7NCTs6?#1H;1zaAzx*tJ4wEG%UxI zT4}E8vntz8+YJZ^rR}b!3=Xc+cCw#cB~Uc>5@Wp7NHURu6*huwZUWipq0!f|ewEp0zqy%1W`9DH7~c{ET*h0yaaMIjXs1 zq&ZHOVa{`si;QrIQ!H?rCC;kvG1fT8Qzpo0<%zC3{aO*NmTHCC#a6}@#cWkwr>3_A z=}^g6sq1(RIT#FC^D+};ir2nkb+puu4S8A&rC8j=_nxkJax(gNWzEaWpnPDl{tc&7 z`^b&0&tbXnjyoTi^(wD%YWld}4l^5%6!E)A{XL5v?VD8H0ah5~5Jxl?bj%TrqdM#b mjonY_dT?S7wz_HP&J#@gto>yVmd5BEz-a#Cz!A zB6ttoyE$}mZm+pd=V52E)j|_%=qw8FR@*Do(j$99g>e553hRegFUf delta 210 zcmWN}y=uZ>7{&2_K#?~nn5t;g7EM)**iUJNScnE&Xaj!CE?O+Oxi}Q3F1>@-dvNGd z@E*E%b8vCiE9lf`dJYfg{C4)v{%)wtED?^dNOMYt3OVjLCgg;nd`6t{MxGf3<~Vwy zKBFZRWqnYyge$A6v|Y}rt*7R~c)b$t8j~B6+zL>q$UQY01ahD7=+b1&gK!@2_1AFFLGw diff --git a/bin/tfg/Player.class b/bin/tfg/Player.class index 2209abdcc0e8b3db56ee6800e441cf3ce7415072..ce74f69f97524a16b0ad776449868c370af59656 100644 GIT binary patch literal 5348 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 Y{P(4#c!%(aLcZlMpWAthn!2>?zmE(|?EnA( literal 3896 zcmaJ@`$JRb8Ga5490*4VwAM-isYN9L3AHV@2B{jMpb?mfU}UQtk^?z57j|+$=(cv< zobKLk-P+l87u&6D?bdmL;7aRUcllxe%>IFG-SeF<381MzB;W15KHu}c-}%@7KDrIy z5dNW}LV?Ggo(YVm^hLu`;a1>1ug~j&l%AOhj7*(3;tOVPTL{-8QqCpn`|xVPw`aZ6lX73_EHp*mD;3n!;tw z7EYi8@a`tZKMNZ%rR^2H!14X zGiKU}JCvQv*oLJ*8DdJM?Ey#a z;t~uGc1h_y8fu}bXx}7#SK1!zgY13X$>l>t8tLvSw=1(ub^u-Gozw+6UQR9WoBkP=)++Z&nkGp zpk0gV}OCDvU*~` z%BBbCN5S@j+06>RF%JfDTm`RCM#jK~M*0`x#;mwq4JWWeK^?iBu_Lw~e<5n=ao+4M zoD`T2D`;ykN83;~lPlIiP%xq{Y-Wt%x%8A_MP*Snh#E?b>6R(hg-y4eG;<8z;rFOh zb>wY@v7lg^%y@HvJlx{M#abwssEH?8+=f#pT6?Kb-SWNRqu^A}Xd5@A~xG2C2N?=+A&8vb}^sZqB zNy201#`Kh#C`u}*m!^svLEl;7{=9}4@H_#^8Fnc&ro&3Db6k}+iA+_-xIleEM2;GE z(G>Z~;0tXil+9WRBHls_%2eD?hFQk#pbE;AtKfow2Nvc8Bj%YJt4!3HhlR4B;UO#% z)OO#*kVxPw8or9JF#(29idAGQub{L=s9we^D!$I>1yrR24d1{w>4agM89n86oS_;P z`L{G&LIbf_5UX!%_>Qxp^Lkr0WSOhT=W|+fFHKKS$$X4)lhClLmq4}?*1c@sMxrr;m=~D za(LuabWrT9Y53ULiHw|JVHyT4tM17oMTNKt|Cl}*Xg_; zr*VdFmJ1_v-@|SW2Ib}(UdON-`EL6db{B(wf?+?+oqjY?rx`J{;7e#litvn5>miu{ zzJOC)#b_gfC_S9!%8QE6=tfbw=HH;3;~2*IFOu)0rbxcZ-?4%-*Ey?jqVYJpZG>j` z1`kyQ50uAQLQadAz!wX)0?rz!WSVELl}uG}8)$dTXwJN{U`AmQ&li+0)1ixUd#QYY zfSo%jtaRoPzk+Rkw}81*!YfWq5vjzjk+A@sq{KcV)dY@u!eQ-RxIkxb3h`+P^Ejap3ll6FwDxJ%? zD2L0!-V$PkV^_Ju-ol}GvfOD)@wEHi(++W)67D{d6L^MocaU)R;xL{i1^P&W!#IZ! z7H|}cIL4RpIlO@Zyh(z;#ZRwg9LEZVH(beT0VWL};Jf%9(|r){;`^k&ypk=b{IB@Z zw3L>n=0+Z~n-$!?HS)<(V7W*QnZuKg*Y^YiX z@mGg=B9K4m=4AI8UXSf7fqF4{iHplT5I`s8SX?F&msau9Jboth{CT{c$1m6LPK-;| z_-_u1D%jnzqcV@*u9J0`pXFeYsw~iYmS`i%x0B`QV?jR7D(zwM23Zv$)+H?T~WR*fvdJ5j(3_L diff --git a/bin/tfg/PlayerAction.class b/bin/tfg/PlayerAction.class new file mode 100644 index 0000000000000000000000000000000000000000..33ae85255e2dd1b1a803067539b7acb766b524d9 GIT binary patch literal 936 zcmZ{i-*3`T6vw}p0)?(_j0tl;bh_b$ZbJ5;FW|CeK|_RMQb$63y3`K4lwwL*!hfag zVT;DaXa6YUxlJ97!#?!hbM86c^Evn2U%$WI0C>%cNKfL-NJujKuIg+wE5yrB0e+S5zdBOhFb#UWJUL z*ga5@LYkzSwrlC*LC^Bu^PXb~_Myq04)<(f2TlbNmI%TBWRIxo1$V|4ZF0rZ9Cihd zu`S~X-C2ZbGV-l~iX9Xf(%kd-#2kK}FlbTocJJIW{c0o9%wHFE!ypHh+h+{B(X_DP z(%pL$;6)WrQDS%zO*wJ+XjF~Vxz(64i;2?M6k|B{OzX8RE@wIV1j-_o+A-|D%l)xO z=Y@!*$gkaHI;~G;i>c5_oK^)36sMAz#h?Y6d)N=w=YIepb-@<^ literal 0 HcmV?d00001 diff --git a/bin/tfg/Tile.class b/bin/tfg/Tile.class index 4cd68f7246ec56852ab068aed8451c323218b2de..002062d1accc02c7dcb223f108862fb0c68c8561 100644 GIT binary patch delta 455 zcmX|-yGjE=6o&tCcPG1>iP_v^HtXhwc!_8r1VIqBNF+^)Ktf6zg|v!j}p;^E&j?8Y%MueEDj$ n$?nT&#p2kE#%OZi^&ZgTgInn1ReBJC@dpKY#5*+R4d3|&n4~?l delta 463 zcmX|--AV#M6vzML?u?qdX0Ew@wthsE86|{7MI?oR1YHQmUWFGDeP9(>$cxuI?e%cDVpY_-j_#o!S7;0Z{s(F4iaNO*iJc!D CQ$dRW diff --git a/res/stuck.wav b/res/stuck.wav new file mode 100644 index 0000000000000000000000000000000000000000..310156ccfae01ce0770861e02e26e19883ddcc07 GIT binary patch literal 10188 zcmeIz|9j5$0>|;&8L`>W$U0k_cA6zR!P)#Xa>=1ODnu)i;-Wf9 zsa(im$2qu69bY@XpO{QDGn?egvKcGeeA&i%>|Z$gVRha26umcOpcx$ zeLbscudjQndS)$cx3t~$?5e%rb#YhUguV&av#a*{y0|O-RQjpw*;RXOUEEdsn|`Ug zeyL~TPjS!c>i_Jg*j881{QqZLX2;BqtN4tMNsCU49-lQnYZB9#$z1-%$9%>rGTF=y z_L0L;PI8uVstDO1vcEBrMDrWk(vd&Vo!<0g5UGsfSzcf&Gnm8Z4x>9f#pCp+4?XBY zGVMs<7FrNaeX846w=d@`v0ul2-J0LhiF@fuUj{Ig;XK1cUM8K{yu*hqA%k^nVh8)k zp@37AQb7$34m3E>gqFmSND`g7pI(#}loqT=T9LGv517XrOk)z`8AU3C=tnQQayRYC zKahXm1SOPHP5tcp*%91CEQuu1nXdGrAA?9Gjq$w5bY?N1g)AY1b!=iMS>$qz?8A^ZFA6$QM3%fbM5x%2@a%yPs zO@nWm5XG(BK}YVP2YngHlZ<2>e`Ol8n9qkSWfkk$${w=G=Om?6a*akgjdIG`mbERS zkR0~1jeoP67!sz!6SRN+s85bg0pxNMcAJiM#2> z!}Mn;BN)ddrt>E6vWVrZW&_*FBA4S7Q%(&Ha~tN~NKu=jHU)gcf7!}<{=pJHU@osS znF*wk%A?f2E4Sos$=yxu19OzqlyRAm!y$(wh$5bL+(lP0<{B+`L<*qFF6aSh8^#C+ahD$g;RR0h(A?sVo(;@KOsH>NzV zJntHzM?#OZAdWjo=6)WcKTk4>2~1`t^ZAJ7tYtI1seQ-`Il~365}F^H--1@$K_|NM zFat?t49_!-*^EvYo$zM{(3|^7rVX*&$PHB8R&`q$r^q9VZG6taqXUnoGKLqJ&RZ;C z3IAdPJISViGn5l32o!`9#cd>U4-fJuo*<2hyuxhWX9@pg1G_lLF-o{dNMT4}Qz9ZG zB9Fu$iO=FcWU_)q%;R+?F_vKr5yeO9TbR&hQd5#$@U|I39;s}Ob#qTeEA9g0}Oe`Jf$zzOR3iDXT7wqFW6@(Rs702;Adhs~V@)`?R#WoIej*ya& zlAB4Q2ZI^MYb<0nyC|fb#%CL!jb~5uJG^i_;%TPxA)j-I3p6WhR+dCx#_$Hq*-a4* ze`xr_?L5RNX0eieoG0?f$RF=wFzFHL5vg?HCd$Ig!uPP4mq?*40S+}j)OaPY(4Ryu zg#u^)5TPxDL7FAZif=jnF2+vWH8fdN+r zT-ieBs?Jp#8B#r@I=&{pCgp0%)!KJ(@DnT$ED$UZED$UZED$UZED$UZED$UZED$UZ RED$UZED$UZEbwzI@IOAr= 10) { - animationCounter = 0; - animationFrame++; - if(animationFrame >= 4) { - animationFrame = 0; - animated = false; + Vector2f spritePosition = new Vector2f(0,0); + Vector2i currentPlayerPosition = playerLoc.getPosition(); + if(currentAction == PlayerAction.MOVING) { + if(frameCounter >= animationSpeed) { + frameCounter = 0; + currentAction = PlayerAction.NONE; + playerLoc = newPlayerLoc; + newPlayerLoc = null; + Vector2i newPlayerPosition = playerLoc.getPosition(); + spritePosition = new Vector2f(newPlayerPosition.x, newPlayerPosition.y); + animationFrame = 0; + } else { + float additionX = 0.0f; + float additionY = 0.0f; + switch(playerLoc.getDirection()) { + case NORTH: + additionY = -(1.0f / animationSpeed) * (frameCounter); + break; + case SOUTH: + additionY = (1.0f / animationSpeed) * (frameCounter); + case EAST: + additionX = (1.0f / animationSpeed) * (frameCounter); + break; + case WEST: + additionX = -(1.0f / animationSpeed) * (frameCounter); + break; } + float change = Math.abs(additionX + additionY); + if(change >= 0.f && change < .25f) { + animationFrame = 0; + } else if(change >= .25f && change < .5f) { + animationFrame = 1; + } else if(change >= .5f && change < .75f) { + animationFrame = 2; + } else if(change >= .75f && change <= 1.0f) { + animationFrame = 3; + } + spritePosition = new Vector2f(currentPlayerPosition.x + additionX, + currentPlayerPosition.y + additionY); } + frameCounter++; + } else { + spritePosition = new Vector2f(currentPlayerPosition.x, currentPlayerPosition.y); } - Vector2i playerPosition = playerLoc.getPosition(); - Direction playerDirection = playerLoc.getDirection(); playerSprite.setPosition( - new Vector2f((playerPosition.x*playerSize.x), - (playerPosition.y*playerSize.x) - (playerSize.y-playerSize.x))); + new Vector2f(spritePosition.x*playerSize.x, + (spritePosition.y*playerSize.x) - (playerSize.y - playerSize.x))); + playerSprite.setTextureRect(getTextureCoords()); RenderStates newStates = new RenderStates(playerSpritesheetTexture); playerSprite.draw(target, newStates); diff --git a/src/tfg/PlayerAction.java b/src/tfg/PlayerAction.java new file mode 100644 index 0000000..3628952 --- /dev/null +++ b/src/tfg/PlayerAction.java @@ -0,0 +1,7 @@ +package tfg; + +/** + * Actions the player can carry out. + * @author Ritchie Cunningham + */ +public enum PlayerAction {NONE, MOVING } diff --git a/src/tfg/Tile.java b/src/tfg/Tile.java index dd9fc21..bc5a2ea 100644 --- a/src/tfg/Tile.java +++ b/src/tfg/Tile.java @@ -2,10 +2,14 @@ package tfg; import org.jsfml.system.Vector2f; +/** + * Map tiles for the Map class. + * @author Ritchie Cunningham + */ public enum Tile { WATER, SAND, GRASS; - private final static int tileSize = 32; + private static int tileSize = 32; public static Vector2f getTextureCoords(Tile t) { Vector2f textureCoordinates = new Vector2f(0, 0);