Example #1
0
        private void MovementRecieved(MovementRecievedPacket obj)
        {
            Entity player = null;

            foreach (var entity in ServiceManager.Entities)
            {
                if (entity.ID == obj.EntityID)
                {
                    player = entity;
                }
            }

            if (player != null)
            {
                var transformComponent = (TransformComponent)player.GetComponent(typeof(TransformComponent));
                transformComponent.Velocity = obj.Velocity;


                if (transformComponent.Velocity.X != transformComponent.Velocity.Y)
                {
                    if (obj.Velocity.X < 0)
                    {
                        transformComponent.DirectionalCache = DirectionalCache.Left;
                    }

                    if (obj.Velocity.X > 0)
                    {
                        transformComponent.DirectionalCache = DirectionalCache.Right;
                    }

                    if (obj.Velocity.Y > 0)
                    {
                        transformComponent.DirectionalCache = DirectionalCache.Down;
                    }

                    if (obj.Velocity.Y < 0)
                    {
                        transformComponent.DirectionalCache = DirectionalCache.Up;
                    }
                }
            }

            // Retreieve an interpolator
            var interpolator = _entityInterpolators[obj.EntityID];

            interpolator.ResetProgress(obj.Location);
        }
Example #2
0
        /// <summary>
        /// Handles movement for a particular instance
        /// </summary>
        public void HandleMovement(NotifyMovementPacket notifyMovementPacket)
        {
            var sender = RetrieveSender(notifyMovementPacket);

            if (sender == null)
            {
                return;
            }

            var transformComponent = (TransformComponent)sender.GetComponent(typeof(TransformComponent));


            transformComponent.LastLocalPosition = transformComponent.LocalPosition;
            transformComponent.LocalPosition     = notifyMovementPacket.Location;
            transformComponent.ServerPosition    = notifyMovementPacket.Location;

            foreach (var player in _simulationState.Entities)
            {
                // Grab the connection
                var playerComponent = (PlayerComponent)player.GetComponent(typeof(PlayerComponent));

                if (playerComponent == null)
                {
                    continue;
                }


                var connection = playerComponent.Connection;

                if (connection != notifyMovementPacket.Sender)
                {
                    var broadcastPacket = new MovementRecievedPacket(notifyMovementPacket.Velocity,
                                                                     notifyMovementPacket.Location, sender.ID);

                    if (connection != null)
                    {
                        ClientNetworkManager.Instance.SendPacket(broadcastPacket, connection);
                    }
                }


                foreach (var powerup in _simulationState.Entities)
                {
                    if (powerup.HasComponent(typeof(PowerUpCollectionComponent)))
                    {
                        var transformPoweurp = (TransformComponent)powerup.GetComponent(typeof(TransformComponent));

                        Rectangle playerBox  = new Rectangle((int)(transformComponent.LocalPosition.X + 13), (int)(transformComponent.LocalPosition.Y + 45), 24, 20);
                        Rectangle powerupBox = new Rectangle((int)transformPoweurp.LocalPosition.X, (int)transformPoweurp.LocalPosition.Y, 32, 32);


                        if (playerBox.Intersects(powerupBox))
                        {
                            // Kill thy entity
                            _serviceContainer.RemoveEntity(powerup);

                            // Increase bombs
                            var power      = (PowerUpCollectionComponent)powerup.GetComponent(typeof(PowerUpCollectionComponent));
                            var powerType  = power.PowerUps[0];
                            var powerValue = power.PowerUps[0].Strength;

                            var playerPower = (PowerUpComponent)player.GetComponent(powerType.GetType());
                            playerPower.Strength += powerValue;

                            // Notify the player of their new powerup
                            var packet = new PowerupRecievedPacket(powerType, player.ID);
                            ClientNetworkManager.Instance.SendPacket(packet, notifyMovementPacket.Sender);
                        }
                    }
                }
            }



            // Now that you've moved, should check to see if any poweurps need to be awarded
        }