public override bool Execute(Scenario scenario, ActionArg arg) { var attackArg = arg as AttackActionArg; if (attackArg == null) { return(false); } var character = attackArg.Character; var enemyType = attackArg.EnemyType; var weapons = attackArg.Weapons; if (HasWeaponsToKillEnemy(scenario, weapons) != true) { return(false); } var enemy = GetCharacterAround(scenario, character.Position, enemyType); if (enemy == null) { return(false); } KillEnemy(scenario, enemy); return(true); }
public bool Interact() { var scenario = currScenario; var character = BaseAction.FindCharacter(scenario, MapElements.HERO); var type = interactionFinder.FindInteractionType(character.Position); ActionArg actionArg = null; BaseAction action = null; if (interactionCreator.CreateInteraction(type, character, out action, out actionArg) != true) { return(false); } action.Execute(scenario, actionArg); return(true); }
public override bool Execute(Scenario scenario, ActionArg arg) { var climbLadderArg = arg as ClimbLadderArg; if (climbLadderArg == null) { return(false); } var character = climbLadderArg.Character; var ladder = climbLadderArg.LadderType; if (IsObjectAround(scenario, character.Position, ladder) != true) { return(false); } scenario.SetClimbedUpLadder(); return(true); }
public override bool Execute(Scenario scenario, ActionArg arg) { var moveData = arg as MoveArg; var character = moveData.Character; var direction = moveData.Direction; var nextPos = FindNextPosition(character.Position, direction); if (IsPositionMoveable(scenario, nextPos) != true) { return(false); } character.Move(direction); var scenElemAtNextPos = GetScenarioElementAtNextPos(scenario, nextPos); character.SetParentTile(scenElemAtNextPos); return(true); }
public override bool Execute(Scenario scenario, ActionArg arg) { var getObjArg = arg as GetObjectArg; var character = getObjArg.Character; var obj = GetObjectAtPos(scenario, character.Position); if (obj == null) { return(false); } scenario.AddObjectToPlayer(obj.Type); scenario.RemObjectFromScenario(obj); var scenElemAtNextPos = GetScenarioElementAtNextPos(scenario, character.Position); character.SetParentTile(scenElemAtNextPos); obj.Disable(); return(true); }
public override bool Execute(Scenario scenario, ActionArg arg) { var pullLeverArg = arg as PullLeverArg; var character = pullLeverArg.Character; var lever = GetObjectAround(scenario, character.Position, MapElements.INACTIVE_LEVER) as Lever; if (lever == null) { return(false); } var bridge = FindObject(scenario, MapElements.BROKEN_BRIDGE) as Bridge; if (bridge == null) { return(false); } lever.IsActive = true; bridge.IsFixed = true; return(true); }
public override bool Execute(Scenario scenario, ActionArg arg) { var useKeyArg = arg as UseKeyArg; var character = useKeyArg.Character; var keyType = useKeyArg.KeyType; var doorType = useKeyArg.DoorType; if (scenario.PlayerHasObject(keyType) != true) { return(false); } var door = GetObjectAround(scenario, character.Position, doorType); if (door == null) { return(false); } OpenDoor(scenario, door); scenario.RemObjectFromPlayer(keyType); return(true); }
public abstract bool Execute(Scenario scenario, ActionArg arg);
private void CreateUseKeyAction(DynamicElement character, out BaseAction action, out ActionArg arg) { var keyType = MapElements.EMPTY; var doorType = MapElements.EMPTY; if (BaseAction.IsObjectAround(currScenario, character.Position, MapElements.IRON_DOOR) && currScenario.PlayerHasObject(MapElements.IRON_KEY)) { keyType = MapElements.IRON_KEY; doorType = MapElements.IRON_DOOR; } if (BaseAction.IsObjectAround(currScenario, character.Position, MapElements.BRONZE_DOOR) && currScenario.PlayerHasObject(MapElements.BRONZE_KEY)) { keyType = MapElements.BRONZE_KEY; doorType = MapElements.BRONZE_DOOR; } arg = new UseKeyArg(character, keyType, doorType); action = new UseKeyAction(); }
private void CreateClimbLadderAction(DynamicElement character, out BaseAction action, out ActionArg arg) { action = new ClimbLadderAction(); arg = new ClimbLadderArg(character, MapElements.LADDER); }
private void CreateAttackAction(DynamicElement character, out BaseAction action, out ActionArg arg) { action = new AttackAction(); arg = new AttackActionArg(character, MapElements.ENEMY, MapElements.WEAPON, MapElements.SHIELD); }
private void CreatePullLeverAction(DynamicElement character, out BaseAction action, out ActionArg arg) { action = new PullLeverAction(); arg = new PullLeverArg(character); }
private void CreateGetObjectAction(DynamicElement character, out BaseAction action, out ActionArg arg) { action = new GetObjectAction(); arg = new GetObjectArg(character); }
public bool CreateInteraction(InteractionType type, DynamicElement character, out BaseAction action, out ActionArg arg) { if (interactionsCreator.ContainsKey(type) != true) { action = null; arg = null; return(false); } interactionsCreator[type](character, out action, out arg); return(true); }