nsi-rpg/src/main.py

107 lines
3.7 KiB
Python

import pygame.image
from src.custom_AI import WolfAI
from src.engine.animation import Anim
from src.engine.engine import Engine
from src.engine.enums import GameState
from src.engine.menu_manager import Menu, Label, Button
class Game(Engine):
def __init__(self):
super().__init__()
self.map_manager.load_new("maps/map5.tmj")
self.renderer.load_tile_set("assets/textures/tileset.png", 16)
self.dialogs_manager.load_dialogs("assets/dialogs.json")
self.create_player_entity()
self.load_boss_fight_assets()
self.spawn_mobs()
self.DEBUG_MODE = True
self.game_state = GameState.MAIN_MENU
self.event_sheduler.register_area((64, 64, 32, 32), lambda _: self.dialogs_manager.start_dialog("test"), ["player"], False, True)
self.renderer.dialogs_box = pygame.image.load("assets/textures/GUI/dialogs_box.png").convert_alpha()
self.event_handler.register_button_area((0, 0, 0.1, 0.1), lambda : print("salut"), 0)
self.setup_main_menu()
def start_game(self):
self.game_state = GameState.NORMAL
self.menu_manager.hide()
def setup_main_menu(self):
"""Crée les éléments du menu principal."""
menu = Menu()
menu.add_widget(Label(0.5, 0.1, "The Forest's Secret", 0.1, (0, 0, 0), True, 0))
base_image = pygame.image.load("assets/textures/GUI/button_1.png").convert_alpha()
hover_image = pygame.image.load("assets/textures/GUI/button_2.png").convert_alpha()
menu.add_widget(Button(0.5, 0.3, "play", 0.08, (0, 0, 0), self.start_game, base_image, hover_image, True, 0))
self.menu_manager.register_menu(menu, "main")
self.menu_manager.show("main")
def create_player_entity(self):
"""Crée une entité joueur."""
anim = Anim(0.5)
anim.load_animation_from_directory("assets/textures/entities/player/none")
self.renderer.register_animation(anim, "player_none")
anim = Anim(0.1)
anim.load_animation_from_directory("assets/textures/entities/player/walking")
self.renderer.register_animation(anim, "player_walking")
player = self.entity_manager.register_entity("player")
player.link_animation("player_none")
player.collision_rect = [-6, -7, 6, 16]
player.set_default_life(15)
player.max_speed = 1.1
self.entity_manager.set_player_entity("player")
player.shadow = "player_shadow"
self.renderer.register_shadow("assets/textures/entities/player/shadow.png", "player_shadow")
self.camera.follow_entity(player)
def spawn_mobs(self):
"""Fait apparaitre les mobs de la map."""
anim = Anim(0.5)
anim.load_animation_from_directory("assets/textures/entities/wolf/none")
self.renderer.register_animation(anim, "wolf_none")
mob = self.entity_manager.register_entity("wolf1")
mob.set_ai(WolfAI, self)
mob.link_animation("wolf_none")
mob.collision_rect = [-15, -7, 12, 7]
mob.set_default_life(5)
mob.max_speed = 1.
mob.x, mob.y = 1600, 16
def load_boss_fight_assets(self):
"""Charge les animations de combat des combats de boss."""
player_none = Anim(1)
player_none.load_animation_from_directory("assets/textures/boss_fight/player_big/none")
self.renderer.register_boss_fight_player_animation(player_none, "none")
boss_none = Anim(1)
boss_none.load_animation_from_directory("assets/textures/boss_fight/boss_sprite/test/none")
self.renderer.register_boss_fight_boss_animation(boss_none, "none")
self.renderer.boss_fight_GUI_container = pygame.image.load("assets/textures/boss_fight/fight_actions_GUI.png").convert_alpha()
game = Game()
game.loop()