feat: 优化代码
This commit is contained in:
@@ -7,10 +7,10 @@
|
|||||||
script = ExtResource("1_yqjtg")
|
script = ExtResource("1_yqjtg")
|
||||||
|
|
||||||
[node name="Background" type="ColorRect" parent="." unique_id=802635055]
|
[node name="Background" type="ColorRect" parent="." unique_id=802635055]
|
||||||
offset_left = -34.0
|
offset_left = -29.0
|
||||||
offset_top = -27.0
|
offset_top = -18.0
|
||||||
offset_right = 2594.0
|
offset_right = 2599.0
|
||||||
offset_bottom = 1476.0
|
offset_bottom = 1485.0
|
||||||
color = Color(0.7058824, 0.6862745, 0, 1)
|
color = Color(0.7058824, 0.6862745, 0, 1)
|
||||||
|
|
||||||
[node name="IsServerLabel" type="Label" parent="." unique_id=592205212]
|
[node name="IsServerLabel" type="Label" parent="." unique_id=592205212]
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ theme_override_fonts/font = ExtResource("2_6wm04")
|
|||||||
theme_override_font_sizes/font_size = 24
|
theme_override_font_sizes/font_size = 24
|
||||||
|
|
||||||
[node name="IPBeginSetting" type="Node2D" parent="." unique_id=1428256194]
|
[node name="IPBeginSetting" type="Node2D" parent="." unique_id=1428256194]
|
||||||
position = Vector2(-1, 94)
|
position = Vector2(0, 100)
|
||||||
metadata/_edit_group_ = true
|
metadata/_edit_group_ = true
|
||||||
|
|
||||||
[node name="IPBeginSetLabel" type="Label" parent="IPBeginSetting" unique_id=561890346]
|
[node name="IPBeginSetLabel" type="Label" parent="IPBeginSetting" unique_id=561890346]
|
||||||
@@ -55,7 +55,7 @@ theme_override_fonts/font = ExtResource("2_6wm04")
|
|||||||
theme_override_font_sizes/font_size = 24
|
theme_override_font_sizes/font_size = 24
|
||||||
|
|
||||||
[node name="UsernameSetting" type="Node2D" parent="." unique_id=564366013]
|
[node name="UsernameSetting" type="Node2D" parent="." unique_id=564366013]
|
||||||
position = Vector2(0, 208)
|
position = Vector2(0, 200)
|
||||||
metadata/_edit_group_ = true
|
metadata/_edit_group_ = true
|
||||||
|
|
||||||
[node name="UsernameSetLabel" type="Label" parent="UsernameSetting" unique_id=1569658441]
|
[node name="UsernameSetLabel" type="Label" parent="UsernameSetting" unique_id=1569658441]
|
||||||
@@ -76,7 +76,7 @@ theme_override_fonts/font = ExtResource("2_6wm04")
|
|||||||
theme_override_font_sizes/font_size = 24
|
theme_override_font_sizes/font_size = 24
|
||||||
|
|
||||||
[node name="LoadSource" type="Node2D" parent="." unique_id=230611076]
|
[node name="LoadSource" type="Node2D" parent="." unique_id=230611076]
|
||||||
position = Vector2(44, 314)
|
position = Vector2(40, 300)
|
||||||
metadata/_edit_group_ = true
|
metadata/_edit_group_ = true
|
||||||
|
|
||||||
[node name="LoadSourceLabel" type="Label" parent="LoadSource" unique_id=299353496]
|
[node name="LoadSourceLabel" type="Label" parent="LoadSource" unique_id=299353496]
|
||||||
@@ -96,7 +96,7 @@ offset_bottom = 60.0
|
|||||||
theme_override_font_sizes/font_size = 25
|
theme_override_font_sizes/font_size = 25
|
||||||
|
|
||||||
[node name="ChooseLanguage" type="Node2D" parent="." unique_id=323270128]
|
[node name="ChooseLanguage" type="Node2D" parent="." unique_id=323270128]
|
||||||
position = Vector2(39, 405)
|
position = Vector2(40, 400)
|
||||||
metadata/_edit_group_ = true
|
metadata/_edit_group_ = true
|
||||||
|
|
||||||
[node name="ChooseLanguageLabel" type="Label" parent="ChooseLanguage" unique_id=1719434618]
|
[node name="ChooseLanguageLabel" type="Label" parent="ChooseLanguage" unique_id=1719434618]
|
||||||
@@ -130,10 +130,10 @@ theme_override_font_sizes/font_size = 30
|
|||||||
text = "SETTINGS_SAVESETTINGS"
|
text = "SETTINGS_SAVESETTINGS"
|
||||||
|
|
||||||
[node name="DownloadButton" type="Button" parent="." unique_id=315804661]
|
[node name="DownloadButton" type="Button" parent="." unique_id=315804661]
|
||||||
offset_left = 598.0
|
offset_left = 595.0
|
||||||
offset_top = 1316.0
|
offset_top = 1299.0
|
||||||
offset_right = 774.0
|
offset_right = 923.0
|
||||||
offset_bottom = 1405.0
|
offset_bottom = 1388.0
|
||||||
theme_override_fonts/font = ExtResource("2_6wm04")
|
theme_override_fonts/font = ExtResource("2_6wm04")
|
||||||
theme_override_font_sizes/font_size = 30
|
theme_override_font_sizes/font_size = 30
|
||||||
text = "SETTINGS_DOWNLOAD"
|
text = "SETTINGS_DOWNLOAD"
|
||||||
|
|||||||
@@ -17,17 +17,17 @@ var client_round: int = 0
|
|||||||
var game_started: bool = false
|
var game_started: bool = false
|
||||||
|
|
||||||
func add_player(id: int) -> void:
|
func add_player(id: int) -> void:
|
||||||
if players.size() < max_players and not players.has(id):
|
if players.size() >= max_players or players.has(id):
|
||||||
|
return
|
||||||
players.append(id)
|
players.append(id)
|
||||||
player_cards[id] = []
|
player_cards[id] = []
|
||||||
if not player_turns.has(id):
|
|
||||||
player_turns[id] = 0
|
player_turns[id] = 0
|
||||||
if not player_hp.has(id):
|
|
||||||
player_hp[id] = 100
|
player_hp[id] = 100
|
||||||
|
|
||||||
func remove_player(id: int) -> void:
|
func remove_player(id: int) -> void:
|
||||||
var index = players.find(id)
|
var index = players.find(id)
|
||||||
if index != -1:
|
if index == -1:
|
||||||
|
return
|
||||||
players.remove_at(index)
|
players.remove_at(index)
|
||||||
player_cards.erase(id)
|
player_cards.erase(id)
|
||||||
player_turns.erase(id)
|
player_turns.erase(id)
|
||||||
@@ -40,11 +40,9 @@ func create_server(playern: int) -> void:
|
|||||||
if error != OK:
|
if error != OK:
|
||||||
push_error("Failed to create server: " + str(error))
|
push_error("Failed to create server: " + str(error))
|
||||||
return
|
return
|
||||||
|
|
||||||
multiplayer.multiplayer_peer = peer
|
multiplayer.multiplayer_peer = peer
|
||||||
multiplayer.peer_connected.connect(_on_peer_connected)
|
multiplayer.peer_connected.connect(_on_peer_connected)
|
||||||
multiplayer.peer_disconnected.connect(_on_peer_disconnected)
|
multiplayer.peer_disconnected.connect(_on_peer_disconnected)
|
||||||
|
|
||||||
add_player(1)
|
add_player(1)
|
||||||
|
|
||||||
func create_client(ip: String) -> void:
|
func create_client(ip: String) -> void:
|
||||||
@@ -52,7 +50,6 @@ func create_client(ip: String) -> void:
|
|||||||
if error != OK:
|
if error != OK:
|
||||||
push_error("Failed to create client: " + str(error))
|
push_error("Failed to create client: " + str(error))
|
||||||
return
|
return
|
||||||
|
|
||||||
multiplayer.multiplayer_peer = peer
|
multiplayer.multiplayer_peer = peer
|
||||||
|
|
||||||
func _on_peer_connected(id: int) -> void:
|
func _on_peer_connected(id: int) -> void:
|
||||||
@@ -69,11 +66,9 @@ func start_game() -> void:
|
|||||||
if not multiplayer.is_server():
|
if not multiplayer.is_server():
|
||||||
push_error("Only the server can start the game")
|
push_error("Only the server can start the game")
|
||||||
return
|
return
|
||||||
|
|
||||||
if players.size() != max_players:
|
if players.size() != max_players:
|
||||||
push_error("Not enough players to start the game")
|
push_error("Not enough players to start the game")
|
||||||
return
|
return
|
||||||
|
|
||||||
game_started = true
|
game_started = true
|
||||||
server_round = 1
|
server_round = 1
|
||||||
deal_cards()
|
deal_cards()
|
||||||
@@ -82,7 +77,6 @@ func start_game() -> void:
|
|||||||
func extract() -> String:
|
func extract() -> String:
|
||||||
if cards.is_empty():
|
if cards.is_empty():
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
var index = randi() % cards.size()
|
var index = randi() % cards.size()
|
||||||
var card = cards[index]
|
var card = cards[index]
|
||||||
cards.remove_at(index)
|
cards.remove_at(index)
|
||||||
@@ -92,14 +86,14 @@ func deal_cards() -> void:
|
|||||||
for player_id in players:
|
for player_id in players:
|
||||||
while player_cards[player_id].size() < 8:
|
while player_cards[player_id].size() < 8:
|
||||||
var card = extract()
|
var card = extract()
|
||||||
if card != "":
|
if card.is_empty():
|
||||||
|
break
|
||||||
player_cards[player_id].append(card)
|
player_cards[player_id].append(card)
|
||||||
|
|
||||||
func next_round() -> void:
|
func next_round() -> void:
|
||||||
if not multiplayer.is_server():
|
if not multiplayer.is_server():
|
||||||
push_error("Only the server can advance rounds")
|
push_error("Only the server can advance rounds")
|
||||||
return
|
return
|
||||||
|
|
||||||
settle_round()
|
settle_round()
|
||||||
server_round += 1
|
server_round += 1
|
||||||
sync_game_state.rpc()
|
sync_game_state.rpc()
|
||||||
@@ -112,17 +106,15 @@ func request_card_draw(player_id: int) -> void:
|
|||||||
if not player_cards.has(player_id):
|
if not player_cards.has(player_id):
|
||||||
push_error("Player not found: " + str(player_id))
|
push_error("Player not found: " + str(player_id))
|
||||||
return
|
return
|
||||||
|
var cards_to_draw := 4
|
||||||
var cards_to_draw: int = 4
|
if server_round == 1 and player_turns.get(player_id, -1) <= 1:
|
||||||
|
|
||||||
if server_round == 1 and player_turns.has(player_id) and 0 <= player_turns[player_id] <= 1:
|
|
||||||
cards_to_draw = 3
|
cards_to_draw = 3
|
||||||
|
for i in cards_to_draw:
|
||||||
for i in range(cards_to_draw):
|
|
||||||
if player_cards[player_id].size() >= 8:
|
if player_cards[player_id].size() >= 8:
|
||||||
break
|
break
|
||||||
var card = extract()
|
var card = extract()
|
||||||
if card != "":
|
if card.is_empty():
|
||||||
|
break
|
||||||
player_cards[player_id].append(card)
|
player_cards[player_id].append(card)
|
||||||
|
|
||||||
func get_my_cards() -> void:
|
func get_my_cards() -> void:
|
||||||
@@ -131,8 +123,7 @@ func get_my_cards() -> void:
|
|||||||
@rpc("any_peer", "call_remote", "reliable")
|
@rpc("any_peer", "call_remote", "reliable")
|
||||||
func request_cards() -> void:
|
func request_cards() -> void:
|
||||||
var sender_id = multiplayer.get_remote_sender_id()
|
var sender_id = multiplayer.get_remote_sender_id()
|
||||||
var data: Array = player_cards.get(sender_id, [])
|
send_cards.rpc_id(sender_id, player_cards.get(sender_id, []))
|
||||||
send_cards.rpc_id(sender_id, data)
|
|
||||||
|
|
||||||
@rpc("authority", "call_remote", "reliable")
|
@rpc("authority", "call_remote", "reliable")
|
||||||
func send_cards(data: Array) -> void:
|
func send_cards(data: Array) -> void:
|
||||||
@@ -141,16 +132,14 @@ func send_cards(data: Array) -> void:
|
|||||||
func sync_game_state() -> void:
|
func sync_game_state() -> void:
|
||||||
if not multiplayer.is_server():
|
if not multiplayer.is_server():
|
||||||
return
|
return
|
||||||
|
sync_game_state_rpc.rpc({
|
||||||
var data: Dictionary = {}
|
"cards": cards,
|
||||||
data["cards"] = cards
|
"player_cards": player_cards,
|
||||||
data["player_cards"] = player_cards
|
"player_turns": player_turns,
|
||||||
data["player_turns"] = player_turns
|
"player_hp": player_hp,
|
||||||
data["player_hp"] = player_hp
|
"server_round": server_round,
|
||||||
data["server_round"] = server_round
|
"game_started": game_started
|
||||||
data["game_started"] = game_started
|
})
|
||||||
|
|
||||||
sync_game_state_rpc.rpc(data)
|
|
||||||
|
|
||||||
@rpc("authority", "call_remote", "reliable")
|
@rpc("authority", "call_remote", "reliable")
|
||||||
func sync_game_state_rpc(data: Dictionary) -> void:
|
func sync_game_state_rpc(data: Dictionary) -> void:
|
||||||
@@ -164,13 +153,11 @@ func sync_game_state_rpc(data: Dictionary) -> void:
|
|||||||
func sync_players() -> void:
|
func sync_players() -> void:
|
||||||
if not multiplayer.is_server():
|
if not multiplayer.is_server():
|
||||||
return
|
return
|
||||||
|
sync_players_rpc.rpc({
|
||||||
var data: Dictionary = {}
|
"players": players,
|
||||||
data["players"] = players
|
"player_username": player_username,
|
||||||
data["player_username"] = player_username
|
"player_hp": player_hp
|
||||||
data["player_hp"] = player_hp
|
})
|
||||||
|
|
||||||
sync_players_rpc.rpc(data)
|
|
||||||
|
|
||||||
@rpc("authority", "call_remote", "reliable")
|
@rpc("authority", "call_remote", "reliable")
|
||||||
func sync_players_rpc(data: Dictionary) -> void:
|
func sync_players_rpc(data: Dictionary) -> void:
|
||||||
|
|||||||
Reference in New Issue
Block a user