Add currency database, cleanup legacy system

This commit is contained in:
2026-03-14 17:20:22 +01:00
parent 6da962a53d
commit 7b58c36414
20 changed files with 353 additions and 222 deletions

View File

@@ -29,11 +29,19 @@ func _ready() -> void:
_collect_known_generator_ids()
_load_goals()
GameState.currency_changed.connect(_on_currency_changed)
GameState.generator_state_changed.connect(_on_generator_state_changed)
_evaluate_all_goals()
_evaluate_all_goals.call_deferred()
func _on_currency_changed(_changed_currency_id: StringName, _new_amount: BigNumber) -> void:
_evaluate_all_goals()
func _on_generator_state_changed(generator_id: StringName, _state: Dictionary) -> void:
var generator_key: String = String(generator_id)
if not generator_key.is_empty():
_known_generator_ids[generator_key] = true
_evaluate_all_goals()
func _evaluate_all_goals() -> void:
if _goals.is_empty():
return
@@ -185,7 +193,9 @@ func _get_total_currency_amount(currency_id: StringName) -> BigNumber:
func _collect_known_generator_ids() -> void:
_known_generator_ids.clear()
var generator_nodes: Array[Node] = find_children("*", "CurrencyGenerator", true, false)
var scene_root: Node = get_tree().current_scene
var search_root: Node = scene_root if scene_root != null else self
var generator_nodes: Array[Node] = search_root.find_children("*", "CurrencyGenerator", true, false)
for generator_node in generator_nodes:
var generator: CurrencyGenerator = generator_node as CurrencyGenerator
if generator == null: