Fixing daynight cycle, and adding character home
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
@tool
|
||||
extends Label
|
||||
class_name TimeDisplay
|
||||
|
||||
@export var day_night_controller_path: NodePath
|
||||
@export var display_enabled: bool = true
|
||||
|
||||
var _day_night_controller: DayNightController = null
|
||||
|
||||
func _ready() -> void:
|
||||
set_process(true)
|
||||
_resolve_references()
|
||||
_connect_controller()
|
||||
_update_visibility()
|
||||
_update_text()
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if Engine.is_editor_hint():
|
||||
_update_text()
|
||||
|
||||
func set_display_enabled(value: bool) -> void:
|
||||
display_enabled = value
|
||||
_update_visibility()
|
||||
_update_text()
|
||||
|
||||
func _resolve_references() -> void:
|
||||
if day_night_controller_path != NodePath():
|
||||
_day_night_controller = get_node_or_null(day_night_controller_path) as DayNightController
|
||||
else:
|
||||
_day_night_controller = get_parent() as DayNightController
|
||||
|
||||
func _connect_controller() -> void:
|
||||
if _day_night_controller and not _day_night_controller.is_connected("time_changed", Callable(self, "_on_time_changed")):
|
||||
_day_night_controller.time_changed.connect(_on_time_changed)
|
||||
|
||||
func _on_time_changed(_hours: float) -> void:
|
||||
_update_text()
|
||||
|
||||
func _update_visibility() -> void:
|
||||
visible = display_enabled and _day_night_controller != null
|
||||
|
||||
func _update_text() -> void:
|
||||
if not display_enabled or not _day_night_controller:
|
||||
text = ""
|
||||
return
|
||||
var hours: float = _day_night_controller.get_time_of_day_hours()
|
||||
var total_hours: float = max(_day_night_controller.get_day_length_hours(), 0.001)
|
||||
var clamped_hours: float = clamp(hours, 0.0, total_hours)
|
||||
var whole_hours: int = int(clamped_hours)
|
||||
var minutes: int = int(round((clamped_hours - float(whole_hours)) * 60.0))
|
||||
if minutes == 60:
|
||||
whole_hours += 1
|
||||
minutes = 0
|
||||
if whole_hours >= int(total_hours):
|
||||
whole_hours = 0
|
||||
text = "%02d:%02d" % [whole_hours, minutes]
|
||||
Reference in New Issue
Block a user