From a1cb484ca5fe00496ac658b941f6305cb704c0ba Mon Sep 17 00:00:00 2001 From: JonShard Date: Wed, 22 Jul 2026 15:15:30 +0200 Subject: [PATCH] Add Table picks an order --- GameManager.gd | 24 ++++++++++++++++++++++++ GameManager.gd.uid | 1 + Stations/table.gd | 18 +++++++++++++----- main.gd | 4 ++++ 4 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 GameManager.gd create mode 100644 GameManager.gd.uid diff --git a/GameManager.gd b/GameManager.gd new file mode 100644 index 0000000..d20b961 --- /dev/null +++ b/GameManager.gd @@ -0,0 +1,24 @@ +class_name GameManager +extends Node + +static var money: int +static var meals_in_play: Array[String] +static var sides_in_play: Array[String] + + +static func get_random_meal() -> String: + if meals_in_play.size() == 0: + push_error("GameManager: get_random_meal() called but meals_in_play is empty") + return "" + var rand_index = randi() % meals_in_play.size() + print("GameManager: get_random_meal() returning ", meals_in_play[rand_index]) + return meals_in_play[rand_index] + + +static func get_random_side() -> String: + if sides_in_play.size() == 0: + push_error("GameManager: get_random_side() called but sides_in_play is empty") + return "" + var rand_index = randi() % sides_in_play.size() + print("GameManager: get_random_side() returning ", sides_in_play[rand_index]) + return sides_in_play[rand_index] diff --git a/GameManager.gd.uid b/GameManager.gd.uid new file mode 100644 index 0000000..734ab18 --- /dev/null +++ b/GameManager.gd.uid @@ -0,0 +1 @@ +uid://y4sol8l8vih1 diff --git a/Stations/table.gd b/Stations/table.gd index 467d6ee..befbb07 100644 --- a/Stations/table.gd +++ b/Stations/table.gd @@ -1,7 +1,9 @@ extends StaticBody3D +const GAME_MANAGER = preload("res://GameManager.gd") + @export var initial_thinking_time: float = 8 -@export var initial_primary_time: float = 3 +@export var initial_primary_time: float = 8 @export var initial_friend_time: float = 3 @export var initial_eating_time: float = 3 @@ -25,7 +27,7 @@ enum TableState { } var _state = TableState.EMPTY # use _setState(), never set directly var _state_time: float = 0.0 - +var _unsatisfied_orders: Array[String] func _ready() -> void: if not label_3d: @@ -42,6 +44,7 @@ func _ready() -> void: func _on_object_picked_up(_item) -> void: print("Table: object picked up: ", _item) + _update_order_text() func _on_object_dropped() -> void: @@ -50,7 +53,12 @@ func _on_object_dropped() -> void: func place_order() -> void: print("Table: place_order()") - label_3d.text = "order!" + _unsatisfied_orders.append(GAME_MANAGER.get_random_meal()) + _update_order_text() + + +func _update_order_text() -> void: + label_3d.text = "Order: " + ", ".join(_unsatisfied_orders) func _setState(newState: TableState) -> void: @@ -65,8 +73,8 @@ func _setState(newState: TableState) -> void: if newState == TableState.WAITING_PRIMARY: _state_time = initial_primary_time - label_3d.text = lbl_waiting_primary - + _update_order_text() + if newState == TableState.WAITING_FRIEND: _state_time = initial_friend_time diff --git a/main.gd b/main.gd index 1a04fc6..55335ae 100644 --- a/main.gd +++ b/main.gd @@ -1,10 +1,14 @@ extends Node3D const RECIPE_MANAGER = preload("res://RecipeManager.gd") +const GAME_MANAGER = preload("res://GameManager.gd") + var xr_interface :XRInterface func _ready(): RECIPE_MANAGER.print_all_recipes() + + GAME_MANAGER.meals_in_play.append("hamburger") xr_interface = XRServer.find_interface("OpenXR") if xr_interface and xr_interface.is_initialized():