76 lines
2.5 KiB
Python
76 lines
2.5 KiB
Python
import pygame
|
|
from Classes.Engine.EventHandler import EngineEventHandler
|
|
from Classes.Engine.InputHandler import InputHandler
|
|
from Classes.Engine.Logger import Logger
|
|
from Classes.Engine.TCPClient import TCPClient
|
|
|
|
from Classes.Engine.Window import Window
|
|
from Classes.Game.World import World
|
|
from Classes.Game.NetworkEvents.Login import Login
|
|
|
|
|
|
class App:
|
|
|
|
__running:bool
|
|
__FPS:int = 60
|
|
__clock:pygame.time.Clock()
|
|
__myFont:pygame.font
|
|
__window:Window
|
|
__world:World
|
|
__inputHandler: InputHandler
|
|
__tcpClient: TCPClient
|
|
__eventHandler: EngineEventHandler
|
|
logger:Logger
|
|
|
|
def __init__(self, logger:Logger, width:int=1280, height:int=720, title:str="default title"):
|
|
self.logger = logger
|
|
|
|
self.logger.info("initializing dependencies")
|
|
pygame.init()
|
|
pygame.font.init()
|
|
self.__myFont = pygame.font.SysFont('Comic Sans MS', 30)
|
|
self.__window = Window(width=width, height=height, title=title)
|
|
self.__world = World(self.logger, self.__window.getScreen())
|
|
self.__inputHandler = InputHandler()
|
|
|
|
# attempt to connect to server
|
|
try:
|
|
self.logger.info("logging into server")
|
|
self.__tcpClient = TCPClient("127.0.0.1", "54322", self.__world, self.__inputHandler)
|
|
Login(self.__tcpClient) # will login to the server
|
|
except Exception as e:
|
|
print(f"failed to login due to error {e}")
|
|
print("server connection failed or got refused")
|
|
pass
|
|
|
|
def startGameLoop(self):
|
|
self.__running = True
|
|
|
|
while self.__running:
|
|
|
|
self.__clock.tick(self.__FPS)
|
|
|
|
self.__window.getScreen().fill((0,0,0))
|
|
|
|
# render world
|
|
self.__window.drawWorld(self.__world)
|
|
|
|
# updates all cards inside the cards Spritegroup at each step the gameloops does
|
|
self.__world.getCards().update()
|
|
self.__world.getHandCards().update()
|
|
|
|
# draw groups
|
|
self.__window.drawSpriteGroup(self.__world.getCards())
|
|
self.__window.drawSpriteGroup(self.__world.getHandCards())
|
|
|
|
self.__eventHandler.handleEvent(pygame.event.get())
|
|
|
|
# emits update to the game
|
|
pygame.display.update()
|
|
|
|
self.__running = False
|
|
|
|
# ensures the gameloop stops running and the pygame instance is stopped properly
|
|
def onCleanup(self):
|
|
self.__running = False
|
|
pygame.quit() |