Files
Ransom-s-wake/game/domain/rules/dive_upgrade_effects.gd
T

48 lines
1.5 KiB
GDScript

class_name DiveUpgradeEffects
extends RefCounted
var battery_capacity_bonus_kwh: float
var oxygen_capacity_bonus_l: float
var hull_integrity_bonus: float
var certified_depth_bonus_m: float
var battery_consumption_multiplier: float
var collision_damage_multiplier: float
var pressure_damage_multiplier: float
func _init(
p_battery_capacity_bonus_kwh: float = 0.0,
p_oxygen_capacity_bonus_l: float = 0.0,
p_hull_integrity_bonus: float = 0.0,
p_certified_depth_bonus_m: float = 0.0,
p_battery_consumption_multiplier: float = 1.0,
p_collision_damage_multiplier: float = 1.0,
p_pressure_damage_multiplier: float = 1.0
) -> void:
battery_capacity_bonus_kwh = p_battery_capacity_bonus_kwh
oxygen_capacity_bonus_l = p_oxygen_capacity_bonus_l
hull_integrity_bonus = p_hull_integrity_bonus
certified_depth_bonus_m = p_certified_depth_bonus_m
battery_consumption_multiplier = p_battery_consumption_multiplier
collision_damage_multiplier = p_collision_damage_multiplier
pressure_damage_multiplier = p_pressure_damage_multiplier
func validation_error() -> String:
for bonus: float in [
battery_capacity_bonus_kwh,
oxygen_capacity_bonus_l,
hull_integrity_bonus,
certified_depth_bonus_m,
]:
if not is_finite(bonus) or bonus < 0.0:
return "upgrade bonuses must be finite and non-negative"
for multiplier: float in [
battery_consumption_multiplier,
collision_damage_multiplier,
pressure_damage_multiplier,
]:
if not is_finite(multiplier) or multiplier <= 0.0:
return "upgrade multipliers must be finite and positive"
return ""