#Day/Night Cycle Timer Display Issue
1 messages · Page 1 of 1 (latest)
extends Node
const MINUTES_PER_DAY: int = 24 * 60
const MINUTES_PER_HOUR: int = 60
const GAME_MINUTE_DURATION: float = TAU / MINUTES_PER_DAY
var game_speed: float = 5.0
var initial_day: int = 1
var initial_hour: int = 12
var initial_minute: int = 30
var time: float = 0.0
var current_minute: int = -1
var current_day: int = 0
signal game_time(time: float)
signal time_tick(day: int, hour: int, minute: int)
signal time_tick_day(day: int)
func _ready() -> void:
set_initial_time()
func _process(delta: float) -> void:
time += delta * game_speed * GAME_MINUTE_DURATION
game_time.emit(time)
recalculate_time()
func set_initial_time() -> void:
var initial_total_minutes = initial_day * MINUTES_PER_DAY + (initial_hour * MINUTES_PER_HOUR) + initial_minute
time = initial_total_minutes * GAME_MINUTE_DURATION
func recalculate_time()-> void:
var total_minutes: int = int(time / GAME_MINUTE_DURATION)
var day: int = int(total_minutes / MINUTES_PER_DAY)
var current_day_minutes: int = total_minutes % MINUTES_PER_DAY
var hour: int = int(current_day_minutes % MINUTES_PER_HOUR)
var minute: int = int(current_day_minutes % MINUTES_PER_HOUR)
if current_minute != minute:
current_minute = minute
time_tick.emit(day, hour, minute)
if current_day != day:
current_day = day
time_tick_day.emit(day)
extends Control
@onready var day_label: Label = $DayPanel/MarginContainer/DayLabel
@onready var time_label: Label = $TimePanel/MarginContainer/TimeLabel
@export var normal_speed: int = 5
@export var fast_speed: int = 100
@export var cheetah_speed: int = 200
func _ready() -> void:
DayAndNightCycleManager.time_tick.connect(on_time_tick)
func on_time_tick(day: int, hour: int, minute: int) -> void:
day_label.text = "Day " + str(day)
time_label.text = "%02d:%02d" % [hour, minute]
func _on_normal_speed_button_pressed() -> void:
DayAndNightCycleManager.game_speed = normal_speed
func _on_fast_speed_button_pressed() -> void:
DayAndNightCycleManager.game_speed = fast_speed
func _on_cheetah_speed_button_pressed() -> void:
DayAndNightCycleManager.game_speed = cheetah_speed