41 lines
841 B
GDScript
41 lines
841 B
GDScript
extends SimulationKernel
|
|
|
|
signal phase_changed(phase: Phase)
|
|
|
|
enum Phase {
|
|
MORNING,
|
|
DAY,
|
|
EVENING,
|
|
NIGHT,
|
|
}
|
|
|
|
var _phase := Phase.MORNING
|
|
|
|
func _ready() -> void:
|
|
_phase = get_phase()
|
|
super._ready()
|
|
|
|
func reset(start_day := 1, start_hour := 6, start_minute := 0) -> void:
|
|
super.reset(start_day, start_hour, start_minute)
|
|
_phase = get_phase()
|
|
|
|
func advance_one_minute() -> void:
|
|
super.advance_one_minute()
|
|
var next_phase := get_phase()
|
|
if next_phase != _phase:
|
|
_phase = next_phase
|
|
phase_changed.emit(_phase)
|
|
|
|
func get_phase() -> Phase:
|
|
var hour := get_hour()
|
|
if hour >= 6 and hour < 10:
|
|
return Phase.MORNING
|
|
if hour >= 10 and hour < 16:
|
|
return Phase.DAY
|
|
if hour >= 16 and hour < 20:
|
|
return Phase.EVENING
|
|
return Phase.NIGHT
|
|
|
|
func formatted_time() -> String:
|
|
return "Day %d %02d:%02d" % [day, get_hour(), get_minute()]
|