Update Currency for Player Object and UI
You can use the new Callable to update the Player Object...
Store.gd
var player
func init():
self.player = $'../../'.get_node("Player")
func _on_purchase():
self.player.data.currency.copper -= $Item/Cost.text.to_init()
# Create a Callable to the Remote Player.gd _on_currency_changed function
var _on_currency_changed = Callable(self.player, "_on_currency_changed")
_on_currency_changed.call() # <-- Call the Callable...and then use a signal to notify all subscribers (observers) connected to that signal when something is updated...
Player.gd
var player_id
var data
# Create a Signal for Subscribers to Know when the Player's currency has changed
signal currency_changed
func init():
var players_data = PlayerData.load_savegame("user://players_db.json")
self.data = players_data.players[self.player_id]
self.calculate_currency()
func calculate_currency():
var currency = self.data.currency
while (currency.copper >= 100):
currency.silver += 1
currency.copper -= 100
while (currency.silver >= 100):
currency.gold += 1
currency.silver -= 100
func _on_currency_changed(): # <-- This is remotely called by the Store.gd
self.calculate_currency()
# Emit to all subscribers that the Player's currency has changed and needs updated
self.emit_signal("currency_changed") ...such as a Currency UI...
Currency.gd
Last updated