示例#1
0
 private void MoveColliders(List <ICollidable> collidableList, float moveSpeed)
 {
     foreach (ICollidable collidable in collidableList)
     {
         Vector2 oldVelocity = collidable.Velocity;
         collidable.Velocity = new Vector2(moveSpeed, 0);
         if (collidable is AbstractCharacter)
         {
             CharacterCollisionManager.HandleMovementAndCollisions((AbstractCharacter)collidable);
         }
         else if (collidable is PickupItem)
         {
             IItemCollisionManager.HandleMovement((PickupItem)collidable);
         }
         else if (collidable is CrateItem)
         {
             IItemCollisionManager.HandleMovement((CrateItem)collidable);
         }
         else if (collidable is IEnemy)
         {
             IEnemyCollisionManager.HandleMovement((IEnemy)collidable);
         }
         collidable.Velocity = oldVelocity;
     }
 }
 private static void HandlePushing(AbstractCharacter character, Vector2 newPosition, List <IItem> pushList)
 {
     if (character.StateManager.IsInAir || character.CurrentItem != null)
     {
         return;
     }
     foreach (IItem item in pushList)
     {
         if (item.IsItemPushable() && character.Position.Y + character.Size.Y > item.Position.Y)
         {
             Vector2 oldItemVelocity = item.Velocity;
             item.Velocity = character.Velocity;
             IItemCollisionManager.HandleMovement(item);
             item.Velocity = oldItemVelocity;
             character.StateManager.IsCollidingWithPushableObject = true;
         }
     }
 }
示例#3
0
 public void Update()
 {
     IItemCollisionManager.HandleMovement(this);
     sprite.Update();
 }