nsi-rpg/src/main.py

107 lines
3.7 KiB
Python
Raw Normal View History

import pygame.image
2023-12-26 16:18:19 +00:00
2024-01-02 14:55:40 +00:00
from src.custom_AI import WolfAI
from src.engine.animation import Anim
from src.engine.engine import Engine
from src.engine.enums import GameState
2024-01-07 16:05:50 +00:00
from src.engine.menu_manager import Menu, Label, Button
2023-12-26 16:18:19 +00:00
class Game(Engine):
def __init__(self):
super().__init__()
2023-12-29 16:24:01 +00:00
self.map_manager.load_new("maps/map5.tmj")
2023-12-26 16:18:19 +00:00
2023-12-29 16:24:01 +00:00
self.renderer.load_tile_set("assets/textures/tileset.png", 16)
2024-01-05 18:17:50 +00:00
self.dialogs_manager.load_dialogs("assets/dialogs.json")
2023-12-26 16:18:19 +00:00
2023-12-26 18:07:21 +00:00
self.create_player_entity()
self.load_boss_fight_assets()
2024-01-03 10:21:19 +00:00
self.spawn_mobs()
2024-01-05 16:00:30 +00:00
self.DEBUG_MODE = True
2023-12-29 17:29:01 +00:00
2024-01-07 17:29:18 +00:00
self.game_state = GameState.MAIN_MENU
2023-12-26 18:07:21 +00:00
2024-01-06 16:46:42 +00:00
self.event_sheduler.register_area((64, 64, 32, 32), lambda _: self.dialogs_manager.start_dialog("test"), ["player"], False, True)
2024-01-05 18:57:24 +00:00
self.renderer.dialogs_box = pygame.image.load("assets/textures/GUI/dialogs_box.png").convert_alpha()
2024-01-05 16:00:30 +00:00
self.event_handler.register_button_area((0, 0, 0.1, 0.1), lambda : print("salut"), 0)
self.setup_main_menu()
2024-01-07 17:29:18 +00:00
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()
2024-01-07 17:35:18 +00:00
menu.add_widget(Label(0.5, 0.1, "The Forest's Secret", 0.1, (0, 0, 0), True, 0))
2024-01-07 16:05:50 +00:00
base_image = pygame.image.load("assets/textures/GUI/button_1.png").convert_alpha()
2024-01-07 17:15:37 +00:00
hover_image = pygame.image.load("assets/textures/GUI/button_2.png").convert_alpha()
2024-01-07 16:05:50 +00:00
2024-01-07 17:35:18 +00:00
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")
2023-12-26 18:07:21 +00:00
def create_player_entity(self):
"""Crée une entité joueur."""
2023-12-26 16:18:19 +00:00
anim = Anim(0.5)
anim.load_animation_from_directory("assets/textures/entities/player/none")
2023-12-26 16:18:19 +00:00
self.renderer.register_animation(anim, "player_none")
2023-12-29 17:29:01 +00:00
anim = Anim(0.1)
anim.load_animation_from_directory("assets/textures/entities/player/walking")
self.renderer.register_animation(anim, "player_walking")
2023-12-26 16:18:19 +00:00
player = self.entity_manager.register_entity("player")
player.link_animation("player_none")
2023-12-29 17:29:01 +00:00
player.collision_rect = [-6, -7, 6, 16]
2023-12-26 16:18:19 +00:00
2024-01-02 14:55:40 +00:00
player.set_default_life(15)
player.max_speed = 1.1
2023-12-29 18:12:31 +00:00
self.entity_manager.set_player_entity("player")
2023-12-26 16:18:19 +00:00
2023-12-29 21:49:55 +00:00
player.shadow = "player_shadow"
self.renderer.register_shadow("assets/textures/entities/player/shadow.png", "player_shadow")
2023-12-26 16:18:19 +00:00
self.camera.follow_entity(player)
2024-01-02 14:55:40 +00:00
def spawn_mobs(self):
"""Fait apparaitre les mobs de la map."""
2024-01-03 10:21:19 +00:00
anim = Anim(0.5)
anim.load_animation_from_directory("assets/textures/entities/wolf/none")
self.renderer.register_animation(anim, "wolf_none")
2024-01-02 14:55:40 +00:00
mob = self.entity_manager.register_entity("wolf1")
2024-01-03 10:21:19 +00:00
mob.set_ai(WolfAI, self)
mob.link_animation("wolf_none")
mob.collision_rect = [-15, -7, 12, 7]
2024-01-02 14:55:40 +00:00
2024-01-03 10:21:19 +00:00
mob.set_default_life(5)
mob.max_speed = 1.
2024-01-02 14:55:40 +00:00
2024-01-05 18:57:24 +00:00
mob.x, mob.y = 1600, 16
2024-01-02 14:55:40 +00:00
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")
2024-01-05 18:57:24 +00:00
self.renderer.boss_fight_GUI_container = pygame.image.load("assets/textures/boss_fight/fight_actions_GUI.png").convert_alpha()
2023-12-26 18:07:21 +00:00
2023-12-26 16:18:19 +00:00
game = Game()
game.loop()