import pygame from Classes.Game.BoardField import BoardField from Classes.System.Components.Label import Label from Classes.Game.Cards.MonsterCard import MonsterCard from Classes.Game.Cards.SpellCard import SpellCard from Classes.Game.Cards.TrapCard import TrapCard from Classes.System.Components.InputHandler import InputHandler from Classes.Game.Player import Player from Classes.Game.Cards.Card import Card from Classes.System.Utils.Path import PathUtil class World(): __boardFields:list player:Player enemy:Player __labels:list __cards:pygame.sprite.Group() __PlayerHandCards:pygame.sprite.Group() screen:pygame.surface __cardWidth:int = 150 __cardHeight:int = 200 __cardOffset:int = 400 def __init__(self, screen:pygame.surface, cardWidth:int=200, cardHeight:int=250, cardOffset:int=400): self.__boardFields = [] self.__labels = [] self.__cards = pygame.sprite.Group() self.__PlayerHandCards = pygame.sprite.Group() self.__screen = screen self.__cardWidth = cardWidth self.__cardHeight = cardHeight self.__cardOffset = cardOffset self.player = None self.enemy = None self.buildGameWorld() def buildGameWorld(self): # construct elements arround the playerfield # Todo add lifepoint label for player and enemy and make them scriptable move to player class # presets the y position later passed down to the vector2 eRow1Height = 85 eRow2Height = (self.__cardHeight + 45) pRow1Height = ((2 * self.__cardHeight) + 75) pRow2Height = ((2 * self.__cardHeight) + self.__cardHeight + 30) eDeckPos = pygame.Vector2((self.__cardOffset + ((self.__cardWidth + 10) * 0)), eRow1Height) eGravePos = pygame.Vector2((self.__cardOffset + ((self.__cardWidth + 10) * 0)), eRow2Height) eNamePos = pygame.Vector2(15, 45) eHPPos = pygame.Vector2(15, 75) pGravePos = pygame.Vector2((self.__cardOffset + (((self.__cardWidth + 10) - 30 ) * 5)), pRow1Height) pDeckPos = pygame.Vector2((self.__cardOffset + (((self.__cardWidth + 10) - 30 ) * 5)), pRow2Height) pNamePos = pygame.Vector2(20, pRow2Height + 195) pHPPos = pygame.Vector2(20, pRow2Height + 225) pManaPos = pygame.Vector2(20, pRow2Height + 255) # labeling <<<<<<< HEAD:Game_Client/Classes/Game/World.py self.__labels.append(Label("PlayerHP", self.__screen, "0 / 0", pHPPos)) self.__labels.append(Label("PlayerName", self.__screen, "Not Connected", pNamePos)) self.__labels.append(Label("PlayerMana", self.__screen, "0", pManaPos)) self.__labels.append(Label("EnemyHP", self.__screen, "0 / 0", eHPPos)) ======= self.__labels.append(Label("PlayerHP", self.__screen, "1000 / 1000", pHPPos)) self.__labels.append(Label("PlayerName", self.__screen, "Not Connected", pNamePos)) self.__labels.append(Label("PlayerName", self.__screen, "0", pManaPos)) self.__labels.append(Label("EnemyHP", self.__screen, "1000 / 1000", eHPPos)) >>>>>>> 18dcd6cc42f1f23e221702147a36f650f6aae6ac:Client/Classes/Game/World.py self.__labels.append(Label("EnemyName", self.__screen, "Not Connected", eNamePos)) self.__boardFields.append(BoardField("EnemyDeck", "Enemy", "Deck", eDeckPos, PathUtil.getAbsolutePathTo("Assets/Cards/0/field.png"), "e-deck")) self.__boardFields.append(BoardField("EnemyGraveyard", "Enemy", "Grave", eGravePos, PathUtil.getAbsolutePathTo("Assets/Cards/0/field.png"), "e-grave")) self.__boardFields.append(BoardField("PlayerDeck", "Player", "Deck", pDeckPos, PathUtil.getAbsolutePathTo("Assets/Cards/0/field.png"), "P-deck")) self.__boardFields.append(BoardField("PlayerGraveyard", "Player", "Grave", pGravePos, PathUtil.getAbsolutePathTo("Assets/Cards/0/field.png"), "p-grave")) # handle field creation for i in range(5): pMonsterPos = pygame.Vector2((self.__cardOffset + (((self.__cardWidth + 10) - 30) * i)), pRow1Height) pEffectPos = pygame.Vector2((self.__cardOffset + (((self.__cardWidth + 10) - 30) * i)), pRow2Height) eMonsterPos = pygame.Vector2((self.__cardOffset + (((self.__cardWidth + 10) - 30) * (i+1)), eRow1Height)) eEffectPos = pygame.Vector2((self.__cardOffset + (((self.__cardWidth + 10) - 30) * (i+1))), eRow2Height) self.__boardFields.append(BoardField("PlayerMonsterField-"+str(i), "Player", "Monster", pMonsterPos, PathUtil.getAbsolutePathTo("Assets/Cards/0/field.png"), "pm"+str(id))) self.__boardFields.append(BoardField("PlayerEffectField-"+str(i), "Player", "Effect", pEffectPos, PathUtil.getAbsolutePathTo("Assets/Cards/0/field.png"), "pe"+str(id))) self.__boardFields.append(BoardField("EnemyMonsterField-"+str(i), "Enemy", "Monster", eMonsterPos, PathUtil.getAbsolutePathTo("Assets/Cards/0/field.png"), "em"+str(id))) self.__boardFields.append(BoardField("EnemySpellTrapField-"+str(i), "Enemy", "Effect", eEffectPos, PathUtil.getAbsolutePathTo("Assets/Cards/0/field.png"), "ee"+str(id))) def getBoardFields(self) -> list: return self.__boardFields def getLabels(self) -> list: return self.__labels def getCardWidth(self) -> int: return self.__cardWidth def getCardHeight(self) -> int: return self.__cardHeight def getCards(self) -> pygame.sprite.Group: return self.__cards def getHandCards(self) -> pygame.sprite.Group: return self.__PlayerHandCards def getPlayer(self) -> Player: return self.player def getEnemy(self) -> Player: return self.__enemy def setPlayer(self, player:Player): print(f"setting player {player}") self.player = player for label in self.__labels: if label.getName() == "PlayerName": label.setText(player.getName()) def setEnemy(self, player:Player): self.enemy = player for label in self.__labels: if label.getName() == "EnemyName": label.setText(player.getName()) def spawnCard(self, asset:str, pos:pygame.Vector2, inputHandler:InputHandler, owner:Player) -> Card: card = Card(pos, asset, inputHandler, owner) self.__cards.add(card) return card def spawnEnemyCard(self, asset:str, pos:pygame.Vector2, inputHandler:InputHandler, owner:str) -> Card: pos.y = (self.__cardHeight + 45) card = Card(pos, asset, inputHandler, self.enemy, dragable=False) self.__cards.add(card) print(f"new card collection {self.__cards}") return card def spawnCards(self, cards:pygame.sprite.Group): for card in cards: self.__cards.add(card) def AddToPlayerHand(self, Card:Card): self.__PlayerHandCards.add(Card)