From bff2137f5347dafb80dabd45d465ee279db9aa53 Mon Sep 17 00:00:00 2001
From: Leon Grothus <leon.grothus@gmail.com>
Date: Sun, 4 Feb 2024 17:33:53 +0100
Subject: [PATCH] fixed scaling

---
 constants.py                       |   4 ++--
 data/data.png                      | Bin 282 -> 3769 bytes
 data/options.json                  |   2 +-
 source/api/components/rigidbody.py |   6 +++---
 source/game/scenes/main_pinball.py |   2 +-
 5 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/constants.py b/constants.py
index f129953..6b66ec3 100644
--- a/constants.py
+++ b/constants.py
@@ -7,8 +7,8 @@ A file to store constants in
 
 GRAVITY = Vector2(0, 666) # Gravity applied to all objects
 
-COLLISION_FRICTION = 0.1 # Friction applied when the object is colliding
-AIR_FRICTION = 0.01 # Friction applied when the object is in the air
+COLLISION_FRICTION = 0.13 # Friction applied when the object is colliding
+AIR_FRICTION = 0.012 # Friction applied when the object is in the air
 
 PADDLE_SPEED = 666  # degrees per second
 PADDLE_COLLISION_DAMPING = .66 # Factor to scale the velocity with when the paddle is hit
