public static void CollisionResponse(IGameObject object1, IGameObject object2, CollisionEngine.CollisionSide cSide)
        {
            IEnemy      enemy;
            IGameObject objectToAct1;

            CollisionEngine.CollisionSide side = cSide;
            Command command = Command.None;

            if (object1.GameObjType == GameObjectType.Enemy)
            {
                enemy        = (IEnemy)object1;
                objectToAct1 = object2;
            }
            else
            {
                objectToAct1 = object1;
                enemy        = (IEnemy)object2;
            }
            Tuple <GameObjectType, GameObjectType, CollisionEngine.CollisionSide> key = Tuple.Create(enemy.GameObjType, objectToAct1.GameObjType, side);

            if (enemyCRLookupTable.ContainsKey(key))
            {
                command = enemyCRLookupTable[key];
            }
            ICommand commandToRun = GetCommand(enemy, objectToAct1, command);

            if (command != Command.None)
            {
                commandToRun.Execute();
            }
        }
Example #2
0
        private static ICommand GetCommand(Player player, IGameObject objectToAct1, CollisionEngine.CollisionSide side, Command command)
        {
            switch (command)
            {
            case Command.BreakRambiCrate:
                return(new PlayerOpenRambiCrateCommand(objectToAct1));

            case Command.PlayerLevelBlockTop:
                return(new PlayerLevelBlockTopCommand(player));

            case Command.ItemCollect:
                return(new PlayerItemCollectCommand(objectToAct1));

            case Command.RambiCollect:
                return(new PlayerRambiCollectCommand(player, objectToAct1));

            case Command.StandardBarrelCollision:
                return(new PlayerStandardBarrelCollisionCommand(player, objectToAct1));

            case Command.PlayerBarrelCollision:
                return(new PlayerPlayerBarrelCollisionCommand(player, objectToAct1));

            case Command.PlayerEnemySideCol:
                return(new PlayerEnemySideColCommand(player, objectToAct1));

            case Command.PlayerKillEnemy:
                return(new PlayerKillEnemyCommand(objectToAct1));

            case Command.PlayerDie:
                return(new PlayerDieCommand(player));

            case Command.ExitSignCollect:
                return(new PlayerExitSignCommand(objectToAct1));

            case Command.PlayerTeleport:
                return(new PlayerTeleportCommand(player, objectToAct1));

            default:
                return(null);
            }
        }
Example #3
0
        public static void CollisionResponse(IGameObject object1, IGameObject object2, CollisionEngine.CollisionSide cSide)
        {
            Player      player;
            IGameObject objectToAct1;

            CollisionEngine.CollisionSide side = cSide;
            Command command = Command.None;

            if (object1.GameObjType == GameObjectType.Player)
            {
                player       = (Player)object1;
                objectToAct1 = object2;
            }
            else
            {
                objectToAct1 = object1;
                player       = (Player)object2;
            }
            Tuple <GameObjectType, GameObjectType, CollisionEngine.CollisionSide> key = Tuple.Create(player.GameObjType, objectToAct1.GameObjType, side);

            if (playerCRLookupTable.ContainsKey(key))
            {
                command = playerCRLookupTable[key];
            }
            else
            {
                key     = Tuple.Create(objectToAct1.GameObjType, player.GameObjType, side);
                command = playerCRLookupTable[key];
            }
            ICommand commandToRun = GetCommand(player, objectToAct1, side, command);

            if (command != Command.None)
            {
                commandToRun.Execute();
            }
        }
        public void CollisionResponse(GameObjectType object1, GameObjectType object2, CollisionEngine.CollisionSide side)
        {
            Tuple <GameObjectType, GameObjectType, CollisionEngine.CollisionSide> key = Tuple.Create(object1, object2, side);

            if (crLookupTable.ContainsKey(key))
            {
                crLookupTable[key].Execute();
            }
            else
            {
                key = Tuple.Create(object2, object1, side);
                if (crLookupTable.ContainsKey(key))
                {
                    crLookupTable[key].Execute();
                }
            }
        }