static void SERVER_OnClientConnected(ConnectedClient client) // this will NOT run in the main thread { ThreadSafeDebug.Log("Client connected from " + client.TcpConnection.RemoteEndPoint.ToString()); string levelPath = LevelManager.Instance.GetCurrentLevelDescription().LevelJSONPath; byte[] bytes = File.ReadAllBytes(levelPath); MapSendingMessge.SendTo(bytes, client.ClientNetworkID); // send map to other client ushort playerID = GetNextPlayerID(); SetLocalPlayerMessage.SendTo(playerID, client.ClientNetworkID); var createdPlayerInfo = new PlayerConnectedMessage.CreatedPlayerInfo() { CharacterModelOverrideType = EnemyType.None, PlayerColor = HumanFactsManager.Instance.FavouriteColors[HumanFactsManager.Instance.GetRandomColorIndex()].ColorValue, PlayerID = playerID, PlayerUpgrades = new Dictionary <UpgradeType, int>() }; PlayerConnectMessage.Send(createdPlayerInfo); var spawnPlayerMessage = new SpawnPlayerMessage.SpawnedPlayerInfo() { PlayerID = playerID, Position = new Vector3(0f, 10f, 0f), Rotation = 0f }; SpawnPlayerMessage.Send(spawnPlayerMessage); }
public void SpawnPlayer() { //Calling on enityService to create a new ID int entityId = _entityService.GetNewEntityId(); _player = new PlayerData(); _player.EntityId = entityId; SetInitialPlayerValues(_player); _Players.Add(_player); var spawnMessage = new SpawnPlayerMessage(); spawnMessage.EntityId = entityId; _messageRouter.RaiseMessage(spawnMessage); }
public static void RegisterNetworkMessageHandelers() { Mod owner = Main.Instance; MapSendingMessge = new MapSendingMessge(); NetworkManager.AddNetworkMessage(MapSendingMessge, owner); PlayerConnectMessage = new PlayerConnectedMessage(); NetworkManager.AddNetworkMessage(PlayerConnectMessage, owner); SpawnPlayerMessage = new SpawnPlayerMessage(); NetworkManager.AddNetworkMessage(SpawnPlayerMessage, owner); SetLocalPlayerMessage = new SetLocalPlayerMessage(); NetworkManager.AddNetworkMessage(SetLocalPlayerMessage, owner); DebugMessage = new DebugMessage(); NetworkManager.AddNetworkMessage(DebugMessage, owner); }
public override void Handle(HandshakeMessage message) { string clientId = message.Sender.ToString(); if (!_server.HasClient(clientId)) { ControlledPlayer player = _spawner.SpawnControlledPlayer(_playerRegistry.GetNextTeamAssignment()); _playerRegistry.RegisterPlayer(player, clientId); _server.RegisterClient(clientId, message.Sender); } else { Debug.LogWarning("Client with this id is already connected."); } var serverPlayer = _playerRegistry.GetControlledPlayerByClientId(clientId); var spawnMessage = new SpawnPlayerMessage(clientId, serverPlayer.PlayerId, serverPlayer.Team); _server.SendMessage(spawnMessage, message.Sender); }
private void OnSpawnPlayer(SpawnPlayerMessage message) { var newGameObject = Instantiate(_playerPrefab, transform); newGameObject.GetComponent <PlayerInstance>().EntityId = message.EntityId; }