ready buttons work
This commit is contained in:
parent
1fe252cc01
commit
ef6f8497e2
2
.gitignore
vendored
2
.gitignore
vendored
@ -13,3 +13,5 @@ export_presets.cfg
|
|||||||
.mono/
|
.mono/
|
||||||
data_*/
|
data_*/
|
||||||
mono_crash.*.json
|
mono_crash.*.json
|
||||||
|
|
||||||
|
Project\ Exports/
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
class_name PlayerBoard
|
||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,26 +51,18 @@ position = Vector2(1313, -747)
|
|||||||
[node name="LobbyCamera" type="Camera2D" parent="."]
|
[node name="LobbyCamera" type="Camera2D" parent="."]
|
||||||
zoom = Vector2(0.225, 0.225)
|
zoom = Vector2(0.225, 0.225)
|
||||||
|
|
||||||
[node name="Button" type="Button" parent="LobbyCamera"]
|
|
||||||
offset_left = -155.0
|
|
||||||
offset_top = -1410.0
|
|
||||||
offset_right = 149.0
|
|
||||||
offset_bottom = -1265.0
|
|
||||||
theme_override_font_sizes/font_size = 100
|
|
||||||
text = "Ready"
|
|
||||||
|
|
||||||
[node name="RichTextLabel" type="RichTextLabel" parent="LobbyCamera"]
|
[node name="RichTextLabel" type="RichTextLabel" parent="LobbyCamera"]
|
||||||
offset_left = -2563.0
|
offset_left = -2563.0
|
||||||
offset_top = 561.0
|
offset_top = 687.0
|
||||||
offset_right = -1210.0
|
offset_right = -1417.0
|
||||||
offset_bottom = 1256.0
|
offset_bottom = 1259.0
|
||||||
theme_override_font_sizes/normal_font_size = 100
|
theme_override_font_sizes/normal_font_size = 50
|
||||||
fit_content = true
|
scroll_following = true
|
||||||
script = ExtResource("4_dww8o")
|
script = ExtResource("4_dww8o")
|
||||||
|
|
||||||
[node name="LineEdit" type="LineEdit" parent="LobbyCamera"]
|
[node name="LineEdit" type="LineEdit" parent="LobbyCamera"]
|
||||||
offset_left = -2547.0
|
offset_left = -2547.0
|
||||||
offset_top = 1276.0
|
offset_top = 1276.0
|
||||||
offset_right = -1204.0
|
offset_right = -1421.0
|
||||||
offset_bottom = 1421.0
|
offset_bottom = 1421.0
|
||||||
theme_override_font_sizes/font_size = 100
|
theme_override_font_sizes/font_size = 50
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
[gd_scene load_steps=3 format=3 uid="uid://cpl32lvhwd5da"]
|
[gd_scene load_steps=3 format=3 uid="uid://cpl32lvhwd5da"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://Scripts/PlayerStateMachine/human_controller.gd" id="1_pu5r2"]
|
[ext_resource type="Script" path="res://Scripts/PlayerStateMachine/human_controller.gd" id="1_4thxs"]
|
||||||
[ext_resource type="Theme" uid="uid://d26ldkm1br1bo" path="res://UI_Theme.tres" id="2_ja0q8"]
|
[ext_resource type="Theme" uid="uid://d26ldkm1br1bo" path="res://UI_Theme.tres" id="2_ja0q8"]
|
||||||
|
|
||||||
[node name="HumanPlayer" type="Node2D"]
|
[node name="HumanPlayer" type="Node2D"]
|
||||||
script = ExtResource("1_pu5r2")
|
script = ExtResource("1_4thxs")
|
||||||
|
|
||||||
[node name="Camera2D" type="Camera2D" parent="."]
|
[node name="Camera2D" type="Camera2D" parent="."]
|
||||||
|
visible = false
|
||||||
|
zoom = Vector2(0.4, 0.4)
|
||||||
|
|
||||||
[node name="UI" type="Control" parent="."]
|
[node name="UI" type="Control" parent="."]
|
||||||
|
visible = false
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 0
|
anchors_preset = 0
|
||||||
offset_right = 40.0
|
offset_right = 40.0
|
||||||
@ -16,6 +19,7 @@ offset_bottom = 40.0
|
|||||||
theme = ExtResource("2_ja0q8")
|
theme = ExtResource("2_ja0q8")
|
||||||
|
|
||||||
[node name="Cash" type="Label" parent="UI"]
|
[node name="Cash" type="Label" parent="UI"]
|
||||||
|
visible = false
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = -561.0
|
offset_left = -561.0
|
||||||
offset_top = -27.0
|
offset_top = -27.0
|
||||||
@ -24,6 +28,7 @@ offset_bottom = -1.0
|
|||||||
text = "$100"
|
text = "$100"
|
||||||
|
|
||||||
[node name="Profit" type="Label" parent="UI"]
|
[node name="Profit" type="Label" parent="UI"]
|
||||||
|
visible = false
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = -521.0
|
offset_left = -521.0
|
||||||
offset_top = -27.0
|
offset_top = -27.0
|
||||||
@ -34,6 +39,7 @@ text = "+23
|
|||||||
"
|
"
|
||||||
|
|
||||||
[node name="Loss" type="Label" parent="UI"]
|
[node name="Loss" type="Label" parent="UI"]
|
||||||
|
visible = false
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = -491.0
|
offset_left = -491.0
|
||||||
offset_top = -27.0
|
offset_top = -27.0
|
||||||
@ -43,6 +49,7 @@ theme_override_colors/font_color = Color(0.909804, 0, 0, 1)
|
|||||||
text = "-38"
|
text = "-38"
|
||||||
|
|
||||||
[node name="Phase" type="Label" parent="UI"]
|
[node name="Phase" type="Label" parent="UI"]
|
||||||
|
visible = false
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = -113.0
|
offset_left = -113.0
|
||||||
offset_top = -311.0
|
offset_top = -311.0
|
||||||
@ -50,13 +57,20 @@ offset_right = 103.0
|
|||||||
offset_bottom = -285.0
|
offset_bottom = -285.0
|
||||||
text = "{Management / Shift} Phase"
|
text = "{Management / Shift} Phase"
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="UI"]
|
[node name="LobbyReadyButton" type="Button" parent="UI"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = -397.0
|
offset_left = -26.0
|
||||||
offset_top = -938.0
|
offset_top = -313.0
|
||||||
offset_right = 401.0
|
offset_right = 30.0
|
||||||
offset_bottom = -798.0
|
offset_bottom = -282.0
|
||||||
theme_override_font_sizes/font_size = 100
|
text = "Ready"
|
||||||
text = "99999999999999"
|
|
||||||
horizontal_alignment = 1
|
[node name="LobbyReadyLabel" type="Label" parent="UI"]
|
||||||
vertical_alignment = 1
|
layout_mode = 0
|
||||||
|
offset_left = 39.0
|
||||||
|
offset_top = -309.0
|
||||||
|
offset_right = 79.0
|
||||||
|
offset_bottom = -283.0
|
||||||
|
text = "0/4"
|
||||||
|
|
||||||
|
[connection signal="pressed" from="UI/LobbyReadyButton" to="." method="_on_lobby_ready_button_pressed"]
|
||||||
|
@ -1,3 +1,25 @@
|
|||||||
class_name HumanController
|
class_name HumanController
|
||||||
extends PlayerController
|
extends PlayerController
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
if not is_multiplayer_authority():
|
||||||
|
return
|
||||||
|
$Camera2D.make_current()
|
||||||
|
$UI.visible = true
|
||||||
|
|
||||||
|
|
||||||
|
@rpc("call_local")
|
||||||
|
func ready_player():
|
||||||
|
game.ready_player(own_id)
|
||||||
|
|
||||||
|
|
||||||
|
@rpc("any_peer")
|
||||||
|
func update_ready_label():
|
||||||
|
$UI/LobbyReadyLabel.text = str(game.readied_players.size()) + "/" + str(game.players.size())
|
||||||
|
|
||||||
|
|
||||||
|
func _on_lobby_ready_button_pressed() -> void:
|
||||||
|
rpc("ready_player")
|
||||||
|
$UI/LobbyReadyButton.visible = false
|
||||||
|
update_ready_label()
|
||||||
|
@ -1,2 +1,6 @@
|
|||||||
class_name PlayerController
|
class_name PlayerController
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
var game: Game
|
||||||
|
var board: PlayerBoard
|
||||||
|
var own_id: int
|
||||||
|
@ -20,7 +20,9 @@ const CLIENT_DECK_SAVE_PATH = "user://client_deck.json"
|
|||||||
@export var seat3: Node2D
|
@export var seat3: Node2D
|
||||||
@export var seat4: Node2D
|
@export var seat4: Node2D
|
||||||
|
|
||||||
var players = 0
|
var networked_controllers: Array[HumanController] = []
|
||||||
|
var players = []
|
||||||
|
var readied_players = []
|
||||||
|
|
||||||
var _worker_scene = preload("res://Scenes/worker_card.tscn")
|
var _worker_scene = preload("res://Scenes/worker_card.tscn")
|
||||||
var _client_scene = preload("res://Scenes/client_card.tscn")
|
var _client_scene = preload("res://Scenes/client_card.tscn")
|
||||||
@ -72,32 +74,49 @@ func _load_clients():
|
|||||||
client_deck.shuffle()
|
client_deck.shuffle()
|
||||||
|
|
||||||
|
|
||||||
@rpc
|
@rpc #Called by the network lobby code
|
||||||
func add_player(id: int, username: String, type: PlayerType) -> void:
|
func add_player(id: int, username: String, type: PlayerType) -> void:
|
||||||
if players >= 4:
|
if players.size() > 4:
|
||||||
return
|
return
|
||||||
if type == null:
|
if type == null:
|
||||||
type = PlayerType.HUMAN
|
type = PlayerType.HUMAN
|
||||||
var board = _player_scene.instantiate()
|
var board = _player_scene.instantiate()
|
||||||
match players:
|
match players.size():
|
||||||
0:
|
0:
|
||||||
board.position = seat1.position
|
board.global_position = seat1.position
|
||||||
1:
|
1:
|
||||||
board.position = seat2.position
|
board.global_position = seat2.position
|
||||||
2:
|
2:
|
||||||
board.position = seat3.position
|
board.global_position = seat3.position
|
||||||
3:
|
3:
|
||||||
board.position = seat4.position
|
board.global_position = seat4.position
|
||||||
$Players.add_child(board)
|
$Players.add_child(board)
|
||||||
var controller
|
var controller
|
||||||
match type:
|
match type:
|
||||||
PlayerType.HUMAN:
|
PlayerType.HUMAN:
|
||||||
controller = _human_scene.instantiate()
|
controller = _human_scene.instantiate()
|
||||||
|
networked_controllers.append(controller)
|
||||||
PlayerType.BOT:
|
PlayerType.BOT:
|
||||||
controller = _bot_scene.instantiate()
|
controller = _bot_scene.instantiate()
|
||||||
controller.name = str(id)
|
controller.name = str(id)
|
||||||
controller.set_multiplayer_authority(id)
|
controller.set_multiplayer_authority(id)
|
||||||
controller.get_node("UI/Label").text = str(username)
|
controller.own_id = id
|
||||||
|
controller.game = self as Game
|
||||||
|
controller.board = board as PlayerBoard
|
||||||
board.add_child(controller)
|
board.add_child(controller)
|
||||||
players += 1
|
players.append(id)
|
||||||
|
for player in networked_controllers:
|
||||||
|
player.rpc("update_ready_label")
|
||||||
|
|
||||||
|
|
||||||
|
func ready_player(id):
|
||||||
|
if not readied_players.has(id):
|
||||||
|
readied_players.append(id)
|
||||||
|
if readied_players.size() == players.size():
|
||||||
|
start_game()
|
||||||
|
for player in networked_controllers:
|
||||||
|
player.rpc("update_ready_label")
|
||||||
|
|
||||||
|
|
||||||
|
func start_game():
|
||||||
|
print("Game started!")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user