Hide roster when no sortie choices
This commit is contained in:
62
tools/smoke_roster_choices.gd
Normal file
62
tools/smoke_roster_choices.gd
Normal file
@@ -0,0 +1,62 @@
|
||||
extends SceneTree
|
||||
|
||||
const BattleStateScript := preload("res://scripts/core/battle_state.gd")
|
||||
const BattleSceneScript := preload("res://scripts/scenes/battle_scene.gd")
|
||||
|
||||
|
||||
func _init() -> void:
|
||||
var failures: Array[String] = []
|
||||
_check_required_only_roster(failures)
|
||||
_check_optional_roster(failures)
|
||||
_check_roster_button_guard(failures)
|
||||
|
||||
if failures.is_empty():
|
||||
print("roster choices smoke ok")
|
||||
quit(0)
|
||||
return
|
||||
|
||||
for failure in failures:
|
||||
push_error(failure)
|
||||
quit(1)
|
||||
|
||||
|
||||
func _check_required_only_roster(failures: Array[String]) -> void:
|
||||
var state = _loaded_state(failures, "required-only roster", "res://data/scenarios/001_yellow_turbans.json")
|
||||
if state == null:
|
||||
return
|
||||
if not state.has_deployment_roster():
|
||||
failures.append("001 should keep roster rules for required deployments")
|
||||
if state.has_deployment_roster_choices():
|
||||
failures.append("001 should not expose roster choices when every player unit is required")
|
||||
if state.try_set_unit_deployed("cao_cao", false):
|
||||
failures.append("001 should not allow Cao Cao to be moved to reserve")
|
||||
if state.try_set_unit_deployed("xiahou_dun", false):
|
||||
failures.append("001 should not allow Xiahou Dun to be moved to reserve")
|
||||
|
||||
|
||||
func _check_optional_roster(failures: Array[String]) -> void:
|
||||
var state = _loaded_state(failures, "optional roster", "res://data/scenarios/007_xian_emperor_escort.json")
|
||||
if state == null:
|
||||
return
|
||||
if not state.has_deployment_roster_choices():
|
||||
failures.append("007 should expose roster choices for optional deployed officers")
|
||||
|
||||
|
||||
func _check_roster_button_guard(failures: Array[String]) -> void:
|
||||
var scene = BattleSceneScript.new()
|
||||
scene._create_hud()
|
||||
scene.state.load_battle("res://data/scenarios/001_yellow_turbans.json")
|
||||
scene.battle_started = false
|
||||
scene.briefing_panel.visible = true
|
||||
scene._on_roster_pressed()
|
||||
if scene.roster_menu.visible:
|
||||
failures.append("roster menu should not open when there are no roster choices")
|
||||
scene.free()
|
||||
|
||||
|
||||
func _loaded_state(failures: Array[String], label: String, path: String):
|
||||
var state = BattleStateScript.new()
|
||||
if not state.load_battle(path):
|
||||
failures.append("%s could not load scenario: %s" % [label, path])
|
||||
return null
|
||||
return state
|
||||
Reference in New Issue
Block a user