Add fish selling, buyer profiles, and player wallet
This commit is contained in:
parent
fb04615600
commit
d2fe367891
25 changed files with 738 additions and 5 deletions
|
|
@ -9,6 +9,8 @@ const FishDataType = preload("res://fish/fish_data.gd")
|
|||
@export var catch_sequence: int = 0
|
||||
@export var weight_lb: float = 0.0
|
||||
@export var display_scale: float = 1.0
|
||||
@export var sale_value: int = 0
|
||||
@export var is_favorited: bool = false
|
||||
|
||||
|
||||
func ensure_identity() -> void:
|
||||
|
|
@ -29,4 +31,5 @@ func is_valid() -> bool:
|
|||
and weight_lb >= fish.get_minimum_weight()
|
||||
and weight_lb <= fish.get_maximum_weight()
|
||||
and display_scale > 0.0
|
||||
and sale_value >= 0
|
||||
)
|
||||
|
|
|
|||
|
|
@ -25,6 +25,9 @@ enum Rarity {
|
|||
@export_range(0.01, 20.0, 0.01) var display_scale_min: float = 0.8
|
||||
@export_range(0.01, 20.0, 0.01) var display_scale_max: float = 1.2
|
||||
@export_range(0.01, 10.0, 0.01) var display_scale_curve: float = 1.0
|
||||
@export_range(0, 1000000, 1) var sell_value_min: int = 0
|
||||
@export_range(0, 1000000, 1) var sell_value_max: int = 1
|
||||
@export_range(0.01, 10.0, 0.01) var sell_value_curve: float = 1.0
|
||||
@export var display_texture: Texture2D
|
||||
|
||||
|
||||
|
|
@ -38,6 +41,9 @@ func is_selectable() -> bool:
|
|||
and display_scale_min > 0.0
|
||||
and display_scale_max >= display_scale_min
|
||||
and display_scale_curve > 0.0
|
||||
and sell_value_min >= 0
|
||||
and sell_value_max >= sell_value_min
|
||||
and sell_value_curve > 0.0
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -68,5 +74,28 @@ func get_display_scale_for_weight(weight_lb: float) -> float:
|
|||
return lerpf(minimum_scale, maximum_scale, normalized_weight)
|
||||
|
||||
|
||||
func get_sale_value_for_weight(weight_lb: float) -> int:
|
||||
var minimum_value: int = maxi(sell_value_min, 0)
|
||||
var maximum_value: int = maxi(sell_value_max, minimum_value)
|
||||
var normalized_weight: float = 0.0
|
||||
var minimum_weight: float = get_minimum_weight()
|
||||
var maximum_weight: float = get_maximum_weight()
|
||||
if maximum_weight > minimum_weight:
|
||||
normalized_weight = inverse_lerp(
|
||||
minimum_weight,
|
||||
maximum_weight,
|
||||
weight_lb
|
||||
)
|
||||
normalized_weight = pow(
|
||||
clampf(normalized_weight, 0.0, 1.0),
|
||||
maxf(sell_value_curve, 0.01)
|
||||
)
|
||||
return clampi(
|
||||
roundi(lerpf(minimum_value, maximum_value, normalized_weight)),
|
||||
minimum_value,
|
||||
maximum_value
|
||||
)
|
||||
|
||||
|
||||
func get_rarity_name() -> String:
|
||||
return Rarity.keys()[rarity].capitalize()
|
||||
|
|
|
|||
|
|
@ -76,4 +76,7 @@ func create_catch(fish: FishDataType) -> FishCatchType:
|
|||
caught_fish.display_scale = fish.get_display_scale_for_weight(
|
||||
caught_fish.weight_lb
|
||||
)
|
||||
caught_fish.sale_value = fish.get_sale_value_for_weight(
|
||||
caught_fish.weight_lb
|
||||
)
|
||||
return caught_fish
|
||||
|
|
|
|||
|
|
@ -25,4 +25,7 @@ weight_max_lb = 8.0
|
|||
display_scale_min = 0.9
|
||||
display_scale_max = 1.5
|
||||
display_scale_curve = 0.9
|
||||
sell_value_min = 12
|
||||
sell_value_max = 45
|
||||
sell_value_curve = 0.9
|
||||
display_texture = ExtResource("4_texture")
|
||||
|
|
|
|||
|
|
@ -18,4 +18,7 @@ weight_max_lb = 2.0
|
|||
display_scale_min = 0.7
|
||||
display_scale_max = 1.1
|
||||
display_scale_curve = 1.0
|
||||
sell_value_min = 3
|
||||
sell_value_max = 12
|
||||
sell_value_curve = 1.0
|
||||
display_texture = ExtResource("4_texture")
|
||||
|
|
|
|||
|
|
@ -25,4 +25,7 @@ weight_max_lb = 18.0
|
|||
display_scale_min = 1.0
|
||||
display_scale_max = 1.8
|
||||
display_scale_curve = 0.85
|
||||
sell_value_min = 25
|
||||
sell_value_max = 90
|
||||
sell_value_curve = 0.85
|
||||
display_texture = ExtResource("4_texture")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue