Minor improvements

This commit is contained in:
2026-03-21 18:32:54 +01:00
parent 471a7b10f7
commit bb1a96b63c
19 changed files with 228 additions and 72 deletions

View File

@@ -130,18 +130,19 @@ func get_total_currency_acquired(currency: Resource) -> BigNumber:
func get_total_currency_acquired_by_id(currency_id: StringName) -> BigNumber:
return _get_total_currency_ref(currency_id)
func register_generator(generator_id: StringName, unlocked: bool = false, available: bool = false) -> void:
func register_generator(generator_id: StringName, unlocked: bool = false, available: bool = false, owned: int = 0) -> void:
var key: String = String(generator_id)
if key.is_empty():
return
var default_owned: int = _to_non_negative_int(owned, 0)
if generator_states.has(key):
var existing_raw: Variant = generator_states.get(key)
if existing_raw is Dictionary:
generator_states[key] = _sanitize_generator_state(existing_raw, unlocked, available)
generator_states[key] = _sanitize_generator_state(existing_raw, unlocked, available, default_owned)
return
var new_state: Dictionary = _default_generator_state(unlocked, available)
var new_state: Dictionary = _default_generator_state(unlocked, available, default_owned)
generator_states[key] = new_state
generator_state_changed.emit(StringName(key), new_state.duplicate(true))
@@ -446,10 +447,11 @@ func _set_total_currency(currency_id: StringName, value: BigNumber) -> void:
return
_total_currency_acquired[normalized_currency_id] = _copy_big_number(value)
func _default_generator_state(unlocked: bool, available: bool) -> Dictionary:
func _default_generator_state(unlocked: bool, available: bool, owned: int = 0) -> Dictionary:
var owned_value: int = _to_non_negative_int(owned, 0)
return {
GENERATOR_OWNED_KEY: 0,
GENERATOR_PURCHASED_COUNT_KEY: 0,
GENERATOR_OWNED_KEY: owned_value,
GENERATOR_PURCHASED_COUNT_KEY: owned_value,
GENERATOR_UNLOCKED_KEY: unlocked,
GENERATOR_AVAILABLE_KEY: available,
}
@@ -457,19 +459,19 @@ func _default_generator_state(unlocked: bool, available: bool) -> Dictionary:
func _get_generator_state(generator_id: StringName) -> Dictionary:
var key: String = String(generator_id)
if key.is_empty():
return _default_generator_state(false, false)
return _default_generator_state(false, false, 0)
if not generator_states.has(key):
register_generator(generator_id)
var existing_raw: Variant = generator_states.get(key, _default_generator_state(false, false))
var existing_raw: Variant = generator_states.get(key, _default_generator_state(false, false, 0))
if existing_raw is Dictionary:
var state: Dictionary = existing_raw
var sanitized: Dictionary = _sanitize_generator_state(state, false, false)
var sanitized: Dictionary = _sanitize_generator_state(state, false, false, 0)
generator_states[key] = sanitized
return sanitized
var fallback: Dictionary = _default_generator_state(false, false)
var fallback: Dictionary = _default_generator_state(false, false, 0)
generator_states[key] = fallback
return fallback
@@ -478,7 +480,7 @@ func _set_generator_state(generator_id: StringName, state: Dictionary) -> void:
if key.is_empty():
return
var sanitized: Dictionary = _sanitize_generator_state(state, false, false)
var sanitized: Dictionary = _sanitize_generator_state(state, false, false, 0)
generator_states[key] = sanitized
generator_state_changed.emit(StringName(key), sanitized.duplicate(true))
@@ -668,8 +670,9 @@ func _deserialize_generator_state_entry(raw_state: Dictionary) -> Dictionary:
return parsed_state
func _sanitize_generator_state(raw_state: Dictionary, default_unlocked: bool, default_available: bool) -> Dictionary:
var owned_value: int = _to_non_negative_int(raw_state.get(GENERATOR_OWNED_KEY, 0), 0)
func _sanitize_generator_state(raw_state: Dictionary, default_unlocked: bool, default_available: bool, default_owned: int = 0) -> Dictionary:
var normalized_default_owned: int = _to_non_negative_int(default_owned, 0)
var owned_value: int = _to_non_negative_int(raw_state.get(GENERATOR_OWNED_KEY, normalized_default_owned), normalized_default_owned)
var purchased_value: int = _to_non_negative_int(raw_state.get(GENERATOR_PURCHASED_COUNT_KEY, owned_value), owned_value)
return {