import json import pygame from Classes.System.Components.InputHandler import InputHandler from Classes.Game.Player import Player class Card(pygame.sprite.Sprite): __name:str __id:int __description:str __attacks = [] __type:str = "Monster" __pos:pygame.Vector2 __dragging:bool = False __offset:pygame.Vector2 = pygame.Vector2(0,0) __inputHandler: InputHandler __owner:Player __state:str image:pygame.image rect:pygame.rect def __init__(self, pos: pygame.Vector2, assetDir: str, inputHandler: InputHandler, owner: Player): if assetDir == "": raise ValueError("Card: imagePath cannot be empty") pygame.sprite.Sprite.__init__(self) with open(assetDir + "/card.json", 'r') as file: data = json.load(file) self.__owner = owner self.__id = int(data["id"]) self.__pos = pos self.__name = data["name"] self.__type = data.get("type") self.image = pygame.image.load(assetDir + "/card.png").convert_alpha() self.rect = self.image.get_rect() self.__inputHandler = inputHandler self.rect.center = self.__pos self.__description = data["description"] self.original_size = self.image.get_size() self.original_position = self.rect.center self.__state = "onHand" self.__type = "Monster" self.__attacks = [] for attack in data.get("attacks", []): self.__attacks.append(attack) def update(self): if self.__dragging: mouse_pos = self.__inputHandler.getMousePos() self.__pos = mouse_pos self.rect.center = self.__pos 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 def getDragging(self): return self.__dragging def getOffset(self): return self.__offset def getPos(self) -> pygame.Vector2: return self.__pos def getX(self) -> int: return self.__pos.x def getY(self) -> int: return self.__pos.y def getType(self): return self.__type def getID(self) -> int: return self.__id def getOwner(self) -> Player: return self.__owner def getState(self) -> str: return self.__state def setDragging(self, dragging:bool): self.__dragging = dragging def setOffset(self, offset:pygame.Vector2): self.__offset = offset def setPos(self, pos:pygame.Vector2): self.__pos = pos def setState(self, state:str): self.__state = state