From 8d7a67a454f11f11e1e79498adbbf4d6de4296a2 Mon Sep 17 00:00:00 2001 From: steev Date: Thu, 7 Dec 2023 22:39:34 +0100 Subject: [PATCH] for now removed card class from hirarchy and added possibillity to render sprites on screen --- .../MonsterCards/testmonstercard/card.png | Bin 0 -> 9570 bytes .../testmonstercard/testmonstercard.json | 9 ++-- .../testspellcard}/artworkjson.png | Bin .../testspellcard/testspellcard.json | 0 .../testtrapcard}/artworkjson.png | Bin .../testtrapcard/testtrapcard.json | 0 .../Assets/Cards/testtrapcard/artworkjson.png | Bin 2389 -> 0 bytes Game_Client/Classes/Objects/Cards/Card.py | 14 ++++++ .../Classes/Objects/Cards/MonsterCard.py | 43 ++++++++++++++++++ .../{System => }/Objects/Cards/SpellCard.py | 9 ++-- .../{System => }/Objects/Cards/TrapCard.py | 7 ++- .../Cards/__pycache__/Card.cpython-311.pyc | Bin 0 -> 1836 bytes .../__pycache__/MonsterCard.cpython-311.pyc | Bin 0 -> 2841 bytes Game_Client/Classes/System/App.py | 25 ++++++---- .../Classes/System/Objects/Cards/Card.py | 22 --------- .../System/Objects/Cards/MonsterCard.py | 14 ------ Game_Client/Classes/System/Window.py | 8 +++- .../System/__pycache__/App.cpython-311.pyc | Bin 3180 -> 3186 bytes .../__pycache__/InputHandler.cpython-311.pyc | Bin 1446 -> 1909 bytes .../System/__pycache__/Window.cpython-311.pyc | Bin 2306 -> 2693 bytes 20 files changed, 95 insertions(+), 56 deletions(-) create mode 100644 Game_Client/Assets/Cards/MonsterCards/testmonstercard/card.png rename Game_Client/Assets/Cards/{ => MonsterCards}/testmonstercard/testmonstercard.json (51%) rename Game_Client/Assets/Cards/{testmonstercard => SpeelCards/testspellcard}/artworkjson.png (100%) rename Game_Client/Assets/Cards/{ => SpeelCards}/testspellcard/testspellcard.json (100%) rename Game_Client/Assets/Cards/{testspellcard => TrapCards/testtrapcard}/artworkjson.png (100%) rename Game_Client/Assets/Cards/{ => TrapCards}/testtrapcard/testtrapcard.json (100%) delete mode 100644 Game_Client/Assets/Cards/testtrapcard/artworkjson.png create mode 100644 Game_Client/Classes/Objects/Cards/Card.py create mode 100644 Game_Client/Classes/Objects/Cards/MonsterCard.py rename Game_Client/Classes/{System => }/Objects/Cards/SpellCard.py (66%) rename Game_Client/Classes/{System => }/Objects/Cards/TrapCard.py (66%) create mode 100644 Game_Client/Classes/Objects/Cards/__pycache__/Card.cpython-311.pyc create mode 100644 Game_Client/Classes/Objects/Cards/__pycache__/MonsterCard.cpython-311.pyc delete mode 100644 Game_Client/Classes/System/Objects/Cards/Card.py delete mode 100644 Game_Client/Classes/System/Objects/Cards/MonsterCard.py diff --git a/Game_Client/Assets/Cards/MonsterCards/testmonstercard/card.png b/Game_Client/Assets/Cards/MonsterCards/testmonstercard/card.png new file mode 100644 index 0000000000000000000000000000000000000000..320d60d34af39518b06c3adcf397345b883d202c GIT binary patch literal 9570 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 literal 0 HcmV?d00001 diff --git a/Game_Client/Assets/Cards/testmonstercard/testmonstercard.json b/Game_Client/Assets/Cards/MonsterCards/testmonstercard/testmonstercard.json similarity index 51% rename from Game_Client/Assets/Cards/testmonstercard/testmonstercard.json rename to Game_Client/Assets/Cards/MonsterCards/testmonstercard/testmonstercard.json index f8e3476..004566b 100644 --- a/Game_Client/Assets/Cards/testmonstercard/testmonstercard.json +++ b/Game_Client/Assets/Cards/MonsterCards/testmonstercard/testmonstercard.json @@ -1,14 +1,17 @@ { - "name": "testmonster", - "image":"Assets/Cards/testmonstercard/artwork.png", + "name": "Test Monster", + "image": "Assets/Cards/testmonstercard/cards.png", + "description": "can attack other monsters", "costs": 30, - "defence": 40, + "defense": 40, "attacks":[ { + "id":1, "name":"test attack", "damage":80 }, { + "id":2, "name":"test attack", "damage":80 } diff --git a/Game_Client/Assets/Cards/testmonstercard/artworkjson.png b/Game_Client/Assets/Cards/SpeelCards/testspellcard/artworkjson.png similarity index 100% rename from Game_Client/Assets/Cards/testmonstercard/artworkjson.png rename to Game_Client/Assets/Cards/SpeelCards/testspellcard/artworkjson.png diff --git a/Game_Client/Assets/Cards/testspellcard/testspellcard.json b/Game_Client/Assets/Cards/SpeelCards/testspellcard/testspellcard.json similarity index 100% rename from Game_Client/Assets/Cards/testspellcard/testspellcard.json rename to Game_Client/Assets/Cards/SpeelCards/testspellcard/testspellcard.json diff --git a/Game_Client/Assets/Cards/testspellcard/artworkjson.png b/Game_Client/Assets/Cards/TrapCards/testtrapcard/artworkjson.png similarity index 100% rename from Game_Client/Assets/Cards/testspellcard/artworkjson.png rename to Game_Client/Assets/Cards/TrapCards/testtrapcard/artworkjson.png diff --git a/Game_Client/Assets/Cards/testtrapcard/testtrapcard.json b/Game_Client/Assets/Cards/TrapCards/testtrapcard/testtrapcard.json similarity index 100% rename from Game_Client/Assets/Cards/testtrapcard/testtrapcard.json rename to Game_Client/Assets/Cards/TrapCards/testtrapcard/testtrapcard.json diff --git a/Game_Client/Assets/Cards/testtrapcard/artworkjson.png b/Game_Client/Assets/Cards/testtrapcard/artworkjson.png deleted file mode 100644 index 9955a0cbf1966ebc0956bef3cc107754ed7011da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2389 zcmeAS@N?(olHy`uVBq!ia0y~yV2WU1VEn?t1{8T15PXG!fm6oQ#WAE}&fA-TE1d#G zTrbu>Wi@D!FEF zConP`VG(0+@EK){2Eu4c7|jI(oeSQ)FW6NT{NVMq>&1EhyA>OJBl@P7nyP-teg8c9 z-SfS&4Za^-IT!?lfhD0~BkL$*G!RBp!e}nQ%mqtl{$%KP6?(pDVM0Byxy0b<>gTe~ HDWM4fLIJZ> diff --git a/Game_Client/Classes/Objects/Cards/Card.py b/Game_Client/Classes/Objects/Cards/Card.py new file mode 100644 index 0000000..7deb9f1 --- /dev/null +++ b/Game_Client/Classes/Objects/Cards/Card.py @@ -0,0 +1,14 @@ +import json +import pygame + + +class Card(pygame.sprite.Sprite): + + + def __init__(self, pos:tuple, assetDir:str): + + if assetDir == "": + return ValueError.add_note("Card: imagePath cannot be empty") + + + diff --git a/Game_Client/Classes/Objects/Cards/MonsterCard.py b/Game_Client/Classes/Objects/Cards/MonsterCard.py new file mode 100644 index 0000000..e6b6054 --- /dev/null +++ b/Game_Client/Classes/Objects/Cards/MonsterCard.py @@ -0,0 +1,43 @@ +import json +from typing import Any + +import pygame + +class MonsterCard(pygame.sprite.Sprite): + __attacks = [] + __name:str + __description:str + image:pygame.image + rect:pygame.rect + + def __init__(self, pos:tuple, assetDir:str): + if assetDir == "": + return ValueError.add_note("Card: imagePath cannot be empty") + + pygame.sprite.Sprite.__init__(self) + + data = json.load(open(assetDir + "/testmonstercard.json")) + + self.__name = data["name"] + self.image = pygame.image.load(assetDir + "/card.png").convert_alpha() + self.rect = self.image.get_rect() + self.rect.center = pos + self.__description = data["description"] + + for attack in data["attacks"]: + self.__attacks.append(attack) + + def update(self): + pass + + def attacks(self): + return self.__attacks + + def getName(self) -> str: + return self.__name + + def getCardSprite(self) -> pygame.image: + return self.__cardSprite + + def getDescription(self): + return self.__description diff --git a/Game_Client/Classes/System/Objects/Cards/SpellCard.py b/Game_Client/Classes/Objects/Cards/SpellCard.py similarity index 66% rename from Game_Client/Classes/System/Objects/Cards/SpellCard.py rename to Game_Client/Classes/Objects/Cards/SpellCard.py index 6f918e1..7a5fd12 100644 --- a/Game_Client/Classes/System/Objects/Cards/SpellCard.py +++ b/Game_Client/Classes/Objects/Cards/SpellCard.py @@ -1,7 +1,5 @@ - - import json -from Game_Client.Classes.System.Objects.Cards.Card import Card +from Classes.Objects.Cards.Card import Card class SpellCard(Card): @@ -10,8 +8,11 @@ class SpellCard(Card): def __init__(self, asset:str): data = json.load(open(asset)) - super.__init__(data["name"], data["image"]) + Card.__init__(data["name"], data["image"]) self.__description = data["description"] + def update(self): + pass + def getDescription(self): return self.__description \ No newline at end of file diff --git a/Game_Client/Classes/System/Objects/Cards/TrapCard.py b/Game_Client/Classes/Objects/Cards/TrapCard.py similarity index 66% rename from Game_Client/Classes/System/Objects/Cards/TrapCard.py rename to Game_Client/Classes/Objects/Cards/TrapCard.py index 9a30a36..ddbca52 100644 --- a/Game_Client/Classes/System/Objects/Cards/TrapCard.py +++ b/Game_Client/Classes/Objects/Cards/TrapCard.py @@ -1,6 +1,6 @@ -from Game_Client.Classes.System.Objects.Cards.Card import Card +from Classes.Objects.Cards.Card import Card import json class SpellCard(Card): @@ -10,8 +10,11 @@ class SpellCard(Card): data = json.load(open(asset)) - super.__init__(data["name"], data["image"]) + Card.__init__(data["name"], data["image"]) self.__description = data["description"] + def update(self): + pass + def getDescription(self): return self.__description \ No newline at end of file diff --git a/Game_Client/Classes/Objects/Cards/__pycache__/Card.cpython-311.pyc b/Game_Client/Classes/Objects/Cards/__pycache__/Card.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..96ec11926dbd7af36a3006f61ab9b5f62ced4a06 GIT binary patch literal 1836 zcma)5L2DaF6rPcG<&|Vvb(A!*y^iHV(h3uYQkp|ZLlWC{?Gz`VI0qrvt~C=|%6g^F zjty2_P$36XT*$!?A5!qijqxAoU+7IT0*i$}pybe-i*w4U@9k=3t4^V_%bWMUd9&}E zdEfq)NW=(?KRy@yd5DldF$jj*c8h>^& zho2}+eWv6z76CuRdcco@e`*Jy8lW*21qLx!nJ@)&;|5NKVVld`?QaJKfU*@)l-vzh z%8sjF|-Q4~4{fyzh)-4T2Mg^2zTa8P5*b_oB%fSg zse|qWjp+K=I_drnB{Ff6Q0fVM*&lcWnTD$ncJJ(tehjaNnKIDXv`&m@5Ogv1go7(P zomxR2&QMD|TWcqNIw$aV!PyT20u_6MfDvd}WX>hk5p37ZbaB~Snbq}f7ifJj>inqd^}qBIOw@jqylP39`)3bzGz##KE|ZlX}OSGkaeX;qd?fg;H$ zuHta(iNG5Y8YU~ul%|8dO~ZJ9f8u6--r>T@18csTpXAO{S+3+C*jCZz#-oYp{4|g< zCafa2Wq!g!K|1*d3ngBVP9E>Xx8s#Hft{`<5E~CTW9ytPFg5Zfo_a2RzI{Y!be6tO z4Iiei9;B|;KmDeWnrWtH>b)~>wZ6?nQ_~N%D+k(@9oEpsn%Y=h8+)5fZLa-#etW5& zxzo6Or!jE1IdHd;yw^$pKJKpQvLp!>FSt!^VX~9{3sB42_5W@doR18Bpl*P7+%V16y zO+Xne=PRaqE+~D1UBVrxeUCshnXYSTkHK6f?t;Qlq@b{vVJw%~iiLi!VSK-0TJ4pv zBZZqZ3{Ui?EP~7pL-ZjVJe;e_m5RkZ35XFyN5Sk7uZDLs0yXCu6s_|MnA)kQ74NIf z)@Fa2ZS`N=((B4FybWdeNQtSB>GqdL1m{;@`11$sC8`c>r$Ail(7#QDs-xShFV_(t z{ZHdFMUoj+oI|eO;gaZ~3Vi;bp@*IG&h%cp4;5-C#6sDB6NWA7fEt05t c&r#$&1p;Ty#*NLdn(>jpap~O$*1d}V0GIlZMgRZ+ literal 0 HcmV?d00001 diff --git a/Game_Client/Classes/Objects/Cards/__pycache__/MonsterCard.cpython-311.pyc b/Game_Client/Classes/Objects/Cards/__pycache__/MonsterCard.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f1a4275eb0932918781962e83726e043547e651d GIT binary patch literal 2841 zcmbUiO>Y}j@U6XeHvWi1Y=11D02Q%}t7dY!e?3w^tu&$l!4=FN)8(-Uo!r%v%II z_9{9S$YU=dPvK{;te;9NB<=ef*-Tmz-pl$%zN@s5W8z>N*hhqstVBuHbCax+te45m zN2QCPu_%v4`HMr20nmE8GQ}m6QAT}inEIJ~Tc$$~grRdy^D&Y-CNs=6yKM8Y`E1dEVwAC3tHb9kNkv~3L3gPRX{M>= z?;7bb5%@+ct+UTKFLS6@N>#AVguk+}iskM%D!hRFij5UjE$9VPRfTN3DU~%U(7)_n?g}&Rn&nFFx?U>iO#OQCYVInW zNL?%yzmE(KL?5;A~pe<#-t;{!-`4^FBedE{I z&YfoZQfuZ?YvOWy;&LnUX*=@imi&Bta_8gi(w1BgK8sIn=l0^M-FT|;{U7tKxlda0 zg?4;lFMe$|eytVHwBs4r7wE)}Z7=V|=5}LqtysDpOM`H@Gc|*#tsLu2CmUzl)9-J| zZDkV8pWiNH*rzP8^?4^WTF>l-lDnZ~Bh?C}+o5#RdiTA~rUN)K$@iuYFi2a|46h&m zP*%tjDf0vXKLHX0^$C6wpzyC(;PO~?%$-qNHiKKSARwPgXiMhr0R4JD*iJAtNfEHU zRtTR3DlPG8Kzt5>%Pq$bs!_MkZt)~>BUTnTg`4=XsZ3jbg`YEXo$LSKztsW*{>2cK ze+Ij;FNUu0-ToMUXeyI$c6M>Bzmu@>?WP?}hzNsktan>oop7h7Pi371yUt2bJCbNB zi8qVRYW5?6jDR=jQ|BMFIyn%DOLq$M~OuLJy&ZwA>e0Cs98ih`*@0IKB9y*``_mzT(h2ic~*j`j)I4&?KADM)Js(T`x?C!`hN-taE$-} literal 0 HcmV?d00001 diff --git a/Game_Client/Classes/System/App.py b/Game_Client/Classes/System/App.py index ff6efe6..d0a0d14 100644 --- a/Game_Client/Classes/System/App.py +++ b/Game_Client/Classes/System/App.py @@ -1,6 +1,7 @@ import pygame from pygame.locals import * +from Classes.Objects.Cards.MonsterCard import MonsterCard from Classes.System.Window import Window from Classes.System.InputHandler import InputHandler @@ -9,35 +10,41 @@ class App: __window:Window __running:bool = True - __player = pygame.Rect((300,250, 50,50)) + # __player = pygame.Rect((300,250, 50,50)) __FPS = 60 __speed = 5 __clock = pygame.time.Clock() - def __init__(self, width:int=800, height:int=600, title:str="default title"): + def __init__(self, width:int=1280, height:int=720, title:str="default title"): self.__window = Window(width=width, height=height, title=title) self.startGameLoop() self.onCleanup() def startGameLoop(self): + + # create sprite groups + cards = pygame.sprite.Group() + + testMonsterCard = MonsterCard((500,500), "Assets/Cards/MonsterCards/testmonstercard/") + cards.add(testMonsterCard) + while self.__running: self.__clock.tick(self.__FPS) - #temporary refresh - self.__window.getScreen().fill((0,0,0)) - pygame.draw.rect(self.__window.getScreen(), (255,0,0), self.__player) - - self.__player.move_ip((InputHandler.getInputAxis()[0]*self.__speed),(InputHandler.getInputAxis()[1]*self.__speed)) + # update sprite groups + cards.update() + + # draw groups + self.__window.drawSpriteGroup(cards) # event handler self.handleEvent(pygame.event.get()) - # emits update to the game pygame.display.update() - # handles incoming eventqueue + # handles incoming event queue def handleEvent(self, events): for event in events: if event.type == pygame.QUIT: diff --git a/Game_Client/Classes/System/Objects/Cards/Card.py b/Game_Client/Classes/System/Objects/Cards/Card.py deleted file mode 100644 index b25416e..0000000 --- a/Game_Client/Classes/System/Objects/Cards/Card.py +++ /dev/null @@ -1,22 +0,0 @@ -import pygame - - -class Card: - __name:str - __artwork:pygame.image - - def __init__(self, name:str, imagePath:str): - - if name == "": - return ValueError.add_note("Card: name cannot be empty") - if imagePath == "": - return ValueError.add_note("Card: imagePath cannot be empty") - - self.__name = name - self.__image = pygame.image.load(imagePath) - - def getName(self) -> str: - return self.__name - - def getArtwork(self) -> pygame.image: - return self.__image \ No newline at end of file diff --git a/Game_Client/Classes/System/Objects/Cards/MonsterCard.py b/Game_Client/Classes/System/Objects/Cards/MonsterCard.py deleted file mode 100644 index c0d98e1..0000000 --- a/Game_Client/Classes/System/Objects/Cards/MonsterCard.py +++ /dev/null @@ -1,14 +0,0 @@ -import json -from Game_Client.Classes.System.Objects.Cards.Card import Card - -class MonsterCard(Card): - __attacks:[] - - def __init__(self, asset:str): - data = json.load(open(asset)) - - for attack in range(data["attacks"]): - self.__attacks.add(attack) - - def attacks(self): - return self.__attacks \ No newline at end of file diff --git a/Game_Client/Classes/System/Window.py b/Game_Client/Classes/System/Window.py index 9cb1f25..3c3d295 100644 --- a/Game_Client/Classes/System/Window.py +++ b/Game_Client/Classes/System/Window.py @@ -20,7 +20,6 @@ class Window: # set framerate - def Render(self): pass @@ -34,4 +33,9 @@ class Window: self.__title = title def getScreen(self) -> pygame.surface: - return self.__screen \ No newline at end of file + return self.__screen + + # draws a passed sprite group to the screen + def drawSpriteGroup(self, group:pygame.sprite.Group): + self.__screen.fill("grey100") + group.draw(self.__screen) \ No newline at end of file diff --git a/Game_Client/Classes/System/__pycache__/App.cpython-311.pyc b/Game_Client/Classes/System/__pycache__/App.cpython-311.pyc index 773e635a3d5206383351c2bdbc8f00c80318d0c4..f0eeecc9854f70695c9e80c00176bd2bdf25e2e5 100644 GIT binary patch literal 3186 zcma(TU2oe|^xBS7r?s8*YqVVp?Me|DTRT34#Kfn%5hjfmXa`aVv$9-obLTqY+F@!H zq=5QRrbt5wQ64~wgczXlz$1@{UywwR8d)G!0v`GnG?37qIOjSENsC}N&bjBDdwlQt zzWz$n`U#99rn2=wPXpc|}xw8t$4xxk!Hc8?v+QKT%k}a-FNl8FFWQW$}q|9;I z4zKqm`vfAA1fk(ALi=usgxrRIFp>%tR!CggM{+4H_`-1j121PC*E88-no%IbZ&(h^ zUI$D)=j8I>&Q*}#DMya+%k};|S9Hdb*d|9Ni ztx$4^4gzPG4uO>;zVt#a=c@)l!?@0kTJ^PnWO>K2oGbgN+rEr|0Nk&DtL|#lyqwP4 z-n3_Vw&}~)E$UtM!&gn~%2m&oIXBae5^9R?OYpz51z?AG0!*z@5DH>J`c}9F>$g#c zj{-3|G6hoZ#HYQEbFUu+0&<=A|4WV%uw7h=ODqOrY!JZ^fOv?Zo-6{u*IX~nyhM84 zJfF?x{7BYWw9T}W&&5N2$TjWD2VQp3+-Vqh7Z*>bF1RLhQ;;&|JE=3Kd(F${Qp=8Q zIi|6?m`LHa#-eSRj+a`r)2?f}sg(^7Ur#|O=5rgqVi=ZVd4{p6BBxEEn(p%eisa|9 z`^y);d-8|T%2=X0mZ*;!|P5bp|JJNe;#Dp0Yv#NHJPLK#mxGz#J^IO%rhGz{q) zhJ+9HB~Z``f>G`|qs=2Iue7N{dkJNX?4fZujsC9y3&NqjNm)I#F)(_(sI?`^dK>GW zd-XVYLeEao_IvkiQOAqleSzuEOF&wRi~E0ox7ktHZ}a#IkcXbTfKAR_=<0axf@iwk zde8zhu(}YB`QhBg706;g?B@uD+C}lwlL|2ZCObv9plkbfmNi4t%o~ zeYi;kZKe?$+0j4JtFh^NY`PMg{;MgsrMYALzSdRO;~}(@dk7N;Jp?xrV8K9}*a^Vn z0?+ff$TN{~t?88$;uR}ixVlK7>uwZ-|dbhp}zaUhd4hYK~MNR_& zA3HsYc&K7){1c?!PJ$mk{K9(?e2rDv3c=fX%LDzfgj_tZRVWygO$~MJTzPo1I|cw% zy&qNmSY1{Q@S|1$q%a_*7jOWht zem~#UID;lW+LjAGOy+}c-XK^<53F^61+y@m&ArN=LkxQlclTZ8=^z1~WoLkgDd)Zq zpeYH0&>&io{~F|IrTy%Yrz*WqgFIa6eH!G6O7GJQKQ4f44ujv3_s731a2@{!zq78d literal 3180 zcmb6bOKjW7btsXtY>y;=^_ojX5PGceDi)YpCu9l1mGW!D||sBt2~4ry`fjv ztm|c+Y1~-qF7leb?qL4~ban_QC4rGr@H`-tl5CU>@Dv+_kMg1A7)xwPrD2xbBBc?Q z;<4oj8`=^}qih%`X*L2IPP@@-)v8Msz>4zF+wOv!@Q22luB-YTSyX30zrDBctGyop zG6u1Sd)WiGkiA?K(67LjZxf6!m)A5aXQ`IPUFo69th;XPE?4i|wOq-gF7;doO9`%r z)ntDQ&h@Rkg2v1GT2&TZ(d63lk;Nu1%>leE z6fQ5`GPz+cnil5|7T@RQJ*!e(ys2xd&XtA2>>`TI6*QIW)?z^`nL)wuQI(yOs%X4cNkI+@vRv7Tth>27?y6(6_b z6Ha`h8J_^kACrGb+VPAN&oq1QKFA>V)X3bJ_cSTN>c9B_ZLJAflF ze>m9DH7jTz4;uKVV-R*`BX*1d2uwIC*GeAn9VA<$|A2bX`>r~$2(0ib6UqpOr?;bE zu7Qbi46N({X(dSP@IG1efC>H<>}CUO^sUy5|9gG7@(Cnlt5i?7#!#uNERlL2lu=*HPVoXm`}$bEL9-&nUI`xZ$V?M*E`%ET@CgMrXLG0ikQ}3 zYD<{fsLBD7qkI1i5xl8AjA;3Uf#Ko~`o(Zbt1R7fMN0+T?~^|G#k^k=`tNXSe#zim zcg1B@)7)5f{SKtED>9?}&=n27Wc6xnRV%M^!|hwGJm892H8AL13IeZ`wwAiFY{0qpMYSF1ruQ>TDcK)i9zxwjNlfU+A`pX$RKlk_IZKt?m7d5A- zHCJ_~SZP)*r@CnuH*NaJp^uvM(Z6G4Joj{BH!HWYvYkEWWY2X-Byrk9kEQl#=FgWu zJ@LuO*62)!2*an_>CDdDpXTiJw3D80rlUrxum^|z)cfjPh303Vtjmy9b_oI*+R#1-#SqYRsnn&H^@B>I1Oavnj z$QAFesTSyuVP;~QbOQ_{X(NHU1_$B{vS9R~s;5xZ*YRY1@b`&&V%vK>tuZIDyct+| z3@keG7@l%EiZSTd`CI#EFo+9Xl)o;Eqz?7eTu_nYCjO)fUWZzpy}fDIl; NUm@*Z-!S26^fe1jlb!$o diff --git a/Game_Client/Classes/System/__pycache__/InputHandler.cpython-311.pyc b/Game_Client/Classes/System/__pycache__/InputHandler.cpython-311.pyc index 8191c5946d04b540c76f44bce92382ce83193cd4..d1c7b3bdcc2c50f09272154a0260181a3b3d07dd 100644 GIT binary patch delta 432 zcmZ3+{gsbzIWI340}u%BE=Ub!-pFUe$QVD_o3V%K4AbPBj4@2bnv*9o*-oxt5}Rzn zx`lu^DYw|Yj9gV%i_ld@?4S3C%vZ!qvSfZ+!g V5k} zg(XTXMKqW}Q+%^4qdpU3{N_?-DQ3f4tm#Ghr3J}MFttFM8HzvW0U6U7Y8bNMk_#9o z8#0NAr7$jIWMEhg#1O#9P{X)@2`Hsdk1mnI0JM|I?-qM{QEH{3fq^D-5f4z)Eta&* zoSa)MDMg9pnoLC!K%pWnAW;l*h=M|qBuEWENH(~jD6=Hh9puU?vGB~il>Bl%G;s}( zMk656z~Fg