ld52_olive_harvest/ui/Scheduler.gd

63 lines
1.5 KiB
GDScript

extends Control
var DAY_PER_SEC = 0.02
func _ready():
# TODO set up calendar
# set up clock
call_deferred("_real_ready")
func _real_ready():
_set_up_postie_clock()
_start_schedule()
func _set_up_postie_clock():
for start_time in postie_times:
var end_time = start_time + postie_length
var start_segment = round(10 * start_time)
var end_segment = round(10 * end_time)
for i in range(start_segment, end_segment):
$Clock/PostieRegions.get_child(i % 10).visible = true
var days_on_this_level = 5
var postie_times = [0.1]
var postie_length = .3
var day_num = 0
var time_of_day = 0.0
func _start_schedule():
# schedule all events for the day...
for _day in range(days_on_this_level):
var parent = find_parent("Level*").get_node("World/YSort")
for postie_time in postie_times:
# 5s early so the postie has time to drive there.
_postie_in(parent, (postie_time / DAY_PER_SEC) - 5.0, postie_length / DAY_PER_SEC)
$Timer.start(1 / DAY_PER_SEC)
yield($Timer, "timeout")
func _postie_in(parent: Node2D, time: float, idling_time: float):
var timer = Timer.new()
timer.one_shot = true
$Timer.add_child(timer)
timer.start(time); yield(timer, "timeout")
$Timer.remove_child(timer)
var new_postie = preload("res://vehicles/Postie.tscn").instance()
new_postie.position = Vector2(-500, 0)
new_postie.idling_time = idling_time
parent.add_child(new_postie)
func _process(delta):
time_of_day += delta * DAY_PER_SEC
$Clock/ClockHand.rotation = 2 * PI * fmod(time_of_day, 1.0)