From 1bc8e5a56f821df8e1ab1695e9c41ac20a2ea39b Mon Sep 17 00:00:00 2001 From: MasterGordon Date: Mon, 2 Jan 2023 18:42:25 +0100 Subject: [PATCH] added walking animation --- Mine2d/assets/character/character.aseprite | Bin 1541 -> 7491 bytes Mine2d/assets/character/character.png | Bin 720 -> 4340 bytes Mine2d/assets/hud/player-inventory.png | Bin 812 -> 822 bytes Mine2d/assets/items/basic-pickaxe.png | Bin 263 -> 0 bytes Mine2d/assets/items/pickaxe-basic.png | Bin 252 -> 263 bytes Mine2d/assets/items/pickaxe-stone.png | Bin 0 -> 249 bytes Mine2d/game/core/PlayerEntity.cs | 2 ++ Mine2d/game/core/data/Chunk.cs | 1 + Mine2d/game/core/data/ItemId.cs | 1 + Mine2d/game/core/items/ItemRegistry.cs | 3 ++- Mine2d/game/core/items/PickaxeItem.cs | 17 ++++++++++++- .../game/frontend/renderer/PlayerRenderer.cs | 24 +++++++++++++++--- Mine2d/game/state/Player.cs | 23 ++++++++++++++--- Mine2d/game/state/PlayerMovementState.cs | 1 + 14 files changed, 63 insertions(+), 9 deletions(-) delete mode 100644 Mine2d/assets/items/basic-pickaxe.png create mode 100644 Mine2d/assets/items/pickaxe-stone.png diff --git a/Mine2d/assets/character/character.aseprite b/Mine2d/assets/character/character.aseprite index e27eafef2cfe610c2b05bd1cbdf6d6412044ddd4..c0893efdd28668305ce08b3202f6170c92b29317 100644 GIT binary patch literal 7491 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 diff --git a/Mine2d/assets/character/character.png b/Mine2d/assets/character/character.png index 0a4900d57a465ac14a76645ded9c6ae8ed1943b0..0a73cb25ff31fee4283af5dcffb77a51e143883e 100644 GIT binary patch literal 4340 zcmXAt2{=^W|HtoG#}?t6EE!P^os-vP9Oh z4jE*hA-kEu{IB2tdG5XExzGJP=RW70_vdxqpYzPZ%#edsfE54$4x=0TmSBqnZvvDF zd>%?V6Tk)%U}>lel=Ta(0038+k-m;~NG2)kzNgSwP#3Lw%Jxc}?RqSG(L!-5f2w|F zLcSz~6SAZsrOwllcW3zf^fH~haiyf(Z6B~^Y2k*BHEEDyNIybih z%>A^k1?}+{-s4Dj!0~PK41cYk@p$5L>mAaWnu@_ViUH>vry}j zPQa^-pSq^KHgb;)E@@$$5maaQ(9(6^7WBBP{~W_jGNk0JqMm7Qx2Y?BdOxu(6Vg;H zxKgPwck@UL70jt5rS|9%hu_6S|HjA$Zo^QSgyE;pgs($InE;I+!T{##lpDJ8)(`{$ zL-esPt&6j%9QatMAv>T{YbvIZ)@g9v@DoA_TT-NWf$~89EHMb|!qhAIgAr6@^q_q> zqgV2+G_V?`rOsZt0j+!oiI?{KHAM7HUVhsc0Gt=zzVK71^r$?R4er1wGM`P`G(K3) zotY()_y2J(B6r+fEueDWA%vfsxx?ACA+gT69s$?zUDhfx|8n|sA9Otf(7ose0KN4Q z*+OAL;9?yg*N)|H2hfIFKRkxY0SBG0#cb?tqsr3y;7Y%nws~#}q|Wug|GWCh6inAl%BI1OA3&mDYp?U2W=VB{bvzH7*h#OGUnM_p?4s9xPz&6*8WNKb z3^$98X2bA)nVDWqf8O(`{m_2hSkFvq$_FZ^&<9AA$VYM+THVp7SQ%YXrImNyxov1F zoa$7mG6!pQy%6>wPivRia^-R0*2Vwj6+K}+Iw_G;H0xz<-iRk{{Eb;>{+m0wHGvVn zZ$JJdn}`h-a)PO3pvM0;F_F`fi=mwnqnfSyC!M8lc-WTf9=@+Xf5kv1*(9e}&^28R zSIi+25v$T*csh>LBr9%6d49XPRRoDTtM*f5Z_(o zVtjFm$a(gGuH=A$V|w77?Qrzj27uixyK_^1DFgkz2BNK@fwD3ioHgXi6f4-u&D3o3 z_K`qgY#R8vk}nwj@~G>-`^L{7&EP9Bdl?4+MK+`99~d8oaxiwZ%?T~UJ&(?SjQPN4 zDWr?My!82pfUEhn=aEj@+0#*$=$!i~qI-H-q<^w4sNGml+~O;AvN3|uHbQVcWvQn3 zr>6@AMZP-JZDa%_D6;-HF}rh5bFy66t0VHfj#5~9&6 zFpzNMj%d&pd)bQN_|vBupj$BR6Uyu8)yC?9M2N41#B+ay|8trlaSfSKbvg(7FgRxM zJmo*=fdiB9Z}!rJ>L}C)J}>AOIMjnSbG**-Qlp~WYcJ|$Hrv1+VB%rM0dg77V`+oZ z`AVX1Q`ZWs%in9{_x(E?1+3Z*?=oFg+5e63=a>pGH|NZUhY)`(-D=*`#S^P%>W9(2 z3<3^2j2#~Ez%0~9x&+BxMo|*;>$}$#k2@33T9I$rQwla3l|%$%14+t#w!?HgjQ8CT zh1&DoeE#EC*_~xmYex8Zd(-iR7^wc|t=zJ`@)-yJDJotLy)IO7c@Ro$tDrnNctZIYj}pD_2k6S;Y!Oxbp*nFHNC!Fe;VfXgR zO~FS$u4ZUV{#oBHHRj8ou1l~#&m)exLj|>dY8|%M9Q;0rdFw?`26?Ug=IC)qmDeUe zUMV%Jf)wsT0nP+{p^xi4MRqtOVG-fa?CxB&K+t)5)SF7F&pu?olYM!rL1ty`VwWv4 z>=ZZ{V}Y5BBEd;&PC3LE|7pDqE<|G!>y|-IH3iC9(7kVU&>iq8&tYy`ZLZ&;jF9W| z%-6Ovlli>u)ArDt(yhV5Yau5u0J7bj{$&(3jzh}|p)WWeCLgO9ufsJI`=6FGmsiG# zJBf$p?9xxZd;&uT9k-frgEj*glr}ynv}e@LU(0P{$Bd9in-7Y;MUqY4*|u6YImj&L zLe-b#ZOYU${)<+z&t}~1;eNY@4j}UgY0Bz^VYNXLwIE7pm#tnqW0qt6O`De$ol1hgCN(6LaK>KSy$VadLHZ_Ye6#M2E^mIlgQBqLkrss9dTUZ+dtLD}m3yr8ofB3h9=hzR?7U8P> zw?Q~Ee%Y_N%CYg^quX6sF^WxeqW{|kt4|itb7rqx#;l`gnn}bG!Ig)m9X&$4(-tdf z#fQV+<)L@8MQkbx0QSk+M)v&600?}^IAous7V^+r*wz0<8F$_>K(1J5wTE|&ROc+ zbzb}uHhBH1IdOrX(RPd)Z<%F2|ZLSe776SvCNGy?X>TFaiQcys+ft|P0-_mP^b}>me2=9V9zUsBJ#>W{ zJYU~(T6%#whkf61rSHMh?Jwbx*|dS%GA)h7CJN)2`wf(i^2Fnk4}Wfe_HD{#)arZ_ z2u|-R*t3&~%*h}ciVs3_;mhLG#8M?Cq-tVg6$rZf=+z%ht%MmwdkkMWU7^ocwGEAq z7CR!o48|1M}*lO9K?TYEvKF*D!rAmrH9nY{}hg|5;nHx9W$Omg?Ek1To7Bb5QIQ^<2^$*lEh zm@%bHp|dU!Mr{5Pgz!a+a(QQ0c~Gk+$fOp)#(7pi-Nj{FK66MUOsk?gSeq-7cc&GM4s^>Z^y9))k2l5u3?uB)s;AwewwBjaGqp1MD}0kgW+$v3+7161kAwiB ztH!N$59&(#@uB+#g>*K%li~J@cy@mUXtg&cUXi&Zx~Oa8vE2}gbC?;du_8t80j01( z*9I!!5vu@PxfNuJm;Lq2R!aG#`bpp)9+h!St1^9|5}&_frt<%e@1|02v7kMd_HJ%W zn+BWOQ>1QF;~~r2U;QcP^c8&Nk)agFr$@hywp+^5{AS~{n1Djc84Rh$OZV*5dP^3> z)5fZj@9rq@J8E-h8$M>WF7@Btc7fTf&HxO=w`ke*`QBWQ+4B$g9@^5>ga^8K(yFH4 z1>TH~VrwJpJQUIjXk9S`S%!PS?9;=db_k6O_-l<$=}oG~BpLKIHfq9?67 z8~zIXFD2ur09fUu%xdOY9xX0eYiJ1k&*G`|EIcQt7Z(^t?PGM%?THuz@G=`;f_h-*=b$}TEQ(2m$vD$Ah1=7%HEj=dm-gNA} zPl^np-}Z!%rX{5%XYNgY^v0oCl1VPZpoW-wND|GsEP9(qssOlk-J%PQX7Wb}ggLVr zXi(pB#muuKWn)+7 z#kLlPYqOkq!OEPInDNizv87n^5Q#TiyU~wD!GDF|HXZHXQK-?6J(HF;4v76=2 zNE&6|(RhNVUxASTCXHBX7GZV0S_I4rQ#wsip*@f8@f6`enMv$o~T;gIgE? literal 720 zcmV;>0x$iEP)Px%ib+I4R7i>KmCb7tK^TXhw7bc6L%K^!(>6sLOHKicN)IB`mg2bw4<5vGFP_w1 zyjVSmmr759wB8i|46*hiSVRzdQT(Woen4Wvy2~W9c0Gh0GWjTiSAVCO_v3lrd1sb| z|N3VoIt>fOY;;n>>(5m!N82nEv(ahSQv0z?iiT|QYN83iUQK9_L}#*VCHq!SnF$WP zh6WjE4~UafW#H|0?M$m;&ea0TM>Pez_25bG8JKp4e9k4GbD3IPR`#jIWo3^G#L@um zRlmR5=(+CfOnV0xOB0c08rYV>i?zF2;Ek0>1R_Mpkhi=0-S40s0AO1N+wZ>uFn8e$ zfd~Ok2K0i&iMC}>^@Nt(J%icts9qZ8%C)Nq8B+BGLblqzw6sLMG)#VWTzd#cd$Ln- zFzl8|&X3XbC1DU^*an{GW7q~x!2yWMI|tp@Xpau5b<>xv3bsKqZIa2PyJ8d|uHN(| z$+W4QVGxo`n+g`Mor0r|qICeU|Ly?K^Hufu7_qNY3SiiV3XI!LrcG@Iy`+X12a2D9 z_0287y6n_t;Oihx1W>J0A&07wzwSN7E2 z9BOsYOFaSopnt8I>Cvb->8h`;IO#?+)1y8ASbqR~F(9h~Ge&a&0000%Qi!phEXgP{ zIf04IMp(3^lk1QRYvQ7&4W|YXn{kvDP|Hr@2cjivc9(@jr(~9|?zg>O|5P682fn&S z18uN}Wd0;AoB41iO#7+%r?+cHziOYSuk~Vwiq7|c2VIK!8eeV-a-6Y30qA^)i{RD- zI?gQLzAJtyvvQES)=pneE1}=3*MtZ>dmzrS8LZ{ZLH)E@lJhc`HW}ovlyRQ9|MvGQ zUgT3XZLm-8Vf(FKXq3mg4AV`j)4BLJAID=z7w_HRI*FyuSKhZHI(JduCKstzD6D zV9xn1F0AQi{!WMhD)N4}OF;As4{Pa?!n#{qa&MY#Jshu)u=jTO>ch?Te-9ssE`O16^*@_I?DqNU>rBja T-sCv8FaUw4tDnm{r-UW|GFnVq delta 686 zcmdnSwuWtjVf`~t7srr_IdAXA=3NdDX}$Q`Bp@=+?Lm0U42Ng-ye(GU8eKnh`Bf)o ztCr<#bM?M9X+o3+dz_uD`NsU!mp;CH+`gRY|IYLAa;sIJhcBJ7DfjlK>@3GZ<7qtE zp$)o{-0dH9p~~jjPJF<8#g+h+)Kh*;>a&OPGEBnCBlJl+oGNX~+e}#nWSC&6j(c-Xdd-_1!_$<%4JEmVJ z`?4l3Y65BdzVbo;%J!VNUv+1eH5t9Xa?88kJw)KyC;qB^|7HHYG=KlDt$ZR}^$GevoQ606Y$>?o;-q(%mOMkLMjckrr0Gb6dygB}iiLuRP2xr9toA`ac zl}qYgymn=kz25Tlp8brBbBYGBW}+>?0C0i12y6#9B&JlBul^lqWuR2LXwvN|3zR?B zOa;1xuddNxHdsAho#Ev(AADvja2?vSgfI2q<$cf1=EB|je&vGnH=+kOzTclS@qlD~ zu{-OOJDy%kZ-fXue<04Wc_r8@;1D^#1;VM-+VS9y@V@IYdbdIfjxBY6w%+oT50G`i zt;mh_Oi8@?^7vZk#7-_ZAKSfQAqENOK;Gwmw$D>X%i?kVyIlgJUwBwc|I}!h1Ueo! zl|JR%Rj~9*@3uuvllB(7$A(;(SRrzRcWXe=`Ov9J!HzLo!D*y@zr%sF`W0cv`Tu>b nXS=s6*?slDe1^-Vzkl*7T`<}&BMQ?FLtpO%;H={Y@(3hu7Pm;mOgdfB2>O`F)9s`JIMka+XZt zr(4c8WUkILw5#~n`|#%L^E~|X>YKZ@J&Fu#rd72*GMW>2;Q1o<^ZO6(ZNAES!^9q_ ztg-j0ew$4k^90kwdtA3LMkZ$cU+PjBIOp_%0|!35<~L4cPB62t{wtY%8 diff --git a/Mine2d/assets/items/pickaxe-basic.png b/Mine2d/assets/items/pickaxe-basic.png index ab8cf484e2df994924532b0c7ae91121ebcadaec..34560dce2758853ec34a49ce3433bac622b25177 100644 GIT binary patch delta 191 zcmV;w06_oz0fz#RF#*AmG9!P(uRqKTY%G7_^n>T$7(2}io_~XjD@bxNe3p8J;xe3Gz~`a|&%eRFgVhDtG(UL$je(8jFNQo`1CTYt zyhXGDSz&7br9^pAoXfz#!0_u2GhqW@Ha~m)8Ee$x1zBNg|GV-H{$n#s2QYbLJ|nuM tlqfGrHp9I@uCp1*wHd<&WCa*C0011MYXz*9=Gp)N002ovPDHLkV1i>DS2_Ry delta 180 zcmV;l089Ue0{j7xF#)!bG9!PS|LYGk0~^aD-@UE^a3^)A-e?T9jq?Eruo71ZwzcKe=+3o8i1@B<}IQP$O=>Y zFD1&0;#>v>NPrSF0A};E*PpRQ9bS+XruM%p-{3#CbO4h_<};#8N{J})l4LX73*-Bh|Bn~4Fl=zwwbU$Tn8FZL?d>Pk`f{tzHEEjzChJu;IcBwAD4l2mIwfy91ri;OXk;vd$@?2>^6TWC{QP literal 0 HcmV?d00001 diff --git a/Mine2d/game/core/PlayerEntity.cs b/Mine2d/game/core/PlayerEntity.cs index 36205e0..afd1466 100644 --- a/Mine2d/game/core/PlayerEntity.cs +++ b/Mine2d/game/core/PlayerEntity.cs @@ -52,6 +52,8 @@ public class PlayerEntity }; player.Position += movement.CurrentVelocity; + if (movement.CurrentVelocity.X != 0) + movement.MovingRight = movement.CurrentVelocity.X > 0; } public static void Jump(Player player) diff --git a/Mine2d/game/core/data/Chunk.cs b/Mine2d/game/core/data/Chunk.cs index 3a53c35..156c331 100644 --- a/Mine2d/game/core/data/Chunk.cs +++ b/Mine2d/game/core/data/Chunk.cs @@ -6,6 +6,7 @@ public class Chunk public int X { get; set; } public int Y { get; set; } public List Entities { get; set; } = new(); + public Dictionary<(int, int), Entity> TileEntities { get; set; } = new(); public Chunk(int x, int y) { diff --git a/Mine2d/game/core/data/ItemId.cs b/Mine2d/game/core/data/ItemId.cs index fa28294..d45d16c 100644 --- a/Mine2d/game/core/data/ItemId.cs +++ b/Mine2d/game/core/data/ItemId.cs @@ -17,4 +17,5 @@ public enum ItemId RawUranium = 116, Diamond = 117, PickaxeBasic = 200, + PickaxeStone = 201, } diff --git a/Mine2d/game/core/items/ItemRegistry.cs b/Mine2d/game/core/items/ItemRegistry.cs index 57572e8..b824988 100644 --- a/Mine2d/game/core/items/ItemRegistry.cs +++ b/Mine2d/game/core/items/ItemRegistry.cs @@ -30,7 +30,8 @@ public class ItemRegistry this.Register(ItemId.RawTungsten, new Item(ItemId.RawTungsten, "Raw Tungsten", "items.raw-tungsten" )); this.Register(ItemId.RawUranium, new Item(ItemId.RawUranium, "Raw Uranium", "items.raw-uranium" )); this.Register(ItemId.Diamond, new Item(ItemId.Diamond, "Diamond", "items.diamond" )); - this.Register(ItemId.PickaxeBasic, new PickaxeItem(ItemId.PickaxeBasic, "Basic Pickaxe", "items.pickaxe-basic")); + this.Register(ItemId.PickaxeBasic, new PickaxeItem(ItemId.PickaxeBasic, "Basic Pickaxe", "items.pickaxe-basic", 15, 4)); + this.Register(ItemId.PickaxeStone, new PickaxeItem(ItemId.PickaxeStone, "Stone Pickaxe", "items.pickaxe-stone", 25, 6)); } public void Register(ItemId id, Item item) diff --git a/Mine2d/game/core/items/PickaxeItem.cs b/Mine2d/game/core/items/PickaxeItem.cs index e7455ee..af7ee17 100644 --- a/Mine2d/game/core/items/PickaxeItem.cs +++ b/Mine2d/game/core/items/PickaxeItem.cs @@ -8,12 +8,27 @@ namespace Mine2d.game.core.items; public class PickaxeItem : Item { - public PickaxeItem(ItemId id, string name, string textureName) : base(id, name, textureName) + private readonly int miningSpeed; + private readonly int harvestLevel; + + public PickaxeItem(ItemId id, string name, string textureName, int miningSpeed, int harvestLevel) : base(id, name, textureName) { + this.miningSpeed = miningSpeed; + this.harvestLevel = harvestLevel; } public override ItemKind GetKind() { return ItemKind.Pickaxe; } + + public int GetMiningSpeed() + { + return this.miningSpeed; + } + + public int GetHarvestLevel() + { + return this.harvestLevel; + } } \ No newline at end of file diff --git a/Mine2d/game/frontend/renderer/PlayerRenderer.cs b/Mine2d/game/frontend/renderer/PlayerRenderer.cs index 49018cf..e283d8d 100644 --- a/Mine2d/game/frontend/renderer/PlayerRenderer.cs +++ b/Mine2d/game/frontend/renderer/PlayerRenderer.cs @@ -8,7 +8,7 @@ public class PlayerRenderer : IRenderer public void Render() { - if(this.playerTexture == IntPtr.Zero) + if (this.playerTexture == IntPtr.Zero) { this.playerTexture = Context.Get().TextureFactory.LoadTexture("character.character"); } @@ -33,12 +33,30 @@ public class PlayerRenderer : IRenderer // 14 * scale, // 28 * scale // ); + var y = player.PlayerMovementState.MovingRight ? 32 * 3 : 32 * 1; + var moving = player.PlayerMovementState.CurrentVelocity.X != 0; + var dt = (DateTime.Now - DateTime.MinValue).TotalMilliseconds; + var x = 0; + if(moving) + { + x = (int)((dt / 100) % 6) * 16; + y += 32; + } + if(!player.PlayerMovementState.IsGrounded) + { + x = 0; + y = player.PlayerMovementState.MovingRight ? 32 * 6 : 32 * 5; + } ctx.Renderer.DrawTexture( this.playerTexture, width / 2, - (height / 2) - (31 * scale), + (height / 2) - (32 * scale), 16 * scale, - 32 * scale + 32 * scale, + x, + y, + 16, + 32 ); } } diff --git a/Mine2d/game/state/Player.cs b/Mine2d/game/state/Player.cs index 55ff8ca..eb4c53c 100644 --- a/Mine2d/game/state/Player.cs +++ b/Mine2d/game/state/Player.cs @@ -1,3 +1,5 @@ +using Mine2d.game.core.items; + namespace Mine2d.game.state; public class Player @@ -15,11 +17,24 @@ public class Player return this.Position + new Vector2(7, -14); } - public int GetMiningSpeed() { - return 10; + private PickaxeItem getPickaxe() + { + if (this.Inventory.Pickaxe == null) + { + return null; + } + + var item = Context.Get().ItemRegistry.GetItem(this.Inventory.Pickaxe.Id); + return item as PickaxeItem; } - public int GetHarvestLevel() { - return 1; + public int GetMiningSpeed() + { + return this.getPickaxe() == null ? 1 : this.getPickaxe().GetMiningSpeed(); + } + + public int GetHarvestLevel() + { + return this.getPickaxe() == null ? 1 : this.getPickaxe().GetHarvestLevel(); } } diff --git a/Mine2d/game/state/PlayerMovementState.cs b/Mine2d/game/state/PlayerMovementState.cs index 51592af..ca361eb 100644 --- a/Mine2d/game/state/PlayerMovementState.cs +++ b/Mine2d/game/state/PlayerMovementState.cs @@ -11,4 +11,5 @@ public class PlayerMovementState public bool IsGrounded { get; set; } = false; public Vector2 CurrentVelocity { get; set; } = Vector2.Zero; public Vector2 CurrentMovement { get; set; } = Vector2.Zero; + public bool MovingRight { get; set; } = true; } \ No newline at end of file