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; } } }
public void Update() { IItemCollisionManager.HandleMovement(this); sprite.Update(); }