From f69f5d0e5fb0b5102da8f0358794aff44ce211e2 Mon Sep 17 00:00:00 2001 From: steev Date: Wed, 13 Dec 2023 18:05:01 +0100 Subject: [PATCH] added labels to ui --- .../Classes/Objects/Cards/MonsterCard.py | 2 +- .../__pycache__/MonsterCard.cpython-311.pyc | Bin 5118 -> 5129 bytes Game_Client/Classes/Objects/World.py | 39 +++++++++++---- .../Objects/__pycache__/World.cpython-311.pyc | Bin 4847 -> 6278 bytes Game_Client/Classes/System/App.py | 29 ++++++++--- .../System/{ => Components}/InputHandler.py | 0 .../Classes/System/Components/Label.py | 46 ++++++++++++++++++ .../Classes/System/{ => Components}/Window.py | 8 +-- .../__pycache__/InputHandler.cpython-311.pyc | Bin 0 -> 3487 bytes .../__pycache__/Label.cpython-311.pyc | Bin 0 -> 3655 bytes .../__pycache__/Window.cpython-311.pyc | Bin 0 -> 3455 bytes .../System/__pycache__/App.cpython-311.pyc | Bin 5795 -> 7099 bytes 12 files changed, 103 insertions(+), 21 deletions(-) rename Game_Client/Classes/System/{ => Components}/InputHandler.py (100%) create mode 100644 Game_Client/Classes/System/Components/Label.py rename Game_Client/Classes/System/{ => Components}/Window.py (88%) create mode 100644 Game_Client/Classes/System/Components/__pycache__/InputHandler.cpython-311.pyc create mode 100644 Game_Client/Classes/System/Components/__pycache__/Label.cpython-311.pyc create mode 100644 Game_Client/Classes/System/Components/__pycache__/Window.cpython-311.pyc diff --git a/Game_Client/Classes/Objects/Cards/MonsterCard.py b/Game_Client/Classes/Objects/Cards/MonsterCard.py index 0eb15c5..fb61b03 100644 --- a/Game_Client/Classes/Objects/Cards/MonsterCard.py +++ b/Game_Client/Classes/Objects/Cards/MonsterCard.py @@ -3,7 +3,7 @@ from typing import Any import pygame -from Classes.System.InputHandler import InputHandler +from Classes.System.Components.InputHandler import InputHandler class MonsterCard(pygame.sprite.Sprite): __attacks = [] diff --git a/Game_Client/Classes/Objects/Cards/__pycache__/MonsterCard.cpython-311.pyc b/Game_Client/Classes/Objects/Cards/__pycache__/MonsterCard.cpython-311.pyc index 4cb3379d55121f4c4a950852c80e88681d1f60ed..b27884378f58fc43f97a46cd247c72cc3241b1fa 100644 GIT binary patch delta 81 zcmeyT-l@U2oR^o20SLIRRi?6VZsZdamQr)hNh~f-E!GRJEG|jS)pO3zEy&MH%_}LM YY%E+XWPgDH1$|(dyiZtc@;PAx0O%$fasU7T delta 64 zcmeCw_@~adoR^o20SMAhSEl~t*vKa)%rEVnlUQ7wTC5jbSzMBuJK0XSSis~00}7ga HP}l list: return self.__boardFields + def getLabels(self) -> list: + return self.__labels + def getCardWidth(self) -> int: return self.__cardWidth diff --git a/Game_Client/Classes/Objects/__pycache__/World.cpython-311.pyc b/Game_Client/Classes/Objects/__pycache__/World.cpython-311.pyc index 312f5362399742eda4bf3d92462a7cd8c49164cc..c6f2cfb9114d21d1192c904535b28ba10e526eb7 100644 GIT binary patch literal 6278 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 F{|CZ|dYS+L delta 1831 zcma)6O>7%Q6rQzr*T1_?;@@?Yzc!`XKof%akwTh;5@<`55H$@Yn?IS%I=Ho+Xq+Na zZPX$Hgi}dJq6oE+Q)%f1#DyDhK;pn*S27aXQVFT2oCr!!hy!oNPT~Y4I?{ae-Z$@? zc{B5N-|zn8i28-11QE3FeqJ^ogx1xR`80Uf5k^?ZBZG~eyio8M9szmKNrb(t2#dEo z2;GHVX@(aIV@Q`anLDBjZt%oHhTxZTW**N~WBA~!I@_!38`@>;F(gwqMeOYb9*c&L zdlL6#!_Pe*_hL9`$~Xi)Y|2>~E31+b!0IY8f;eJ&vmRWxDjFfMWw7hP4p;34uoWDI z^y02`Zh_>n8=d7NT@)00Qy2<7At1E*7@USa6xz>;H3_p5dZBM;0j{HYWTDyJX-fbP zq?KlQz}vkM%L^V;@@An8k*iJt+xc@hS2)i*BY^7v$?VDj8_(G^Q( zK1(7jqK-j5K#3(s{oZVpDN8*7SJ1CbEo)-gpQcy6L!MJI{mt7Y2sA9}KJgL+tcdhU zsmmuZ8_Sf4r*~~DsL^|3l8y$oD(9nlNu!d)xweYNcS%BssjUOgzT&67a#z5Q12||& zI7COo&Gb`X!oVmNyw@(H;t0g}YnVD<6w6m(+Lzerstx;Y!L8oiz1czZkud%7N`M_h z<|$e9f|REBDp~GOKL8bydE$XeQ~=l0bg)GTGi43;cCZOv9#YpEmZCem!tnz8_vIHB z!BH!?m$n{z1V!8m)hH7Gs|dgz;TlEq5fpJt;fl87pI`*Vof_F3f}?C6X28mDvzY-e zFz&(|A~*0-(JU+vnsXOiiJMebPWj}~d}i4sbXa-s#UQUqS6*D6hgx)fubFd83*;$Y zq?MXw)$7Wc#YMA-2`h0|BAMd6>3T~`L{~|iwyVSRT{TX>RG-mQ2x#5cNCGGlqkpTK z!fW~iSmX-YlIfwyRr+D%7|liw3BS|rx*so#<$+OqY}^?bwoypsJ!ATd(>Eh1PM-Q$&Vc3&X&cu|{H|^*%AaS%pSu1?= zRzr^}iM1hg82O=yXU8TRo zdr!0NU2m?qwD)r&Nfr}hFu>phgF%2hh_6+7QC47tfe5|y0MSCCk$#@&9+0HwEd;O; z<-=EFeE6y2ak~c8Mrqu$g=(;eHYS_sSn{~S^5#3}B6*zNOt$OXBdqZE68X#DTUfvs k^JX6zh6#50r8BfHb@;h0v0G@{LjQ(88Tar%CitrV06O-P82|tP diff --git a/Game_Client/Classes/System/App.py b/Game_Client/Classes/System/App.py index 930e0a5..3189b74 100644 --- a/Game_Client/Classes/System/App.py +++ b/Game_Client/Classes/System/App.py @@ -2,8 +2,8 @@ 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 +from Classes.System.Components.Window import Window +from Classes.System.Components.InputHandler import InputHandler from Classes.Objects.World import World class App: @@ -23,7 +23,7 @@ class App: self.__inputHandler = InputHandler() # game word - self.__world = World() + self.__world = World(self.__window.getScreen()) self.startGameLoop() self.onCleanup() @@ -33,8 +33,19 @@ class App: # create sprite groups self.cards = pygame.sprite.Group() - testMonsterCard = MonsterCard(pygame.Vector2(500, 850), "Assets/Cards/MonsterCards/testmonstercard/", self.__inputHandler) + # ui trial assets + testMonsterCard = MonsterCard(pygame.Vector2(500, 1050), "Assets/Cards/MonsterCards/testmonstercard/", self.__inputHandler) + testMonsterCard1 = MonsterCard(pygame.Vector2(600, 1050), "Assets/Cards/MonsterCards/testmonstercard/", self.__inputHandler) + testMonsterCard2 = MonsterCard(pygame.Vector2(700, 1050), "Assets/Cards/MonsterCards/testmonstercard/", self.__inputHandler) + testMonsterCard3 = MonsterCard(pygame.Vector2(800, 1050), "Assets/Cards/MonsterCards/testmonstercard/", self.__inputHandler) + testMonsterCard4 = MonsterCard(pygame.Vector2(900, 1050), "Assets/Cards/MonsterCards/testmonstercard/", self.__inputHandler) + testMonsterCard5 = MonsterCard(pygame.Vector2(1000, 1050), "Assets/Cards/MonsterCards/testmonstercard/", self.__inputHandler) self.cards.add(testMonsterCard) + self.cards.add(testMonsterCard1) + self.cards.add(testMonsterCard2) + self.cards.add(testMonsterCard3) + self.cards.add(testMonsterCard4) + self.cards.add(testMonsterCard5) while self.__running: self.__clock.tick(self.__FPS) @@ -44,7 +55,7 @@ class App: # render world self.__window.drawWorld(self.__world) - # update sprite groups + # updates all cards inside the cards Spritegroup at each step the gameloops does self.cards.update() # draw groups @@ -58,6 +69,8 @@ class App: # handles incoming event queue def handleEvent(self, events): + # TODO: fix bug that stacks cards when dragging them around + selectedCard = None for event in events: if event.type == pygame.QUIT: self.onCleanup() @@ -65,9 +78,9 @@ class App: mouse_x, mouse_y = pygame.mouse.get_pos() mouse_pos = pygame.Vector2(mouse_x, mouse_y) for card in self.cards: - if card.rect.collidepoint(mouse_pos): + if card.rect.collidepoint(mouse_pos) and selectedCard == None: card.setDragging(True) - + selectedCard = card # card.setOffset(mouse_pos - card.getPos()) for field in self.__world.getBoardFields(): if field.getRect().collidepoint(mouse_pos): @@ -87,6 +100,8 @@ class App: if event.button == 1: # Wenn linke Maustaste losgelassen wird for card in self.cards: card.setDragging(False) + if not card == None: + card = None # sets the running state for the gameloop def setRunning(self, running:bool): diff --git a/Game_Client/Classes/System/InputHandler.py b/Game_Client/Classes/System/Components/InputHandler.py similarity index 100% rename from Game_Client/Classes/System/InputHandler.py rename to Game_Client/Classes/System/Components/InputHandler.py diff --git a/Game_Client/Classes/System/Components/Label.py b/Game_Client/Classes/System/Components/Label.py new file mode 100644 index 0000000..cdba201 --- /dev/null +++ b/Game_Client/Classes/System/Components/Label.py @@ -0,0 +1,46 @@ +import pygame + +class Label: + rect:pygame.rect + image:pygame.image + __screen:pygame.surface + __text:str + __pos:pygame.Vector2 + __font:pygame.font + font:pygame.font + __name:str + + def __init__(self, name:str, screen:pygame.surface, text:str, pos:pygame.Vector2, size:float=20, color:str="white"): + self.__font = pygame.font.SysFont("Arial", size) + self.font = pygame.font.SysFont("Arial", size) + self.image = self.font.render(text, 1, color) + _, _, w, h = self.image.get_rect() + self.__pos = pos + self.rect = pygame.Rect(self.__pos.x, self.__pos.y, w, h) + self.__screen = screen + self.__text = text + + def getText(self) -> str: + return self.__text + + def getFont(self) -> pygame.font: + return self.__font + + def getPos(self) -> pygame.Vector2: + return self.__pos + + def getName(self) -> str: + return self.__name + + def setText(self, newtext:str, color:str="white"): + self.image = self.font.render(newtext, 1, color) + + def setFont(self, font:pygame.font, size:float, color:str="white"): + self.__font = pygame.font.SysFont(font, size) + self.change_text(self.text, color) + + def setPos(self, pos:pygame.Vector2): + self.__pos = pos + + def draw(self): + self.__screen.blit(self.image, (self.rect)) \ No newline at end of file diff --git a/Game_Client/Classes/System/Window.py b/Game_Client/Classes/System/Components/Window.py similarity index 88% rename from Game_Client/Classes/System/Window.py rename to Game_Client/Classes/System/Components/Window.py index ee73bb9..c2669b7 100644 --- a/Game_Client/Classes/System/Window.py +++ b/Game_Client/Classes/System/Components/Window.py @@ -21,9 +21,9 @@ class Window: pygame.display.set_caption = self.__title - # set framerate - + # set framerate (where the fuck is it?) def Render(self): + # dear future me figure out what past me did! pass def setWidth(self, width:int): @@ -45,4 +45,6 @@ class Window: # draws a given group of rectangles onto the screen def drawWorld(self, world:World): for field in world.getBoardFields(): - pygame.draw.rect(self.__screen, field.getColor(), field.getRect()) \ No newline at end of file + pygame.draw.rect(self.__screen, field.getColor(), field.getRect()) + for label in world.getLabels(): + label.draw() \ No newline at end of file diff --git a/Game_Client/Classes/System/Components/__pycache__/InputHandler.cpython-311.pyc b/Game_Client/Classes/System/Components/__pycache__/InputHandler.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..67dcf95f9e31c691bfc44275a214fd7d163761cf GIT binary patch literal 3487 zcmbssOK2NMbau6?k0nQeNOmHpisJeckzgE0Nuh+$)=unHi5==Brb6lBc-M*T)u+31 z{6Q+FgjRXX{T3cHPv~#fq={GkazaU~YZhP?J9T=<G?`40nF%)?`L9 zTyxTr;lCvnguEiDsw6%pFOd1=#NgZMYpSHEX|*6pchWkACMyY72Zz(c zpg(a(f-oA$Y+9wGF@u zc@_-cTdoGXE5U9p*sBM7H@v+{E07GgA{FM9Y+amiUuc}3LM$L5m=b=>&Umfc@d94E z)kmpd?Jv-0Q6FuGtN~Hud(voYcQh)j$d<^SwDOjFj@CW;3CGQBjz;j)wMReg)8J^` zqo0^Av^g4SJomQmzGkg^^ph4c)LQ4K3-YtwvPDRd6q#xEA!O+jJ5!-LaH9$y@8|zO zdya&7K*9Y{f(X!8!<7^!4R=zwbpFCsL`1`r6h62(JVLPrgG&n6t{_20uA#AsQG+kc z=Vd9*8rg3bX+}?^DW!HGTpoJn zZ-0$sxJfdrCvKo*7_I(?WV6jVJ(2ovj#YX0WfXS&bQ^;HijnW@>n@OH+lMGGOqT+`K9o z9$N8pDqL}#D#_C-I{=MRb+N^=PmmQDY-z- zjv~mR^`=&Di^_4pYgg8t0`l6#jDw&x|!?$%uL?rx1G zU(sE3O|gsY9L+}saqluXK1ZEbB3XDu-OCj{MXrv^Q}pfN@=&f%i~JODkCS_!ivZ0G z^eEk+$zT>~Eg6L8)WnQfxNR^?Mk{0*PK-!1w{91VeSkXeEhtieLk`AUlrGSq^q?9a z&0is(Qw@I6?3T=K8XswfhjzlEHGs#BIkP~G22A8OHK<}ej@ivDc<2+&@sZpeNm-7( zGXE(p2GZ(Lh#Hi<(7|e`s}kzcLOpt@r|hfkKlH%ACRL;Tm1w^f9nj%e>>nue_Wa38 z^rRL&rAJR``%jhm&2Xd|j#t8QEqq)LAKxM#-y0N^&)3>IR^>0{FR~A^dRtFY^M$fH#|R6al7@f(Jptv#XpzfY%PyPB+iI5b*@!r--3dh|X@hF%Ly&(N2++pNRk z?RRqD*v(m}$Z8+`M}w})h&0livtX_m6*a8*rT45E#&gP9pyCl$MF3kahGA-?b%p*m eN$*DeUyYpHsQ=sIjxn&3X7D@C{rL(4UEROZb;o}I literal 0 HcmV?d00001 diff --git a/Game_Client/Classes/System/Components/__pycache__/Label.cpython-311.pyc b/Game_Client/Classes/System/Components/__pycache__/Label.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4a6f27e2a9bbe65eb49b2a9225d91299b7717c95 GIT binary patch literal 3655 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 JD+ahn{{oSV=L`S< literal 0 HcmV?d00001 diff --git a/Game_Client/Classes/System/__pycache__/App.cpython-311.pyc b/Game_Client/Classes/System/__pycache__/App.cpython-311.pyc index b2350eaecbfa3fd2d77209bc764eba8540bbe7f4..51439202bb063b26dff9d22d4c6e1f758a0418b1 100644 GIT binary patch delta 2110 zcmb_dZERCj7(VBI^>%A}+iqPux^8zLu3c~+N?|G=qjWG$bPjO?V+L8)i)?J|xVK;+ zw{9lJETo2!_lJvMG6JH8KNu5(Vxo!v{Gqo?2~86b{9!cw>EcX;gy=bU?Zy}+5`EkI z^gYjc&ilUiz2}~uZ@t>-_}FeQL&U_J$CX!RvwW zd?1_&Y{~{UWxSnPZztU0dKi_5t;{x<;`c+EZ^Rs2=36mi`n>70rZ1R2XZjY?=S^QU zeF1Lpop6hnUCc#{&?Ry$8AfEL(ZxQLd?^vvl8PD~ zQe%1N1H@Bnn5Wk;8`d!4HOxlMLh{K=rpi1Sr~!yr{mgp|?6>+S{}hnF`J;mu;+OYa zY05NrWt+Q<$heWv77?1jQDy-le>X!01gE8+i1yfpw=NG~31@=av%&4gj<_+AB-2N5 zH`Uhcq*{W8==(R~$;VRvH*xGrcP1Fg1|vo^VH`P1f~k0Nr&;wbv+7;6>YQjxmz{E) zbj(a<#9&qo8e(vnGrYl!7|MzvLk#^dq(lm2_0fL8vH6H>LN_pHhUgi zcv=_dq~h@)Ibv)v#&JSBS7@$C59yW_`k5GCq+ig*QERExQCG>+Ei3GS`&c+>Z?}sF z+$%a#uNQuFxXZ83;Ixxm=gii5U6mzGG1H+^EB8KLE7?&`DN@W*j1^qn;K4exy-St2 zs&q@Kp&Dsz%9566n6wPPI(Fb%Xp!oLAPJ~8L!b0^jdkhh5R_v|JgMbvnlh#gCzTjI zKj3GnL!!+ozUi{8$`Ei?ck~cWYbK9u3f=Vjr)@cpzkq73p#=)lJ9AQH`oxC=XJ4O} zLIo7ChhWILp7oR8Q_gH zx=>a?tcL_3Fw5n9HP?Nid0*%gPsZ1t^|c$m_FP@#T=E0GfN*sv*BG4b{_9R*E2+S& zMQwl`?jAQi7}WtU^YC|NnB)(8 zdLnXkY)I1-t!>Y7@)t1P7EO##B;xeBw(T8>#}aR<^rX%=KT-x4J>hjRS_5r_S<+o` v%XlJobWGW%j>4knxrPk}TJ_DLE@Sl<`l>3s4q;qXKo7?SlV5zqteN{CV9zHL delta 1223 zcmZ`&ZD?Cn7(VBI<>u?&G)p>N^mzO2?)$CaCO(V+Fxq3jWEoV$7f655a-36pElf#B*-jvA{g{+~>aM zeb0HH^PKbE^(U_mDWAFB4n*7Z59hU*`js-oai=g`5=Y?z_c_ej6_1I|S~J)z6RkPn zqT?})p~w%wxBL)x!+riB>=&-!x8WDzjIgqJc@drw)7%C})2u>P-V1-&eDB$-Sh%@j zH?Tu|Ze|N3G&8}2;!MCvr|xXnr?t}L6wx#tzIRUaa%2x>Yp5m7D4i(iMoA;7EXf%h z^+uzln|??aeC!HyM=-3r!ehUOdOvyXn*QbFt-W{pMmPFKYh(GEPPPy#;Bjsfp>T?$ z1B%OPU3OI*my~yv>cu;9d_#`cmYpSv1kCygQ<6aYiajrUY(#3~tG)KE>dOQyb(BD= z1gl)d12@~paRmNqk4b%WG3kYf?=3~%zDP-XL(@wJ-1a3W*daxC+V)K*sb@(&QY$ z<-3k7*6qV%1wk0F*Z2*d?}R-ev8Rb1z=4QJ^*w+wz@ZUJ|3oOg&!5U?4MQ^$ljrF_ zHlH{>qvr~XM5L)2;no;@6B-G(0n1ckk>{@4qV{_3;i|J((7oX*4pbR YUTf`5;S9zdP4sBowESED6ScPTAI_*Uy8r+H