43 lines
1.1 KiB
GDScript
43 lines
1.1 KiB
GDScript
class_name GoalRequirementData
|
|
extends Resource
|
|
|
|
@export var currency: Resource
|
|
@export var amount_mantissa: float = 0.0
|
|
@export var amount_exponent: int = 0
|
|
|
|
func get_currency_id() -> StringName:
|
|
if currency == null:
|
|
return &""
|
|
|
|
return GameState.get_currency_id(currency)
|
|
|
|
func get_amount() -> BigNumber:
|
|
return BigNumber.new(amount_mantissa, amount_exponent)
|
|
|
|
func has_valid_currency() -> bool:
|
|
var currency_id: StringName = get_currency_id()
|
|
if currency_id == &"":
|
|
return false
|
|
|
|
return GameState.is_known_currency_id(currency_id)
|
|
|
|
func has_valid_amount() -> bool:
|
|
return get_amount().mantissa >= 0.0
|
|
|
|
func is_valid() -> bool:
|
|
return has_valid_currency() and has_valid_amount()
|
|
|
|
func is_met() -> bool:
|
|
if not is_valid():
|
|
return false
|
|
|
|
var total_amount: BigNumber = GameState.get_total_currency_acquired_by_id(get_currency_id())
|
|
return not total_amount.is_less_than(get_amount())
|
|
|
|
func get_summary_text() -> String:
|
|
if not is_valid():
|
|
return ""
|
|
|
|
var currency_name: String = GameState.get_currency_name(get_currency_id())
|
|
return "%s %s" % [get_amount().to_string_suffix(2), currency_name]
|