2.1 KiB
2.1 KiB
Currency Module Documentation
Overview
The currency/ subfolder contains the data structure for defining in-game currencies.
Files
currency.gd
Defines the Currency class - a Resource for currency metadata.
Currency Class
class_name Currency
extends Resource
@export var id: StringName = &"" # Unique identifier (e.g., &"gold")
@export var display_name: String = "" # UI-friendly name
@export var icon: Texture2D # Display icon
Usage
Defining a Currency
Create a .tres resource file with:
- id: Lowercase unique key (used internally)
- display_name: What players see ("Gold", "Gems")
- icon: Texture for UI display
Example res://sandbox/currencies/gold.tres:
[gd_resource type="Resource" script_class="Currency"]
[resource]
id = &"gold"
display_name = "Gold"
icon = ExtResource("uid://...")
Accessing Currencies
# Get all known currencies
var currencies: Array[Currency] = CurrencyDatabase.get_known_currencies()
# Get currency by ID
var gold: Currency = CurrencyDatabase.get_currency_resource(&"gold")
# Check if currency exists
var is_valid: bool = CurrencyDatabase.is_known_currency_id(&"gems")
# Get display name
var name: String = CurrencyDatabase.get_currency_name(&"gold")
Integration with GameState
Currencies are tracked in three ways:
- current: Current balance (resets on prestige)
- total: Total acquired this run (resets on prestige)
- all_time: Lifetime total (never resets)
# Add currency
GameState.add_currency(gold_resource, BigNumber.new(100.0, 0))
# Get balance
var balance: BigNumber = GameState.get_currency_amount_by_id(&"gold")
# Spend currency (returns false if insufficient)
var success: bool = GameState.spend_currency_by_id(&"gold", BigNumber.new(50.0, 0))
Auto-Discovery
CurrencyDatabase automatically scans res://sandbox/currencies/ for .tres and .res files on startup.
See Also
core/game_state.gd- Currency state managementcore/big_number.gd- Large number handlinggenerator/currency_generator_data.gd- Generator purchase currency