GAE_CA1/Assets/Phase_Manager/phase_logic/phase_manager.gd

105 lines
2.5 KiB
GDScript

class_name PhaseManager extends Node
@export var prep_phase: PrepPhase
@export var npc_spwaner: NPC_Spawner
@export var max_round_count:int = 8
@export var mornig_sound: AudioStreamPlayer
var round_number: int = 1
var active_customer:NPC
signal new_round_start_up(customer_count:int)
signal day_changed(count:int)
signal shop_opens
signal start_round_change()
signal start_new_round
signal end_game
func prepare_round() -> RoundSettings:
var settings = RoundSettings.new()
# aktuell sehr trausrige game progression
if round_number == 1:
settings.customer_count = 3
settings.order_size = 3
settings.time_limit = 30.00
elif round_number == 2:
settings.customer_count = 4
settings.order_size = randi_range(3,4)
settings.time_limit = 30.00
elif round_number == 3:
settings.customer_count = 5
settings.order_size = randi_range(4,5)
settings.time_limit = 30.00
elif round_number == 4:
settings.customer_count = 5
settings.order_size = randi_range(4,6)
settings.time_limit = 30.00
else:
settings.customer_count = 5
settings.order_size = randi_range(4,6)
settings.time_limit = 30.00
return settings
# varaibeln - wie viel customer spawnwn sollen
func start_round()->void:
for i in range(max_round_count):
var round_settings:RoundSettings = prepare_round()
new_round_start_up.emit(round_settings.customer_count)
print("Warm-up startet...")
mornig_sound.play()
day_changed.emit(round_number)
await warm_up()
print("Warm-up endet - Shop öffnet ")
# shop opens logic
shop_opens.emit()
await run_rush_phase(round_settings)
print("Runde ", round_number, " beendet.")
start_round_change.emit()
await start_new_round
round_number += 1
end_game.emit()
## ausgewählt wenn man das spiel das erste mal startet
func start_tutorial()->void:
pass
func run_prep_phase()->void:
pass
func warm_up()->void:
await get_tree().create_timer(2.0).timeout # je nach dem wie lange ich es mache
func run_rush_phase(settings:RoundSettings)->void:
print("This round NPC are:"+ str(settings.customer_count))
for i in range(settings.customer_count):
print("Spawnd customer")
active_customer = npc_spwaner.spawn_npc(settings)
active_customer.walk()
active_customer.shop_entert_sound.play()
await active_customer.npc_left
print("NPC left")
# hier kann man dann das neue taget machen oder zb eine ander metheode
await get_tree().create_timer(1.5).timeout
# wenn jetzt ein sknal kommt soll weiter gemacht werden
func day_result_phase()->void:
pass