2023-12-28 21:38:35 +00:00
|
|
|
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
|
2023-12-26 16:19:29 +00:00
|
|
|
from src.engine.animation import Anim
|
|
|
|
from src.engine.engine import Engine
|
2023-12-28 21:38:35 +00:00
|
|
|
from src.engine.enums import GameState
|
2023-12-21 18:35:51 +00:00
|
|
|
|
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()
|
2023-12-28 21:38:35 +00:00
|
|
|
self.load_boss_fight_assets()
|
2024-01-03 10:21:19 +00:00
|
|
|
self.spawn_mobs()
|
2023-12-28 21:38:35 +00:00
|
|
|
|
2024-01-05 16:00:30 +00:00
|
|
|
self.DEBUG_MODE = True
|
2023-12-29 17:29:01 +00:00
|
|
|
|
2023-12-28 21:38:35 +00:00
|
|
|
self.game_state = GameState.NORMAL
|
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
|
|
|
|
2024-01-06 18:00:51 +00:00
|
|
|
self.event_handler.register_button_area((0, 0, 20, 20), lambda : print("salut"))
|
|
|
|
|
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)
|
2023-12-26 17:41:33 +00:00
|
|
|
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)
|
2024-01-03 12:12:14 +00:00
|
|
|
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
|
|
|
|
2023-12-28 21:38:35 +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-28 21:38:35 +00:00
|
|
|
|
2023-12-26 18:07:21 +00:00
|
|
|
|
2023-12-26 16:18:19 +00:00
|
|
|
game = Game()
|
|
|
|
game.loop()
|