diff --git a/data/data.png b/data/data.png
index 9f08a344ff5c655ae81537a8eb7fdb046ed14b36..4a40797ad837a757363f16ac3dd28b0f5e82d32c 100644
GIT binary patch
literal 3769
zcmV;q4o2~bP)<h;3K|Lk000e1NJLTq00Kk+00Kk-00000-<t;a000hvNkl<Zc%1EB
zL2m21vMe42pl9?B=#3mHe_0n$u5_LP{AE2UZzJ>$=ot+tsz2zaq$GD>edGZ`pdJ{u
zWj91cp^L@pYS<ncwnyz@B4B&K+aWFoBs@%n2e3Y12l>V?d{_MJOh^^GkV-eg_9zHL
zG64kv*9DYr1bfE-0I*~i*aP5%BG?H4d)I=~E=RY=OknT2kbokjiVU1w$NWH&?6@3|
zKTpNgGkqv`Il4V&0?8JfTnkIKNF{&-*D;w`gj8_^O4I;c3p=o*olpc$fKMd=z%k&s
z;txjxih$C!U!S1}@{!WD`svbj0gwYlKsjeQuK2dF<mlx(!;t`LpDHq-bfZsjqnDr0
ziX%A0+QY;q$ai}*;h4uC4-OnXNs<Fe%UF9m#M;||t>+No$$Xv3*w8XI@&)}cN6!PR
zJRAvVWG(?*7i^Cv0BAyjBRRwx$;5&J0!ap$)=ShLRfK1cg2$|~F%|$WlZT152LNw-
z)bdiE0X5`5ARm~~`W{EO$4o%!7%bV*4zUOcuA?k;3|jzhM1o^Ta3jbFBohHUxsLh&
zV?2I2H-sSWGJ|bSj)KfnDR`Vr70Fb(PTrHFCN^O{aLg*3Lspuuli6DVIDn*(q+v2_
zVSCgdV+~ZgHVqk`?{Rc{%mjhmr91<Yyg7q%eU?G_3YkMzO7nO3IJ#YCvb}4)9Y_Lt
zIps$ah9eSgBLGL90Kg8h28Rd_6N>=g{bD<g2a~lSIK+lj08ZM03>;!ZJ8<-tv7y3q
z`CLOwj-HIQS7aXR1CMVAJ8)DuXksmt3aSX$-nB>ySX!Sdwz4!r6*12$Br3Mv9`pF)
zVIurOk^_Rm*EBc)f#*u0;~$ywJ&taVnZU_)w39GY0N^^x6*nBAznqQ%CKka?XaWbe
zK*f$I0a@jzeU5IAnUJbjDB`YG*gFI8id3e2a!QTQkX_!B1N$7^9y5WxYkh)D6g5x+
zo)Zenv|hy~pai_m?P!9XPzZaD(zTww{8#L8bbHJMnK$%zP*J!-aR5q}yDkWJEaj-e
z^Rz<nyBysfGr{(*qa6gMw4MW7k1Ey~k2?kq9Oc?uMrE>KID)+rTR70+<C&6RLcqJ>
z%5W-gBls^A!A`f<TgLYaz^i9>CDR+=QMwlFQSfA9!Bn~@f7<Ejc9;pAlsgQ<z3RHB
z_AqQc2kMTeolpefXiL-{aFj(7Oso&A^8b$yytfeI9?FWt+hHceRoAk7ZjYneV<x0h
zWGSLZQH9VD0XsPc2rEv(<Fu3R>U&gd0TUZ}@0iCQ4^FPteNM6?Db#q!WVnLe%Yl$e
zN9EB=*9AGS&(ZBM6YS)=V2AlGX4HEerGS_wUtItkVh!O{<bQ#rVD#f2e>`Sc3T8q)
z>rjf2=9dE0=L4UZ@^3w-pPfnYI7;MS#EPxY7qM1Kr6LKS$#5nX6v`29ME*71<LLI7
z305g@GIQaX0Ut!eGJ4L`xV)#!poW%u?GJu@LkM$%S-xCikuMjrzmG~beVTw0wYQXI
zDIoM>b=>2d!{>)uUz)fatg#%;*n9PjnM~i~=ysWjlj{bQj)R?+w}qyv=a(D+XM^nb
z3~V7P6##ONAL#J$O!xnZ@Eqc+Pli@$@ZaZ#Ftj06w1JGT!V}(}Z+5u7oSVQN|2x>p
z*&)%}108M%_5e~|#{*R?m_^G#sv-b5#U(JZ3~GHU1*6wU72EGUr=Oh(vu5HSQ8*Tv
z_$(dIl9n!{Ss;4MDvyU2J2(cZqoOc@Mac7b6QCPGf?8xR8daR@CSr43@ePr+DQoO)
zMJrCu$b9sc97WPXd6q@wsXFlZrjTtNWe4FcWjBaSmE6kkb|8c8XT?_Obd#SwAUmVS
zJ-#t!>G%w>m&(pHAr55rJg@gvQ~s^z^s_S|iSQ(IuL;O&&Jqo&8x)1;RZwyC@>^?E
z%5~uJts$C|A=hb=QoFgP%Q?BxXX$vi91Zf&JBDK(-w+jBujIFGcCM=4QpHh3<aUCT
zNBB&$0D$X)$jSFPx;<u+NS_#R1>o&JYgm9qrLq)t?s0Ux%)}n>Cpgkgc)y%XzJYCj
z8v)!#e=;%iSF*dwHmefxev$IdosMpYnSe^<5>Wkk??x@roKZNluw0eoTqtxQ$>9%P
z<?-MU3*Abt1d;$$qYtV1@c;_4*Sb${C)bL)93}#(Iu!ex;v?m)OZd!>uV`>&rhHbe
zV18L2_xOh3Am#TAc9Noqj&h_#K>%9wV<*=!&*L3on87;_{rIM^TF<F<nwcv3P`fD=
zn^{Co#)2eUpGx&%Iq>*~kjk~vkusN<ScGKQf)kJ@8CmyqL?xaptw)JQH7v(HzAe+e
zIu}EFyBUMuzD430IPqMB`!kA=exGp#&+ixWjCYd;|8hAEXIugI1iZNx#++ZThqm_d
zV4o#!ws%_fMsduF%`6GhMUp7VGags@?Suo5Z;6cm>KS%-nJ&*>Dt0Es6}$^^p5ggG
z@|edTk7Tq?6P9c}dq=XD!k>b(8K2zavfrcpIHm40!Hvf~z9EDfU!&_U&WFoo2lRlt
zujKC@SA0XJMBnlL;=5oc*M(c<TMqzN{PtSKnO0&@_k_%ka{!<M^aHCr9tyF^#ny0U
z%DdSEk%8IyaKY#y*L@!P@ok|#h9ND>$Q})0WHI`wh%n<96`L0!mB&23EoOg}57sK{
zNFTioHD(c!3SRa&x;<tBCy~(B-cD{rG8}y}5zsCB*=ut4qX6cr{Sr0UJMx%S9uKPY
zo>VhKRfx|tcs?-95_5{Ug=)*fL(RM?)BPE*-ZH+zJmZhKoAaNG`2}3TGp_f_wDJtN
zy<G0*{O1Cm-_42U>3aHoe!bp|e>&#zjo~xLt#$}2`HF71DGLAKL|$VB+4niRJ!TTq
zAj?<-vu4&#T3e-ypUHKEDE39#Ir>zwmA?%2=pIM6$4ppZ>WWfJD;9>ifOC1s@)bem
zQj)LVJ$RMJ!}f|*L}8UoZ1SQeOPX!(S`S0L`R#;;3R9#U?!e>QV%Cb!CMzosL@Ww%
z@ir{NVz-h?6j?;R%hByIld@K2wgFD+j-`fhi=JN>qhd$idQ$Ls6WBW*^Z16abDgG2
z!e@iS8H%g0JOg!kU-jdo;GAO~e>~J*8MVk|sfBFhGSe(r1!koh65oB<UOrYpkH;r|
z9J4ItLs93d_mBU8!c}a3T=B<)16#FQE=8}xfZ2CH0iS#Sc&WxG)qO?&A@(`CJ!YEm
z_y=nhQ8>HLU4Z0)i^64*wCr<qd(4!lhwSs7;UI&kuFB87e`NC>d09FNemQ<QACEL6
zZp;ettRyey_ZEIUTd=I$$&X#PO_>yr-|iQb?tTHp5eR_c%Y{Aus)V(A!%7wk7~U^1
z*HMb)4u#O;p~8~|Vk_l6n~OJszjN;&ea5A4(1ZhzZ;6zBCPWL7fJR(Z?7&eCDAv7y
zpp<~oY6<Csb)ds-G57w_MgLN#nZfqT1JN%vp80bJKfWasCu!${>-|}J|JdPPodJ~Y
z3AbmwUQs&B#B&kuf6LEotGl2)tC`&Qp3{%c1Oea>JTBOqoOd$6_WoI8bd|ImP6(SK
zv)w>a|M40&OUJb}XT_!WkGfFgLQepPdSY9q`!Dx&O#pDBe?o$@;r{Hp0G@&LhF5^b
z7{Il-KjY6Oy}6eQ2J?i|@AH4<oPKtu1pHM201|Ga#~T!T!?5-4AA0|w1aO)eb$iq-
zZwr;62mqH}oa&`AiPPSf-anbG?YO}6106mdsRX>v;~aAXploZHzV!YXb=y;#jEmh$
zcQ})6i+cTRDdn7H;-7l|<d^Fj&u=}apPdQPNm*>iaxYE*Qg#^FyY^%6pB6BpvKT#p
zCRiTma8po>Qeuro9R7h7|J3_uIlA=mJh;OxnT#>_${240aBHup!Mt3|FT5M~FTlHh
zn<tOA+tbxN<GsQg-Y=*BL|jjUX+4JX`^9zF@te=-$7gyKJPvwuNm6%mYjJ-$<9h#v
zcZ1*l<&tn~ulMJh4fhw*0&q{)6Yz?A<)6O)oPKU5*`8Ok37N-7pPk6HXZwfVKUq#*
zq6UZ91k1zIb5mr9J(p<a>&%sn%A#hWy06%kP2!<f*%X!$5XJr=H)}yrRFDi`d;b90
zlf3qFk54ELrRRp2g(vennGj#xgFiVR0{OjJzVfZ-^s_UmC1*K{HzBgx5oFYg<`2Dp
zR-u|K(I@V5bbHJMa(0+h*qvK*E}knNdjBjUauJq`KJl1U9*$&UBcdNWhy`=QWZ23y
zLPmV-{gcb|k@xA6cAnVd==PXtZq3<+G?#LUB)ptuDPMa3e5?Td?sNLtnINEp5pyq2
zQhRX<PW;sS2OfZSbCWA>4kv_7vFvGP|M6PQ#noTsYww@sf!TuPn8zQ_WGZ7W_m}f4
zPPo}{uly5ke>-zI0q>XlvwQOQzwyW1f4RH4|9xw5!tDtsnkN`@{$uXu{C+t!S(~Ds
z_2c!-d*^Z$eD3{IFZ}r8x$?c|^s_T*^Ke;sqF#D&%D%m{T`t||lk5vc_%!!on*Ev&
z|M3lxy$#hoMI!U#0?#uwo~_68!{WYjRHbZ*N=%mFQxzN0imT5Anqa3dy??w4#@(p>
zYk}hMp4b#pr<r43?`!R5{z&fq)2<cg<;s|RkE7dTCgn?1bJ7I4<pqzcC&I_xKf1@v
zAvQt&00$o57Apo^pS5#C&f42Ay?>bP4?i3@=JBne3US@wu@edk68zfxM|qXpIz<i~
zSA0XvjeS0`;;Z-8y?-(xZes1Tru>`F>1StBi+s_hpoW&Y#X^{quf2bYkO^^}(Z$I5
zxW^w3k_@RtL%HnJy0TM9a;|&-C@4==wm%f`zR%I^F_S_K-H~W>2Ts6qkem8b@1H_8
jf)=bIt>2D&{L%P7$_{?pT1~z>00000NkvXXu0mjfasyRM

literal 282
zcmV+#0p<RQP)<h;3K|Lk000e1NJLTq003zK003zL000005&1Be0002tNkl<Zc$}@2
zF^<C^5JewQP?8&Pk~J4YiX~qR=OpY6NXJT+{}x+qQdtu^ih26;=g&YH5Kn5R3_Snd
zr7vnpeM0Cg7i-^8`v5g6+KsAa(VB512xo4P(A5at>{UDgooVY)Hk5z*wCTqKJdC!_
zg`hvfF3Wg9;YQ6Y>A>oh=j+C|+H>pZW}KjOFi9)Z8V1U!c{)jER6Gfa8ut(6N~03@
z0nxfR+I8efTJ1Z?lGYqGf-cv-H>l$?_sY-Rt;`3(o~!9}pq5tVWf`xiGHRxbplQ9L
g@#L=92;Hjc7p?ky_+P$4aR2}S07*qoM6N<$g7ZRu5C8xG

diff --git a/data/options.json b/data/options.json
index 4daf351..3d68da4 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": 2.0, "master_volume": 50, "music_volume": 21, "sfx_volume": 58, "user_name": "Player"}
\ No newline at end of file
diff --git a/source/api/components/rigidbody.py b/source/api/components/rigidbody.py
index f13a5d5..75cc1bb 100644
--- a/source/api/components/rigidbody.py
+++ b/source/api/components/rigidbody.py
@@ -117,7 +117,7 @@ class Rigidbody(Component):
             self.acceleration += GRAVITY * self.asf
 
             self.velocity += (self.acceleration * scaled_delta_time)
-            self.velocity *= (1 - (AIR_FRICTION/PTPF)/self.asf)
+            self.velocity *= (1 - (AIR_FRICTION/PTPF)/max(self.asf, 1))
 
             self.parent.transform.pos += (self.velocity * scaled_delta_time)
 
@@ -188,14 +188,14 @@ class Rigidbody(Component):
             angle_of_impact = abs(normal.dot(self.velocity.normalize()))
             # Calculate the velocity magnitude
             velocity_magnitude = self.velocity.length()
-            # Adjust the friction based on the velocity and the angle of impact
+            # Adjust the friction based on the velocity and the angle of impact 
             adjusted_friction = other_collider.friction * (clamp(velocity_magnitude / (500*self.asf), .2, 1)) * (1 + angle_of_impact/10)
             reflected_velocity *= clamp(1 - adjusted_friction, 0.5, 1)
             
             # If the other object has a rotation speed, calculate the angular momentum
             if other_collider.parent.transform.do_smooth_rotation:
                 # Calculate the angular velocity vector
-                angular_velocity = normal * (other_collider.parent.transform.rotation_speed*max(self.asf, 1))/(PADDLE_COLLISION_DAMPING * self.asf)
+                angular_velocity = normal * ((other_collider.parent.transform.rotation_speed*self.asf)/PADDLE_COLLISION_DAMPING) * (self.asf**(1/2))
                 
                 # Add the angular momentum to the velocity of the ball
                 self.velocity = reflected_velocity + angular_velocity
diff --git a/source/game/scenes/main_pinball.py b/source/game/scenes/main_pinball.py
index a76e0bd..0d33567 100644
--- a/source/game/scenes/main_pinball.py
+++ b/source/game/scenes/main_pinball.py
@@ -114,7 +114,7 @@ class MainPinball(Scene):
         scale_strength = .25
 
         self.add_gameobject(Plunger(self, V2(width - self.ball_radius*3, height),
-                            V2(width, height), impuls_range=(int(1300*(asf**1.3)), int(1400*(asf**1.3)))))
+                            V2(width, height), impuls_range=(int(1400*asf), int(1600*asf))))
 
         self.left_flipper = Flipper(self, V2(300*asf - 130 * asf, height - 125*asf), 30)
         self.right_flipper = Flipper(self, V2(300*asf + 130 * asf, height - 125*asf), 150)
-- 
GitLab