Replace generic Resource usage with type-safe resources
This commit is contained in:
@@ -23,6 +23,7 @@ texture = ExtResource("4_ruf1h")
|
||||
shape = SubResource("RectangleShape2D_y5m1q")
|
||||
|
||||
[node name="GeneratorPanel" parent="." unique_id=1129190041 node_paths=PackedStringArray("_generator") instance=ExtResource("5_bb14m")]
|
||||
visible = false
|
||||
offset_left = 64.0
|
||||
offset_top = -64.0
|
||||
offset_right = 505.0
|
||||
|
||||
@@ -8,8 +8,6 @@ enum BuffKind {
|
||||
}
|
||||
|
||||
const HUGE_EXPONENT: int = 1000000
|
||||
const GOAL_DATA_SCRIPT: Script = preload("res://core/goals/goal_data.gd")
|
||||
const GOAL_REQUIREMENT_SCRIPT: Script = preload("res://core/goals/goal_requirement_data.gd")
|
||||
|
||||
@export var id: StringName = &""
|
||||
@export var kind: BuffKind = BuffKind.AUTO_PRODUCTION_MULTIPLIER
|
||||
@@ -19,20 +17,20 @@ const GOAL_REQUIREMENT_SCRIPT: Script = preload("res://core/goals/goal_requireme
|
||||
|
||||
@export_group("Unlock")
|
||||
@export var unlocked: bool = false
|
||||
@export var unlock_goal: Resource
|
||||
@export var unlock_goal: GoalData
|
||||
|
||||
@export_group("Effect")
|
||||
@export var base_effect: float = 1.0
|
||||
@export var effect_increment: float = 0.1
|
||||
|
||||
@export_group("Cost")
|
||||
@export var cost_currency: Resource
|
||||
@export var cost_currency: Currency
|
||||
@export var base_cost_mantissa: float = 10.0
|
||||
@export var base_cost_exponent: int = 0
|
||||
@export var cost_multiplier: float = 1.5
|
||||
|
||||
@export_group("Resource Purchase")
|
||||
@export var resource_target_currency: Resource
|
||||
@export var resource_target_currency: Currency
|
||||
@export var resource_purchase_base_mantissa: float = 10.0
|
||||
@export var resource_purchase_base_exponent: int = 0
|
||||
@export var resource_purchase_increment_multiplier: float = 1.2
|
||||
@@ -40,56 +38,44 @@ const GOAL_REQUIREMENT_SCRIPT: Script = preload("res://core/goals/goal_requireme
|
||||
func has_unlock_goal() -> bool:
|
||||
if unlock_goal == null:
|
||||
return false
|
||||
if unlock_goal.get_script() != GOAL_DATA_SCRIPT:
|
||||
return false
|
||||
|
||||
return bool(unlock_goal.call("is_valid"))
|
||||
return bool(unlock_goal.is_valid())
|
||||
|
||||
func get_unlock_goal_amount() -> BigNumber:
|
||||
if unlock_goal == null:
|
||||
return BigNumber.from_float(0.0)
|
||||
if unlock_goal.get_script() != GOAL_DATA_SCRIPT:
|
||||
return BigNumber.from_float(0.0)
|
||||
|
||||
var valid_requirements: Array[Resource] = unlock_goal.call("get_valid_requirements")
|
||||
var valid_requirements: Array[GoalRequirementData] = unlock_goal.get_valid_requirements()
|
||||
if valid_requirements.is_empty():
|
||||
return BigNumber.from_float(0.0)
|
||||
var requirement_resource: Resource = valid_requirements[0]
|
||||
var requirement_resource: GoalRequirementData = valid_requirements[0]
|
||||
if requirement_resource == null:
|
||||
return BigNumber.from_float(0.0)
|
||||
if requirement_resource.get_script() != GOAL_REQUIREMENT_SCRIPT:
|
||||
return BigNumber.from_float(0.0)
|
||||
|
||||
var required_amount: Variant = requirement_resource.call("get_amount")
|
||||
var required_amount: Variant = requirement_resource.get_amount()
|
||||
if required_amount is BigNumber:
|
||||
return required_amount
|
||||
|
||||
return BigNumber.from_float(0.0)
|
||||
|
||||
func get_unlock_goal_currency() -> Resource:
|
||||
func get_unlock_goal_currency() -> Currency:
|
||||
if unlock_goal == null:
|
||||
return null
|
||||
if unlock_goal.get_script() != GOAL_DATA_SCRIPT:
|
||||
return null
|
||||
|
||||
var valid_requirements: Array[Resource] = unlock_goal.call("get_valid_requirements")
|
||||
var valid_requirements: Array[GoalRequirementData] = unlock_goal.get_valid_requirements()
|
||||
if valid_requirements.is_empty():
|
||||
return null
|
||||
var requirement_resource: Resource = valid_requirements[0]
|
||||
var requirement_resource: GoalRequirementData = valid_requirements[0]
|
||||
if requirement_resource == null:
|
||||
return null
|
||||
if requirement_resource.get_script() != GOAL_REQUIREMENT_SCRIPT:
|
||||
return null
|
||||
|
||||
return requirement_resource.get("currency")
|
||||
return requirement_resource.currency
|
||||
|
||||
func is_unlock_goal_met() -> bool:
|
||||
if unlock_goal == null:
|
||||
return false
|
||||
if unlock_goal.get_script() != GOAL_DATA_SCRIPT:
|
||||
return false
|
||||
|
||||
return bool(unlock_goal.call("is_met"))
|
||||
return bool(unlock_goal.is_met())
|
||||
|
||||
func can_purchase_next_level(current_level: int) -> bool:
|
||||
if max_level < 0:
|
||||
|
||||
Reference in New Issue
Block a user