From 30b0e41a71622a79d5fd9118cfd785c54df16800 Mon Sep 17 00:00:00 2001 From: devpedrofurquim Date: Wed, 1 Jan 2025 19:33:18 -0300 Subject: [PATCH] feat: Implementa Wife Mom and Wife Father on lvl 01 --- .../Wife Father/Idle (32x32).png | Bin 0 -> 4509 bytes .../Wife Father/Idle (32x32).psd | Bin 0 -> 61688 bytes .../Wife Father/Run (32x32).png | Bin 0 -> 4509 bytes .../Main Characters/Wife Mom/Idle (32x32).png | Bin 0 -> 5324 bytes .../Main Characters/Wife Mom/Run (32x32).png | Bin 0 -> 5324 bytes lib/components/CharacterShadow.dart | 20 ++++++ lib/components/WifesFather.dart | 61 ++++++++++++++++-- lib/components/WifesMom.dart | 61 ++++++++++++++++-- lib/components/level.dart | 1 + lib/components/npc.dart | 17 +++-- lib/components/player.dart | 9 +++ pubspec.yaml | 2 + 12 files changed, 154 insertions(+), 17 deletions(-) create mode 100644 assets/images/Main Characters/Wife Father/Idle (32x32).png create mode 100644 assets/images/Main Characters/Wife Father/Idle (32x32).psd create mode 100644 assets/images/Main Characters/Wife Father/Run (32x32).png create mode 100644 assets/images/Main Characters/Wife Mom/Idle (32x32).png create mode 100644 assets/images/Main Characters/Wife Mom/Run (32x32).png create mode 100644 lib/components/CharacterShadow.dart diff --git a/assets/images/Main Characters/Wife Father/Idle (32x32).png b/assets/images/Main Characters/Wife Father/Idle (32x32).png new file mode 100644 index 0000000000000000000000000000000000000000..1b243637210805791c56266047f99eaf6df47061 GIT binary patch literal 4509 zcmV;O5n}F%P)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaetu+7Z-fU zp}rWJOPZ#}U_;YWq3zKxOpf-0&G@GZvf~4aN9?xFHP8- z59p7B<+th>Q)ACiKuE5jc zM^3<#+5vg=Q1Ape1%RzDco*X5CT!7z<&Ot{;Gr-_08=Uh&1%VMR!h@>S>oYRog)nr zHJ{SMAOZdX0C5IiTwk*fdd+IdSzquj;wE2{@3oIkFOm#?uBd%r`LulM`JXj^qyo-C z1w?)bMCl<96^MVr#0@~r_Rp*@cxQet-$qhWd9i$QexZ&4WC^%X9gs&4MNNRb-KvY4 zH`eYOv3}n9#PY|0@Atu#<^0c@FFglbqz=fNhoUAx8Cz_#$o}@HUx&8!!Ogd%%f!!r z`F?X`o1zEHr{#0ypaRd7FROqH)d6|(Q1k>SYqzY;&3D&_-naL+LzgWsZJ_V5z^cpg z>G<3OP^=?>q2GeoU7ls@3)vWuiJDL8At<<(8jsKK1;k;ty58 zloe1O_>>-~E07_-N2kA6Ty7&S2`OvL9_d?g{bUH(SNvZEK zr~l$*sE0!>vVgEvG~;O5Au)&KM(UiO@8RlQBHaXx`rakJ z{C-*MyEA(yvH3g!AHUtx{%-l8<^gcJy+hZOUvV9FzA|t0-6Yx{)c? z?46+RF;raVqVF;7Bv`MtShshm&E+Z|)X?o6qF!qmRl*6j-}vZD11QKrtC`zCZXmKd$_P z;O7J;z`_4C&%che+b13Xarpe{o}d6!`7j-S&Tj8-U-2uh0~l0;&z^2g>3XQwT1-5} zaQwqD>a~_pCH!RfE>GsMo+ zpHMVq1DEG_O_Fa?eCqaF{)W-cFN`00A23x1sP=%A6+o7JQIrXYiqG#u1Cp4_$uTQysN?RpyM z$o#Z4ckQ~gvdoGP$Sd1=t;Nz#zCb?OPdWbM$iMl~XVTBL6L9&UhOQTWST(o;m`e2% zWxJMt5^0>$mE~JLC7+)M v4oj+0*V7es`z=2n|HHM<@%7G^BkTVU2gN_|1)vR800000NkvXXu0mjfvCy)L literal 0 HcmV?d00001 diff --git a/assets/images/Main Characters/Wife Father/Idle (32x32).psd b/assets/images/Main Characters/Wife Father/Idle (32x32).psd new file mode 100644 index 0000000000000000000000000000000000000000..987bfab495359d6082c2c7fdf1dd27c80feaedfd GIT binary patch literal 61688 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 literal 0 HcmV?d00001 diff --git a/assets/images/Main Characters/Wife Father/Run (32x32).png b/assets/images/Main Characters/Wife Father/Run (32x32).png new file mode 100644 index 0000000000000000000000000000000000000000..1b243637210805791c56266047f99eaf6df47061 GIT binary patch literal 4509 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 literal 0 HcmV?d00001 diff --git a/assets/images/Main Characters/Wife Mom/Idle (32x32).png b/assets/images/Main Characters/Wife Mom/Idle (32x32).png new file mode 100644 index 0000000000000000000000000000000000000000..bd51da20af1f50e53a348e06a071d2194b9d65ec GIT binary patch literal 5324 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 const Color(0xFFAA0000); // Dark red for the father + Future onLoad() async { + loadAllAnimations(); + + // Create a shadow component + final shadow = CharacterShadow() + ..size = Vector2(16, 4) // Adjust size based on your character + ..position = + Vector2(8, size.y - 4); // Position the shadow below the character + + // Add the shadow as a child + add(shadow); + return super.onLoad(); + } @override - void updateMovement(double dt) { - // This NPC does not move, so velocity is always zero + Color getColorForNPC() => const Color(0xFFFFAAAA); // Light pink for the mom + + @override + void loadAllAnimations() { + final idleAnimation = spriteAnimation('Idle', 11); + final walkingAnimation = spriteAnimation('Run', 11); + + animations = { + NPCState.idle: idleAnimation, + NPCState.walking: walkingAnimation, + }; current = NPCState.idle; - velocity = Vector2.zero(); + } + + @override + SpriteAnimation spriteAnimation(String state, int amount) { + return SpriteAnimation.fromFrameData( + game.images.fromCache('Main Characters/Wife Father/$state (32x32).png'), + SpriteAnimationData.sequenced( + amount: amount, + stepTime: 0.05, + textureSize: Vector2.all(32), + ), + ); + } + + @override + void update(double dt) { + checkCollisions(); + + velocity = Vector2.all(0); + + super.update(dt); + } + + @override + void checkCollisions() {} + + @override + void updateMovement(double dt) { + // TODO: implement updateMovement } } diff --git a/lib/components/WifesMom.dart b/lib/components/WifesMom.dart index 002ad8f..e6b77d9 100644 --- a/lib/components/WifesMom.dart +++ b/lib/components/WifesMom.dart @@ -1,12 +1,14 @@ +import 'dart:math'; import 'dart:ui'; - +import 'package:moonshiner_game/components/CharacterShadow.dart'; import 'package:moonshiner_game/components/npc.dart'; import 'package:flame/components.dart'; +import 'package:moonshiner_game/components/utils.dart'; class WifesMom extends AbstractNPC { WifesMom({required Vector2 position}) : super( - npcCharacter: 'Wifes Mother', + npcCharacter: 'Wife\'s Mother', dialogues: [ "Farewell, my dear daughter!", "Please take care of yourself and your husband.", @@ -14,13 +16,62 @@ class WifesMom extends AbstractNPC { position: position, ); + @override + Future onLoad() async { + loadAllAnimations(); + + // Create a shadow component + final shadow = CharacterShadow() + ..size = Vector2(16, 4) // Adjust size based on your character + ..position = + Vector2(8, size.y - 4); // Position the shadow below the character + + // Add the shadow as a child + add(shadow); + return super.onLoad(); + } + @override Color getColorForNPC() => const Color(0xFFFFAAAA); // Light pink for the mom @override - void updateMovement(double dt) { - // This NPC does not move, so velocity is always zero + void loadAllAnimations() { + final idleAnimation = spriteAnimation('Idle', 11); + final walkingAnimation = spriteAnimation('Run', 11); + + animations = { + NPCState.idle: idleAnimation, + NPCState.walking: walkingAnimation, + }; current = NPCState.idle; - velocity = Vector2.zero(); + } + + @override + SpriteAnimation spriteAnimation(String state, int amount) { + return SpriteAnimation.fromFrameData( + game.images.fromCache('Main Characters/Wife Mom/$state (32x32).png'), + SpriteAnimationData.sequenced( + amount: amount, + stepTime: 0.05, + textureSize: Vector2.all(32), + ), + ); + } + + @override + void update(double dt) { + checkCollisions(); + + velocity = Vector2.all(0); + + super.update(dt); + } + + @override + void checkCollisions() {} + + @override + void updateMovement(double dt) { + // TODO: implement updateMovement } } diff --git a/lib/components/level.dart b/lib/components/level.dart index ec112de..aa812ac 100644 --- a/lib/components/level.dart +++ b/lib/components/level.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flame/components.dart'; import 'package:flame/game.dart'; import 'package:flame_tiled/flame_tiled.dart'; +import 'package:moonshiner_game/components/WifesMom.dart'; import 'package:moonshiner_game/components/background_tile.dart'; import 'package:moonshiner_game/components/baker.dart'; import 'package:moonshiner_game/components/clouds.dart'; diff --git a/lib/components/npc.dart b/lib/components/npc.dart index 50c14a9..0e0a13d 100644 --- a/lib/components/npc.dart +++ b/lib/components/npc.dart @@ -42,7 +42,10 @@ abstract class AbstractNPC extends SpriteAnimationGroupComponent @override Future onLoad() async { - _loadAllAnimations(); + // Only load default animations if they haven't been overridden by a subclass + if (animations == null || animations!.isEmpty) { + loadAllAnimations(); + } add(RectangleHitbox()..debugMode = false); return super.onLoad(); } @@ -54,9 +57,9 @@ abstract class AbstractNPC extends SpriteAnimationGroupComponent width: 14, ); - void _loadAllAnimations() { - final idleAnimation = _spriteAnimation('Idle', 11); - final walkingAnimation = _spriteAnimation('Run', 12); + void loadAllAnimations() { + final idleAnimation = spriteAnimation('Idle', 11); + final walkingAnimation = spriteAnimation('Run', 12); animations = { NPCState.idle: idleAnimation, @@ -65,7 +68,7 @@ abstract class AbstractNPC extends SpriteAnimationGroupComponent current = NPCState.walking; } - SpriteAnimation _spriteAnimation(String state, int amount) { + SpriteAnimation spriteAnimation(String state, int amount) { return SpriteAnimation.fromFrameData( game.images.fromCache('Main Characters/Journal Guy/$state (32x32).png'), SpriteAnimationData.sequenced( @@ -148,7 +151,7 @@ abstract class AbstractNPC extends SpriteAnimationGroupComponent final Vector2 playerPosition = gameRef.player.position; final double distanceToPlayer = playerPosition.distanceTo(position); - _checkCollisions(); + checkCollisions(); // Show dialogue if player is close, hide if far away if (distanceToPlayer < 50) { @@ -164,7 +167,7 @@ abstract class AbstractNPC extends SpriteAnimationGroupComponent super.update(dt); } - void _checkCollisions() { + void checkCollisions() { for (final block in collisionBlocks) { if (checkCollision(this, block)) { if (velocity.x != 0 || velocity.y != 0) { diff --git a/lib/components/player.dart b/lib/components/player.dart index 78615fe..b2b8787 100644 --- a/lib/components/player.dart +++ b/lib/components/player.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flame/collisions.dart'; import 'package:flame/components.dart'; import 'package:flutter/services.dart'; +import 'package:moonshiner_game/components/CharacterShadow.dart'; import 'package:moonshiner_game/components/custom_hitbox.dart'; import 'package:moonshiner_game/components/npc.dart'; import 'package:moonshiner_game/components/itemTip.dart'; @@ -58,6 +59,14 @@ class Player extends SpriteAnimationGroupComponent add(RectangleHitbox( position: Vector2(hitbox.offsetX, hitbox.offsetY), size: Vector2(hitbox.width, hitbox.height))); + // Create a shadow component + final shadow = CharacterShadow() + ..size = Vector2(16, 4) // Adjust size based on your character + ..position = + Vector2(8, size.y - 4); // Position the shadow below the character + + // Add the shadow as a child + add(shadow); return super.onLoad(); } diff --git a/pubspec.yaml b/pubspec.yaml index f2c874e..573a234 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -78,6 +78,8 @@ flutter: - assets/images/Main Characters/Pink Man/ - assets/images/Main Characters/Journal Guy/ - assets/images/Main Characters/Virtual Guy/ + - assets/images/Main Characters/Wife Mom/ + - assets/images/Main Characters/Wife Father/ - assets/images/Main Characters/Guy/ - assets/images/HUD/ - assets/images/Items/Objects/