public void Simulate(uint tickIndex)
    {
        if (_client.IsConnected)
        {
            bool up    = Input.GetKey(KeyCode.W);
            bool right = Input.GetKey(KeyCode.D);
            bool down  = Input.GetKey(KeyCode.S);
            bool left  = Input.GetKey(KeyCode.A);
            bool space = Input.GetKeyDown(KeyCode.Space);

            if (up || right || down || left || space)
            {
                Vector3 input = GetMovement(up, right, down, left);
                HandleInputHistory(input);
                var inputMessage = new PlayerInputMessage(_client.LocalPlayerId, input, space);
                _client.SendMessage(inputMessage);

                if (_localPlayer == null)
                {
                    _localPlayer = _playerRegistry.GetControlledPlayerById(_client.LocalPlayerId);
                }

                _localPlayer.BufferInput(new InputData(input, tickIndex));
            }
            else
            {
                HandleInputHistory(Vector3.zero);
            }
        }
    }
    public ControlledPlayer RegisterPlayer(ControlledPlayer player, int id)
    {
        Players.Add(player);
        ControlledPlayers.Add(player);
        player.PlayerId = id;

        return(player);
    }
예제 #3
0
    public override void Handle(PlayerInputMessage message)
    {
        ControlledPlayer player = _playerRegistry.GetControlledPlayerById(message.PlayerId);

        player.BufferInput(new InputData(message.movement, message.TickIndex));

        if (message.kick)
        {
            _ballKick.EnqueueInput(new BallKick.InputData(message.TickIndex, player.transform));
        }
    }
예제 #4
0
    public void Simulate(uint tickIndex)
    {
        if (_client.IsConnected)
        {
            if (_localPlayer == null)
            {
                _localPlayer = _playerRegistry.GetControlledPlayerById(_client.LocalPlayerId);
            }

            SavePositionHistory(_localPlayer.transform.position);
        }
    }
예제 #5
0
        /// <summary>
        /// Adds a Player from an IController to the match.
        /// </summary>
        /// <param name="controller"></param>
        /// <returns></returns>
        public Player PlayerCreate(ControllerSkeleton skeleton)
        {
            ControlledPlayer newPlayer = new ControlledPlayer(this, skeleton.GetAttribute <NameAttribute>().Name, skeleton.CreateInstance());

//            newPlayer.OnEvent += ApplyEvent;
            PlayerAdd(newPlayer);
//            foreach (Ship ship in newPlayer.Ships)
//            {
//                ship.OnEvent += ApplyEvent;
//            }
            newPlayer.Controller.Player = newPlayer;
            return(newPlayer);
        }
    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);
    }
 // Start is called before the first frame update
 void Start()
 {
     player         = ControlledPlayer.Instance;
     ShipCount.text = "Fleet Count: " + player.Fleet.Ships.Count.ToString();
 }
 public override void Awake()
 {
     base.Awake();
     Instance = this;
 }
 // Start is called before the first frame update
 void Start()
 {
     player           = ControlledPlayer.Instance;
     MetalAmount.text = player.Resources[Resource.ResourceKind.metal].amount.ToString();
     FuelAmount.text  = player.Resources[Resource.ResourceKind.fuel].amount.ToString();
 }
 public void RegisterPlayer(ControlledPlayer player, string clientId)
 {
     RegisterPlayer(player as Player);
     ControlledPlayers.Add(player);
     player.ClientId = clientId;
 }