Add starter RV progression and fishing feedback
This commit is contained in:
parent
eed361681a
commit
d8bf59bca0
47 changed files with 2268 additions and 467 deletions
|
|
@ -2,62 +2,77 @@ class_name PlayerCoolerCapacity
|
|||
extends Node
|
||||
|
||||
const PlayerWalletType = preload("res://economy/player_wallet.gd")
|
||||
const PlayerHomeStateType = preload("res://homes/player_home_state.gd")
|
||||
|
||||
signal capacity_changed(level: int, capacity: int)
|
||||
|
||||
## Kept under the historical class name so existing saves and network product
|
||||
## identifiers migrate without losing their purchased level. This progression
|
||||
## now controls the player's private storage box rather than carried catches.
|
||||
## Compatibility adapter for saves and systems that still refer to the old
|
||||
## cooler-capacity object. Storage is now derived exclusively from the player's
|
||||
## home tier; this object is not independently purchasable.
|
||||
const CAPACITIES: Array[int] = [9, 18, 27, 36, 45, 54, 63, 72]
|
||||
const EXPANSION_COSTS: Array[int] = [75, 175, 400, 850, 1500, 2500, 4000]
|
||||
const MAX_LEVEL: int = 7
|
||||
const MAX_CAPACITY: int = 72
|
||||
|
||||
var _capacity_level: int = 0
|
||||
var _home_state: PlayerHomeStateType
|
||||
var _legacy_capacity_level: int = 0
|
||||
|
||||
|
||||
func bind_home_state(home_state: PlayerHomeStateType) -> void:
|
||||
if _home_state == home_state:
|
||||
return
|
||||
if (
|
||||
_home_state != null
|
||||
and _home_state.changed.is_connected(_on_home_changed)
|
||||
):
|
||||
_home_state.changed.disconnect(_on_home_changed)
|
||||
_home_state = home_state
|
||||
if (
|
||||
_home_state != null
|
||||
and not _home_state.changed.is_connected(_on_home_changed)
|
||||
):
|
||||
_home_state.changed.connect(_on_home_changed)
|
||||
_on_home_changed()
|
||||
|
||||
|
||||
func get_level() -> int:
|
||||
return _capacity_level
|
||||
return _legacy_capacity_level
|
||||
|
||||
|
||||
func get_capacity() -> int:
|
||||
return CAPACITIES[_capacity_level]
|
||||
if _home_state != null:
|
||||
# A new home upgrade grants its authored capacity. Older saves retain any
|
||||
# separately purchased storage level so reducing the first RV tier cannot
|
||||
# hide or discard items that were already placed in later slots.
|
||||
return maxi(
|
||||
_home_state.get_storage_capacity(),
|
||||
CAPACITIES[clampi(_legacy_capacity_level, 0, MAX_LEVEL)],
|
||||
)
|
||||
return CAPACITIES[clampi(_legacy_capacity_level, 0, MAX_LEVEL)]
|
||||
|
||||
|
||||
func get_next_capacity() -> int:
|
||||
if _capacity_level >= MAX_LEVEL:
|
||||
return -1
|
||||
return CAPACITIES[_capacity_level + 1]
|
||||
return -1
|
||||
|
||||
|
||||
func get_next_cost() -> int:
|
||||
if _capacity_level >= MAX_LEVEL:
|
||||
return -1
|
||||
return EXPANSION_COSTS[_capacity_level]
|
||||
return -1
|
||||
|
||||
|
||||
func can_purchase(wallet: PlayerWalletType) -> bool:
|
||||
var cost: int = get_next_cost()
|
||||
return wallet != null and cost >= 0 and wallet.can_afford(cost)
|
||||
func can_purchase(_wallet: PlayerWalletType) -> bool:
|
||||
return false
|
||||
|
||||
|
||||
func purchase(wallet: PlayerWalletType) -> bool:
|
||||
if not can_purchase(wallet):
|
||||
return false
|
||||
var cost: int = get_next_cost()
|
||||
if not wallet.debit(cost):
|
||||
return false
|
||||
_capacity_level += 1
|
||||
capacity_changed.emit(_capacity_level, get_capacity())
|
||||
return true
|
||||
func purchase(_wallet: PlayerWalletType) -> bool:
|
||||
return false
|
||||
|
||||
|
||||
func restore_level(level: int) -> bool:
|
||||
var validated: int = clampi(level, 0, MAX_LEVEL)
|
||||
var changed: bool = _capacity_level != validated
|
||||
_capacity_level = validated
|
||||
var changed: bool = _legacy_capacity_level != validated
|
||||
_legacy_capacity_level = validated
|
||||
if changed:
|
||||
capacity_changed.emit(_capacity_level, get_capacity())
|
||||
capacity_changed.emit(get_level(), get_capacity())
|
||||
return true
|
||||
|
||||
|
||||
|
|
@ -66,4 +81,8 @@ func reset_to_defaults() -> void:
|
|||
|
||||
|
||||
func to_save_data() -> Dictionary:
|
||||
return {"capacity_level": _capacity_level}
|
||||
return {"capacity_level": get_level()}
|
||||
|
||||
|
||||
func _on_home_changed() -> void:
|
||||
capacity_changed.emit(get_level(), get_capacity())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue