Add DayController and QueueController to handle spawning of customer through out a day
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
class_name DayController
|
||||
extends Node
|
||||
|
||||
# DayController Emits singals to spawn customers.
|
||||
|
||||
var day_time_remaining: float = 0.0
|
||||
var customers_spawned: int = 0
|
||||
var customers_served: int = 0
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
GameManager.game_state = GameManager.GameState.BUILDING
|
||||
Signals.game_state_changed.connect(_on_game_state_changed)
|
||||
|
||||
|
||||
func _on_game_state_changed(new_state: GameManager.GameState) -> void:
|
||||
if new_state == GameManager.GameState.RUNNING:
|
||||
start_next_day()
|
||||
|
||||
|
||||
# Returns 0-1 progress of the day time
|
||||
func get_day_progression() -> float:
|
||||
return 1 - (day_time_remaining / GameManager.day_length_seconds)
|
||||
|
||||
|
||||
func _reset_values() -> void:
|
||||
day_time_remaining = GameManager.day_length_seconds
|
||||
customers_spawned = 0
|
||||
customers_served = 0
|
||||
|
||||
|
||||
func start_next_day() -> void:
|
||||
print("DayController: start_next_day")
|
||||
_reset_values()
|
||||
GameManager.customers_per_day += GameManager.customers_count_increase_per_day
|
||||
GameManager.day_number += 1
|
||||
|
||||
|
||||
func finish_current_day() -> void:
|
||||
print("DayController: finish_current_day")
|
||||
_reset_values()
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if GameManager.game_state != GameManager.GameState.RUNNING:
|
||||
return
|
||||
day_time_remaining -= delta
|
||||
var customers_at_this_time = GameManager.customers_per_day * get_day_progression()
|
||||
#print("DayController: customers_at_this_time: ", customers_at_this_time)
|
||||
if customers_spawned < customers_at_this_time:
|
||||
customers_spawned += 1
|
||||
print("DayController: spawning customer")
|
||||
Signals.request_customer_spawn.emit()
|
||||
# If day complete
|
||||
if GameManager.customers_per_day == customers_served and customers_spawned == GameManager.customers_per_day:
|
||||
print("DayController: Day complete")
|
||||
finish_current_day()
|
||||
Reference in New Issue
Block a user