class GameStateHandler: def __init__(self, window, game): self.window = window self.game = game self.screen = window.screen self.state = GameState.MAIN_MENU self.eventHandler = EventHandler(self.game) self.objectHandler = ObjectHandler() self.mapHandler = MapHandler(self.window) self.loadMenu() def tick(self): self.eventHandler.tick(self) if self.state == GameState.GAME: self.objectHandler.tick(self) def render(self): if self.state == GameState.MAIN_MENU: self.objectHandler.render(self.screen) elif self.state == GameState.GAME: self.mapHandler.render() self.objectHandler.render(self.screen) elif self.state == GameState.GAME_SHOP: print('Shop') elif self.state == GameState.GAME_OVER: screen = pygame.image.load('./assets/GameOver.png') screen = pygame.transform.scale( screen, (self.window.width, self.window.height)) self.screen.blit(screen, (0, 0)) def startGame(self, type): self.objectHandler.clearObjects() self.objectHandler.addObject( Player('00', int(self.window.width / 2), int(self.window.height / 2), 60, 80, type)) self.objectHandler.addObject( Weapon('01', self.objectHandler.getObjectByID('00'))) self.objectHandler.addObject( UIBar('03', self.objectHandler.getObjectByID('00'), UI.HEALTH, 50, self.window.height - 50, self.window.width / 6, self.window.height / 25)) if self.objectHandler.getObjectByID('00').type == PlayerType.WIZARD: self.objectHandler.addObject( UIBar('04', self.objectHandler.getObjectByID('00'), UI.MAGIC, (self.window.width / 2) - ((self.window.width / 6) / 2), self.window.height - 50, self.window.width / 6, self.window.height / 25)) elif self.objectHandler.getObjectByID('00').type == PlayerType.ROGUE: self.objectHandler.addObject( UIBar('04', self.objectHandler.getObjectByID('00'), UI.MAGIC, (self.window.width / 2) - ((self.window.width / 6) / 2), self.window.height - 50, self.window.width / 6, self.window.height / 25)) self.objectHandler.addObject( UIBar('05', self.objectHandler.getObjectByID('00'), UI.STAMINA, (self.window.width - (self.window.width / 6) - 50), self.window.height - 50, self.window.width / 6, self.window.height / 25)) self.state = GameState.GAME def loadMenu(self): background = pygame.image.load('./assets/MainMenu.png') background = pygame.transform.scale( background, (self.window.width, self.window.height)) self.objectHandler.addObject(MainMenu('00', background, True)) startGame = pygame.image.load('./assets/StartGame.png') startGame = pygame.transform.scale( startGame, (self.window.width, self.window.height)) self.objectHandler.addObject(MainMenu('01', startGame, True)) exit = pygame.image.load('./assets/Exit.png') exit = pygame.transform.scale(exit, (self.window.width, self.window.height)) self.objectHandler.addObject(MainMenu('02', exit, False)) startGameBack = pygame.image.load('./assets/StartGameBack.png') startGameBack = pygame.transform.scale( startGameBack, (self.window.width, self.window.height)) self.objectHandler.addObject(MainMenu('03', startGameBack, False)) wizardMenu = pygame.image.load('./assets/WizardMenu.png') wizardMenu = pygame.transform.scale( wizardMenu, (self.window.width, self.window.height)) self.objectHandler.addObject(MainMenu('04', wizardMenu, False)) knightMenu = pygame.image.load('./assets/KnightMenu.png') knightMenu = pygame.transform.scale( knightMenu, (self.window.width, self.window.height)) self.objectHandler.addObject(MainMenu('05', knightMenu, False)) rogueMenu = pygame.image.load('./assets/RogueMenu.png') rogueMenu = pygame.transform.scale( rogueMenu, (self.window.width, self.window.height)) self.objectHandler.addObject(MainMenu('06', rogueMenu, False))