mirror of
https://github.com/deunix-educ/aventuriers-des-mots.git
synced 2026-10-13 02:11:58 +02:00
Add several boards per level, CM1/CM2 levels and the CE1 'plage des sons' pilot board (0.6.0)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,7 +9,7 @@ const MUSIC_DIR := "res://assets/audio/music"
|
||||
const SFX_IDS: Array[String] = ["click", "success", "try_again", "star", "fanfare"]
|
||||
const MUSIC_IDS: Array[String] = ["forest", "marsh", "meadow", "river", "night"]
|
||||
|
||||
## Choix « automatique » : la musique de la region (voir music_for_level).
|
||||
## Choix « automatique » : la musique du decor du tableau (BackdropKinds).
|
||||
const MUSIC_AUTO := "auto"
|
||||
|
||||
|
||||
@@ -25,11 +25,6 @@ static func music_path(music_id: String) -> String:
|
||||
return "%s/%s.ogg" % [MUSIC_DIR, music_id]
|
||||
|
||||
|
||||
## Musique d'une region selon le niveau scolaire de la regle.
|
||||
static func music_for_level(level: String) -> String:
|
||||
return "marsh" if level == "CE2" else "forest"
|
||||
|
||||
|
||||
## Choix possibles dans les reglages : automatique puis chaque morceau.
|
||||
static func music_choices() -> Array[String]:
|
||||
var choices: Array[String] = [MUSIC_AUTO]
|
||||
@@ -37,8 +32,9 @@ static func music_choices() -> Array[String]:
|
||||
return choices
|
||||
|
||||
|
||||
## Morceau a jouer pour le choix de l'utilisateur et le niveau scolaire.
|
||||
static func resolve_music(choice: String, level: String) -> String:
|
||||
## Morceau a jouer pour le choix de l'utilisateur et le decor du tableau :
|
||||
## un morceau choisi vaut partout ; « automatique » suit le decor.
|
||||
static func resolve_music(choice: String, backdrop_kind: String) -> String:
|
||||
if MUSIC_IDS.has(choice):
|
||||
return choice
|
||||
return music_for_level(level)
|
||||
return BackdropKinds.music_for(backdrop_kind)
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
class_name SchoolLevels
|
||||
extends RefCounted
|
||||
## Niveaux scolaires du jeu, dans l'ordre de progression. Code pur. La liste
|
||||
## est fermee : elle est aussi celle des schemas (data/schemas/*.json), et
|
||||
## un test verifie que les deux concordent.
|
||||
|
||||
const ALL: Array[String] = ["CE1", "CE2", "CM1", "CM2"]
|
||||
|
||||
|
||||
static func is_valid(level: String) -> bool:
|
||||
return ALL.has(level)
|
||||
|
||||
|
||||
## Niveau juste avant `level` (celui que l'on peut « revoir »), ou "" pour
|
||||
## le premier niveau ou une valeur inconnue.
|
||||
static func previous(level: String) -> String:
|
||||
var index := ALL.find(level)
|
||||
return ALL[index - 1] if index > 0 else ""
|
||||
|
||||
|
||||
## Rang du niveau (0 pour CE1), grand pour un niveau inconnu : sert au tri.
|
||||
static func rank(level: String) -> int:
|
||||
var index := ALL.find(level)
|
||||
return index if index >= 0 else ALL.size()
|
||||
@@ -0,0 +1 @@
|
||||
uid://1padrqilrpin
|
||||
@@ -0,0 +1,36 @@
|
||||
class_name BackdropKinds
|
||||
extends RefCounted
|
||||
## Decors disponibles (un par « tableau » de la carte) et musique associee.
|
||||
## Liste fermee, resolue par identifiant vers un repertoire fixe ; un test
|
||||
## verifie qu'elle concorde avec l'enum `backdrop` de
|
||||
## data/schemas/curriculum.schema.json.
|
||||
|
||||
const TEXTURES := {
|
||||
"forest": "res://assets/environments/forest_backdrop.svg",
|
||||
"marsh": "res://assets/environments/marsh_backdrop.svg",
|
||||
"beach": "res://assets/environments/beach_backdrop.svg",
|
||||
}
|
||||
|
||||
## Morceau joue par defaut avec chaque decor (reglage « automatique »).
|
||||
const MUSIC := {
|
||||
"forest": "forest",
|
||||
"marsh": "marsh",
|
||||
"beach": "river",
|
||||
}
|
||||
|
||||
const FALLBACK := "forest"
|
||||
|
||||
|
||||
static func kinds() -> Array[String]:
|
||||
var result: Array[String] = []
|
||||
for kind: String in TEXTURES:
|
||||
result.append(kind)
|
||||
return result
|
||||
|
||||
|
||||
static func is_valid(kind: String) -> bool:
|
||||
return TEXTURES.has(kind)
|
||||
|
||||
|
||||
static func music_for(kind: String) -> String:
|
||||
return MUSIC.get(kind, MUSIC[FALLBACK])
|
||||
@@ -0,0 +1 @@
|
||||
uid://btn7aydf3704h
|
||||
Reference in New Issue
Block a user