From b53ee12f565b438a1de0c4e5904f450845a781fe Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sat, 4 Jan 2025 16:57:50 +0100 Subject: [PATCH] La powerball ja no es pot destruir fins que no ha fet un rebot --- data/gfx/balloon/powerball.ani | 6 ++--- data/gfx/balloon/powerball.png | Bin 1526 -> 1653 bytes source/balloon.cpp | 42 ++++++++++++++++++--------------- source/balloon_manager.cpp | 1 + source/director.cpp | 2 +- 5 files changed, 28 insertions(+), 23 deletions(-) diff --git a/data/gfx/balloon/powerball.ani b/data/gfx/balloon/powerball.ani index 1efbeb5..8bc33d5 100644 --- a/data/gfx/balloon/powerball.ani +++ b/data/gfx/balloon/powerball.ani @@ -1,9 +1,9 @@ -frame_width=46 -frame_height=46 +frame_width=49 +frame_height=49 [animation] name=powerball speed=10 loop=-1 -frames=0 +frames=1 [/animation] \ No newline at end of file diff --git a/data/gfx/balloon/powerball.png b/data/gfx/balloon/powerball.png index 0f80fb25c0d7791511940d22425489d695bbdf55..8557acf7a915c33d00419b653f91a17c4fb5ae5a 100644 GIT binary patch literal 1653 zcmV-*28#KKP)Px*FG)l}RCt{2oiS(|R~X0tvMQhJq*Y0i!FUKRG<2{nNKAK8cMo{*U=xy%%}XI2 z1epz{>Ch#c3Bou-hCrt-F*Rgsa0{|LB~VYnL#U~sB0dR89h7%|_wK!S@7=vS-C6Gk z!uH+0yZdxMeed0Sr{@AJ7n1JlTZ6D|O5grjFnP>ROzzAwI#_v@n$HxSKsmK$?!NMAV=u#P%X=1ApnqK?0N~R^wLkylozyCB`aBbGuzN1QIFL-+NqfhQ4QR3w^%g*7dqV!a7*E&$7@q{>qaNoFGvI$0`G@Fp(+OIlLpErztR zkqDJ6r5$vV7lDwpPDLCPW#!h})|IE@RyVp^&^#?ak&2F|a~u`u)5 zaKVT~BFKbN3Um|~fnZ9gJjOso0)U0@Y4IDSGBSZUd=CISN2fotD`Y~6WSY=8uq8!kk>E@z zm5Cw}fW+&MbE!)~aPp@f+!OCkZ$&c}pE_a7bM-f0u}A07F`ih}m}d=x2+h$02x zWhm07Qo&YpAq*Z4P%8H@c$m&-%a@fD&=e^Yo=_s#>W(W@*0K^o=e$g1C7M*TlQRWO ze(L?%eD4M}F(A?*Zy^zicT5>JGf7~xQPSBdkd-cfA>7trMiL42qe@{qI|XFQYE~ks zoL>@IiI7Tm3b}hTU9}-7)FA*ouFfb4MX;Gkz{K*T)^g)eRUC~0kzNXxA5t%m$JH6- zX_}6@yV3+DvmI*)fkBSY*b@- zQd`G^{Ws`U1Q)0w?$`Oe`8V!ymKPfiP+eCNij6_{F3td9LMe+hY&We9#=4s8?{xqG zrE(9Ya?iJ}S8<1OP!t&&#VwTtcQ4FJQe z(|NTkez3o7|2iwEs}5Fj8Jig zR@n0_Ro#MndlhicfX)Zy%tRPvhC2AFf>PBj*vtg~z%EZDx^2V?Wn$o0NCctMl&bmO z^$qb@nJ8G1TJn(H z#4xcu2{eYHwCZzs@$M1;X5hBA4s6b2Wwwnnj!}dIECbjy9|JlchCe5RkE6)OCJ98S zUaz+(+fD{gB-vo|*bb+#NG1A+w~R41zdAccXEm=l*;}@$mF_Nf7=Ls z+~s8WA+j=!5S17LLP=y&-KQ$b?-`So07(NpYuyA<&gUY;;B^y7?(9r`Xmmv4mY0>u z%EgFt9(jzx*XKk?SSVeQ*sKKDu7S)F=)@!>Ae0G_06PmxDwvoB#n*lUq-`jb<7&Sj zRMi$srbq`jfSsR-X^aC(cX-A*J@Kkskw}1@IW93w&m0%XP=HpJiUcJQAQuU+b6O@s zB6C{urr1d`OKFM(*x7b-6+?I582|vc+5_Tes{j5yZ|qam8h}ud06P!3N1kF3P6QT3 zELtEyI~&p1|4_go4>9<%6cC)BK=9o=4_Y7~AQ7OJjc77`Q7z#Fq#}e(UFZh;tD;Io zurgf`h*SiXubLBi2vH>>SeY&;tXw?e%ER(MsbrtLF$JNy00000NkvXXu0mjfCoK7O literal 1526 zcmVPx)ut`KgRCt{2oK0vOM;L}*c`L2!q*ck!!T1ndXijzniO5~lxd(jk!6qajH(vtj zL6Eb+G(Gf^n+d`=haLhw(ZuI#Le4Sc!vT%pZ+s7+EZR;ivf z5dbQIkJJA0IskJZ)<_!yT1> zfBC5(V+cfXFq98C3jnN=0_iv0k^Ac}Sf2mNFBlU9A{h*&104qhB2yRy0st&uxdaq1 zX|@0J?sp~8vg`GCO#t}*%6WhNm)&65&-;H%*DHb%JD?jU1hW0asY(%oEcl#yw*X+L zef$%>>|yz0EDWAzv|F43(Qbe{tJFpn!l`bZeqXz@bYX{G_^^CY*s$Ds&YeP$o@q(l z@U*%S{NCK!O|mNG6cvGRVLp^Pcrt}R7w)u=@30kR&R|oN&=EEu+<)B0z2g?{KW>Mh zm`HnnP9em}5JE&eXOL@%ic(EYqemm;ivx@vWpkMcxj{ji5MsrHArhOSxFBq~fmWuj zaA$$Sm%*Q{4_>5-1qcVcLIQ)gO_@@21nYvdT@i7^`EP`EEjmF2;|G<-v@0SY(r^P& zCa#F-CD~3#h{8AkfG3rCB^X4hIAUg{pjB>NR9d2C0m3Um`2qC_^rSMcyglPPbfPnR zb)hS5x4O^;1Z|UcaRYJEl5WnH=oKWrC#IgVLLgMr($ne&9yH!!P!b$mQ`~R=y7d?C zamt;h3sg3gV6dZY-QJP~#lcX9;9n=!N5-jXxYq*!*yM0B`{e_j+T2FsZUOj_A}Ex#a|g zYW=JbAomlH8Ic(-$;^(7G8INv1p4{mfUqoOgQ-@J@i7eySxfeWkvsOfA;F@5$v z`rn1zArwYmlkb2kZ1v_8ya{b1dKlw-QN%T&P zVF2bpSO{DIM~CokuOVOYa)9J14josJJg+l2GiehSykHiVp8PA!a$%^fPb3+b>-Bfd z*eUlT{{*xSA}gr`E&@XWLUo<0QjQtp20(JL9{0;6tc>=DbY&$yC|f6-4g_v{S({0L zp|c;MF$Gb|FmxfXZUFwLk6cCuctk0{umJ&3=rx&iXKgC6D`{sGW`#W|ARJWLcD3Un zNJq4$;{AxAJFC!>vaaK!;A9ZF0hp3EhC&Y|(=h07+oAvfatOe*yhF!(Og~L`XhHy{ z>8;X+I|2Z1ssfTb>HNsetRotatingCenter(&p); - sprite_->render(); + // Renderiza el fondo azul + { + auto sp = std::make_unique(sprite_->getTexture(), sprite_->getPosition()); + sp->setSpriteClip(0, 0, BALLOON_SIZE[4], BALLOON_SIZE[4]); + sp->render(); + } + + // Renderiza la estrella + if (!invulnerable_) + { + SDL_Point p = {24, 24}; + sprite_->setRotatingCenter(&p); + sprite_->render(); + } // Añade la máscara del borde y los reflejos - auto sp = std::make_unique(sprite_->getTexture(), sprite_->getPosition()); - sp->setSpriteClip(BALLOON_SIZE[4], 0, BALLOON_SIZE[4], BALLOON_SIZE[4]); - sp->render(); + { + auto sp = std::make_unique(sprite_->getTexture(), sprite_->getPosition()); + sp->setSpriteClip(BALLOON_SIZE[4] * 2, 0, BALLOON_SIZE[4], BALLOON_SIZE[4]); + sp->render(); + } } else { @@ -167,18 +179,6 @@ void Balloon::move() // Mueve el globo en vertical y_ += vy_ * speed_; - // Colisión en la parte superior de la zona de juego excepto para la PowerBall - /*if (type_ != BalloonType::POWERBALL) - { - const int min_y = play_area_.y; - if (y_ < min_y) - { - y_ = min_y; - vy_ = -vy_; - enableBounce(); - } - }*/ - // Colisión en la parte superior solo si el globo va de subida if (vy_ < 0) { @@ -203,6 +203,10 @@ void Balloon::move() { enableBounce(); } + else + { + setInvulnerable(false); + } } /* diff --git a/source/balloon_manager.cpp b/source/balloon_manager.cpp index 8b66e53..5fd4685 100644 --- a/source/balloon_manager.cpp +++ b/source/balloon_manager.cpp @@ -220,6 +220,7 @@ void BalloonManager::createPowerBall() const float vx[values] = {BALLOON_VELX_POSITIVE, BALLOON_VELX_POSITIVE, BALLOON_VELX_POSITIVE, BALLOON_VELX_NEGATIVE, BALLOON_VELX_NEGATIVE, BALLOON_VELX_NEGATIVE}; balloons_.emplace_back(std::make_unique(x[luck], pos_y, BalloonType::POWERBALL, BalloonSize::SIZE4, vx[luck], balloon_speed_, creation_time, play_area_, balloon_textures_[4], balloon_animations_[4])); + balloons_.back()->setInvulnerable(true); power_ball_enabled_ = true; power_ball_counter_ = POWERBALL_COUNTER; diff --git a/source/director.cpp b/source/director.cpp index b2e68c7..ce597d4 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -54,7 +54,7 @@ Director::Director(int argc, const char *argv[]) section::name = section::Name::GAME; section::options = section::Options::GAME_PLAY_1P; #elif DEBUG - section::name = section::Name::CREDITS; + section::name = section::Name::GAME; #else // NORMAL GAME section::name = section::Name::LOGO; section::attract_mode = section::AttractMode::TITLE_TO_DEMO;