Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
        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);
    }
Ejemplo n.º 5
0
    private void OnSpawnPlayer(SpawnPlayerMessage message)
    {
        var newGameObject = Instantiate(_playerPrefab, transform);

        newGameObject.GetComponent <PlayerInstance>().EntityId = message.EntityId;
    }