Update READMEs
This commit is contained in:
@@ -41,21 +41,17 @@ icon = ExtResource("uid://...")
|
||||
|
||||
### Accessing Currencies
|
||||
|
||||
Currencies are defined in a `CurrencyCatalogue` resource that holds an array of `Currency` resources.
|
||||
|
||||
```gdscript
|
||||
# Get all known currencies
|
||||
var currencies: Array[Currency] = CurrencyDatabase.get_known_currencies()
|
||||
# Get all known currency IDs from the catalogue
|
||||
var ids: Array[StringName] = currency_catalogue.get_all_ids()
|
||||
|
||||
# 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")
|
||||
# Get currency resource by ID
|
||||
var gold: Currency = currency_catalogue.get_currency_by_id(&"gold")
|
||||
```
|
||||
|
||||
## Integration with GameState
|
||||
## Integration with LevelGameState
|
||||
|
||||
Currencies are tracked in three ways:
|
||||
1. **current**: Current balance (resets on prestige)
|
||||
@@ -64,21 +60,52 @@ Currencies are tracked in three ways:
|
||||
|
||||
```gdscript
|
||||
# Add currency
|
||||
GameState.add_currency(gold_resource, BigNumber.new(100.0, 0))
|
||||
level_game_state.add_currency(gold_resource, BigNumber.new(100.0, 0))
|
||||
|
||||
# Add by ID
|
||||
level_game_state.add_currency_by_id(&"gold", BigNumber.new(100.0, 0))
|
||||
|
||||
# Get balance
|
||||
var balance: BigNumber = GameState.get_currency_amount_by_id(&"gold")
|
||||
var balance: BigNumber = level_game_state.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))
|
||||
var success: bool = level_game_state.spend_currency_by_id(&"gold", BigNumber.new(50.0, 0))
|
||||
|
||||
# Check if currency exists
|
||||
var is_valid: bool = level_game_state.is_known_currency_id(&"gems")
|
||||
|
||||
# Get currency resource
|
||||
var gold: Currency = level_game_state.get_currency_resource(&"gold")
|
||||
|
||||
# Get display name
|
||||
var name: String = level_game_state.get_currency_name(&"gold")
|
||||
```
|
||||
|
||||
## Auto-Discovery
|
||||
## CurrencyCatalogue Class
|
||||
|
||||
`CurrencyDatabase` automatically scans `res://sandbox/currencies/` for `.tres` and `.res` files on startup.
|
||||
```gdscript
|
||||
class_name CurrencyCatalogue
|
||||
extends Resource
|
||||
|
||||
@export var currencies: Array[Currency] = []
|
||||
|
||||
func get_currency_by_id(id: StringName) -> Currency
|
||||
func get_all_ids() -> Array[StringName]
|
||||
```
|
||||
|
||||
The `CurrencyCatalogue` is a resource that holds all defined currencies and is assigned to `LevelGameState` via the `currency_catalogue` export variable.
|
||||
|
||||
## Signals
|
||||
|
||||
`LevelGameState` emits `currency_changed(currency_id: StringName, new_amount: BigNumber)` whenever a currency balance changes.
|
||||
|
||||
## See Also
|
||||
|
||||
- `core/game_state.gd` - Currency state management
|
||||
- `core/level_game_state.gd` - Currency state management
|
||||
- `core/big_number.gd` - Large number handling
|
||||
- `generator/currency_generator_data.gd` - Generator purchase currency
|
||||
- `core/currency/currency_catalogue.gd` - Currency catalogue resource
|
||||
- `core/generator/currency_generator_data.gd` - Generator purchase currency
|
||||
|
||||
</content>
|
||||
<parameter=filePath>
|
||||
/home/mikymod/work/jmp/idle/core/currency/README.md
|
||||
Reference in New Issue
Block a user