Fix bug in table
This commit is contained in:
+19
-4
@@ -6,8 +6,10 @@
|
|||||||
[ext_resource type="PackedScene" uid="uid://j7caslh27nor" path="res://Stations/Hob.tscn" id="4_ctden"]
|
[ext_resource type="PackedScene" uid="uid://j7caslh27nor" path="res://Stations/Hob.tscn" id="4_ctden"]
|
||||||
[ext_resource type="Sky" uid="uid://c1abtpwhdm2d5" path="res://Textures/sky/NightSkyHDRI009_16K.tres" id="7_n8fyw"]
|
[ext_resource type="Sky" uid="uid://c1abtpwhdm2d5" path="res://Textures/sky/NightSkyHDRI009_16K.tres" id="7_n8fyw"]
|
||||||
[ext_resource type="PackedScene" uid="uid://c6rift56ql3f8" path="res://Stations/BurgerBunsDispenser.tscn" id="9_sq0s2"]
|
[ext_resource type="PackedScene" uid="uid://c6rift56ql3f8" path="res://Stations/BurgerBunsDispenser.tscn" id="9_sq0s2"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bp3v1jl8pctro" path="res://Containers/plate.tscn" id="10_ay2w6"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cwnwo4i28upap" path="res://Stations/raw_burger_dispenser.tscn" id="11_ctden"]
|
[ext_resource type="PackedScene" uid="uid://cwnwo4i28upap" path="res://Stations/raw_burger_dispenser.tscn" id="11_ctden"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bbg7dwsbxxh1t" path="res://Scenes/cube_side_dispense.tscn" id="12_57ppd"]
|
[ext_resource type="PackedScene" uid="uid://bbg7dwsbxxh1t" path="res://Scenes/cube_side_dispense.tscn" id="12_57ppd"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b3m2ag8g5rj4r" path="res://Items/hamburger.tscn" id="12_hfwnn"]
|
||||||
[ext_resource type="PackedScene" uid="uid://ck5tuftqmyiue" path="res://Stations/plate_dispenser.tscn" id="13_irf4n"]
|
[ext_resource type="PackedScene" uid="uid://ck5tuftqmyiue" path="res://Stations/plate_dispenser.tscn" id="13_irf4n"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvrk268s7gkxh" path="res://Stations/sink.tscn" id="13_o1b3t"]
|
[ext_resource type="PackedScene" uid="uid://dvrk268s7gkxh" path="res://Stations/sink.tscn" id="13_o1b3t"]
|
||||||
[ext_resource type="PackedScene" uid="uid://clujaf3u776a3" path="res://addons/godot-xr-tools/objects/viewport_2d_in_3d.tscn" id="14_di04w"]
|
[ext_resource type="PackedScene" uid="uid://clujaf3u776a3" path="res://addons/godot-xr-tools/objects/viewport_2d_in_3d.tscn" id="14_di04w"]
|
||||||
@@ -81,8 +83,6 @@ shape = SubResource("BoxShape3D_24d3s")
|
|||||||
|
|
||||||
[node name="Table" parent="." unique_id=1863572470 instance=ExtResource("16_di04w")]
|
[node name="Table" parent="." unique_id=1863572470 instance=ExtResource("16_di04w")]
|
||||||
transform = Transform3D(-1, 0, 8.742277e-08, 0, 1, 0, -8.742277e-08, 0, -1, 3.6294794, 0.54177135, 0.0973109)
|
transform = Transform3D(-1, 0, 8.742277e-08, 0, 1, 0, -8.742277e-08, 0, -1, 3.6294794, 0.54177135, 0.0973109)
|
||||||
thinking_duration = 35.0
|
|
||||||
primary_duration = 5.0
|
|
||||||
|
|
||||||
[node name="Hob" parent="." unique_id=1687971542 instance=ExtResource("4_ctden")]
|
[node name="Hob" parent="." unique_id=1687971542 instance=ExtResource("4_ctden")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.35077858, 0.50655985, -1.2833805)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.35077858, 0.50655985, -1.2833805)
|
||||||
@@ -105,8 +105,11 @@ transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -1.5
|
|||||||
[node name="Counter3" parent="." unique_id=1498817646 instance=ExtResource("15_di04w")]
|
[node name="Counter3" parent="." unique_id=1498817646 instance=ExtResource("15_di04w")]
|
||||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -1.5477214, 0.5115016, 0.49258912)
|
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -1.5477214, 0.5115016, 0.49258912)
|
||||||
|
|
||||||
[node name="Counter5" parent="Counter3" unique_id=200341072 instance=ExtResource("15_di04w")]
|
[node name="Counter5" parent="." unique_id=200341072 instance=ExtResource("15_di04w")]
|
||||||
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 1.8051152, 0, 3.5603657)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.0304868, 0.5115016, -1.3125262)
|
||||||
|
|
||||||
|
[node name="Counter6" parent="." unique_id=237068408 instance=ExtResource("15_di04w")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.6504855, 0.5115016, -1.3154786)
|
||||||
|
|
||||||
[node name="BurgerBunsDispenser" parent="." unique_id=1720683779 instance=ExtResource("9_sq0s2")]
|
[node name="BurgerBunsDispenser" parent="." unique_id=1720683779 instance=ExtResource("9_sq0s2")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5242664, 0.008738995, 1.1073059)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5242664, 0.008738995, 1.1073059)
|
||||||
@@ -130,3 +133,15 @@ script = ExtResource("16_n8fyw")
|
|||||||
|
|
||||||
[node name="CubeSideDispenser2" parent="." unique_id=200950572 instance=ExtResource("12_57ppd")]
|
[node name="CubeSideDispenser2" parent="." unique_id=200950572 instance=ExtResource("12_57ppd")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.35154933, 0, 1.1119425)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.35154933, 0, 1.1119425)
|
||||||
|
|
||||||
|
[node name="Hamburger" parent="." unique_id=1675596942 instance=ExtResource("12_hfwnn")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.0753264, 1.3743987, -1.3305619)
|
||||||
|
|
||||||
|
[node name="Hamburger2" parent="." unique_id=1030731163 instance=ExtResource("12_hfwnn")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.6262975, 1.3743987, -1.3305619)
|
||||||
|
|
||||||
|
[node name="Plate" parent="." unique_id=190487773 instance=ExtResource("10_ay2w6")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.0396392, 1.1679064, -1.3300265)
|
||||||
|
|
||||||
|
[node name="Plate2" parent="." unique_id=1568542970 instance=ExtResource("10_ay2w6")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.6286347, 1.1679064, -1.3300265)
|
||||||
|
|||||||
+33
-16
@@ -3,17 +3,17 @@ extends StaticBody3D
|
|||||||
|
|
||||||
const GAME_MANAGER = preload("res://GameManager.gd")
|
const GAME_MANAGER = preload("res://GameManager.gd")
|
||||||
|
|
||||||
@export var thinking_duration: float = 6
|
@export var thinking_duration: float = 3.0
|
||||||
@export var primary_duration: float = 23
|
@export var primary_duration: float = 60.0
|
||||||
@export var friend_duration: float = 10
|
@export var friend_duration: float = 10.0
|
||||||
@export var eating_duration: float = 4
|
@export var eating_duration: float = 4.0
|
||||||
|
|
||||||
@onready var label_3d: Label3D = $Label3D
|
@onready var label_3d: Label3D = $Label3D
|
||||||
@onready var label_3d_time: Label3D = $Label3DTime
|
@onready var label_3d_time: Label3D = $Label3DTime
|
||||||
@onready var snap_zones: Array[XRToolsSnapZone] = []
|
@onready var snap_zones: Array[XRToolsSnapZone] = []
|
||||||
@onready var progress_bar: ProgressBar3D = $ProgressBar3D
|
@onready var progress_bar: ProgressBar3D = $ProgressBar3D
|
||||||
|
|
||||||
const lbl_thinking: String = "..."
|
const lbl_thinking: String = "Thinking"
|
||||||
const lbl_gameover: String = "Game Over!"
|
const lbl_gameover: String = "Game Over!"
|
||||||
const lbl_eating: String = "Eating..."
|
const lbl_eating: String = "Eating..."
|
||||||
|
|
||||||
@@ -61,11 +61,14 @@ func _ready() -> void:
|
|||||||
for snap_zone_node in snap_zones:
|
for snap_zone_node in snap_zones:
|
||||||
snap_zone_node.has_picked_up.connect(_on_object_picked_up)
|
snap_zone_node.has_picked_up.connect(_on_object_picked_up)
|
||||||
snap_zone_node.has_dropped.connect(_on_object_dropped)
|
snap_zone_node.has_dropped.connect(_on_object_dropped)
|
||||||
|
set_process(true)
|
||||||
_setState(TableState.EMPTY)
|
_setState(TableState.EMPTY)
|
||||||
|
|
||||||
|
|
||||||
func _on_object_picked_up(_item) -> void:
|
func _on_object_picked_up(_item) -> void:
|
||||||
print("Table: object picked up: ", _item)
|
print("Table: object picked up: ", _item)
|
||||||
|
if _state == TableState.EATING:
|
||||||
|
return
|
||||||
_absorb_item_if_correct(_item)
|
_absorb_item_if_correct(_item)
|
||||||
|
|
||||||
|
|
||||||
@@ -92,17 +95,20 @@ func _absorb_item_if_correct(_item: Node) -> void:
|
|||||||
print("Table: held FoodItem is in unsatisfied orders, removing it")
|
print("Table: held FoodItem is in unsatisfied orders, removing it")
|
||||||
_unsatisfied_orders.erase(food_item.id)
|
_unsatisfied_orders.erase(food_item.id)
|
||||||
GAME_MANAGER.money += food_item.sell_value
|
GAME_MANAGER.money += food_item.sell_value
|
||||||
|
if _unsatisfied_orders.size() > 0 and _state != TableState.EATING:
|
||||||
_setState(TableState.WAITING_FRIEND)
|
_setState(TableState.WAITING_FRIEND)
|
||||||
|
|
||||||
# Table has everything it wants. Start eating
|
# Table has everything it wants. Start eating
|
||||||
if _unsatisfied_orders.is_empty():
|
elif _unsatisfied_orders.is_empty() and _state != TableState.EATING:
|
||||||
_setState(TableState.EATING)
|
_setState(TableState.EATING)
|
||||||
|
|
||||||
|
|
||||||
func place_order() -> void:
|
func place_order() -> void:
|
||||||
print("Table: place_order()")
|
print("Table: place_order()")
|
||||||
_unsatisfied_orders.append(GAME_MANAGER.get_random_meal())
|
var new_orders = _unsatisfied_orders.duplicate()
|
||||||
_unsatisfied_orders.append(GAME_MANAGER.get_random_meal())
|
new_orders.append(GAME_MANAGER.get_random_meal())
|
||||||
|
new_orders.append(GAME_MANAGER.get_random_meal())
|
||||||
|
_set_unsatisfied_orders(new_orders)
|
||||||
|
|
||||||
|
|
||||||
func satisfyAllOrders() -> void:
|
func satisfyAllOrders() -> void:
|
||||||
@@ -124,6 +130,12 @@ func clearAllPlates() -> void:
|
|||||||
plate.container.clear()
|
plate.container.clear()
|
||||||
plate.is_dirty = true
|
plate.is_dirty = true
|
||||||
|
|
||||||
|
|
||||||
|
func _set_snap_zones_enabled(value: bool) -> void:
|
||||||
|
for zone in snap_zones:
|
||||||
|
zone.enabled = value
|
||||||
|
|
||||||
|
|
||||||
## Server-only state transition: sets the new state's timer and assigns
|
## Server-only state transition: sets the new state's timer and assigns
|
||||||
## _state (whose setter refreshes the display on every peer).
|
## _state (whose setter refreshes the display on every peer).
|
||||||
func _setState(newState: TableState) -> void:
|
func _setState(newState: TableState) -> void:
|
||||||
@@ -131,11 +143,11 @@ func _setState(newState: TableState) -> void:
|
|||||||
|
|
||||||
match newState:
|
match newState:
|
||||||
TableState.EMPTY:
|
TableState.EMPTY:
|
||||||
_state_time = 0.0
|
_state_time = 5.0
|
||||||
_state_duration = 0.0
|
_state_duration = 5.0
|
||||||
TableState.THINKING:
|
TableState.THINKING:
|
||||||
_state_time = eating_duration
|
_state_time = thinking_duration
|
||||||
_state_duration = eating_duration # Can't be done in _set_state(), will set duration inside timer
|
_state_duration = thinking_duration # Can't be done in _set_state(), will set duration inside timer
|
||||||
TableState.WAITING_PRIMARY:
|
TableState.WAITING_PRIMARY:
|
||||||
_state_time = primary_duration
|
_state_time = primary_duration
|
||||||
_state_duration = primary_duration
|
_state_duration = primary_duration
|
||||||
@@ -145,6 +157,7 @@ func _setState(newState: TableState) -> void:
|
|||||||
TableState.EATING:
|
TableState.EATING:
|
||||||
_state_time = eating_duration
|
_state_time = eating_duration
|
||||||
_state_duration = eating_duration
|
_state_duration = eating_duration
|
||||||
|
_set_snap_zones_enabled(false)
|
||||||
|
|
||||||
_state = newState
|
_state = newState
|
||||||
|
|
||||||
@@ -192,8 +205,8 @@ func _set_unsatisfied_orders(value: Array[String]) -> void:
|
|||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
# Wait for state to finish
|
# Wait for state to finish
|
||||||
if _state_time > 0:
|
if _state_time > 0.0:
|
||||||
_state_time -= delta
|
_state_time = max(0.0, _state_time - delta)
|
||||||
return
|
return
|
||||||
|
|
||||||
if GAME_MANAGER.game_state == GAME_MANAGER.GameState.GAME_OVER:
|
if GAME_MANAGER.game_state == GAME_MANAGER.GameState.GAME_OVER:
|
||||||
@@ -202,22 +215,26 @@ func _process(delta: float) -> void:
|
|||||||
# When state timer is finished, do this stuff before moving to next state
|
# When state timer is finished, do this stuff before moving to next state
|
||||||
match _state:
|
match _state:
|
||||||
TableState.EMPTY:
|
TableState.EMPTY:
|
||||||
|
print("Table State EMPTY finish")
|
||||||
_setState(TableState.THINKING)
|
_setState(TableState.THINKING)
|
||||||
|
|
||||||
TableState.THINKING:
|
TableState.THINKING:
|
||||||
|
print("Table State THINKING finish")
|
||||||
place_order()
|
place_order()
|
||||||
_setState(TableState.WAITING_PRIMARY)
|
_setState(TableState.WAITING_PRIMARY)
|
||||||
|
|
||||||
|
|
||||||
TableState.WAITING_PRIMARY:
|
TableState.WAITING_PRIMARY:
|
||||||
|
print("Table State WAITING_PRIMARY finish")
|
||||||
label_3d.text = lbl_gameover
|
label_3d.text = lbl_gameover
|
||||||
GAME_MANAGER.game_over()
|
GAME_MANAGER.game_over()
|
||||||
|
|
||||||
TableState.WAITING_FRIEND:
|
TableState.WAITING_FRIEND:
|
||||||
|
print("Table State WAITING_FRIEND finish")
|
||||||
label_3d.text = lbl_gameover
|
label_3d.text = lbl_gameover
|
||||||
GAME_MANAGER.game_over()
|
GAME_MANAGER.game_over()
|
||||||
|
|
||||||
|
|
||||||
TableState.EATING:
|
TableState.EATING:
|
||||||
|
print("Table State EATING finish")
|
||||||
clearAllPlates()
|
clearAllPlates()
|
||||||
|
_set_snap_zones_enabled(true)
|
||||||
_setState(TableState.EMPTY)
|
_setState(TableState.EMPTY)
|
||||||
|
|||||||
Reference in New Issue
Block a user