Implement production vertical slice foundation
This commit is contained in:
1 parent
9d4a89f355
commit
a18e82eb44
104 files changed
+10595
-268
No files matched your search
@@ -0,0 +1,101 @@
|
||||
class_name DiveEvent
|
||||
extends RefCounted
|
||||
|
||||
const DiveAlertLevel = preload("res://game/domain/dive/dive_alert_level.gd")
|
||||
const DiveTerminalReason = preload("res://game/domain/dive/dive_terminal_reason.gd")
|
||||
|
||||
enum Kind {
|
||||
ALERT_LEVEL_CHANGED,
|
||||
RESOURCE_DEPLETED,
|
||||
HULL_DAMAGED,
|
||||
DIVE_TERMINATED,
|
||||
}
|
||||
|
||||
var event_id: StringName
|
||||
var kind: Kind
|
||||
var tick_sequence: int
|
||||
var subject: StringName
|
||||
var amount: float
|
||||
var previous_level: DiveAlertLevel.Value
|
||||
var current_level: DiveAlertLevel.Value
|
||||
var terminal_reason: DiveTerminalReason.Value
|
||||
|
||||
|
||||
func _init(
|
||||
p_event_id: StringName,
|
||||
p_kind: Kind,
|
||||
p_tick_sequence: int,
|
||||
p_subject: StringName = &"",
|
||||
p_amount: float = 0.0,
|
||||
p_previous_level: DiveAlertLevel.Value = DiveAlertLevel.Value.NORMAL,
|
||||
p_current_level: DiveAlertLevel.Value = DiveAlertLevel.Value.NORMAL,
|
||||
p_terminal_reason: DiveTerminalReason.Value = DiveTerminalReason.Value.NONE
|
||||
) -> void:
|
||||
event_id = p_event_id
|
||||
kind = p_kind
|
||||
tick_sequence = p_tick_sequence
|
||||
subject = p_subject
|
||||
amount = p_amount
|
||||
previous_level = p_previous_level
|
||||
current_level = p_current_level
|
||||
terminal_reason = p_terminal_reason
|
||||
|
||||
|
||||
static func alert_changed(
|
||||
tick_sequence: int,
|
||||
subject: StringName,
|
||||
previous_level: DiveAlertLevel.Value,
|
||||
current_level: DiveAlertLevel.Value
|
||||
):
|
||||
return new(
|
||||
_event_id(tick_sequence, &"alert", subject),
|
||||
Kind.ALERT_LEVEL_CHANGED,
|
||||
tick_sequence,
|
||||
subject,
|
||||
0.0,
|
||||
previous_level,
|
||||
current_level
|
||||
)
|
||||
|
||||
|
||||
static func resource_depleted(tick_sequence: int, subject: StringName):
|
||||
return new(
|
||||
_event_id(tick_sequence, &"depleted", subject),
|
||||
Kind.RESOURCE_DEPLETED,
|
||||
tick_sequence,
|
||||
subject
|
||||
)
|
||||
|
||||
|
||||
static func hull_damaged(tick_sequence: int, amount: float):
|
||||
return new(
|
||||
_event_id(tick_sequence, &"damage", &"hull"),
|
||||
Kind.HULL_DAMAGED,
|
||||
tick_sequence,
|
||||
&"hull",
|
||||
amount
|
||||
)
|
||||
|
||||
|
||||
static func dive_terminated(
|
||||
tick_sequence: int,
|
||||
reason: DiveTerminalReason.Value
|
||||
):
|
||||
return new(
|
||||
_event_id(tick_sequence, &"terminal", &"dive"),
|
||||
Kind.DIVE_TERMINATED,
|
||||
tick_sequence,
|
||||
&"dive",
|
||||
0.0,
|
||||
DiveAlertLevel.Value.NORMAL,
|
||||
DiveAlertLevel.Value.NORMAL,
|
||||
reason
|
||||
)
|
||||
|
||||
|
||||
static func _event_id(
|
||||
tick_sequence: int,
|
||||
event_name: StringName,
|
||||
subject_name: StringName
|
||||
) -> StringName:
|
||||
return StringName("%d:%s:%s" % [tick_sequence, event_name, subject_name])
|
||||
Reference in new issue
Block a user