From f716fad97d5c125c2c90f1df12ad8e72f7366f56 Mon Sep 17 00:00:00 2001 From: Leon Grothus <leon.grothus@gmail.com> Date: Sat, 3 Feb 2024 23:37:18 +0100 Subject: [PATCH] fixed bugs --- data/data.png | Bin 5670 -> 10761 bytes data/options.json | 2 +- source/api/management/background_manager.py | 2 +- source/api/scene/base_display.py | 1 + source/api/scene/scene.py | 1 - source/game/objects/spring.py | 9 ++++----- source/game/objects/target.py | 16 +++++++++++----- 7 files changed, 18 insertions(+), 13 deletions(-) diff --git a/data/data.png b/data/data.png index c0f8a629895bd8dad3cfbb90931b931c6a73cd7d..8ef97074fd4aba9d1f6067c4b163aa3bd62ee7c5 100644 GIT binary patch literal 10761 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 literal 5670 zcmXX~cRbbK|9@X2e1sxoTr#4htRyaO*;{n8GBb09jBC4>1|>Toauu=)WoBKn=PfcW za>>fLUEGYzb?@)$`}^bl&v~5pc|6W}J=g2??3S56$A5zV0RX^ZXrN;W01W%bABesH zNZGcU0RS(-Q0FErG?(CD;k(dKC#whg4fSC8t5@;T){3z|<De|YcHAI4@f#$c=5@oO zCHb9?>YKb)XysV{7}-nmL6ftASXba$u8ecCIaqk|fJx=+ZpDt|U2M$B@Y;|9PcFdU zm1?kRkY&R}UoX|U2`HyM)2-5YPO<HlQl~(XM_`(C`=P;8Nr4;+T$x7dsDg%z2_)rU zH1GCcK00w-AKCR~ikJw0S<*tVh)BD<!4!HHadRLj9*DSV0-#1}MWn{_G+w8mrUJjV zMo)C>Gk9|~T#;<}J}tIJ3rgp)XCGi~t74ZwJ-4V=iSFeqy{AIN`t0DCy!`N#9h{n` z^Swl-2?fxmusFaY6c8XW$vC@P!8}MYspIiJ0^4+pOLknz50U^f@$dEsdm&Mg{sABL zd25|-T3!+W1k*n0mEGe2ObvMT(Pfh<Jc3d@3C++Pn{Q@G?PgxFua5q*x6+bm=>~xM zHaWZI$3hk;EM0_ja2W&~tR7H;ADp<bb6a~ZJX+*l3wgadn4+N>X7ia@0Pba&wxCRV zz`&A}*OKI1P_N;=gem<&TcS+ts@>rQNi83tUUWrAI|_&z`LZBH-Ku`>h(6_Vr2eMO zV%*m!JW2b1<Vc|mLrbAyn)SsU&QqgBiiAFObkFFLfYYE$=)tmFMi|rnUyfz6Pg3UE z>PJPcm0h<NVV(0klz2w;Y|`=iGUz(^gzIrJgnA|_d{~k+vssg$yJ;%E?Y3V;)wc*~ z6sy`wNjOKeRI*A6Y&;e(lv!3`jEHg#j{NN(X&S$A3XT=is+YdGSI=ry&j*;~lJK*s zz})RsJv6Y-1Zd&bvFi(uc>W8};($~!o5(Ws!{5FW4^FpucS8EI&CjX)=LX4Bce|x* z^xD$E7G2_nPFqJI6!haaHPhpBr*cw^emJ*|D#MU}zRPE*LHR*X3uIF0$3GKal(;tM zBHj$Xmk6WA5-|(JEhtzrFlvOe|M5Jb?R1^KHYCM_SHI2w@2Rl-4xUIEhjrCb?;;rl zFvCh<h@duUYDQ=EzJKm;>&qia)i3Dcroc(~RPzqKM3Kr4Z94mIy(sR@SEuK0aNp2| zZDh$LDbWVTr)Qrjk32M9lGPsBy}%%SwS5;ecSziaK8q~4C2{8y8|<yc-(*WCn}9Rg zO!=&AC7^ugMv-*h#x0}RJ<^z840HuUDl?TDHz*S7`ftinlAEo;WT8V|1>RmIAssJi z|IJMP6I<!?>0@%Rl*a05E1-(tE#OJ!-3uiWw|U{o&t2c2le%hhUa%}kImK?bzvM)k z@MLT{Tm>0bmy`@^<RepZ4JDID66f++eA(Zi%d`27^mu#6*R#}BTuQU0AC>LaqR|uG z_=R+qK7~yFK<eFF8Akc6uOuzreYdp@9&F}^w;#Y#Yk1~VL1kveFJ=hqA?}fpFK43h zo3g{S1;>?neUr__T}sG<NM-@{_cGVS+JoE8DhdP(lniZBUTnI_*5qb@Zn8J+yi%w> zQzEX;qCENsi?7{!+vL7{PzatJQj+rhA#k?H)!@80+NcL5!zbeds?e4BF3)3J!TTg@ zPS1amNc2PbiTeZ8T!<)Ej@Klzd=h<Em}+&0kqS(F4c=NmUAZ5ie$pHd<Te2ve3_oW zE>x*Z$jqUEGTpLqBy?#(yV>_o_#aqsYid*JkD0RoPlidDSva2643N$COnk{JP$w>u zhC6h%?wKG9NR5l=)qltbS75(!Kj}Y<2>4R#fL3~#_n<VWGY=Auvb$UTb8ls5Yj1xs zmE@#2*;gCAjGX?GlPziT0n{+=xqEW}##U)wR5tpto(I-A!V|H=f@GwGQB|%jZsv7F zi4sTcBQvEjEcA=@?;G5CoTYIdDkaXfZKgWicR96XJ?kW7xZ~@ar-MFR`)(C?sth9~ zbX0tf4t&5+o~Ygowi!+%VI7K!ScX@YOf66Y@Ts)2ZroYSA9lF_e&jx=?Qs{QnbTu_ zy<VJ%D-a8GA{AiNo5mkePqP4YDfZ770Od~e0J%V9=@l%HrmDfvmRZ34+q&d70*|)t z#&)!jLa%|YdS^2K7<0U}cm>w!&2YF*p$-~6o?$ts*1(<%RQ1q3ArW1kmaaH+rE223 ze@+B0(Js*YcMQazsbXb?>CDX`5syD#bzY6e;K@($05aKJBp2fR=(>H`^n2D@a87}Z ze1hGG&})30i`lC{YPofwDSR2Zx6^cu8ggLG+oZaa$f4S~EPY_zTx)<#QShT*Uj%>F zb#Q6kCn^8F`7Sh6DYIWa&tyr|9B38X8*9!wR=pT=ycx^up7gNpoG<D?@qqd|97Re{ zZO(H#dBXKY>EOa{CAND@IV8<!;t7l)uVvjU;*1;7ZU>5eD`ixv;6xYyU%xH7Vui&c zWk6epY!w;8<Kvas<t_5=UycfB@^wJ>Mp(2eLnwp+xPt7|EAy!9L4zt+^zB795uKR4 zxl$ZWI-VA+;XR4T^B>BBw(sDsYrdRV<7`Yq%*AI5`glpNO1N(+a(-fk32@iyuQsO0 z)Mcm2zZ1*>oY6$;<;|||#@|dHSh@YdUJQ;FsXaw9(^z*Zf=}=oaa>y*-LXG;Kjf$! z4?2F)zLfUmJM7O|%TiU@xh;7v?Aiqky1EG-JwcZ~5kv%hG(S}gdo;5XW8Kpe@j9e| zT753Sm5@Fk%fqSi?DvxS-s+|!+FlfSu@I#H{sZDAOHx|*nQtjSe*3+;>r$z3B<=-R zNEk`tnyxIaer-597DM+^L_Ejsan_G9Mpua?Py3iAzMD<VE9CDYED`pH>Wc)u{MWWl z5Kshd(JvM$@-S?Ru!>S*G>X*b9!e0O;~nys-x`|RnOP%8pd!>A@|2!20bQsGlEj7+ zHK2w>CfBSp(oXDi!@g(vMSn%Kb8avMAb*x9@%P(~s75Gy*)wadSS8&IC_r&Oc#I?A z$F}%aJa;d2&cWAub$$-ycPGgjlz^{aI`v9C!EeRWG&}<G#o{w3oe+0>=qjhL_=TwK z<?Rx1GFP%-go*CjmJ4mli^KB#ADUll%;M<kHT8OrvZvC<PlH#oRkpmZOz3O~5q;Q1 zGu^=AGqy7NOM;X;KfH?N=1zTL_4#{{KL>2%M_{oNre539Rln?=jP&7=g8+2B#l!vO zhC=3NH(PBFcrIU^K2L=}#l(ZFQ{VX!2D7_KF^u|syuQbr7VWEIw_Ut@;L(WrMaZCJ zm6+MKn2QbseBKN}7;J8U!@%-CkE2WLOmBr&5PRZHLemS~Z!j-jp)#vGU9pJxE?N7A zD((K)HW#@RHps-OeOyA)U>PM>Qq(r3L)O}>&+02eoT^~#bidR8eq85=c#n5^oph7` z_aZ%tG<SW7s^X!j>Qk6n*lSQ0kK?ql$LIVPG0-Y)EzL3l<?Gab$PxC_?&5>NJ&npk zhk(QHm3xufREmRu=#5u}B=0ch|D=?1vd;6s(I!4WP7OFV>IeJwSSDBvQZLGH4Rh{W zN7BHw6^qB&CD?RiNe#3-4!7cHcth%w_ou;hnYI@2$jJY1^4xza!TB_EflQtW2Xw2D z+2hi=`Y7`*6o#Coj5#Dpv=u`;mIMGABd{D)%2^3?O13aazpUs29Y+3M+ix3s+th#c z>z$|QcExecdV>Mp;@#3Tjze|3x*F}*OEadjL9){a$B#K)1ann>{Y!5$26mu^e!8;8 zg0e6DLAHGWQh^jo$!?(bNTh@Ph{)|*6K+K<XEn<?y0wHW-q=f1ttDM5pC$^?4&Q)B zzH){-Vb&KU)~RX4#=H)QsTYhUzkIlGCXAlR*7v_qn9i6K3Ax1KIG?#`n!yDzA!!Xc z5gwq)7%-8L0-USnLQIj{$F^#r1-VOpg{k-MX+v}pQ=f@0woRY4ZTIQ80#D2VTk`NB z+78KKQIWkhCC|(J;z1@-9(8gV-xN7)8##NCEMZk3;zkOCe=Xze3jcTyHd?m@KK4WA z3N%8qes<UEIyQt+>8-r@z<FKM!pnq|<I_kX!4!IO#nCQ6PV0rjKD{M4B#<dH%-&kJ zBI;&C{NjQ<S(+>H|6HzpRzY?ff0ygTa;hWQ_-mpj|0iMX*kvT9TH9_CL?jar_8a)? z4<^|{`FtDn>Q^vA?L9MUwwreGuahmppN>~C>ibpS9xnM}jyqxfiFFTQU_S*SQrXKF zjCXMKumJAl4VE$Yzcmq<2<x&N#n+pE(!c5E*PjC(NxTmL8%OEo3&pZdJ07=w3Hcyf zh2^kqAN~?VKn*=Ss2LwsG#a0@aW4@9Db)AlN3?}Pe5nUM!lLqpK}dH4>#iBe1lgA( zDY<X*&c`#gm3I{cU8WPgrJ8Z}7zos0Lq#FBGS%(yXphITH!Y0(3&!R5WeFNwTb{>2 zAfWb+!v5v-3-d!P=X+0BMWq65y3~Xze7p+|gmjC8J*;C~rrTi>&5@Rk6GSArWN$|M zkRmu%C4S;S#6wd5etoZq-slJUXWUQJRMVa%>I@q^_jxzuSxSG25JVe<)}$6a>>p^s z5NKSjmF@xZ&j!Kbs^@>-?!sNWe?N{1Q^QDQ#v^-ZhLhCSBaUGhTPeOO7_!M*!0s3K zr*uAl5fe)T!BX*TqZ>-?|GXaxWu!Wr6@tycm(3S0W_X@xe#hqN+Bm<h{{a*zIR8FS zr2#W&yc9myY51HN7LDf=o(~81a~4)9zxJq!wOa}U*6!je0;_&E)-&D8^Nbd|_pFrf zUq)!3kR_!2*+7*aQJU4LB53tL+juRu)HlMaJX{6!ZaG}$Qhb9X_KKmWKSig+`i|KF zUqEKk(iCt0w^wG}o`xIQL#NLjPLc{Tw#M93b2e_3%s+2ojdIroJdif_7w_#DW|{@q zY~TN;V}~&)+B<BzrujMVoPZCpTee^X>l(WjM06kGELll<IEyZikAM`8<8dHA8eK=7 zD9(J%Bj=p8-5|VgVl<>Pjr&W3z!vwr>en8z0EGc{B(u*C;<JzN$7R<Hf}8rlR9{hq zbtQgi3M6^Ye~)SkpU>Bk$Zn(q>ATzpDg>Fkv*i+J17{h=q`fRx!VM=}mwOlw)#7X3 zCaGa?V#@Y(@UMqN9XD~4eM?;z+YRrZRy>sR*9siN$n?4lBX4`~wpMF5(xJAuQoB`6 zB{kIqr-=<yzGiSzQ+YP&0uo>ricPlawvNjPg*I%27mi)8k_b9AepQR-dg-TvRC7ia z1YIbC#MeP7Gh}*f4vgYf)8WV2Erk1i4&%FucT=|5Ez#(+h@GWx^F_4XnV}xv4(J)| zv9?Q0_@!IN3BI76d&vd%jZ?*TGptH%+M$%d7;!`nX=CZfVS^F<_m4g_eOuxnhr@AA z3VS_fS5(yTI5FO1ijpptFAN~(5e1zm`gW`Xo|vX=;(`aQ?`3$W4oAJRhDeST`l)dq z8{WTsCtUR69bv3fZ&V5up0z@msJcxZh~9md15xEe7}!jKTn~}7yFERZ@9XY3NHs5p z6PK!}Vy`}bKcqHaqb`9^rFm50Nk)T?(R!Yz#eUaMn)_vhwbhR<ft)y~NlwXe*3H=+ z&VyU>>QRtv&$*!du+Aki<=!A;>l@BTD&6V}Ls|XmzH}%EJDGk|Gu{DUB_;PxTk@$6 zfP?xv#r?Gi{Gt^e^VD)MH(dcCm`$NMh@o!Ym7am>_2agg+J@`h+YBFeAh0y>WkUB^ zcP%F`#7|V`jTZl{EEfDzDGjJV=BWS73@wpid1|OsE;~VZyX12VJhki+=3CQv@pD%` zLm7+BVb0Q)dd68a9sQ5e*9!+f=BTWXkY@~(v4S`;z8H=FhK)G5FLu5Gb65R8xA6-| zwT;3rvvxmH8`or#s?y(Y!TkiPA3F3m9x5I#a}iQfxLl`chj=w=+!0o?&+U)We4qPR z`CrEKzlnkcaT+uSuxNFl-&?B9IcRuow9=P^W^W$hM|qv;Gp<ekesP^oz?+VE8&PP; zHy5d$n%fcseb0IHo{^cAjL)vgX-#<<Lkf$)o5Nfc$!PaA6y<lz*aaV=o?I$XhA+nU zSH*3%z`B&7+EmFH|3sx3Iz6af4=A!u8Hv4}T#61WO}9&zUnHUagq2HQE87?wDgvi1 z+q{MsA0AI>CJs#XikGjA9+4^bPCIPut9~U}hKU01`c3q0n-y4m)KNterbjv%_HI}B z`Y_`meazA+bJe@|6Ay4h+k?5fDZAg64$5OaJxYf!V6e!sd3Ae@RLy=kt%)@v`mfNO zL<Vl6x8Tg%Z_F=~(t=)jo2?o^Rv)X2gP1K8RB%71|MxStd|{<E2j1Vord!3>)Fxuu zy4Ab(1PE#z=6h-7XFDl2W<w|Sfd>W@{gu2F8mdt*4LBt&C+{z@&JAn<K&VD?)lqh5 zxk#y84<nF_%;rNy=!7$WR;!s`cmv+7+^0gQ(6}0y4nxnfn&6bX#OJ<R??{#(*K-_{ zxn~mB-w;y5`vhk<Q1!<xI+B3BzjI0X((lF;6CW+hJB%E6DwqVPVm@Xr;2;pmqo9Av zF?QT(Dy%EHiS0H~LJ&Cv;sv(PEXi``&>3_CVTa7MKs}=<Tz}Dq+Zr8*e<nhx`p`P< zDIz@y^1HrJ;9B9MGY8C7xgXxS`PZ{SePMc4K8rsvR3l{GGMjIiObNJ(4OQZI9XuU* z5Z<hwE4RGuAFZCfLRwheMpb@+9L)a@^4j*%Ty6oGxCxc~+^)T9nYRbBP0rOWUN@so z+DwX(>G-0%U~(n-=5#@?mKCplp|{6DQIJ*Hh{C}om!O^4Cp86kz6%$!X-tENEA;+( zh1bYCz*=7_eFdp%o&iF+&Ye4I6gQ~&CU0CXM@Xso=Zu<E0!3E&l5tX)n~>s{G_4Pl z;pJ=YJ`AYH=+=7eZTjt_kdC6q@?)qZ75M!kee4pDvko$MbicOfE43@eRpB2$a?O5H z?B_Jdk4i+Y@6T;MR0%{Vy`G`04e_jE&`kem3O{3#&=7Re)|YuZ?#{YiEIifssk>Ca zjV{+ZJ%+PGoIB_kP2_s%Rft7C=&)E(ls;!pa@6nU_CQQ}gv`;^_Z2-=9XWuZ?b!?S z#L?edYRL~fI%6}T;wg^U%cwwh0Po-1l_1w+>~2^1yddsGv@QWUiv!V~)8|z*$+8k} z*o})hpL2WdOp7{W5ou~x>#A?XPTn=Wod4XkO2Zo+ch-KLNYAA!^ty5<>X?PP#})># zkWO0s!5Y$e<;q9GvJt;>vR&aZ#&L$yJNX_O^ye0)^?{In_3;4MP}fYSLd!Y!{{Z)K BgjE0l diff --git a/data/options.json b/data/options.json index 4daf351..4f53c04 100644 --- a/data/options.json +++ b/data/options.json @@ -1 +1 @@ -{"asf": 1.0, "master_volume": 50, "music_volume": 21, "sfx_volume": 58, "user_name": "Player"} \ No newline at end of file +{"asf": 1.5, "master_volume": 50, "music_volume": 21, "sfx_volume": 58, "user_name": "Player"} \ No newline at end of file diff --git a/source/api/management/background_manager.py b/source/api/management/background_manager.py index e76edbc..0660245 100644 --- a/source/api/management/background_manager.py +++ b/source/api/management/background_manager.py @@ -62,4 +62,4 @@ class BackgroundManager: """ Updates the scale of the images. """ - self.images = [pygame.transform.scale(image, (int(image.get_width()), int(image.get_height()))) for image in self.images] \ No newline at end of file + self.images = [pygame.transform.scale(image, (int(self.screen.get_width()), int(self.screen.get_height()))) for image in self.images] \ No newline at end of file diff --git a/source/api/scene/base_display.py b/source/api/scene/base_display.py index 48e7081..b8bcc59 100644 --- a/source/api/scene/base_display.py +++ b/source/api/scene/base_display.py @@ -40,6 +40,7 @@ class BaseDisplay(ABC): Returns: None """ + self.background_manager.update_scale() pass def update(self, delta_time: float, events: list[Event]) -> None: diff --git a/source/api/scene/scene.py b/source/api/scene/scene.py index c07ddba..e036e26 100644 --- a/source/api/scene/scene.py +++ b/source/api/scene/scene.py @@ -69,7 +69,6 @@ class Scene(BaseDisplay, ABC): None """ self.user_name: str = OptionsManager().user_name - self.background_manager.update_scale() return super().awake() def add_gameobject(self, game_object: GameObject) -> None: diff --git a/source/game/objects/spring.py b/source/game/objects/spring.py index 864e1ba..e44e974 100644 --- a/source/game/objects/spring.py +++ b/source/game/objects/spring.py @@ -40,12 +40,11 @@ class Spring(GameObject): super().__init__(pos, 0, scene) self.spring_sound: pygame.mixer.Sound = pygame.mixer.Sound(ASSETS_PATH / Path("sounds/spring.wav")) - asf = OptionsManager().asf rel_points = [ - Vector2(-width/2, -height/2)*asf, - Vector2(width/2, -height/2)*asf, - Vector2(width/2, height/2)*asf, - Vector2(-width/2, height/2)*asf + Vector2(-width/2, -height/2), + Vector2(width/2, -height/2), + Vector2(width/2, height/2), + Vector2(-width/2, height/2) ] self.change_score = ChangeScore(add_to_score, True, 1.5, 2) self.add_components( diff --git a/source/game/objects/target.py b/source/game/objects/target.py index 202d90a..7d14dc0 100644 --- a/source/game/objects/target.py +++ b/source/game/objects/target.py @@ -42,6 +42,8 @@ class TargetBase(GameObject): """ self.base_color = base_color self.hit_color = hit_color + self.width = width + self.height = height super().__init__(pos, -1, scene) self.hit_sound: pygame.mixer.Sound = pygame.mixer.Sound(ASSETS_PATH / Path("sounds/target_base.wav")) @@ -108,13 +110,14 @@ class TargetBase(GameObject): Returns: dict: the serialized TargetBase """ + asf = OptionsManager().asf return { "pos": { - "x": self.transform.pos.x, - "y": self.transform.pos.y + "x": self.transform.pos.x/asf, + "y": self.transform.pos.y/asf }, - "width": self.mesh.points[1].x*2, - "height": self.mesh.points[2].y*2, + "width": self.width/asf, + "height": self.height/asf, "rotation": self.transform.rot.get_value(), "base_color": { "r": self.base_color.r, @@ -140,7 +143,10 @@ class TargetBase(GameObject): Returns: TargetBase: the deserialized TargetBase """ - self.transform.pos = Vector2(data["pos"]["x"], data["pos"]["y"]) + asf = OptionsManager().asf + self.transform.pos = Vector2(data["pos"]["x"], data["pos"]["y"]) * asf + self.width = data["width"] * asf + self.height = data["height"] * asf self.transform.rotate(data["rotation"]) self.base_color = Color(data["base_color"]["r"], data["base_color"]["g"], data["base_color"]["b"]) self.hit_color = Color(data["hit_color"]["r"], data["hit_color"]["g"], data["hit_color"]["b"]) -- GitLab