Files
aventuriers-des-mots/autoload/game_manager.gd
T
Denis Defolie 65a0cb46f9 Add mission scoring, rewards collection and save schema v2
Phase "score et récompenses" of the post-0.1.0 plan (user feedback:
wants a more game-like experience with scoring and rewards).

- MissionScoring: 1-3 stars from how each exercise was solved (never
  speed; a finished mission always gives at least one star).
- Save schema v2: mission_results (best/last stars, completions) with a
  v1->v2 migration that keeps existing stars and items.
- Total only grows by the improvement over a mission's best score.
- Data-driven collection (data/rewards, reward_item schema, validated
  incl. mission cross-check) unlocked by RewardRules.
- Reward screen, collection screen, stars on the world map.
- Version 0.2.0.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-11 22:20:59 +02:00

29 lines
1.4 KiB
GDScript

extends Node
## Cycle de vie de l'application, navigation entre scenes et etat general du
## jeu. Porte le contexte transitoire necessaire entre deux changements de
## scene (ex. la mission choisie sur la carte), puisque Godot libere les
## noeuds de la scene precedente a chaque changement.
const SCENE_BOOT := "res://scenes/boot/boot.tscn"
const SCENE_PROFILE_SELECT := "res://scenes/profiles/profile_select.tscn"
const SCENE_PROFILE_CREATE := "res://scenes/profiles/profile_create.tscn"
const SCENE_WORLD_MAP := "res://scenes/world/world_map.tscn"
const SCENE_MISSION_INTRO := "res://scenes/world/mission_intro.tscn"
const SCENE_EXERCISE_HOST := "res://scenes/exercises/exercise_host.tscn"
const SCENE_REWARD := "res://scenes/ui/reward_screen.tscn"
const SCENE_COLLECTION := "res://scenes/ui/collection.tscn"
## Mission choisie sur la carte, lue par mission_intro puis exercise_host et
## reward_screen. Remise a vide par reward_screen au retour sur la carte.
var pending_mission_id: String = ""
## Resultat de chaque exercice de la mission qui vient de se terminer
## (MissionScoring.OUTCOME_*), transmis par exercise_host a reward_screen.
var last_outcomes: Array[String] = []
func goto(scene_path: String) -> void:
# Differe le changement de scene : l'appeler depuis le _ready() de la
# scene en cours d'ajout a l'arbre echoue sinon ("Parent node is busy").
get_tree().change_scene_to_file.call_deferred(scene_path)