Use a single currency changed signal
This commit is contained in:
@@ -21,16 +21,17 @@ func set_limits(start: BigNumber, end: BigNumber) -> void:
|
|||||||
_progress_bar.max_value = _end.get_ratio(_start)
|
_progress_bar.max_value = _end.get_ratio(_start)
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
GameState.currency_changed.connect(_on_currency_changed)
|
||||||
match currency:
|
match currency:
|
||||||
GameState.CurrencyType.gold:
|
GameState.CurrencyType.gold:
|
||||||
GameState.gold_changed.connect(_on_currency_changed)
|
|
||||||
_current = GameState.gold
|
_current = GameState.gold
|
||||||
GameState.CurrencyType.gems:
|
GameState.CurrencyType.gems:
|
||||||
GameState.gems_changed.connect(_on_currency_changed)
|
|
||||||
_current = GameState.gems
|
_current = GameState.gems
|
||||||
|
|
||||||
set_limits(_current, _current.add(BigNumber.new(1, 1)))
|
set_limits(_current, _current.add(BigNumber.new(1, 1)))
|
||||||
|
|
||||||
func _on_currency_changed(currency: BigNumber) -> void:
|
func _on_currency_changed(changed_currency: GameState.CurrencyType, amount: BigNumber) -> void:
|
||||||
_current = currency
|
if changed_currency != currency:
|
||||||
_progress_bar.value = currency.get_ratio(_end)
|
return
|
||||||
|
_current = amount
|
||||||
|
_progress_bar.value = amount.get_ratio(_end)
|
||||||
|
|||||||
@@ -10,14 +10,17 @@ extends HBoxContainer
|
|||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
_label.text = data.name
|
_label.text = data.name
|
||||||
|
GameState.currency_changed.connect(_on_currency_changed)
|
||||||
match currency:
|
match currency:
|
||||||
GameState.CurrencyType.gold:
|
GameState.CurrencyType.gold:
|
||||||
GameState.gold_changed.connect(_on_currency_changed)
|
_on_currency_changed(currency, GameState.gold)
|
||||||
GameState.CurrencyType.gems:
|
GameState.CurrencyType.gems:
|
||||||
GameState.gems_changed.connect(_on_currency_changed)
|
_on_currency_changed(currency, GameState.gems)
|
||||||
|
|
||||||
func _on_currency_changed(currency: BigNumber) -> void:
|
func _on_currency_changed(changed_currency: GameState.CurrencyType, amount: BigNumber) -> void:
|
||||||
_currency_label.text = currency.to_string_suffix(2)
|
if changed_currency != currency:
|
||||||
|
return
|
||||||
|
_currency_label.text = amount.to_string_suffix(2)
|
||||||
|
|
||||||
func _on_debug_income_button_pressed() -> void:
|
func _on_debug_income_button_pressed() -> void:
|
||||||
GameState.add_gold(BigNumber.from_float(100))
|
GameState.add_gold(BigNumber.from_float(100))
|
||||||
|
|||||||
@@ -4,8 +4,7 @@ extends Node
|
|||||||
# ==========================================
|
# ==========================================
|
||||||
# SIGNALS
|
# SIGNALS
|
||||||
# ==========================================
|
# ==========================================
|
||||||
signal gold_changed(new_amount: BigNumber)
|
signal currency_changed(currency_type: CurrencyType, new_amount: BigNumber)
|
||||||
signal gems_changed(new_amount: BigNumber)
|
|
||||||
signal generator_state_changed(generator_id: StringName, state: Dictionary)
|
signal generator_state_changed(generator_id: StringName, state: Dictionary)
|
||||||
|
|
||||||
enum CurrencyType { gold, gems }
|
enum CurrencyType { gold, gems }
|
||||||
@@ -34,25 +33,25 @@ func _ready() -> void:
|
|||||||
# ==========================================
|
# ==========================================
|
||||||
func add_gold(amount: BigNumber) -> void:
|
func add_gold(amount: BigNumber) -> void:
|
||||||
gold.add_in_place(amount)
|
gold.add_in_place(amount)
|
||||||
gold_changed.emit(gold)
|
currency_changed.emit(CurrencyType.gold, gold)
|
||||||
|
|
||||||
func spend_gold(cost: BigNumber) -> bool:
|
func spend_gold(cost: BigNumber) -> bool:
|
||||||
if gold.is_greater_than(cost) or gold.is_equal_to(cost):
|
if gold.is_greater_than(cost) or gold.is_equal_to(cost):
|
||||||
var negative_cost = BigNumber.new(-cost.mantissa, cost.exponent)
|
var negative_cost = BigNumber.new(-cost.mantissa, cost.exponent)
|
||||||
gold.add_in_place(negative_cost)
|
gold.add_in_place(negative_cost)
|
||||||
gold_changed.emit(gold)
|
currency_changed.emit(CurrencyType.gold, gold)
|
||||||
return true
|
return true
|
||||||
return false
|
return false
|
||||||
|
|
||||||
func add_gems(amount: BigNumber) -> void:
|
func add_gems(amount: BigNumber) -> void:
|
||||||
gems.add_in_place(amount)
|
gems.add_in_place(amount)
|
||||||
gems_changed.emit(gems)
|
currency_changed.emit(CurrencyType.gems, gems)
|
||||||
|
|
||||||
func spend_gems(cost: BigNumber) -> bool:
|
func spend_gems(cost: BigNumber) -> bool:
|
||||||
if gems.is_greater_than(cost) or gems.is_equal_to(cost):
|
if gems.is_greater_than(cost) or gems.is_equal_to(cost):
|
||||||
var negative_cost = BigNumber.new(-cost.mantissa, cost.exponent)
|
var negative_cost = BigNumber.new(-cost.mantissa, cost.exponent)
|
||||||
gems.add_in_place(negative_cost)
|
gems.add_in_place(negative_cost)
|
||||||
gems_changed.emit(gems)
|
currency_changed.emit(CurrencyType.gems, gems)
|
||||||
return true
|
return true
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
|||||||
@@ -13,12 +13,7 @@ func _ready() -> void:
|
|||||||
_generator.purchase_completed.connect(_on_generator_updated)
|
_generator.purchase_completed.connect(_on_generator_updated)
|
||||||
_generator.production_tick.connect(_on_generator_updated)
|
_generator.production_tick.connect(_on_generator_updated)
|
||||||
_generator.purchase_failed.connect(_on_generator_updated)
|
_generator.purchase_failed.connect(_on_generator_updated)
|
||||||
|
GameState.currency_changed.connect(_on_currency_changed)
|
||||||
match _generator.currency:
|
|
||||||
GameState.CurrencyType.gold:
|
|
||||||
GameState.gold_changed.connect(_on_currency_changed)
|
|
||||||
GameState.CurrencyType.gems:
|
|
||||||
GameState.gems_changed.connect(_on_currency_changed)
|
|
||||||
|
|
||||||
GameState.generator_state_changed.connect(_on_generator_state_changed)
|
GameState.generator_state_changed.connect(_on_generator_state_changed)
|
||||||
|
|
||||||
@@ -37,7 +32,9 @@ func _on_debug_income_pressed() -> void:
|
|||||||
_generator.grant_currency(BigNumber.from_float(100.0))
|
_generator.grant_currency(BigNumber.from_float(100.0))
|
||||||
_refresh_generator_ui()
|
_refresh_generator_ui()
|
||||||
|
|
||||||
func _on_currency_changed(_new_value: BigNumber) -> void:
|
func _on_currency_changed(changed_currency: GameState.CurrencyType, _new_value: BigNumber) -> void:
|
||||||
|
if changed_currency != _generator.currency:
|
||||||
|
return
|
||||||
_refresh_generator_ui()
|
_refresh_generator_ui()
|
||||||
|
|
||||||
func _on_generator_updated(_a = null, _b = null, _c = null, _d = null) -> void:
|
func _on_generator_updated(_a = null, _b = null, _c = null, _d = null) -> void:
|
||||||
|
|||||||
Reference in New Issue
Block a user