Implement production vertical slice foundation

This commit is contained in:
chindit committed 2026-10-02 15:27:48 +02:00
1 parent 9d4a89f355
commit a18e82eb44
104 files changed
+10595 -268

No files matched your search

@@ -0,0 +1,52 @@
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 ""