From 1a4b365c5fd2d72ea4866be0817a833d6f1bcf5e Mon Sep 17 00:00:00 2001 From: Lexi Quinn Date: Wed, 5 Jul 2023 23:57:30 +1000 Subject: [PATCH] added money ui and payout for serving clients --- Scenes/human_player.tscn | 11 ++++++++ .../PlayerStateMachine/human_controller.gd | 27 +++++++++++++++++++ .../PlayerStateMachine/player_controller.gd | 11 +++++++- Scripts/workspace.gd | 11 ++++++++ 4 files changed, 59 insertions(+), 1 deletion(-) diff --git a/Scenes/human_player.tscn b/Scenes/human_player.tscn index 400b195..67a62b1 100644 --- a/Scenes/human_player.tscn +++ b/Scenes/human_player.tscn @@ -30,6 +30,17 @@ layout_mode = 2 offset_top = 312.0 offset_right = 1152.0 offset_bottom = 335.0 +text = "$40" + +[node name="Cash2" type="Label" parent="CanvasLayer/UI"] +visible = false +modulate = Color(0, 1, 0, 1) +layout_mode = 2 +offset_left = 47.0 +offset_top = 312.0 +offset_right = 1152.0 +offset_bottom = 338.0 +text = "+$8" [node name="Profit" type="Label" parent="CanvasLayer/UI"] layout_mode = 2 diff --git a/Scripts/PlayerStateMachine/human_controller.gd b/Scripts/PlayerStateMachine/human_controller.gd index 8692465..8e55912 100644 --- a/Scripts/PlayerStateMachine/human_controller.gd +++ b/Scripts/PlayerStateMachine/human_controller.gd @@ -90,21 +90,48 @@ func _on_confirm_pressed() -> void: rpc("confirm_draft") +@rpc("call_local", "reliable") +func turn_away_client(): + super() + money_delta = 0 + update_money() + + func start_turn(): super() +@rpc("call_local", "reliable") +func end_turn(): + super() + update_money() + + func end_of_round(): super() $CanvasLayer/UI/Reputation.text = str(reputation_points) + " / 100 Reputation" +func update_money(): + $CanvasLayer/UI/Cash.text = "$" + str(money) + $CanvasLayer/UI/Cash2.visible = true + $CanvasLayer/UI/Cash2.text = "$" + str(money_delta) + if money_delta == 0: + $CanvasLayer/UI/Cash2.visible = false + if money_delta > 0: + $CanvasLayer/UI/Cash2.modulate = Color(0, 1, 0) + if money_delta < 0: + $CanvasLayer/UI/Cash2.modulate = Color(1, 0, 0) + + func select_workspace(workspace): if not super(workspace): return await current_client.time_slots_selected ready_button.visible = true current_workspace.evaluate_match() + money_delta = current_workspace.evaluate_revenue() + update_money() @rpc("call_local", "reliable") diff --git a/Scripts/PlayerStateMachine/player_controller.gd b/Scripts/PlayerStateMachine/player_controller.gd index cc77938..f31032b 100644 --- a/Scripts/PlayerStateMachine/player_controller.gd +++ b/Scripts/PlayerStateMachine/player_controller.gd @@ -14,6 +14,8 @@ var hand = [] var draft_picked = [] var draft_pick_amount = 0 var reputation_points = 0 +var money = 40 +var money_delta = 0 var board: PlayerBoard var current_client: Client var current_workspace: Workspace @@ -80,11 +82,14 @@ func turn_away_client(): current_client.set_satisfaction(0) if current_workspace != null: current_workspace.remove_client() - current_client = null + current_workspace = null + #current_client = null @rpc("call_local", "reliable") func networked_select_workspace(workspace_path, current_client_path): + if board.poor_deck.cards.has(get_node(current_client_path)): + board.poor_deck.cards.remove_at(board.poor_deck.cards.find(get_node(current_client_path))) get_node(workspace_path).add_client(get_node(current_client_path)) get_node(workspace_path).evaluate_match() @@ -125,7 +130,11 @@ func end_of_round(): @rpc("call_local", "reliable") func end_turn(): + if current_workspace != null: + rpc("networked_select_workspace", current_workspace.get_path(), current_client.get_path()) board.time_step(false) current_client = null current_workspace = null + money += money_delta + money_delta = 0 turn_finished.emit() diff --git a/Scripts/workspace.gd b/Scripts/workspace.gd index b9caee5..a55ad33 100644 --- a/Scripts/workspace.gd +++ b/Scripts/workspace.gd @@ -31,6 +31,17 @@ func remove_client(): return c +func evaluate_revenue() -> int: + if worker == null or client == null: + return 0 + var revenue = 0 + revenue += client.turns_left * 2 + for service in client.services: + if worker.services.has(service): + revenue += Data.service_prices[service] + return revenue + + func evaluate_match(): if worker == null or client == null: return