diff --git a/client/autoloads/gamestate.gd b/client/autoloads/gamestate.gd index 057fd9a877bb244e37f3744c248ab6c4ad5b759e..f82123345789f3e06f7a3b337c391352a47ea5c2 100644 --- a/client/autoloads/gamestate.gd +++ b/client/autoloads/gamestate.gd @@ -1,7 +1,7 @@ extends Node const GAMEPATH:String = "/root/game/" -var players = {} +var players:Dictionary = {} var maxPlayers:int enum {NOT_PLAYING=0, PLAYING=1, WAS_PLAYING=2} @@ -116,20 +116,17 @@ func serverAlert(text:String): # --- Called by network --- # Start the game -func startGame(players, pseudos, skins): - for i in range(len(players)): - registerPlayer(players[i],pseudos[i],skins[i]) +func startGame(players:Dictionary): + registerPlayer(players) interfaces.loadNewScene(interfaces.GAME_PATH) # --- Called by network --- #Â Register the players of the same game -func registerPlayer(networkId:int, pseudo:String, skinId:int): - self.players[networkId] = { - "pseudo": pseudo, - "skin": skinId - } - print("Player added to the game: ", networkId) +func registerPlayer(players:Dictionary): + self.players = players + for networkId in players: + print("Player added to the game: ", networkId) # --- Called by network --- diff --git a/client/autoloads/network.gd b/client/autoloads/network.gd index b68320503cf86ca478e8b38650aebd61f5c18afc..3fbd4f94ccfc8db43d0f64b341da13bce749be0a 100644 --- a/client/autoloads/network.gd +++ b/client/autoloads/network.gd @@ -117,9 +117,9 @@ remote func serverAlert(text:String): gamestate.serverAlert(text) -remote func startGame(players:Array, pseudoArgs:Array, skinArgs:Array): +remote func startGame(players:Dictionary): if get_tree().get_rpc_sender_id()==gamestate.serverNetworkId: - gamestate.startGame(players, pseudoArgs, skinArgs) + gamestate.startGame(players) ################################################################# diff --git a/client/entities/characters/player.gd b/client/entities/characters/player.gd index bbb4a40d1034f69e191eb2acdf7638a283d30399..5bc1bd3b818092e75e4f343438a1322e54dd8179 100644 --- a/client/entities/characters/player.gd +++ b/client/entities/characters/player.gd @@ -1,5 +1,7 @@ extends KinematicBody +var pseudo:String = "anonymous" + var currentDirection:int = 1 var currentRotation:float = 0 var model @@ -15,6 +17,10 @@ func _process(delta): model.rotation = model.rotation.linear_interpolate(Vector3(0,currentRotation,0),delta*SPEED) +# Set pseudo +func setPseudo(pseudoString:String): + self.pseudo = pseudoString + # Set character skin func setSkin(skinId:int): var skins = { diff --git a/client/entities/characters/pseudo.gd b/client/entities/characters/pseudo.gd index 4d263eeaa1126d76565a517b8787207d13c8b3a7..bcaffd4d9811c2fabb43f3644281116cc599ced2 100644 --- a/client/entities/characters/pseudo.gd +++ b/client/entities/characters/pseudo.gd @@ -11,7 +11,7 @@ func _ready(): var my_id = get_tree().get_network_unique_id() if str(my_id) != str (player.get_name()) : - set_text(player.get_name()) + set_text(player.pseudo) func _process(_delta): diff --git a/client/levels/hud/hud.gd b/client/levels/hud/hud.gd index b02a5eb585a04372d18b4e024c8c3e92f7762bf0..cda4818b26e6cdaf3600248b5f49aa732b8c5270 100644 --- a/client/levels/hud/hud.gd +++ b/client/levels/hud/hud.gd @@ -105,7 +105,7 @@ func displayUser(name,img): userImg.texture = load(img) func displayNbKills(): - nbKills.text = int(nbKills.text) + 1 + nbKills.text = str(int(nbKills.text) + 1) func showInventory(img): inventory.texture = load(img) diff --git a/client/levels/hud/pseudo_hud.gd b/client/levels/hud/pseudo_hud.gd index b891b23a4906da549919b70d2db4896381502502..d3f5d2944b8cacd4a49b9e0314b9e473ebd2eb79 100644 --- a/client/levels/hud/pseudo_hud.gd +++ b/client/levels/hud/pseudo_hud.gd @@ -6,10 +6,7 @@ var posId var player func _ready(): - player = get_node("../../") - var my_id = get_tree().get_network_unique_id() - if str(my_id)!=str(player.get_name()): - set_text(gamestate.players[my_id]) + set_text(gamestate.players[my_id]["pseudo"]) diff --git a/client/levels/selectChar/characterSelection.gd b/client/levels/selectChar/characterSelection.gd index 457b8274274db8a24dd1d049f657db915c05159b..0933b7ef9f68862b0dae55bd30c2a0c8ad52b65a 100644 --- a/client/levels/selectChar/characterSelection.gd +++ b/client/levels/selectChar/characterSelection.gd @@ -222,7 +222,7 @@ func buttonHeader(button_name): #globals.load_new_scene("res://levels/lobby/lobby.tscn") if currentChar == SKIN_DEFAULT: currentChar = SKIN_DISCO - gamestate.joinGameRequest(interfaces.NUMBER_OF_PLAYERS, "playerName", currentChar) + gamestate.joinGameRequest(interfaces.NUMBER_OF_PLAYERS, interfaces.pseudo, currentChar) # print("SEND THE USER AND THE CHARACTER TO THE SERVER") # print("THE SERVER WILL DO THE REST I THINK") # print("PUT THE GAME HERE") diff --git a/client/levels/test/game.gd b/client/levels/test/game.gd index 52a983b143146c4e102a2470154b0ef415c964ba..6501664b8a5220d3d521fdf2d098fb01404b6b74 100644 --- a/client/levels/test/game.gd +++ b/client/levels/test/game.gd @@ -46,6 +46,7 @@ func _ready(): var player:Node = player_scene.instance() player.set_name(str(peer_id)) + player.setPseudo(gamestate.players[peer_id]["pseudo"]) player.setSkin(gamestate.players[peer_id]["skin"]) get_node("/root/game/").add_child(player) diff --git a/server/autoloads/gamestate.gd b/server/autoloads/gamestate.gd index f788b8007a6a9cfbaea9e6e9dbb6a6e689add316..eef19876421debf367af6b3690e0151569e4149d 100644 --- a/server/autoloads/gamestate.gd +++ b/server/autoloads/gamestate.gd @@ -15,7 +15,7 @@ var registeredClients:Array = [] # pseudo: ... # skin: ... # }} -var clientArgs= {} +var players:Dictionary = {} const START_UP_DELAY:int = 5 signal serverValidation @@ -65,7 +65,7 @@ func waitClientRequest(clientNetworkId:int, pseudo:String, skinId:int): # General case if registeredClients.size()+awaitedClients.size()<self.maxClients: awaitedClients.append(clientNetworkId) - clientArgs[clientNetworkId] = { + players[clientNetworkId] = { "pseudo": pseudo, "skin": skinId } @@ -84,11 +84,11 @@ func clientLost(clientNetworkId:int): if awaitedClients.has(clientNetworkId): print("S:", serverId, " Client ", clientNetworkId, " was purged from the awaited clients") awaitedClients.erase(clientNetworkId) - clientArgs.erase(clientNetworkId) + players.erase(clientNetworkId) elif registeredClients.has(clientNetworkId): print("S:", serverId, " Client ", clientNetworkId, " was purged from the registered clients") registeredClients.erase(clientNetworkId) - clientArgs.erase(clientNetworkId) + players.erase(clientNetworkId) ### ################################################################# @@ -133,7 +133,7 @@ func leaveServerRequest(clientNetworkId:int): # The client was registered elif registeredClients.has(clientNetworkId): registeredClients.erase(clientNetworkId) - clientArgs.erase(clientNetworkId) + players.erase(clientNetworkId) print("S:", serverId, " peer ", clientNetworkId, " erased for the registered clients") # The client trying to leave was not there in the first place ! @@ -188,12 +188,12 @@ func spawnPlayer(): # Attribute a random spawn point for peer_id in registeredClients: - var player = playerScene.instance() - player.set_name(str(peer_id)) - get_node(GAMEPATH).add_child(player) + var newPlayer = playerScene.instance() + newPlayer.set_name(str(peer_id)) + get_node(GAMEPATH).add_child(newPlayer) var i=rng.randi_range(0,len(listAvailableSpawn)-1) var spawnPosition = get_node(GAMEPATH+"spawnCollection/spawn"+str(listAvailableSpawn[i]+1)).get_translation() - player.translate(spawnPosition) + newPlayer.translate(spawnPosition) listAvailableSpawn.remove(i) @@ -209,18 +209,9 @@ func startGame(): spawnPlayer() - var pseudoArray:Array = [] - var skinArray:Array = [] - - # Create argument arrays - for clientNetworkId in registeredClients: - var player = clientArgs[clientNetworkId] - pseudoArray.append(player["pseudo"]) - skinArray.append(player["skin"]) - # Broadcast the beginning of the game for clientNetworkId in registeredClients: - network.startGame(clientNetworkId, registeredClients, pseudoArray, skinArray) + network.startGame(clientNetworkId, players) game.spawnInitItem() @@ -232,7 +223,7 @@ func startGame(): func kickPlayer(playerId:int): network.kickPlayer(playerId, "You lost ...") registeredClients.erase(playerId) - clientArgs.erase(playerId) + players.erase(playerId) # Inform the winner and the maestro that the game has ended, and then destroy the server @@ -241,7 +232,7 @@ func endGame(): network.gameHasEnded(registeredClients[0]) registeredClients.clear() - clientArgs.clear() + players.clear() get_node("/root/game").queue_free() diff --git a/server/autoloads/network.gd b/server/autoloads/network.gd index b9acb8d54e05e6add50e2484f05de9ab9d573b18..7317c0c3cb054b2733abcfa1e2563873bbf0cbf1 100644 --- a/server/autoloads/network.gd +++ b/server/autoloads/network.gd @@ -95,8 +95,8 @@ func serverAlert(clientNetworkId:int, text:String): # Start the game in the client app # => will probably change after the network merge !!! -func startGame(clientNetworkId:int, registeredClients:Array, pseudoArg:Array, skinArg:Array): - rpc_id(clientNetworkId, "startGame", registeredClients, pseudoArg, skinArg) +func startGame(clientNetworkId:int, players:Dictionary): + rpc_id(clientNetworkId, "startGame", players) # Make the client leave the game with a message displayed