refactor(client): remove archetype selection, fix Randomise→Randomize

- Remove character_select.tscn and character_select.gd entirely
  (Smuggler/Detective archetypes removed per v0.2 pivot)
- New Game goes straight to character creation
- Rename Randomise→Randomize throughout (US English convention)
- Add *.import and *.uid to client gitignore (import artifacts)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-22 18:18:47 +01:00
co-authored by Claude Opus 4.6
parent 92209f85e6
commit 145d8fec17
8 changed files with 32 additions and 344 deletions
@@ -2,7 +2,7 @@
##
## Validates the CharacterCreation UI: scene instantiation, tab structure,
## signal emission (creation_confirmed / creation_cancelled), keyboard nav
## callbacks, randomise, color derivation helpers, and game flow wiring.
## callbacks, randomize, color derivation helpers, and game flow wiring.
##
## These are UI-only tests (no compositor/server required).
## CharacterVisual asset paths fall back gracefully when GLBs are absent.
@@ -115,10 +115,10 @@ func test_footer_buttons_exist() -> void:
if _scene == null:
return
var back: Button = _scene.get_node_or_null("Footer/BackBtn")
var rand_btn: Button = _scene.get_node_or_null("Footer/RandomiseBtn")
var rand_btn: Button = _scene.get_node_or_null("Footer/RandomizeBtn")
var start: Button = _scene.get_node_or_null("Footer/StartBtn")
assert_bool(back != null).override_failure_message("BackBtn must exist in Footer").is_true()
assert_bool(rand_btn != null).override_failure_message("RandomiseBtn must exist in Footer").is_true()
assert_bool(rand_btn != null).override_failure_message("RandomizeBtn must exist in Footer").is_true()
assert_bool(start != null).override_failure_message("StartBtn must exist in Footer").is_true()
@@ -367,33 +367,33 @@ func test_derive_accent_shifts_hue() -> void:
# =============================================================================
# Randomise (Task #8)
# Randomize (Task #8)
# =============================================================================
func test_randomise_changes_body_type() -> void:
func test_randomize_changes_body_type() -> void:
if _scene == null:
return
# Run randomise multiple times to ensure it doesn't always pick the default
# Run randomize multiple times to ensure it doesn't always pick the default
var changed := false
var original := _scene._descriptor.body_type
for _i in 20:
_scene._on_randomise()
_scene._on_randomize()
if _scene._descriptor.body_type != original:
changed = true
break
assert_bool(changed).override_failure_message(
"Randomise must be able to change body type from default"
"Randomize must be able to change body type from default"
).is_true()
func test_randomise_produces_valid_skin_tone() -> void:
func test_randomize_produces_valid_skin_tone() -> void:
if _scene == null:
return
for _i in 10:
_scene._on_randomise()
_scene._on_randomize()
var tone := _scene._descriptor.skin_tone
assert_bool(tone >= 0 and tone <= 8).override_failure_message(
"Randomise must produce skin_tone in range 0–8"
"Randomize must produce skin_tone in range 0–8"
).is_true()
@@ -471,7 +471,7 @@ func test_q_key_rotates_left() -> void:
).is_not_equal(initial)
func test_r_key_triggers_randomise() -> void:
func test_r_key_triggers_randomize() -> void:
if _scene == null:
return
# Seed to a known state so change is detectable
@@ -490,7 +490,7 @@ func test_r_key_triggers_randomise() -> void:
changed = true
break
assert_bool(changed).override_failure_message(
"R key must trigger randomise and change body_type or skin_tone"
"R key must trigger randomize and change body_type or skin_tone"
).is_true()