public override void ConfirmPushDestination(int[] pathToDestinationNodeIds, int destinationNodeId, int actionNumber, int subActionNumber) { bool enemyPush = (_actionNumber == 3 || _actionNumber == 4) && _subActionNumber == 6; bool enemyCounterPush = (_actionNumber == 1 || _actionNumber == 2) && _subActionNumber == 7; bool push = (_actionNumber == 1 || _actionNumber == 2) && _subActionNumber == 6; bool counterPush = (_actionNumber == 3 || _actionNumber == 4) && _subActionNumber == 7; Monster pushedMonster; if (push) { pushedMonster = EnemyMonsters.Single(m => m.CurrentNode.Id == SelectedAttackNode.Id); } else if (counterPush) { pushedMonster = EnemyMonsters.Single(m => m.CurrentNode.Id == SelectedMonster.CurrentNode.Id); } else if (enemyPush) { pushedMonster = FriendlyMonsters.Single(m => m.CurrentNode.Id == SelectedAttackNode.Id); } else if (enemyCounterPush) { pushedMonster = FriendlyMonsters.Single(m => m.CurrentNode.Id == SelectedMonster.CurrentNode.Id); } else { return; } Node selectedNode = GameGraph.Nodes[destinationNodeId]; List <Node> pathToDestination = new List <Node> { selectedNode }; NodePath movementPath = new NodePath(pathToDestination, selectedNode); _isAnimationRunning = true; pushedMonster.SendMessage("OnBeginMoveAnimation", movementPath); pushedMonster.CurrentNode = selectedNode; _actionNumber = actionNumber; _subActionNumber = subActionNumber; }
public virtual void ConfirmSelectMonster(int selectedMonsterId, int actionNumber, int subActionNumber) { SelectedMonster = FriendlyMonsters.SingleOrDefault(m => m.MonsterTypeId == selectedMonsterId) ?? EnemyMonsters.Single(m => m.MonsterTypeId == selectedMonsterId); _actionNumber = actionNumber; _subActionNumber = subActionNumber; if (SelectedMonster != null && (_actionNumber == 1 || _actionNumber == 2)) { foreach (BoardSpace space in BoardSpaces.Values) { space.SendMessage("OnMonsterSelected", SelectedMonster.CurrentNode.Id); } } Client.SendStateAck(GetAdjustedActionNumber(), _subActionNumber); }