public ThinClient() { m_StateMachine = new StateMachine <ClientState>(); m_StateMachine.Add(ClientState.Browsing, EnterBrowsingState, UpdateBrowsingState, LeaveBrowsingState); m_StateMachine.Add(ClientState.Connecting, EnterConnectingState, UpdateConnectingState, null); m_StateMachine.Add(ClientState.Loading, EnterLoadingState, UpdateLoadingState, null); m_StateMachine.Add(ClientState.Playing, EnterPlayingState, UpdatePlayingState, LeavePlayingState); m_StateMachine.SwitchTo(ClientState.Browsing); m_GameWorld = new GameWorld("ClientWorld"); m_Transport = new SocketTransport(); m_NetworkClient = new NetworkClient(m_Transport); if (Application.isEditor || Game.game.buildId == "AutoBuild") { NetworkClient.clientVerifyProtocol.Value = "0"; } m_NetworkClient.UpdateClientConfig(); m_NetworkStatistics = new NetworkStatisticsClient(m_NetworkClient); m_ChatSystem = new ChatSystemClient(m_NetworkClient); GameDebug.Log("Network client initialized"); m_requestedPlayerSettings.playerName = ClientGameLoop.clientPlayerName.Value; m_requestedPlayerSettings.teamId = -1; }
public bool Init(string[] args) { m_StateMachine = new StateMachine <ClientState>(); m_StateMachine.Add(ClientState.Browsing, EnterBrowsingState, UpdateBrowsingState, LeaveBrowsingState); m_StateMachine.Add(ClientState.Connecting, EnterConnectingState, UpdateConnectingState, null); m_StateMachine.Add(ClientState.Loading, EnterLoadingState, UpdateLoadingState, null); m_StateMachine.Add(ClientState.Playing, EnterPlayingState, UpdatePlayingState, LeavePlayingState); #if UNITY_EDITOR Game.game.levelManager.UnloadLevel(); World.DisposeAllWorlds(); #endif m_GameWorld = new GameWorld("ClientWorld"); m_NetworkTransport = new SocketTransport(); m_NetworkClient = new NetworkClient(m_NetworkTransport); if (Application.isEditor || Game.game.buildId == "AutoBuild") { NetworkClient.clientVerifyProtocol.Value = "0"; } m_NetworkClient.UpdateClientConfig(); m_NetworkStatistics = new NetworkStatisticsClient(m_NetworkClient); m_ChatSystem = new ChatSystemClient(m_NetworkClient); GameDebug.Log("Network client initialized"); m_requestedPlayerSettings.playerName = clientPlayerName.Value; m_requestedPlayerSettings.teamId = -1; Console.AddCommand("disconnect", CmdDisconnect, "Disconnect from server if connected", this.GetHashCode()); Console.AddCommand("prediction", CmdTogglePrediction, "Toggle prediction", this.GetHashCode()); Console.AddCommand("runatserver", CmdRunAtServer, "Run command at server", this.GetHashCode()); Console.AddCommand("respawn", CmdRespawn, "Force a respawn", this.GetHashCode()); Console.AddCommand("nextchar", CmdNextChar, "Select next character", this.GetHashCode()); Console.AddCommand("nc", CmdNextChar, "short version of nextchar", this.GetHashCode()); Console.AddCommand("nextteam", CmdNextTeam, "Select next team", this.GetHashCode()); Console.AddCommand("spectator", CmdSpectator, "Select spectator cam", this.GetHashCode()); Console.AddCommand("matchmake", CmdMatchmake, "matchmake <hostname[:port]/{projectid}>: Find and join a server", this.GetHashCode()); if (args.Length > 0) { targetServer = args[0]; m_StateMachine.SwitchTo(ClientState.Connecting); } else { m_StateMachine.SwitchTo(ClientState.Browsing); } GameDebug.Log("Client initialized"); return(true); }
public ThinClient() { m_StateMachine = new StateMachine <ClientState>(); m_StateMachine.Add(ClientState.Browsing, EnterBrowsingState, UpdateBrowsingState, LeaveBrowsingState); m_StateMachine.Add(ClientState.Connecting, EnterConnectingState, UpdateConnectingState, null); m_StateMachine.Add(ClientState.Loading, EnterLoadingState, UpdateLoadingState, null); m_StateMachine.Add(ClientState.Playing, EnterPlayingState, UpdatePlayingState, LeavePlayingState); m_StateMachine.SwitchTo(m_GameWorld, ClientState.Browsing); #pragma warning disable 618 // we're keeping World.Active until we can properly remove them all // TODO (timj) not compatible with dots netcode m_GameWorld = World.Active; World.Active.CreateSystem <GameTimeSystem>(); #pragma warning restore 618 m_Transport = new SocketTransport(); m_NetworkClient = new NetworkClient(m_Transport); if (Application.isEditor || Game.game.buildId == "AutoBuild") { NetworkClient.clientVerifyProtocol.Value = "0"; } m_NetworkClient.UpdateClientConfig(); m_NetworkStatistics = new NetworkStatisticsClient(m_NetworkClient); m_ChatSystem = new ChatSystemClient(); GameDebug.Log("Network client initialized"); m_requestedPlayerSettings.playerName = ClientGameLoop.clientPlayerName.Value; m_requestedPlayerSettings.teamId = -1; }
public void LateUpdate(ChatSystemClient chatSystem, float frameDuration) { m_GameWorld.worldTime = m_RenderTime; m_HitCollisionModule.StoreColliderState(); m_ragdollSystem.Update(); m_TranslateScaleSystem.Schedule(); var twistSystemHandle = m_TwistSystem.Schedule(); m_FanSystem.Schedule(twistSystemHandle); var teamId = -1; bool showScorePanel = false; if (m_localPlayer != null && m_localPlayer.playerState != null && m_localPlayer.playerState.controlledEntity != Entity.Null) { teamId = m_localPlayer.playerState.teamIndex; if (m_GameWorld.GetEntityManager().HasComponent <CharacterPredictedState>(m_localPlayer.playerState.controlledEntity)) { var character = m_GameWorld.GetEntityManager() .GetComponentObject <Character>(m_localPlayer.playerState.controlledEntity); // Only show score board when alive showScorePanel = character.healthState.health <= 0; } } // TODO (petera) fix this hack chatSystem.UpdateLocalTeamIndex(teamId); m_ItemModule.Update(); m_CharacterModule.CameraUpdate(); m_PlayerModule.CameraUpdate(); m_CharacterModule.LateUpdate(); m_GameWorld.worldTime = m_RenderTime; m_ProjectileModule.UpdateClientProjectilesNonPredicted(); m_GameWorld.worldTime = m_PredictedTime; m_ProjectileModule.UpdateClientProjectilesPredicted(); m_ApplyGrenadePresentation.Update(); m_EffectModule.ClientUpdate(); m_UpdateNamePlates.Update(); m_ClientFrontendUpdate.Update(); Game.game.clientFrontend.SetShowScorePanel(showScorePanel); m_DebugPrimitiveModule.DrawPrimitives(); m_TranslateScaleSystem.Complete(); m_FanSystem.Complete(); }
public void Tick(ChatSystemClient chatSystem) { // Handle outgoing messages foreach (var l in m_ChatLinesToSend) { if (chatSystem != null) { chatSystem.SendMessage(l); } else { AddLine(l); } } m_ChatLinesToSend.Clear(); // Handle incoming messages if (chatSystem != null) { while (chatSystem.incomingMessages.Count > 0) { var message = chatSystem.incomingMessages.Dequeue(); AddLine(message); } } if (m_MoveToEnd) { field.MoveTextEnd(true); m_MoveToEnd = false; } if (!m_IsOpen && GatedInput.GetKeyDown(activationKey)) { field.textComponent.enabled = true; field.interactable = true; field.ActivateInputField(); m_MoveToEnd = true; m_IsOpen = true; GatedInput.SetBlock(GatedInput.Blocker.Chat, true); FadeBackgrounds(1.0f, 0.2f); foreach (var line in m_Lines) { line.Show(); } } else if (m_IsOpen && !field.isFocused) { m_IsOpen = false; GatedInput.SetBlock(GatedInput.Blocker.Chat, false); field.interactable = false; FadeBackgrounds(0.0f, 0.7f); foreach (var line in m_Lines) { line.changeTime = Time.time; } } else if (m_IsOpen && Input.GetKeyDown(KeyCode.Tab)) { var text = field.text; for (int i = 0, l = messagePrefixes.Length; i < l; ++i) { var prefixMatch = text.PrefixMatch(messagePrefixes[i]); if (prefixMatch > 1) { var oldCaretReverse = field.text.Length - field.caretPosition; defaultPrefix = messagePrefixes[(i + 1) % l]; field.text = defaultPrefix + text.Substring(prefixMatch); field.caretPosition = field.text.Length - oldCaretReverse; break; } } } if (!m_IsOpen) { // Fade out old lines foreach (var line in m_Lines) { if (Time.time - line.changeTime > 4.0f) { line.Hide(); } } field.textComponent.enabled = false; } }
public void UpdateChat(ChatSystemClient chatSystem) { chatPanel.Tick(chatSystem); }
public bool Init(string[] args) { m_StateMachine = new StateMachine <ClientState>(); m_StateMachine.Add(ClientState.Browsing, EnterBrowsingState, UpdateBrowsingState, LeaveBrowsingState); m_StateMachine.Add(ClientState.Connecting, EnterConnectingState, UpdateConnectingState, null); m_StateMachine.Add(ClientState.Loading, EnterLoadingState, UpdateLoadingState, null); m_StateMachine.Add(ClientState.Playing, EnterPlayingState, UpdatePlayingState, LeavePlayingState); #if UNITY_EDITOR Game.game.levelManager.UnloadLevel(); #endif m_GameWorld = new GameWorld("ClientWorld"); m_NetworkTransport = new SocketTransport(); m_NetworkClient = new NetworkClient(m_NetworkTransport); if (Application.isEditor || Game.game.buildId == "AutoBuild") { NetworkClient.clientVerifyProtocol.Value = "0"; } m_NetworkClient.UpdateClientConfig(); m_NetworkStatistics = new NetworkStatisticsClient(m_NetworkClient); m_ChatSystem = new ChatSystemClient(m_NetworkClient); GameDebug.Log("Network client initialized"); m_requestedPlayerSettings.playerName = clientPlayerName.Value; m_requestedPlayerSettings.teamId = -1; Console.AddCommand("disconnect", CmdDisconnect, "Disconnect from server if connected", this.GetHashCode()); Console.AddCommand("prediction", CmdTogglePrediction, "Toggle prediction", this.GetHashCode()); Console.AddCommand("runatserver", CmdRunAtServer, "Run command at server", this.GetHashCode()); Console.AddCommand("respawn", CmdRespawn, "Force a respawn", this.GetHashCode()); Console.AddCommand("nextchar", CmdNextChar, "Select next character", this.GetHashCode()); Console.AddCommand("nextteam", CmdNextTeam, "Select next character", this.GetHashCode()); Console.AddCommand("spectator", CmdSpectator, "Select spectator cam", this.GetHashCode()); Console.AddCommand("matchmake", CmdMatchmake, "matchmake <hostname[:port]/{projectid}>: Find and join a server", this.GetHashCode()); if (args.Length > 0) { targetServer = args[0]; m_StateMachine.SwitchTo(ClientState.Connecting); } else { m_StateMachine.SwitchTo(ClientState.Browsing); } ReplicatedPrefabMgr.Initialize(); ClientServerSystemManager.InitClientSystems(); World.Active.GetExistingSystem <TickClientSimulationSystem>().Enabled = true; World.Active.GetExistingSystem <TickClientPresentationSystem>().Enabled = true; Unity.Networking.Transport.NetworkEndPoint ep = Unity.Networking.Transport.NetworkEndPoint.Parse(targetServer, (ushort)NetworkConfig.netcodeServerPort); World clientWorld = ClientServerSystemManager.clientWorld; EntityManager em = clientWorld.EntityManager; Entity ent = clientWorld.GetExistingSystem <NetworkStreamReceiveSystem>().Connect(ep); em.AddComponentData(ent, new NetworkStreamInGame()); GameDebug.Log("Client initialized"); return(true); }
public void LateUpdate(ChatSystemClient chatSystem, float frameDuration) { }