private async Task ServerSetUpPlayer( string unverifiedClientId, string unverifiedUsername, string unverifiedUserid, int unverifiedClientVersion, string unverifiedToken) { Logger.LogFormat("A joinedviewer called CmdServerSetupPlayer on this server, Unverified ClientId: {0} Unverified Username: {1}", Category.Connections, unverifiedClientId, unverifiedUsername); // Register player to player list (logging code exists in PlayerList so no need for extra logging here) var unverifiedConnPlayer = PlayerList.Instance.AddOrUpdate(new ConnectedPlayer { Connection = connectionToClient, GameObject = gameObject, Username = unverifiedUsername, Job = JobType.NULL, ClientId = unverifiedClientId, UserId = unverifiedUserid, ConnectionIP = connectionToClient.address }); // this validates Userid and Token var isValidPlayer = await PlayerList.Instance.ValidatePlayer(unverifiedClientVersion, unverifiedConnPlayer, unverifiedToken); if (isValidPlayer == false) { ClearCache(); PlayerList.Instance.Remove(unverifiedConnPlayer); Logger.LogWarning($"Set up new player: invalid player. For {unverifiedUsername}", Category.Connections); return; } //Add player to the list of current round players PlayerList.Instance.AddToRoundPlayers(unverifiedConnPlayer); //Send to client their job ban entries var jobBanEntries = PlayerList.Instance.ClientAskingAboutJobBans(unverifiedConnPlayer); PlayerList.ServerSendsJobBanDataMessage.Send(unverifiedConnPlayer.Connection, jobBanEntries); //Send to client the current crew job counts if (CrewManifestManager.Instance != null) { SetJobCountsMessage.SendToPlayer(CrewManifestManager.Instance.Jobs, unverifiedConnPlayer); } UpdateConnectedPlayersMessage.Send(); IsValidPlayerAndWaitingOnLoad = true; STUnverifiedClientId = unverifiedClientId; STVerifiedUserid = unverifiedUserid; //Is validated within PlayerList.Instance.ValidatePlayer( STVerifiedConnPlayer = unverifiedConnPlayer; }
private async void ServerSetUpPlayer( string unverifiedClientId, string unverifiedUsername, string unverifiedUserid, int unverifiedClientVersion, string unverifiedToken) { Logger.LogFormat("A joinedviewer called CmdServerSetupPlayer on this server, Unverified ClientId: {0} Unverified Username: {1}", Category.Connections, unverifiedClientId, unverifiedUsername); // Register player to player list (logging code exists in PlayerList so no need for extra logging here) var unverifiedConnPlayer = PlayerList.Instance.AddOrUpdate(new ConnectedPlayer { Connection = connectionToClient, GameObject = gameObject, Username = unverifiedUsername, Job = JobType.NULL, ClientId = unverifiedClientId, UserId = unverifiedUserid }); // this validates Userid and Token var isValidPlayer = await PlayerList.Instance.ValidatePlayer(unverifiedClientId, unverifiedUsername, unverifiedUserid, unverifiedClientVersion, unverifiedConnPlayer, unverifiedToken); if (isValidPlayer == false) { Logger.LogWarning($"Set up new player: invalid player. For {unverifiedUsername}", Category.Connections); return; } //Send to client their job ban entries var jobBanEntries = PlayerList.Instance.ClientAskingAboutJobBans(unverifiedConnPlayer); PlayerList.ServerSendsJobBanDataMessage.Send(unverifiedConnPlayer.Connection, jobBanEntries); //Send to client the current crew job counts if (CrewManifestManager.Instance != null) { SetJobCountsMessage.SendToPlayer(CrewManifestManager.Instance.Jobs, unverifiedConnPlayer); } UpdateConnectedPlayersMessage.Send(); // Only sync the pre-round countdown if it's already started. if (GameManager.Instance.CurrentRoundState == RoundState.PreRound) { if (GameManager.Instance.waitForStart) { TargetSyncCountdown(connectionToClient, GameManager.Instance.waitForStart, GameManager.Instance.CountdownEndTime); } else { GameManager.Instance.CheckPlayerCount(); } } // Check if they have a player to rejoin before creating a new ConnectedPlayer var loggedOffPlayer = PlayerList.Instance.RemovePlayerbyClientId(unverifiedClientId, unverifiedUserid, unverifiedConnPlayer); var checkForViewer = loggedOffPlayer?.GameObject.GetComponent <JoinedViewer>(); if (checkForViewer) { Destroy(loggedOffPlayer.GameObject); loggedOffPlayer = null; } // If there's a logged off player, we will force them to rejoin their body if (loggedOffPlayer == null) { TargetLocalPlayerSetupNewPlayer(connectionToClient, GameManager.Instance.CurrentRoundState); } else { StartCoroutine(WaitForLoggedOffObserver(loggedOffPlayer.GameObject)); } PlayerList.Instance.CheckAdminState(unverifiedConnPlayer, unverifiedUserid); PlayerList.Instance.CheckMentorState(unverifiedConnPlayer, unverifiedUserid); }
public void ServerClearList() { //Tell clients to clear SetJobCountsMessage.SendClearMessage(); }