Also configure GUT to not treat push_error() as a test failure (client/.gutconfig.json: failure_error_types = [engine, gut]). The brief's LogPlayer/Quest setters intentionally push_error() on rejected input; GUT's default failure_error_types includes push_error, which would fail test_player_rejects_unknown_class and test_quest_status_enum despite their assertions passing. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
34 lines
906 B
GDScript
34 lines
906 B
GDScript
class_name LogPlayer
|
|
extends RefCounted
|
|
## A canon-log player row. Carries ONLY name, class_id, luck_descriptor (§7):
|
|
## no numeric Luck, no stats — those live in GameState and never reach the AI.
|
|
|
|
const CLASSES := ["sellsword", "assassin", "priest"]
|
|
|
|
var name: String
|
|
var class_id: String
|
|
var luck_descriptor: String
|
|
|
|
|
|
func _init(p_name := "", p_class_id := "", p_luck_descriptor := "") -> void:
|
|
name = p_name
|
|
luck_descriptor = p_luck_descriptor
|
|
if p_class_id != "":
|
|
set_class_id(p_class_id)
|
|
|
|
|
|
func set_class_id(v: String) -> bool:
|
|
if v not in CLASSES:
|
|
push_error("invalid class_id: %s" % v)
|
|
return false
|
|
class_id = v
|
|
return true
|
|
|
|
|
|
func to_dict() -> Dictionary:
|
|
return {"name": name, "class_id": class_id, "luck_descriptor": luck_descriptor}
|
|
|
|
|
|
static func from_dict(d: Dictionary) -> LogPlayer:
|
|
return LogPlayer.new(d.get("name", ""), d.get("class_id", ""), d.get("luck_descriptor", ""))
|