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(); } }
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); } }
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(); } } }