From 333f91fc1ee0585330243cb71d33edbd0569d43e Mon Sep 17 00:00:00 2001 From: Rui Miguel Alonso Date: Wed, 13 Apr 2022 18:06:41 +0200 Subject: [PATCH] feat: add rocket plunger (#180) * feat: plunger rocket * feat: added plunger zone and placed rocket over plunger * chore: doc and unused import * refactor: move rocket to pinball components * refactor: created Launcher to group rocket, plunger and launchramp * chore: unused import * test: plunger and rocket tests * Update lib/game/components/launcher.dart Co-authored-by: Allison Ryan <77211884+allisonryan0002@users.noreply.github.com> * Update lib/game/components/launcher.dart Co-authored-by: Allison Ryan <77211884+allisonryan0002@users.noreply.github.com> * refactor: add LauncherRamp nested to Launcher Co-authored-by: Allison Ryan <77211884+allisonryan0002@users.noreply.github.com> Co-authored-by: Erick --- assets/images/components/plunger.png | Bin 11655 -> 0 bytes lib/game/components/components.dart | 1 + lib/game/components/launcher.dart | 26 ++++++++++++++++ lib/game/game_assets.dart | 1 + lib/game/pinball_game.dart | 9 ++---- lib/gen/assets.gen.dart | 4 --- .../assets/images/plunger/rocket.png | Bin 0 -> 26779 bytes .../lib/gen/assets.gen.dart | 4 +++ .../lib/src/components/components.dart | 1 + .../lib/src/components/plunger.dart | 4 +-- .../lib/src/components/rocket.dart | 24 +++++++++++++++ .../src/components/golden/plunger/plunger.png | Bin 0 -> 36700 bytes .../src/components/golden/plunger/rocket.png | Bin 0 -> 58048 bytes .../test/src/components/plunger_test.dart | 13 ++++---- .../test/src/components/rocket_test.dart | 28 ++++++++++++++++++ 15 files changed, 96 insertions(+), 19 deletions(-) delete mode 100644 assets/images/components/plunger.png create mode 100644 lib/game/components/launcher.dart create mode 100644 packages/pinball_components/assets/images/plunger/rocket.png create mode 100644 packages/pinball_components/lib/src/components/rocket.dart create mode 100644 packages/pinball_components/test/src/components/golden/plunger/plunger.png create mode 100644 packages/pinball_components/test/src/components/golden/plunger/rocket.png create mode 100644 packages/pinball_components/test/src/components/rocket_test.dart diff --git a/assets/images/components/plunger.png b/assets/images/components/plunger.png deleted file mode 100644 index f3cbdf0f004f617615e882c44d3522b3a2d88bd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11655 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 G?Ee5&CbES9 diff --git a/lib/game/components/components.dart b/lib/game/components/components.dart index 6a9d6a3d..058bfe20 100644 --- a/lib/game/components/components.dart +++ b/lib/game/components/components.dart @@ -8,6 +8,7 @@ export 'controlled_plunger.dart'; export 'controlled_sparky_computer.dart'; export 'flutter_forest.dart'; export 'game_flow_controller.dart'; +export 'launcher.dart'; export 'score_effect_controller.dart'; export 'score_points.dart'; export 'sparky_fire_zone.dart'; diff --git a/lib/game/components/launcher.dart b/lib/game/components/launcher.dart new file mode 100644 index 00000000..b9ec4a7f --- /dev/null +++ b/lib/game/components/launcher.dart @@ -0,0 +1,26 @@ +import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:pinball/game/components/components.dart'; +import 'package:pinball_components/pinball_components.dart' hide Assets; + +/// {@template launcher} +/// A [Blueprint] which creates the [Plunger], [RocketSpriteComponent] and +/// [LaunchRamp]. +/// {@endtemplate} +class Launcher extends Forge2DBlueprint { + /// {@macro launcher} + Launcher(); + + /// [Plunger] to launch the [Ball] onto the board. + late final Plunger plunger; + + @override + void build(Forge2DGame gameRef) { + plunger = ControlledPlunger(compressionDistance: 12.3) + ..initialPosition = Vector2(40.1, -38); + + final _rocket = RocketSpriteComponent()..position = Vector2(43, 62); + + addAll([_rocket, plunger]); + addBlueprint(LaunchRamp()); + } +} diff --git a/lib/game/game_assets.dart b/lib/game/game_assets.dart index cce1e658..a181404f 100644 --- a/lib/game/game_assets.dart +++ b/lib/game/game_assets.dart @@ -49,6 +49,7 @@ extension PinballGameAssetsX on PinballGame { images.load(components.Assets.images.chromeDino.mouth.keyName), images.load(components.Assets.images.chromeDino.head.keyName), images.load(components.Assets.images.plunger.plunger.keyName), + images.load(components.Assets.images.plunger.rocket.keyName), images.load(components.Assets.images.sparky.computer.base.keyName), images.load(components.Assets.images.sparky.computer.top.keyName), images.load(components.Assets.images.sparky.bumper.a.active.keyName), diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index 98083269..2f135139 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -45,13 +45,10 @@ class PinballGame extends Forge2DGame await _addGameBoundaries(); unawaited(addFromBlueprint(Boundaries())); - unawaited(addFromBlueprint(LaunchRamp())); unawaited(addFromBlueprint(ControlledSparkyComputer())); - final plunger = ControlledPlunger(compressionDistance: 29) - ..initialPosition = Vector2(38, -19); - await add(plunger); - + final launcher = Launcher(); + unawaited(addFromBlueprint(launcher)); unawaited(add(Board())); unawaited(add(AlienZone())); unawaited(add(SparkyFireZone())); @@ -72,7 +69,7 @@ class PinballGame extends Forge2DGame ), ); - controller.attachTo(plunger); + controller.attachTo(launcher.plunger); await super.onLoad(); } diff --git a/lib/gen/assets.gen.dart b/lib/gen/assets.gen.dart index 90013646..97be7f3e 100644 --- a/lib/gen/assets.gen.dart +++ b/lib/gen/assets.gen.dart @@ -20,10 +20,6 @@ class $AssetsImagesComponentsGen { /// File path: assets/images/components/background.png AssetGenImage get background => const AssetGenImage('assets/images/components/background.png'); - - /// File path: assets/images/components/plunger.png - AssetGenImage get plunger => - const AssetGenImage('assets/images/components/plunger.png'); } class Assets { diff --git a/packages/pinball_components/assets/images/plunger/rocket.png b/packages/pinball_components/assets/images/plunger/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..ee5eef5bb905454fc2491728c58ebf50814ca6b4 GIT binary patch literal 26779 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 D6*dt! literal 0 HcmV?d00001 diff --git a/packages/pinball_components/lib/gen/assets.gen.dart b/packages/pinball_components/lib/gen/assets.gen.dart index 1a4c9861..0c895a56 100644 --- a/packages/pinball_components/lib/gen/assets.gen.dart +++ b/packages/pinball_components/lib/gen/assets.gen.dart @@ -187,6 +187,10 @@ class $AssetsImagesPlungerGen { /// File path: assets/images/plunger/plunger.png AssetGenImage get plunger => const AssetGenImage('assets/images/plunger/plunger.png'); + + /// File path: assets/images/plunger/rocket.png + AssetGenImage get rocket => + const AssetGenImage('assets/images/plunger/rocket.png'); } class $AssetsImagesSlingshotGen { diff --git a/packages/pinball_components/lib/src/components/components.dart b/packages/pinball_components/lib/src/components/components.dart index acb8a7c5..e719783f 100644 --- a/packages/pinball_components/lib/src/components/components.dart +++ b/packages/pinball_components/lib/src/components/components.dart @@ -21,6 +21,7 @@ export 'launch_ramp.dart'; export 'layer.dart'; export 'plunger.dart'; export 'ramp_opening.dart'; +export 'rocket.dart'; export 'score_text.dart'; export 'shapes/shapes.dart'; export 'slingshot.dart'; diff --git a/packages/pinball_components/lib/src/components/plunger.dart b/packages/pinball_components/lib/src/components/plunger.dart index 19a29300..eb5a945c 100644 --- a/packages/pinball_components/lib/src/components/plunger.dart +++ b/packages/pinball_components/lib/src/components/plunger.dart @@ -92,8 +92,8 @@ class _PlungerSpriteComponent extends SpriteComponent with HasGameRef { this.sprite = sprite; size = sprite.originalSize / 10; anchor = Anchor.center; - position = Vector2(2, 19); - angle = -0.033; + position = Vector2(1.5, 13.4); + angle = -0.008; } } diff --git a/packages/pinball_components/lib/src/components/rocket.dart b/packages/pinball_components/lib/src/components/rocket.dart new file mode 100644 index 00000000..ee22efca --- /dev/null +++ b/packages/pinball_components/lib/src/components/rocket.dart @@ -0,0 +1,24 @@ +import 'package:flame/components.dart'; +import 'package:pinball_components/gen/assets.gen.dart'; +import 'package:pinball_components/pinball_components.dart' hide Assets; + +/// {@template rocket_sprite_component} +/// A [SpriteComponent] for the rocket over [Plunger]. +/// {@endtemplate} +class RocketSpriteComponent extends SpriteComponent with HasGameRef { + // TODO(ruimiguel): change this priority to be over launcher ramp and bottom + // wall. + /// {@macro rocket_sprite_component} + RocketSpriteComponent() : super(priority: 5); + + @override + Future onLoad() async { + await super.onLoad(); + final sprite = await gameRef.loadSprite( + Assets.images.plunger.rocket.keyName, + ); + this.sprite = sprite; + size = sprite.originalSize / 10; + anchor = Anchor.center; + } +} diff --git a/packages/pinball_components/test/src/components/golden/plunger/plunger.png b/packages/pinball_components/test/src/components/golden/plunger/plunger.png new file mode 100644 index 0000000000000000000000000000000000000000..a33405f15330515cb983a47559f5cfc8c9708143 GIT binary patch literal 36700 zcmeIbc~lhV*ENbUQ4AR*(pSB7@45#3*(YhywyLCW5F;DgrW-7-OOWv4|)j z@QVXPh6X`EX4FIk1Qdj3ZczrI8Dt(B=x;w&Me@GyU3aa!?qBzQAFf`ZmFlXe&U4N_ z`|NY7^Xs<;dhBfgHG9sSS@@Uxm1FPX#|)Q!dS6NLOINhx zFYmg1#XB$uf4t||{30c_T8j7emj}*V@2vfDzSO55=I6gBiR@8*CjDvX-fw4EZ0?_r zkFb9VhPtNSO8FaqlJw7C*34Wo_5KT+{CB3_|1!^H>aEn}8FQ!JuU4_1G4=lIS&CC{ z{h#>1H}(F*>61^HV%jXz-ZJG2(?K+iEu1e*L+*64;9OxkhfY%q&K0H^*EA93Tw$6* zPgfS4D@+$$({(843e)BJv}(b*!nCmP|5ssQq$c$+QPBLqoUC%Gwpg+0{eST-_+Jri z$AiLr2hR=&tf(t3D(IR7-a`q@T>&qR^QI^&ne|ykr zDY=HyKB_&h9a-PE%N&@yi9U^LOkpzh|+cMHm94_5OYIVDSsh*yhXWebJXZlt^Uw5?|RY7t*0nwACX!AU+Z*wRXP`tPvm<2SNH$(o4(A1 zMl$RwCHOhVYq&MR*~dO`#a22wTPttAIrhhT;}bodzRQbtT;_|EiZjWPZ%vMJH&uVC zc!Nh@aFn;HK(Saw*{i1bRDX#^TWh#;ZoEC&#Qd9|I1Dl?y|0c_EX{p;E;KycYtOK5 zh+Nzad77HNV8xR}$ynk#p5;V`ag1Z#ZlOH6hWAo7%&Hd|8MSOJ^DvNPiZV}ITupPV zaJ2}F&Ulm4emboEbgf^S`~_A0;HDGRvlEMw_n3yK% z7VU_Q{l>_MM>n0g78|Rgp&=lP_O)qp7`LuVy%XbFn^uzH(l&PTTwb3-9$n@;lwxXT zR@c0cz}JZlEOc4#_wE_?b)I$hOW~PRKgr~!g4dUJ-dwcfdC-zQ<+Brxd>2Pe2vZKm z&y_gUr8z$v>$KC2+d!brUwMdet-T^D2SBrLVd0 zx|T=Z1)qYWszt9}y;^K0OAb$5+$8$0-rW9~oW z5H3IUrej^bM_YvPfF|sF_izFKjXOCa{}MaA&ELlP%MuP)VgXRvg*#;qnvVIbCP!+9 zbN23t^y=o(d*p(jmXufw4HhRqeSTAK|Dqk4{H)IZZn*>N46g5@;}a4rE=wJxS8P4? zHIv@__5XOi5@+<+AAI{rx~=KFY-#9bJASo0j-ZT;Y`3hiyxT)A>CYV>_pC9;YxA;s zD$C^kXXD>r7EO6!LPCPAqvHl?t+)9Hof#ilrNM1#<>_rDc;yT?di|YyxTi7alYpIg zVSC7_S98D?>}qk9FFGZ#aJRVIb1f>WtiIm7wY3$CAxC|&hILlC@b{9O@+OAvIeP8L zJ?!M9GYuNjJ`j3^{ogVWLf^spRs2$vfH?< zIsb>5W;x7AK7Yo}4@q1leU>{pm}uwd=opvI%+&{7WcMZQuk!MJrBS+3Kts!+RMyza zVix!kRM`Oej2y5(#=zn-IRKk`sLLjn39-@ z!QZ&$oy#3cO|6nK#e=;I@QfL(Tj)Xu#ouK*wGK^2z&QEZ{n!(Nuu01)!av7&)#J?^GvKmq&o?^X|jj0W;zzM3bsOTHG zuTouR%11xx1+L)jUDTf0ot(fdX>-d#XL2Qf`#NMIm!Zy@>pDJT7vlW}-aOa2#6-{4 z@O6gd5cA3fE4Og~v-ou(LtD&_Bhu{c?YFviyx@W@*PcU-JDL3b0#^otk|!r8#0XaY z6UHDfxev#RK$arh8%O^f_Kp!OU4P-#jl8AUx8(ugSYun<8CoMW;BH23?*0Z}an~Ku zHVeUR$2v;p_50z`g{QaaTL?l8Vt91)G1}qX_#;uu#VR}Y+NdtSt*CK9*w)&*FU0oo z>)s=>jJfQ8ViBwEA)z_Vjb1$j5NuRqO*w&`$8yPKCvrKgi zZ)s`4uh-SgIqEYQXH_!V-=-n?g0acMqJ&2BhWV3kaGUjiNAS0iuLx&qjqw|c*{rJ@ zMVXqLcgiHu1ClcHYTrs%3*EpI>aj_pOz-Bkve=@cBP+<(`P=_CwLq*ZA-yroYO=+u z^r-4LG+CF8(W1Y1%!oIwj*X3-bgfJK{KA^oz4!Cn9?jRdC4XVkmn`G{b%mKQlXB(C{J^o zbvB^jppnt-V_}PSoZR~sSIzA@eq_kqG~`%aTAuIQXAdqF9A;yS|4ZLun#J13lThQG2kJp#s~J9bkyEZiycbB%`673mEm zK}!YcU1@eT%Xy!?zvl7$qUGk-0}<8i0ETuez<+dy2;HJg2BW*wM#}u zMhK5n%}*{9t~d%Jdh)p)x&F)EjX!>fpZ<;@uJy>L9<>#bZqEl}W5=Eyun_n>!II|9 zk_oyW7F~E^%hMBEI>VE9-rS2^3Vfa%OO#|vw8%QlmAHu5eSX2p4zqZWK!Gdo)N@IS z9}hOhr)^Z)1=kE>eEt-L3&&gKqR6NG?Z3>ZWRS?8+Ir@#b>qlmjn>gJKVL-Qy~;Yq z(gk0$4`|grEYT2Nj~crZ^^L%Ft4E&=9dIxX)H6tS&#GgOVq@25xpftt*s>>iQ}hYd z<+f#!+Tfstk9R%di~6$Lw3Q`qr6s>n8RG6NaTQZjp2@yIMXEEK&;mlo&zl_664#WK z_D2q9Q@GhZ6{?>XC(G(pr#T|U%l{4=Mh~jqY?60zaRG+9)6H+29&J7S=Gz6Uw65L0 zeVZy&Kp8YH@S70GMG=zkAIFtWbwy<9y5bbw-SpG4GSF)s?<)>JC1mn%D6Tq zaxfm;9`^b}+DG0ZX3;8g6UEy(`#+9*nhtwlySvXdU@At%dkSbB_l4WLhFsY_AbK7N6%S}oTCb58sGk` zHSlbExc4@k8p(bK-MzPmSl3^FqlU&+5boC7%09>F=IC&zZ%jklGnF1SZ7kd=Z?FDi z(y=fq=-&60t`W(KVz0KgHkXmNO@zapmzFi4>rWP}9Ic6(sHyjpOoaO|(ZTxsU zDk8L;36#`CAIHevOLn(nW3g?dn5t;MCt<=VEsR6hB8TfQ5vgG2^sQrI2aK*zh>9J1 z@qXT{Ag#vr7uMLCM$2EIWD-nZd~88+adF0Am02+5>?f{ssdG$sY`sh@bpHaErW59! ze?-ar5$DoY`k4oHT1}jVJVl~gcQ_%z1gN!fna!3JM-YD*qpjh=l;7x8zffo2{&3^* z734(bGE>lvTA{xxJy(s_SKp?iaq;3spSQ8b)Q$_epDWZHEjeDNu3s_G6psS)%9Sff zO$eLZFGYaLr9Molw@R7?<+O;=(NXU%d#mC*`(qGBaHa}Xp8C%DrSBM}q{XA$!wc2m z^P|60pg+h_fU!M$7ZJdro3Hw|U+vTI>(}tfV$Q0ys^zAT_<>aT&DdB(tMi~b`P<7) z3iKN@!pW@bmIW2?XfT)-cfVnG@ur{7K3HqpE!^gWXuw8b!I}JEho3THV~e^QvRq!~ z|FA;aQV7Rp8q-wf?$CalKa-Hu$noZNR*UjGGWoJR z6C)#f;LG?-{^ke+vFpKu2a}VNY0aMO%~6vBF~JmSVvnJesEEJ+{@c4hTv*@vngq*< zD;&``ixq8Ch*Q9>JJwmgaHvdkEK2U|SsAbs0Sh4WSr#YCL<&oDOv%lSWKb+`Qk2)a z!P#TCWI0*iKW4r{gaT43)^;2!jnEWW?FOTLcK$Ak-W&3{8?NEh7j8U3*x|J>^6gJl zVbi1Y{X^+_+QEf3n}Z0?$~TJj9xx+kwQk#X;^h~}Nn--+^5G8{wCFA80=(~fn-KcC`?sTL2Fb&q^}V z*>u2a;|kSJ7Mw?|w2ST(=IIio0%4zoDz$~gLhyKx;~`>)e?%O!&~tx~s`u4jziPF7 zZdiCmt6S(CCI{nu8c+GGJ&0WFZ@(>K=JQXsg+e(1w7$*+nPj% z5nSc4V&yScS2ZJ}&uZp4LS8vwR5?2dSq|9(=~(tfW_PBD(1Gm11m_a%;rg{_7(2d} z?Dfo9#x0 zkMBRI(N1~(BS4Cint~}PjII_jd=a8%Sa8tT7?+Wlk~N*tLJn6Y&XeT$^x?t0@#4Je zZ92ml8MwW%Sy<5K&^@5qWB)Ot0b6(-IJ@5V?nk90L5z=k6aSk<5P~9<=rWP`o)A7t zJ!Diya}^F@Zr_ksSrydpl{f4)+9W&KG^=dc@FKGOTzqawWVcd91c*@{N3 z1zptUaI-ZuQPDPp^V&Hv6~`pbORAQm6i=};Tp+7+9cAr0UT)u&#OBYGJ$R5tQ)&vx z{k>fOAFkK}N?+gVB1d>0O?<0x=SKS@OOPOxcI+MaE{-oMSJjt&_ze+9iMHqxB{pva zk)?P}xudO}4Ozx4f!NInJ89~nd-|Z=Q9NihLJjlzp!jKEi*;#0t%+2=h$$$EnkOzp zN+Y>0Q^fiZRjAq68wjD``xFk-rvN8L{zC415ba4BRbj*sIuNrhE8w}4NHq*;maQ5a zh|z6GKSE+Q-+ed7YwV#86&m`Uk`4K$JV=H?+paIT---TK_B{!qe{v19WFDPcxSl8U zS9AGJ-hRm4LIBR|d_T+}hA1PDdUoD?p6}H%_nWZkgWRcs!VE`5WZ{CK3)ONmi^-)#pf8CSUn@E*5z#to6pMc)p0R zpaxZ?~Z+=|p0MNU-f(jIwvmPdmMK~qi zwE8UT(m-RF>;MZBSs8K`kJk1Ya;Rb=^!^7NcXd?L4<>w+M-y^Bn%g7Jg{b|)wPAJ~ z9k4SVh`3@wu*19QKR@~oc&6)%LUJ&1>C&a*{3?-^WQ;1r4&_W%MUEt_lV(n>2P*6^8fH9tI8QR+ zF(I;wk{$U$_KEezGdAyjw|C&?EMsG1u|2t5(kC47egrQ^3hXD|P`LKfxVbY;Qa<|e z?1R;e-~q6qfHQ0%Wol|#*x)XVphiaubR&_Ep%eJdHDEHm0mqmEpFzfiYXdb9zoUrllI79#k!`L8rjp8kTa;wHO=I+HvO4qm-0G^1{1Hpg z0uBN6f7FyDeGvC}Lmokf+LngQ4V{IpRvc8V0}5VKg;1WMC@^t3`f6z&DWywv80u*} zgY^KnOTvi;A(Sc~c?A#3|H>`dFSpFKDS7;%99lbU4MoTZGI7n(XJM>JBHX}vPb!*j zzw+oH-+`NE*^Hn!;s-5#Q#BJ!~`bA3q>u2 zg>PuIdGJC=4EC&pAXk#rILIG=E<3Te8*H;=8&f+Nzt64rryKI8#z%UyM@yVb!7YP9 zkD~b^P_&>Gd!XSlMN0e3L)ax`m_-XvP!-}Z7ZeDjjEpgeC^8)X%aGz3L~3QQnZWwI z3aits{6mz9y|NSL`eaOwiNy8@C`fw8!Y+14L0uVHkA4l0wt=F|G|SG*`feGncQGWZ ztUq0$?~}wqZoxM!yskW~659ONuL~zk9@yL@=uNfjeOTohLAdRNBn6OLQz3MRt`6?d z{9v~1Q?tgtC2N`LeuU4u@d^EHF0Fe&E|D&Pr+q|Y5LVqFZYCAP$+RoKQ(fNTmD}cp z2opd5ktsS)TL^-d?V(Y6q@{%rD0a|#Cu^g*+KL4l?)~J$=BZOYZ#mg_wQauhne8Ma zo&0fW*tz5*en9{8DRe;ZIn)Eeg}0;+Z-8C4MI1p_dcx!@a)J>jPG(>0-LXHasIGA+ zt=_x8WGj*C1ES+lzJE~}-*p`JgUWUO5jJ?T7NP+>k`&C%&ziP>zK^Ip8LtC1`vTpw z*Yb!uQ=&tJ5h=|Bmv4E!$Rcm8W#rL!MMt|oOpq;Cxbsi+%F!sw9b8|tOauB+M`m}T zeoO^`1`7tSvO9Tl6DbLx7$Zq%qtr3W8#KEk@|?o{n=JOn6$NNCqNS>|Lg7AagtRPh zJt#OBOewS(pMoadiZ1h>Ri1DDAX`g1oANAuKg^~1z~^a>5IKo25)uhbS+V$@W7gkU z47oT&u}25?y*w*TG)Nu|85PAK<#V_aYHac*ei8)N36$3q1a(uzCBYO_#zTfF1JCw> z1GqEN^3uGKzY%?o9ihY$)fwEDZF1{rjF558-h|d5(XFxXXh!NfCGkb7`V~Pk*DVrb z*E4FtfWWP*7UYxE$6DiWAMxlizsdggOsBa9q}6$|=@{UpPqcac(%pG7x@ zFWk5 zDw6UM8};ovLDW|vBXUAShOw(1YX!@JRHV5V3j=fzjN%u>=P~0a{2lNEf$c^-My7#^p}pYM`lG zQ4~Y_d?6gR&l|G$kcfqOp?VBb{S*H;MVW9d05z4-^s@|dvcxj^qyIqv)UPlfs9`G} z6bQo*3P|_6-eb8o9M#GNA4PLCYk)>Z+jQ*K&SUAA;>UZ z37iPI*&6q(^P8H??rRS3rXYZkMRb2Y0htIgEqaOtL9&Ll_h_+I_e@J-!?#CS7rNid z$R;4Rp!_Mx$>kb{Etb_X5}h7bK?a^gozm>n<7MS^zv*WRMKe^;_DsI?w~KdNR zxp6SQMhrH9Dp?pt>?n1j@(!Kt6sJM>r&Lhopuj4MU?k}zGgXPl+Xu5#Q2Zhb5!O{~ zca`X{1pLr$hkhvYAf69`Sc+;Mw~_+8tk`m5HHcg(sfJJ%qe@WrY2OV#I=&=|H0Avx z{d999xSx#n=;Z$oV`Adm+*a17$5EDlM@p#&FY9DaqMgMTjlDFgOT&(V4lxOWVpuXm z)F6St-36V@u)rBrZt3!%c+g(SEYm6M`O}_A!%V$H{Mh3+8;~O4t%CyeJ&+s#Z4JWx zA+{HicM04W!5Un%Iit+SX>vj+$#H(hIBCzV|FZ320WvG*%^EF?8ZR72Q_dUxm9$xL z(9eWs0!*HCh2Nz~J5T-snS(*y(WUocHwpv`K?|92>eKTZ(BrN7g$XwI15WHLkF};J zYP_qM%z)zVFnEycL-pfJtC`Y7FI3G0zN7^*Pey~TCo3u+&xaNWN@JVRD}Dq7f>4Q) zA9)2b4Wy+bnB$Pv9{AQNt1FEvg!};NM+)H$TgcFYlx6@cDQi{{QV)DZ!qo9cQ$!X$ zA~ag=Kb)(#Ku+fHdlyL)oybz8<481ikKrs~1fjW*DH_AhGTV1}DlwNlG{UsR69}bZ z5hHQ{W*%6-?uCE`J*Cry5tcv>5GfR?<{>*2=nUOOGo+AFldNMnp;IsPTr4Atll~Fp z$92f*zN+8tT?C=i)nYgS2tFV=qHj!k1wPuq1Qda;7VCK6o?uL@);X!nar*tlm2B2N zQJd=o`U*o)NF+>sM|dQ`h~Qh&?o17v&dp@t`hS3$Lm9og*{&3vY{1c&sn$@Y0P$@O z*T0182qPI27LLP{b!J4ES# zx0UfT;)pEuU0o_K{kfCcX8R}TcT3yq%LNm}B(nnHjRVm-zpL4oFfsAZI7kzwc8aYx zzL{xK`1sm`Q0(~LYQ^8tk(Nw$=74aJFo0x0D%9(Q4)EBVFj6|zi#A8LCJII~PE^;C zKyLU%0H+@Zo<>7v96cCQbhPYR$nb^wJEmYiNS!eizW1!@$y$eaYlsKL1u%WGq42TE zL+Df3=!zJ_VSQGbjhOP$fSorPO_n$*aC+|#2qKg=e%f;nUa<|mAwOonIpse_76MZX zixPC?e4F)rsbQg?pC1!AlNvi{l5ocThPpRAPQJ&NNbC|)rBkyqVsjnA=@_v!KwoK`OYS@Rbt~~#6h0>+Tv&&R_zgL>)dGqo1H6Jhj^p|%R?%MM8 z{4euozN@;&aClFh_W6!GI+Z&7!94k)@0a`Ljku)5hz2}A)2vJ#sx{OVxwTmc2_Z50 ztE1yM+1BRgdb0ZTfOx{~ovLAj#IQV#pj6Ks%ghERl$GG`muFWVYYVcrq?tLbYKetp7PYO!+1G`(fmgX&q$k=a zJPXTXgsHtWl#jH9Nv*+mVQXd>(PO-~Aeid$ZqwYnDk!~)=?7KM-^2Dy1)fAna?gIf z5^0Y|pWYUM;{Jww?VrbWnlN`TWb&{%tKcJ)YBdfal;eL~`&&zx*+fP`7s>k0#U!cM0G(`@<-vf@fs(dGRUDbkaJ>Uv+@$weupz={(Mi zF;Jsj!pSb=^csh%#|M#LT4=3GZ-OJ1 z;#Cr^;nGrcg(@U>Mx3;!zCL@mAz_61PHQ-OdrgkE1yhFFg9lK{Vt`@qB3}7p;|X6$ zpvcxVEf22C@GEwXkeLDI^$jNaX#=?PggaU8`W5G1IacF;TkWBt*+vK4Y2BZ&j~a|O zV4D41i{g9F)Enf7S&0Tc+lR%UU$_x*3pFqLZ@vWsjB{R7NcUpMYSN!Kvs?To zJ|TuQSuz!M@SsL<<8UjfiN)gaCl5ydicKEx7Ou`caRErgOOqoYOquP!3*RFliUugP z6^aO_-hNafHIehLKviwyKFgoUstrmibm zAR_sKhbClsqlVSt!-v=UO}6<(O8dS&i=>}-(U1(I-kys>UuJ$R?ps|$!v!j&ddC>)md#zN z)QlomsA0-<_E;==yAmSIR_~D$9hs$suMo~pbgllSe!WY()NnniYYW+FLs3bLsdn#Q z3q7Evbe~BSh``nmltX_$00y<61_r@a+g4fyGX!UuP?7l==bF`!-C>mY4V?{rA1nR5 zxG(VV`gU5l4blRa!&y^m6d{b^j0kH_gpp~;C-Y|UXflNG>$=D%6^6Pw^9|Wz zcpdAk#+uN(!GnT;RJU6f_I(1joojvL-%uSqYdFK; zpxYm7c>TJK3>ncpkY1-xXLmU|7ZagUtMAEL)Xekmwie8nJLWeep1@t6&T1I4qldOU zT)NYo%=@Dw)F(oxc(m_o-gT;L@6W_i+@5Rl=MS?`zKQvU|E069%2D zjcAE;7F!SN{u!>}jCKvw1t^%vn&x@F+Ud^1(gd?~2smgw*8OVS|9Tc?e2Kj9_T>Xo zq9X#IVho40uCH%%U0)EmvKR@I*bYw=NWP)nm?=zoTD6XySu^<=s7C5XX3!oPO$7hP zYSqJ2htWhwc38Ec8UbZw1RN&CB1}S&)*l(PGKdLQ_U*mMquq1+BWkLv?-z4{@uH@i zxlVpE(qvndpAH6~o#_N3#i1lexdSVCi87H53@RKZd|uh85E&Q$4K~zaI{D~)L9%Xe z(va2}!C=TA=T{Z!PQKP{Y>8n6m~|hs&K84qryX#Indf+VB;|J_%>Ti$X>a#;sxW1Q zSV~^(ToUtr$@YZN%jX1%R%Ld&;+pYFs|oOQBtT(WQz6-g>R(w1`t6?H2X5OU)QdU> zJrVW`r!lVZC=z*WDjq_io`aVl*)Yrc9Gv z>t6zsof@-4lNEbLyz_*HIIfK>!P#zWn&{PSQgT-9uAYR!U8LM5HT(2&yn~qBgOGkR)|= z^|ZD>$hxXGag_5DSBtjC0WujrVmF#7L3P<{$?u1@&0wzS^-YCphUegMI)SNw69v1C zjJmWVN~;9lgB}UOqoJPykuiS6qe0hzjR7JVkFk!5Q39frS;3OhwaUy1HKtBz8p3RI zGZFwsSK8gOFlmw#BkW1nlLjPHW;3ADwSz&pW%1J9;a_?1&4N|it}QGuB&DDYjb_v6 zF0VbGl5@h$w`#ie$=iGt(rpaV89PdP;Ggk`REiPiMLWpTG-{Q{)x&Qi9T&VF8aush zA{XIekY1OwwrDIsI1+$4+NkQExnNLX1#0cXXxutFdzmpii~2_&{-QwU=$YZkh#%FA z1+GY~@GUZcfpBqfaymkyr!VWV5P@`BYwrB%sn-H`|AbvtCG zGdyjP0G2EUdcxQ@@Gm$>p`|M3|j#s~y0g52}8_-k->s#n)N>t!+p8Qy=^pxKc9& zCCd94>q5Au4VTW0A1%WiM@EK6L7p?1nu0N(;^jisYI*hdMI_=0Mqm?PojT2`ofh{` ze2OP$a@U4*xMg8k5or9B=py`)qh##SX*GBjre_9SwTwt5n28y`$QD-YJ!tc_)ma0B7vzMbv#H~ojbEbd? z9x@B=o@nAtC+@onZD=wk($`Y#-g}1_u=>sgs>IEiK$%pCE$E^1nMX1-6{OX-i;Q!C z@uQ@$Q7D261%KLGh1$mJ>C5pew{m*Uq39$UM$1gukuQi^vaaTXOy-9B_Lj)8&&KgST^UGzZ8Ck2pWFg1;QvghTXxz7;CDnd9S8N1*9u5+5!D!JAI00UysEbPv zl0pe8#QxkVi^c{>t_H-9NXKec&XWP&5%%Jq- zOKCh9il-kddWL~BGG-+mreT?Q%7f8OVF^^|5eDS7Dkzu$^3CUeM)+Q#ax4=A?vm4e z!Q~x<;pCg3NsJg{#7~enIk@#y^DY2QvRcb=-};y1a~?tsz@z{OLTqfU7gWd!Rd_k$ zV7LbQl9_@WCFa3T%JB*7-us<~Nwp$nT{B7a<92(?EVm5;zQu0(x~`v&pE%twykM1= zVvzQb$=JkXxkQ&7>^7U*j{Ts5v^N?^rFJ^~q2uMs6Z;w=qowP8nEQ6i!_mEGk)TkK zf;{fOi^v?C@CE2#hd|si=d-n^0Y~S{5KB;34w6p1dgl7#wM>CKM%jA|_yG zmzRc9{S&CNggNFgqr9L+<4=OdchSw0;-0c}u+FTBGh~IGQY?iYx>tNv8Dn#&w+ScK zJLvSrGQvhOi9csHXUFca0fvGI!35w=$=~tIHuOT9UD6|XFIv6A!QDs%SkuD&Tq)h1CQbo z4yqmk(J>%?5A)E_%h{iCm=(514)+D9LRxYRT0&R~nh)5sWVNp2zAKvMCNg9*(eVKo6dp8zS}EQ<>hxP>ms>@b zTQG%+053dByDL#(e>e_~h!@Pu^3`EHgfRM8BlqrnLuS6mjVmi-20e3_?gb;c)_jnJ z?LqCT*>xO}Je!Yq-lPiQ4$N2`=ACjhc<2%SPU>PJx6#C>pVkQ{hlWy^-IwKn$S}O* z2yrTAuq?pY`!Id4U_SIBs_W!WczOu(NDr=!W@3G=k0ui*80>ugIKUgTtqihJW);b; zdW#5FB<1~HmqU1cXl6aT!R$$BYr5ghDqM{EY|%B!QuUFftDbgQSsah%Z7>)1jpM5xIFy{r}+-q)K=s zt$UsF5Z4JCSLtq%ggWS_bqtHKoUVIuqj_x$6I%uFYzOsXysjdzQ-!m2-u~d-?Gk0b z?l>`Nk{_#QNlDHc`i)gE^4HAS3!3pfE5SHR^rPf>I^#{!ZG`B`qB3-DW1d^7p2fvE z8G<2+EW@M!2;F>HZxu>ZIEwbc6He$WA1qUeaL~VdoJ5#;fF6n1C6|zA!v4+DomxPLanv>~pRv;yZX9J= z%GQ1#vgEt10WQTmHQ0ftQCZoN{$4Zzi{dE-8<8iCiGC0<48&M!x^R_Wax~xft<#CRR9q_h!>B(PdudB zX$O6TtI?ICp^K2w;hr-Enzg^J=K(JeXchwZcTM_9lD;kMS;u434D;j!W`23d*2o(= zc)Y1~sc+NLQ_xKv&wND|oOY4@rrl1D{_5knI{Eg1?m0<7AlgPH6mvyG!>oV=@!P?{ zfr2pJk?GWo2z zo=S2&apjga8L(?GgN~Cqbucf`LxsxF7I zb+-zah&3X8hH79>-#j67Rm1Es!#uRvp^U_hdZE6{IT&J#`+))I1fD7M-4_kMtOz!T zO)28X?65WTg=))iy@Nur7jUa5qSQTarvm97lCn!c$^{rg9{Tu)h|D|AJq7xFxA!Pkr?JS5Gob=)d@CU;fIV(bUOXk)u6iUYI=Mt@+Q>b4%{h@qN|+?2R2#-o8x zQ|$#Ix!rhbA8ZipJS1109HPlqR#G9>X!4_L10&-E-$q&u=DK6tcQMSBCOVG%&rA&UCaut%V`-TFAh48w%sykX6V& zw?OpWZ9zt{{3GI08f3^>{j(DAh@PpZe`ULaPlKCeVp!Rg>C(9=afsp0JS0ZorX$mG zY>W)->|gYEIqThRn;6%V3c012KH1niKH5)uH20YBZM0?k8se(IFD|wEox@Jqsf>bx z4!la)rvZzwN)rN(S5m^>y#)U zJ^PScrb5>Y;%tuYKY0GJb`jJ^^62k>zgm7SzFS4fGW-63E52Nz*m5ZOHuFeSe(744 zHCTC}d%0gQxQ~44Oj}tLq{69<;MS{rBQ`dTm6@}D;nr$T`fJe@?d1Y(d^JH)xxks& z#w)_vpZu&AMEZ`kLn*qQ=mkvQe2`rJ%txHcERT7@w< z61eCDT+L)1?L6aXQkE17VZ1OA*wCFo?%?ej&Kf-!QOfRiO)Q3_m+qxNe%Glog`5uQ zc#e`n4m#A4Nu*Tgw$cb73Ukm3Zbx!F{9Vz;zs)xbF`N0uYOMS!GdPp-Vvz9%U$zwT z?>Pfsty^XvN-*?>JQoRdhHP9ZCnH>yjf@=GxH|I@dxI}El`JxUZ$F*M!TwTq(fRJ? zIi6~-d(R+_(Wsg5_2c4rf_1*PD-nyRJdwsA1EKh|7-QD#z)6hW1t@W${@fjKMIQzF zNg9_CeA#;%34~|^sJNY2*E38CB`)rU*n*MVzLerFcICoN;U%X=`&w=%njt?#Xr}+q zQ)Tk||5|7WL`ha8-_@h&!)$Vz)xTwoK`&Z(T4ZI5P$enj zuOxI*YF=M@Rs6SOI^gZNl1N+96mwOgjW;hiQlS z-`OEbZ$3e~SWw0L`pW~%eNJ!p|IXVzy~Wf1J?-DqY>)GSY5G59h-v!IT4EX=r{QrL z9;Z-YIvS><;s0qg{Ar=djPWgNcGf=M@HaCT1?&Bv_rIO{|IYtkYX5TSB`?N%&oT4T Oyd4H#^S`qG@qYnNi^28) literal 0 HcmV?d00001 diff --git a/packages/pinball_components/test/src/components/golden/plunger/rocket.png b/packages/pinball_components/test/src/components/golden/plunger/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..9511f3d543ba2baac80923d9fec88d977360787f GIT binary patch literal 58048 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 T%@OFmZ24l_=lsuhegFReFxB(r literal 0 HcmV?d00001 diff --git a/packages/pinball_components/test/src/components/plunger_test.dart b/packages/pinball_components/test/src/components/plunger_test.dart index 8f8a26db..5695b0e9 100644 --- a/packages/pinball_components/test/src/components/plunger_test.dart +++ b/packages/pinball_components/test/src/components/plunger_test.dart @@ -26,13 +26,12 @@ void main() { game.camera.followVector2(Vector2.zero()); game.camera.zoom = 4.1; }, - // TODO(ruimiguel): enable test when workflows are fixed. - // verify: (game, tester) async { - // await expectLater( - // find.byGame(), - // matchesGoldenFile('golden/plunger.png'), - // ); - // }, + verify: (game, tester) async { + await expectLater( + find.byGame(), + matchesGoldenFile('golden/plunger/plunger.png'), + ); + }, ); flameTester.test( diff --git a/packages/pinball_components/test/src/components/rocket_test.dart b/packages/pinball_components/test/src/components/rocket_test.dart new file mode 100644 index 00000000..c6a92561 --- /dev/null +++ b/packages/pinball_components/test/src/components/rocket_test.dart @@ -0,0 +1,28 @@ +// ignore_for_file: cascade_invocations + +import 'package:flame/components.dart'; +import 'package:flame_test/flame_test.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:pinball_components/pinball_components.dart'; + +import '../../helpers/helpers.dart'; + +void main() { + group('RocketSpriteComponent', () { + final tester = FlameTester(TestGame.new); + + tester.testGameWidget( + 'renders correctly', + setUp: (game, tester) async { + game.camera.followVector2(Vector2.zero()); + await game.ensureAdd(RocketSpriteComponent()); + }, + verify: (game, tester) async { + await expectLater( + find.byGame(), + matchesGoldenFile('golden/plunger/rocket.png'), + ); + }, + ); + }); +}