#211 conquest is the fight now: a planet registers the garrison its setup authors, each defender's own death counts against it, and the last one takes the world. The capture points - stand in a ring, wait out a timer, once per ring - are gone, along with the editor palette that placed them. #212 conquest opens a dialog on the surface naming the research points recovered; the award travels with the signal, after it is banked. #209 the prologue's charted sectors go with the breach, so the map the survivors keep is of where they now are - and "chart 30 sectors" is no longer complete before they have flown anywhere. #218 enemy variety is gated on the FLEET, not on wave strength: a starting fleet meets chasers only at any wave number, and each vessel past three opens one more kind. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019AJMdB7iuHuLFZM1aBu3GD
50 lines
1.8 KiB
GDScript
50 lines
1.8 KiB
GDScript
extends Label
|
|
|
|
# Polls GameState directly, same convention as ResourceReadout, so it stays
|
|
# correct without anyone having to push updates into it. Hidden entirely when
|
|
# the current planet has no garrison (e.g. no setup resolved for it) rather
|
|
# than showing "0/0".
|
|
|
|
# A direct script preload, not the bare "PlanetDefinitions" global class_name
|
|
# - the same load-order hazard PlanetSurfaceController's setup_host comment
|
|
# already documents: the global identifier is only guaranteed registered
|
|
# after an editor/import pass, a direct preload never depends on that.
|
|
const PLANET_DEFINITIONS = preload("res://planets/PlanetDefinitions.gd")
|
|
|
|
var _was_conquered: bool = false
|
|
var display_enabled: bool = true
|
|
|
|
|
|
func _process(_delta: float) -> void:
|
|
if not display_enabled:
|
|
visible = false
|
|
return
|
|
var planet_id: String = GameState.planet_id
|
|
var total: int = GameState.garrison_total(planet_id)
|
|
if total <= 0:
|
|
visible = false
|
|
return
|
|
visible = true
|
|
|
|
var conquered: bool = GameState.is_planet_conquered(planet_id)
|
|
if conquered:
|
|
# #76: a research_lab's whole reward is invisible otherwise - the
|
|
# research point balance lives in a HUD number the player has no
|
|
# reason to be watching at the exact moment it changes. Naming the
|
|
# reward right on the same flash that already announces conquest
|
|
# is the same "explain it where it happens" idiom BuildController
|
|
# uses for a refused build.
|
|
text = "CONQUERED - +1 RESEARCH POINT" \
|
|
if GameState.planet_definition_id == PLANET_DEFINITIONS.RESEARCH_LAB_ID else "CONQUERED"
|
|
if not _was_conquered:
|
|
_flash()
|
|
else:
|
|
# #211: what is left to fight, counted down, rather than rings held.
|
|
text = "GARRISON %d/%d" % [GameState.garrison_remaining(planet_id), total]
|
|
_was_conquered = conquered
|
|
|
|
|
|
func _flash() -> void:
|
|
modulate.a = 0.0
|
|
var tween: Tween = create_tween()
|
|
tween.tween_property(self, "modulate:a", 1.0, 1.2)
|