Add Sweetlogger

This commit is contained in:
JonShard
2026-08-10 13:46:51 +02:00
parent bf31f85b02
commit 7648ecbac9
35 changed files with 608 additions and 223 deletions
+13 -13
View File
@@ -47,7 +47,7 @@ func _set_result(value: String) -> void:
if not process_result.is_empty():
knife.visible = true
knife.enabled = true
print("Counter: chopping recipe set: ", process_result)
SweetLogger.debug("chopping recipe set: {0}", [process_result], "counter.gd", "_set_result")
else:
_hide_all_tools()
@@ -71,7 +71,7 @@ func _refresh_progress_bar() -> void:
# Add work from gesture area (knife hits). This increments the chopping progress.
func add_work(work: float) -> void:
print("Counter add_work: ", work)
SweetLogger.debug("add_work: {0}", [work], "counter.gd", "add_work")
# Only the world owner should drive the authoritative state. Guarding is
# handled by higher-level NetworkManager logic elsewhere, mirror hob's
# convert_held_to_item which checks ownership before spawning.
@@ -82,16 +82,16 @@ func add_work(work: float) -> void:
audio.play()
# If we've reached the required time, convert the held item
if process_result != "" and process_result_work > 0 and work_progress >= process_result_work:
print("Counter: chopping complete, converting item to: ", process_result)
SweetLogger.debug("chopping complete, converting item to: {0}", [process_result], "counter.gd", "add_work")
work_progress = 0
convert_held_to_item(process_result)
func _on_gesture_area_body_entered(body: Node3D) -> void:
print("Counter: gesture area entered: ", body)
SweetLogger.debug("gesture area entered: {0}", [body], "counter.gd", "_on_gesture_area_body_entered")
if body.is_in_group("chopping_tool"):
if process_result == "":
print("Counter: knife entered but nothing to chop")
SweetLogger.debug("knife entered but nothing to chop", [], "counter.gd", "_on_gesture_area_body_entered")
return
var speed := 0.0
@@ -101,31 +101,31 @@ func _on_gesture_area_body_entered(body: Node3D) -> void:
speed = body.velocity.length()
if speed < chop_min_speed:
print("Counter: knife too slow for chopping: ", speed)
SweetLogger.debug("knife too slow for chopping: {0}", [speed], "counter.gd", "_on_gesture_area_body_entered")
return
add_work(chop_work_steps)
func _on_object_picked_up(_item: Variant) -> void:
print("Counter: object picked up: ", _item)
SweetLogger.debug("object picked up: {0}", [_item], "counter.gd", "_on_object_picked_up")
var food_item = Helper.find_food_item(_item)
if not food_item:
print("Counter: held object is not a FoodItem")
SweetLogger.debug("held object is not a FoodItem", [], "counter.gd", "_on_object_picked_up")
return
var result = RecipeManager.get_chopping_result(food_item.id)
if not result:
print("Counter: held a FoodItem that is not choppable, id: %s process_result: %s" % [food_item.id, result])
SweetLogger.debug("held a FoodItem that is not choppable, id: {0} process_result: {1}", [food_item.id, result], "counter.gd", "_on_object_picked_up")
return
process_result = result
process_result_work = RecipeManager.get_chopping_work(food_item.id)
print("Counter: set process_result ", process_result, " work: ", process_result_work)
SweetLogger.debug("set process_result {0} work: {1}", [process_result, process_result_work], "counter.gd", "_on_object_picked_up")
func _on_object_dropped(_item: Variant) -> void:
print("Counter: object drop ")
SweetLogger.debug("object drop", [], "counter.gd", "_on_object_dropped")
work_progress = 0
process_result = ""
process_result_work = 0
@@ -135,7 +135,7 @@ func _on_object_dropped(_item: Variant) -> void:
func convert_held_to_item(_item: String) -> void:
if not NetworkManager.owns_world():
return
print("Counter converting ", _item)
SweetLogger.debug("converting {0}", [_item], "counter.gd", "convert_held_to_item")
var old_pickable = snap_zone.picked_up_object
if not old_pickable:
@@ -145,7 +145,7 @@ func convert_held_to_item(_item: String) -> void:
var original_transform = old_pickable.global_transform
var new_scene_instance = NetworkManager.spawn_item(RecipeManager.get_item_scene(_item).resource_path, original_transform)
print("Counter freeing old_pickable ", old_pickable)
SweetLogger.debug("freeing old_pickable {0}", [old_pickable], "counter.gd", "convert_held_to_item")
snap_zone.drop_object()
NetworkManager.despawn_item(old_pickable)
snap_zone.pick_up_object(new_scene_instance)
+1 -1
View File
@@ -11,7 +11,7 @@ func _makeDirty(item) -> void:
return
var plate: PlateController = item.get_node_or_null("PlateController") as PlateController
if not plate:
print("Dirt Station: held object is not a Plate")
SweetLogger.debug("held object is not a Plate", [], "dirt_station.gd", "_makeDirty")
return
if not plate.is_dirty:
plate.is_dirty = true
+7 -7
View File
@@ -67,26 +67,26 @@ func _refresh_display() -> void:
progress_bar.override_fill_color(Color.RED if cooking_result == "charcoal" else Color.GREEN)
func _on_object_picked_up(_item) -> void:
print("Hob: object picked up: ", _item)
SweetLogger.debug("object picked up: {0}", [_item], "hob.gd", "_on_object_picked_up")
# Find the CookableItem in held object
var _food_item = _item.get_node_or_null("FoodItem") as FoodItem
if not _food_item:
print("Hob: held object is not a FoodItem")
SweetLogger.debug("held object is not a FoodItem", [], "hob.gd", "_on_object_picked_up")
return
var result = RecipeManager.get_cooking_result(_food_item.id)
if not result:
print("Hob: held a FoodItem that is not cookable, id: %s result: %s" % [_food_item.id, result])
SweetLogger.debug("held a FoodItem that is not cookable, id: {0} result: {1}", [_food_item.id, result], "hob.gd", "_on_object_picked_up")
return
cooking_result = result
cooking_result_time = RecipeManager.get_cooking_time(_food_item.id)
print("Hob: set cooking_result ", cooking_result)
SweetLogger.debug("set cooking_result {0}", [cooking_result], "hob.gd", "_on_object_picked_up")
# The setters above already refresh the display and start the flames.
func _on_object_dropped(_item) -> void:
print("Hob: object drop ")
SweetLogger.debug("object drop", [], "hob.gd", "_on_object_dropped")
time_cooked = 0
cooking_result = ""
cooking_result_time = 0
@@ -95,7 +95,7 @@ func _on_object_dropped(_item) -> void:
func convert_held_to_item(_item: String) -> void:
if not NetworkManager.owns_world():
return
print("Hob converting ", _item)
SweetLogger.debug("converting {0}", [_item], "hob.gd", "convert_held_to_item")
var old_pickable = snap_zone.picked_up_object
if not old_pickable:
@@ -108,7 +108,7 @@ func convert_held_to_item(_item: String) -> void:
var new_scene_instance = NetworkManager.spawn_item(RecipeManager.get_item_scene(_item).resource_path, original_transform)
# Drop and free the old item and pick up the new one
print("Hob freeing old_pickable ", old_pickable)
SweetLogger.debug("freeing old_pickable {0}", [old_pickable], "hob.gd", "convert_held_to_item")
snap_zone.drop_object()
NetworkManager.despawn_item(old_pickable)
snap_zone.pick_up_object(new_scene_instance)
+1 -1
View File
@@ -21,6 +21,6 @@ func _process(_delta: float) -> void:
#return
#
if not snap_zone.picked_up_object:
print("Item dispenser is missing item, spawning new item")
SweetLogger.debug("missing item, spawning new item", [], "item_dispenser.gd", "_process")
var new_item = NetworkManager.spawn_item(item_scene.resource_path, snap_zone.global_transform)
snap_zone.pick_up_object(new_item)
+4 -4
View File
@@ -59,7 +59,7 @@ func _refresh_progress_bar() -> void:
func _on_object_picked_up(_item) -> void:
print("Sink: object picked up: ", _item)
SweetLogger.debug("object picked up: {0}", [_item], "sink.gd", "_on_object_picked_up")
plate = _item.get_node_or_null("PlateController") as PlateController
if plate:
# The setter starts the effects and shows the bar, here and on clients.
@@ -67,7 +67,7 @@ func _on_object_picked_up(_item) -> void:
func _on_object_dropped(_item) -> void:
print("Sink: object drop ")
SweetLogger.debug("object drop", [], "sink.gd", "_on_object_dropped")
_reset_sink()
@@ -81,14 +81,14 @@ func complete_washing():
return
plate.is_dirty = false
_reset_sink()
print("Sink washing complete!")
SweetLogger.debug("washing complete!", [], "sink.gd", "complete_washing")
func _process(delta: float) -> void:
if is_washing:
time_washed += wash_speed * delta
_refresh_progress_bar()
print("Sink washing plate: ", time_washed)
SweetLogger.debug("washing plate: {0}", [time_washed], "sink.gd", "_process")
if time_washed >= plate_wash_time:
complete_washing()
+14 -14
View File
@@ -21,7 +21,7 @@ const GHOST_COLOR_INVALID: Color = Color(1, 0, 0, 0.35)
func set_move_handle_enabled(enabled: bool) -> void:
print("StationMovement set_move_handle_enabled: ", enabled)
SweetLogger.debug("set_move_handle_enabled: {0}", [enabled], "station_movement.gd", "set_move_handle_enabled")
move_handle.visible = enabled
move_handle.enabled = enabled
if enabled:
@@ -32,7 +32,7 @@ func _on_game_state_changed(new_state: GameManager.GameState) -> void:
set_move_handle_enabled(new_state == GameManager.GameState.BUILDING)
func _on_station_bought(_instance: Node3D):
print("StationMovement _on_station_bought")
SweetLogger.info("_on_station_bought")
if GameManager.game_state == GameManager.GameState.BUILDING:
set_move_handle_enabled(true)
@@ -93,9 +93,9 @@ func _set_ghost_color(color: Color) -> void:
func _handle_pickup(_by: Node) -> void:
print("StationMovement handle pickup")
SweetLogger.info("handle pickup")
if move_handle.get_picked_up_by() is XRToolsSnapZone:
print("StationMovement handle pickup by snap zone, dropping and resetting position")
SweetLogger.info("handle pickup by snap zone, dropping and resetting position")
move_handle.drop()
move_handle.global_position = station.global_position + Vector3(0, original_handle_y_pos, 0)
move_handle.rotation = station.rotation
@@ -115,7 +115,7 @@ func _handle_pickup(_by: Node) -> void:
func _handle_drop(_by: Node) -> void:
print("StationMovement handle drop")
SweetLogger.info("handle drop")
moving = false
move_ghost.visible = false
station.visible = true
@@ -129,11 +129,11 @@ func _handle_drop(_by: Node) -> void:
if is_valid:
station.global_transform = move_ghost.global_transform
move_handle.global_transform = move_ghost.global_transform.translated(Vector3(0, original_handle_y_pos, 0))
print("StationMovement handle drop (local apply), station authority: ", station.get_multiplayer_authority(), " move_handle authority: ", move_handle.get_multiplayer_authority())
SweetLogger.debug("handle drop (local apply), station authority: {0} move_handle authority: {1}", [station.get_multiplayer_authority(), move_handle.get_multiplayer_authority()], "station_movement.gd", "_handle_drop")
else:
station.global_transform = original_station_transform
move_handle.global_transform = original_station_transform.translated(Vector3(0, original_handle_y_pos, 0))
print("StationMovement handle drop (local reject), restoring original position")
SweetLogger.debug("handle drop (local reject), restoring original position", [], "station_movement.gd", "_handle_drop")
func _process(_delta: float) -> void:
if not moving:
@@ -161,7 +161,7 @@ func _process(_delta: float) -> void:
func _is_move_position_valid() -> bool:
for body in move_ghost.get_overlapping_bodies():
print("Overlapping body: ", body)
SweetLogger.debug("Overlapping body: {0}", [body], "station_movement.gd", "_is_move_position_valid")
if body == move_handle:
continue
if body == station:
@@ -193,7 +193,7 @@ func server_handle_drop(new_transform: Transform3D, client_thinks_valid: bool):
server_update_move_ghost_transform.rpc(original_trans)
server_update_handle_transform.rpc(original_trans.translated(Vector3(0, original_handle_y_pos, 0)))
server_update_visibility.rpc(false, true)
print("StationMovement server_handle_drop: transform rejected (invalid)")
SweetLogger.debug("server_handle_drop: transform rejected (invalid)", [], "station_movement.gd", "server_handle_drop")
return
server_update_station_transform.rpc(new_transform)
@@ -201,32 +201,32 @@ func server_handle_drop(new_transform: Transform3D, client_thinks_valid: bool):
server_update_handle_transform.rpc(new_transform.translated(Vector3(0, original_handle_y_pos, 0)))
server_update_visibility.rpc(false, true)
print("StationMovement server_handle_drop: transform applied")
SweetLogger.debug("server_handle_drop: transform applied", [], "station_movement.gd", "server_handle_drop")
@rpc("any_peer", "call_local", "reliable") # Server updates clients
func server_update_station_transform(new_transform: Transform3D) -> void:
print("StationMovement server_update_station_transform")
SweetLogger.debug("server_update_station_transform", [], "station_movement.gd", "server_update_station_transform")
station.global_transform = new_transform
original_station_transform = new_transform
@rpc("any_peer", "call_local", "reliable") # Server updates clients
func server_update_handle_transform(new_transform: Transform3D) -> void:
print("StationMovement server_update_handle_transform")
SweetLogger.debug("server_update_handle_transform", [], "station_movement.gd", "server_update_handle_transform")
move_handle.global_transform = new_transform
@rpc("any_peer", "call_local", "reliable")
func server_update_visibility(ghost_visible: bool, station_visible: bool) -> void:
print("StationMovement server_update_visibility")
SweetLogger.debug("server_update_visibility", [], "station_movement.gd", "server_update_visibility")
move_ghost.visible = ghost_visible
station.visible = station_visible
@rpc("any_peer", "call_local", "unreliable")
func server_update_move_ghost_transform(new_transform: Transform3D, new_color: Color = Color.YELLOW) -> void:
print("StationMovement server_update_move_ghost_transform")
SweetLogger.debug("server_update_move_ghost_transform", [], "station_movement.gd", "server_update_move_ghost_transform")
move_ghost.global_transform = new_transform
_set_ghost_color(new_color)
+21 -21
View File
@@ -47,7 +47,7 @@ var _players_count: int = 0
func place_order() -> void:
print("Table place_order()")
SweetLogger.debug("place_order()", [], "table.gd", "place_order")
var new_orders: Array[String] = _unsatisfied_orders.duplicate()
# for _i in range(0, randi_range(1, 2)):
# new_orders.append(GameManager.get_random_meal())
@@ -59,7 +59,7 @@ func place_order() -> void:
func absorb_items():
print("Table: absorb_items()")
SweetLogger.debug("absorb_items()", [], "table.gd", "absorb_items")
for snap_zone_node in snap_zones:
var held_object = snap_zone_node.picked_up_object
if not held_object:
@@ -69,7 +69,7 @@ func absorb_items():
func satisfyAllOrders() -> void:
print("Table: satisfyAllOrders()")
SweetLogger.debug("satisfyAllOrders()", [], "table.gd", "satisfyAllOrders")
_unsatisfied_orders.clear()
_original_orders.clear()
clearAllFood()
@@ -77,7 +77,7 @@ func satisfyAllOrders() -> void:
func clearAllFood() -> void:
print("Table: clearAllFood()")
SweetLogger.debug("clearAllFood()", [], "table.gd", "clearAllFood")
for zone in snap_zones:
var held_object = zone.picked_up_object
if not held_object:
@@ -98,7 +98,7 @@ func clearAllFood() -> void:
# Group called from Queue when trying to assign customers to tables
func try_consume_customer() -> bool:
if _state == TableState.EMPTY:
print("Table try_consume_customer, consumed a customer")
SweetLogger.debug("try_consume_customer, consumed a customer", [], "table.gd", "try_consume_customer")
_state_end(TableState.EMPTY)
return true
return false
@@ -137,14 +137,14 @@ func _ready() -> void:
func _on_object_picked_up(_item) -> void:
print("Table: object picked up: ", _item)
SweetLogger.debug("object picked up: {0}", [_item], "table.gd", "_on_object_picked_up")
if _state == TableState.EATING:
return
_absorb_item_if_correct(_item)
func _on_object_dropped(_item) -> void:
print("Table: object dropped, item: ", _item)
SweetLogger.debug("object dropped, item: {0}", [_item], "table.gd", "_on_object_dropped")
# If then player picks up a food_item (side) the table has already registerd, unregister
var food_item: FoodItem = Helper.find_food_item(_item)
if food_item and food_item.type == FoodItem.Type.SIDE:
@@ -161,12 +161,12 @@ func _on_object_dropped(_item) -> void:
# There is no on_stay signal, we have to track player with bool
func _on_player_enter(_body):
_players_count += 1
print("Table _on_player_enter() pleryers_count: ", _players_count)
SweetLogger.debug("_on_player_enter() players_count: {0}", [_players_count], "table.gd", "_on_player_enter")
func _on_player_exit(_body):
_players_count -= 1
print("Table _on_player_exit() pleryers_count: ", _players_count)
SweetLogger.debug("_on_player_exit() players_count: {0}", [_players_count], "table.gd", "_on_player_exit")
func _place_order_if_player():
@@ -183,20 +183,20 @@ func _place_order_if_player():
func _get_plate_controller_from_item(_item: Node) -> PlateController:
if not _item:
print("_item is null")
SweetLogger.debug("_item is null", [], "table.gd", "_get_plate_controller_from_item")
return null
for child in _item.get_children():
if child is PlateController:
print("found child")
SweetLogger.debug("found child", [], "table.gd", "_get_plate_controller_from_item")
return child
print("no match")
SweetLogger.debug("no match", [], "table.gd", "_get_plate_controller_from_item")
return null
func _absorb_item_if_correct(_item: Node) -> void:
print("Table _absorb_item_if_correct, item: ", _item)
SweetLogger.debug("_absorb_item_if_correct, item: {0}", [_item], "table.gd", "_absorb_item_if_correct")
if not _item:
return
if not (_state == TableState.WAITING_PRIMARY or _state == TableState.WAITING_FRIEND):
@@ -204,14 +204,14 @@ func _absorb_item_if_correct(_item: Node) -> void:
# Plate: Get plate controller in child of _item (hopefully a plate XRpickable)
var plate_controller = _get_plate_controller_from_item(_item)
print("Table _absorb_item_if_correct plate_controller ref: ", plate_controller)
SweetLogger.debug("_absorb_item_if_correct plate_controller ref: {0}", [plate_controller], "table.gd", "_absorb_item_if_correct")
_item.print_tree_pretty()
if plate_controller:
# Absorm items from the plate we want
for food_item: FoodItem in plate_controller.container.contained_items: # TOOD: handle registering the meal again when a side is added to the plate
if food_item.id in _unsatisfied_orders and not food_item.is_absorbed:
print("Table: _absorb_item_if_correct held a plate with FoodItem that is in unsatisfied orders, removing it")
SweetLogger.debug("_absorb_item_if_correct held a plate with FoodItem that is in unsatisfied orders, removing it", [], "table.gd", "_absorb_item_if_correct")
(plate_controller.get_parent() as XRToolsPickable).get_picked_up_by().enabled = false # Lock meal that is deliverd
_unsatisfied_orders.erase(food_item.id)
food_item.is_absorbed = true
@@ -221,17 +221,17 @@ func _absorb_item_if_correct(_item: Node) -> void:
# Side pickable item, no container
var food_item: FoodItem = Helper.find_food_item(_item)
if food_item and food_item.type == FoodItem.Type.SIDE:
print("Table: _absorb_item_if_correct held a side that is in unsatisfied orders, removing it")
SweetLogger.debug("_absorb_item_if_correct held a side that is in unsatisfied orders, removing it", [], "table.gd", "_absorb_item_if_correct")
# Do not lock snap zone here. Problem if table want many meals, but to many sides have filled up slots, so can't place plates.
_unsatisfied_orders.erase(food_item.id)
_update_state_from_orders()
return
print("Table: absorb_item_if_correct() held object is not a Plate or Side")
SweetLogger.debug("absorb_item_if_correct() held object is not a Plate or Side", [], "table.gd", "_absorb_item_if_correct")
func _update_state_from_orders():
print("Table _update_state_from_orders: unsatisfied_orders: ", _unsatisfied_orders)
SweetLogger.debug("_update_state_from_orders: unsatisfied_orders: {0}", [_unsatisfied_orders], "table.gd", "_update_state_from_orders")
if _unsatisfied_orders.size() > 0 and _state != TableState.EATING:
_set_state(TableState.WAITING_FRIEND)
@@ -254,7 +254,7 @@ func _collect_money_from_food():
elif food_item:
GameManager.set_money(GameManager.money + food_item.sell_value)
print("Table _collect_money_from_food(), money: ", GameManager.money)
SweetLogger.debug("_collect_money_from_food(), money: {0}", [GameManager.money], "table.gd", "_collect_money_from_food")
func _set_snap_zones_enabled(value: bool) -> void:
@@ -265,7 +265,7 @@ func _set_snap_zones_enabled(value: bool) -> void:
## Server-only state transition: sets the new state's timer and assigns
## _state (whose setter refreshes the display on every peer).
func _set_state(newState: TableState) -> void:
print("Table State START: ", TableState.keys()[newState])
SweetLogger.debug("State START: {0}", [TableState.keys()[newState]], "table.gd", "_set_state")
match newState:
TableState.IDLE:
@@ -307,7 +307,7 @@ func _set_state(newState: TableState) -> void:
# When state timer is finished, do this stuff before moving to next state
func _state_end(oldState: TableState):
print("Table State END : ", TableState.keys()[oldState])
SweetLogger.debug("State END: {0}", [TableState.keys()[oldState]], "table.gd", "_state_end")
match oldState:
TableState.EMPTY:
customers.visible = true