/// <summary>Sends the client into the game and informs other clients of the new player.</summary> /// <param name="playerName">The username of the new player.</param> public void EnterPlayer(string playerName) { playerManager = new Player.PlayerManager() { username = playerName, client = this, state = PlayerState.loadingScreen }; GameManager.instance.players.Add(playerManager); ServerDatabase.UpdateServer(); // Send all players to the new player foreach (Client client in Server.clients.Values) { if (client.playerManager != null) { if (client.id != id) { ServerSend.PlayerEnter(client.playerManager); } } } // Send the new player to all players (including himself) foreach (Client client in Server.clients.Values) { if (client.playerManager != null) { ServerSend.PlayerEnter(playerManager); } } GameManager.instance.currentGameMode.OnPlayerEnter(playerManager); }
public static void PlayerLeave(Player.PlayerManager playerManager) { using (Packet packet = new Packet((int)ServerPackets.playerLeave)) { packet.Write(playerManager.client.id); SendTcpDataToAll(playerManager.client.id, packet); } }
private void Awake() { GameController = m_GameController; UserInput = m_UserInput; PlayerManager = m_PlayerManager; PoolManager = m_PoolManager; BulletsManager = m_BulletsManager; AsteroidsManager = m_AsteroidsManager; ControllerUI = m_ControllerUI; }
/// <summary>Tells a client to spawn a player.</summary> /// <param name="toClient">The client that should spawn the player.</param> /// <param name="playerManager">The player to spawn.</param> public static void PlayerEnter(Player.PlayerManager playerManager) { using (Packet packet = new Packet((int)ServerPackets.playerEnter)) { packet.Write(playerManager.client.id); packet.Write(playerManager.username); SendTcpData(playerManager.client.id, packet); } }
/// <summary> /// Get player manager component /// </summary> /// <returns></returns> public static PlayerManager GetInstance() { // If h_Instance has never been called, find it, and assign it if (h_Instance == null) { GameObject playerManagerObject = GameObject.Find("Players"); PlayerManager instance = playerManagerObject.GetComponent<PlayerManager>(); h_Instance = instance; } return h_Instance; }
// Use this for initialization void Start() { if (PlayerObjectPrefab == null) Debug.LogError("PlayerObjectPrefab has not been assignned through the unity Editor!"); h_Instance = this; m_PlayerInfoList = new List<PlayerInfo>(4) { new PlayerInfo(), new PlayerInfo(), new PlayerInfo(), new PlayerInfo() }; // set default player colors m_SlotColorList = new List<Color>(4) { new Color( 255f / 255f , 69f/255f , 0f ), // orange/red new Color( 0f / 255f , 86f/255f , 255f/255f ), // blueish new Color( 104f / 255f , 255f/255f , 0f/255f ), // greenish new Color( 255f / 255f , 248f/255f , 0f/255f ), // yellowish }; }
/// <summary>Disconnects the client and stops all network traffic.</summary> public void Disconnect() { Debug.Log($"{tcp.socket.Client.RemoteEndPoint} has disconnected."); tcp.Disconnect(); udp.Disconnect(); if (playerManager == null) { return; } GameManager.instance.currentGameMode.OnPlayerLeave(playerManager); GameManager.instance.players.Remove(playerManager); playerManager.Disconnect(); ServerDatabase.UpdateServer(); playerManager = null; }