extends Resource class_name GameData enum GameMode {STORY} signal current_run_updated(r : RunData) signal current_region_data_updated(p : RegionData) @export var player_data : PlayerData = PlayerData.new() @export var progression_data : ProgressionData = ProgressionData.new() @export var current_run : RunData = start_run() : set(v): current_run = v current_run_updated.emit(v) @export var current_region_data : RegionData = null : set(v): current_region_data = v current_region_data_updated.emit(v) @export var last_game_scene : Scene = null @export var ship_in_space = false @export var incubator_used = [] @export var dead_orchid_position : Vector3 @export var dead_orchid_rotation : Vector3 @export var item_announced = [] @export var game_mode : GameMode = GameMode.STORY @export var dialogs_done : Array[String] = [] #Chemin des dialogues terminés func start_run() -> RunData: player_data.clear_inventory() player_data.update_with_artefacts([]) current_run = RunData.new() current_run.story_step = progression_data.story_step.duplicate_deep() current_run.generate_next_run_points() current_run.current_run_point_changed.connect( func(rp : RunPoint): start_region(rp.region_parameter) ) ship_in_space = false return current_run func reset_player(): player_data = PlayerData.new() func reset_all(): start_run() reset_player() func start_region(region_param : RegionParameter): current_region_data = RegionData.new(region_param) func give_up(): current_region_data = null current_run = null start_run() SceneManager.change_to_scene(progression_data.story_step.get_respawn_scene()) func finish_story_step(): progression_data.next_story_step() current_region_data = null start_run()