53 lines
1.5 KiB
GDScript
53 lines
1.5 KiB
GDScript
class_name DiveDifficultyProfile
|
|
extends RefCounted
|
|
|
|
var profile_id: StringName
|
|
var oxygen_consumption_multiplier: float
|
|
var battery_consumption_multiplier: float
|
|
var collision_damage_multiplier: float
|
|
var pressure_damage_multiplier: float
|
|
var crush_grace_multiplier: float
|
|
|
|
|
|
func _init(
|
|
p_profile_id: StringName,
|
|
p_oxygen_consumption_multiplier: float,
|
|
p_battery_consumption_multiplier: float,
|
|
p_collision_damage_multiplier: float,
|
|
p_pressure_damage_multiplier: float,
|
|
p_crush_grace_multiplier: float
|
|
) -> void:
|
|
profile_id = p_profile_id
|
|
oxygen_consumption_multiplier = p_oxygen_consumption_multiplier
|
|
battery_consumption_multiplier = p_battery_consumption_multiplier
|
|
collision_damage_multiplier = p_collision_damage_multiplier
|
|
pressure_damage_multiplier = p_pressure_damage_multiplier
|
|
crush_grace_multiplier = p_crush_grace_multiplier
|
|
|
|
|
|
static func exploration():
|
|
return new(&"exploration", 0.75, 0.80, 0.65, 0.50, 1.50)
|
|
|
|
|
|
static func standard():
|
|
return new(&"standard", 1.0, 1.0, 1.0, 1.0, 1.0)
|
|
|
|
|
|
static func expert():
|
|
return new(&"expert", 1.20, 1.15, 1.25, 1.35, 0.75)
|
|
|
|
|
|
func validation_error() -> String:
|
|
if profile_id.is_empty():
|
|
return "difficulty profile_id is empty"
|
|
for value: float in [
|
|
oxygen_consumption_multiplier,
|
|
battery_consumption_multiplier,
|
|
collision_damage_multiplier,
|
|
pressure_damage_multiplier,
|
|
crush_grace_multiplier,
|
|
]:
|
|
if not is_finite(value) or value <= 0.0:
|
|
return "difficulty multipliers must be finite and positive"
|
|
return ""
|