This commit is contained in:
Rendo 2025-12-08 22:03:29 +05:00
commit e9f4c6e5f8
4 changed files with 59 additions and 6 deletions

View file

@ -16,6 +16,9 @@ enum ROUND_STATES {
AFTER_SESSION = 5,
}
const WIN_MONEY: int = 3400
const LOSE_MONEY: int = 2000
const ATTACK_LAYER: int = 0b10000
const DEFENCE_LAYER: int = 0b100000
@ -27,6 +30,7 @@ signal round_state_changed(state: int)
signal player_stopped_interacting(id: int)
var player_nodes: Dictionary[int,Player] = {}
var player_data: Dictionary[int,Dictionary] = {}
var object_containers: Array[ObjectContainer]
var dynamic_objects_spawner: MultiplayerSpawner
@ -72,6 +76,7 @@ func _ready() -> void:
add_child(buy_timer)
multiplayer.peer_connected.connect(sync_session_server)
multiplayer.peer_disconnected.connect(delete_player)
func sync_session_server(id: int):
if multiplayer.is_server() == false or session_started_flag == false:
@ -138,6 +143,14 @@ func start_session() -> void:
round_timer.wait_time = Lobby.round_time
buy_timer.wait_time = Lobby.buy_time
var all_players: PackedInt32Array = multiplayer.get_peers()
all_players.append(multiplayer.get_unique_id())
for player in all_players:
player_data[player] = {
"money" : 800,
"nickname" : "Seliboba"
}
start_round()
@rpc("authority","call_remote","reliable")
@ -205,8 +218,16 @@ func end_round(win_team: int) -> void:
if win_team == TEAMS.DEFENCE:
defender_score += 1
for defender in Lobby.defence_team:
player_data[defender].money += WIN_MONEY
for attacker in Lobby.attack_team:
player_data[attacker].money += LOSE_MONEY
elif win_team == TEAMS.ATTACK:
attacker_score += 1
for defender in Lobby.defence_team:
player_data[defender].money += LOSE_MONEY
for attacker in Lobby.attack_team:
player_data[attacker].money += WIN_MONEY
round_state = ROUND_STATES.AFTER_ROUND
@ -353,3 +374,19 @@ func kill_site(site: StringName) -> void:
func sync_score(attack: int, defence: int):
attacker_score = attack
defender_score = defence
@rpc("authority","call_remote","reliable")
func delete_player(id: int):
if not is_server_request():
return
if multiplayer.is_server():
delete_player.rpc_id(id)
player_data.erase(id)
func get_player_data() -> Dictionary:
var id: int = multiplayer.get_unique_id()
if player_data.has(id):
return player_data[id]
else:
return {}