72 lines
2.0 KiB
Python
72 lines
2.0 KiB
Python
import json
|
|
from typing import Any
|
|
|
|
import pygame
|
|
|
|
from Classes.System.InputHandler import InputHandler
|
|
|
|
class MonsterCard(pygame.sprite.Sprite):
|
|
__attacks = []
|
|
__name:str
|
|
__description:str
|
|
__pos:pygame.Vector2
|
|
__dragging:bool = False
|
|
__offset:pygame.Vector2 = pygame.Vector2(0,0)
|
|
__inputHandler: InputHandler
|
|
image:pygame.image
|
|
rect:pygame.rect
|
|
|
|
def __init__(self, pos:pygame.Vector2, assetDir:str, inputHandler:InputHandler):
|
|
if assetDir == "":
|
|
return ValueError.add_note("Card: imagePath cannot be empty")
|
|
|
|
pygame.sprite.Sprite.__init__(self)
|
|
|
|
data = json.load(open(assetDir + "/testmonstercard.json"))
|
|
self.__pos = pos
|
|
self.__name = data["name"]
|
|
self.image = pygame.image.load(assetDir + "/card.png").convert_alpha()
|
|
self.rect = self.image.get_rect()
|
|
self.dragging = False
|
|
self.offset = pygame.Vector2(0, 0) # Offset zwischen der Karte und der Mausposition
|
|
self.__inputHandler = inputHandler
|
|
self.rect.center = self.__pos
|
|
self.__description = data["description"]
|
|
|
|
for attack in data["attacks"]:
|
|
self.__attacks.append(attack)
|
|
|
|
def update(self):
|
|
print("card update")
|
|
print(self.getDragging())
|
|
if self.getDragging():
|
|
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):
|
|
return self.__pos
|
|
|
|
def setDragging(self, dragging:bool):
|
|
self.__dragging = dragging
|
|
|
|
def setOffset(self, offset:pygame.Vector2):
|
|
self.__offset = offset |