105 lines
2.5 KiB
GDScript
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
|