Esempio n. 1
0
 public void TakeAction <T>(ITurnAction <T> turnAction, T turnEntity) where T : ITurnEntity
 {
     if (turnAction.CanTakeAction(turnEntity))
     {
         turnAction.TakeAction(turnEntity);
     }
 }
Esempio n. 2
0
        private void PlayerTurnSignalListener(ITurnAction turnAction)
        {
            if (!(turnAction is MoveTurnAction))
            {
                throw new System.ArgumentException(
                          "Expecting only " + typeof(MoveTurnAction) + " as player turn action");
            }

            PositionHolder positionHolder;

            if (!field.TryGetPositionHolder(turnAction.TargetPosition, out positionHolder) ||
                positionHolder is Exit)
            {
                turnAction.Perform();
                turnAction.Complete += TurnActionComplete;
                return;
            }

            Character enemy = positionHolder as Character;

            if (enemy != null)
            {
                AttackTurnAction attackPerformer = attackPerformerFactory.Create(
                    field.Player, enemy);
                attackPerformer.Perform();
                attackPerformer.Complete += TurnActionComplete;

                return;
            }
        }
Esempio n. 3
0
        private void WaitForEnemyTurnSignal(Character enemy)
        {
            Character   player     = field.Player;
            ITurnAction turnAction =
                attackPossibility.IsPossible(enemy, player)
                                        ? attackTurnActionFactory.Create(enemy, player) as ITurnAction
                                        : moveTurnActionFactory.Create(
                    enemy, enemyMovePositionPicker.PickPosition(enemy));

            enemyTurnSignal.Fire(turnAction);
        }
Esempio n. 4
0
    public override void RevertTurn(ITurnAction action)
    {
        if (m_isInAPitOrACactus)
        {
            m_isInAPitOrACactus = false;
        }

        TurnActionMoveRotate a = (TurnActionMoveRotate)action;

        m_transform.eulerAngles = Vector3.up * a.angleY;
        GoToAction(a.node);
    }
Esempio n. 5
0
        private void TurnActionComplete(object sender, System.EventArgs e)
        {
            ITurnAction turnAction = sender as ITurnAction;

            if (turnAction == null)
            {
                throw new System.ArgumentException(
                          "sender should be of type " + typeof(ITurnAction));
            }

            turnAction.Complete -= TurnActionComplete;
            ProcessNextTurn();
        }
Esempio n. 6
0
        private ITurnAction GetTurnAction()
        {
            ITurnAction result  = null;
            var         task    = Task.Run(() => result = BotAI.Update(this, myBattlefield));
            var         timeout = TimeSpan.FromSeconds(1);
            var         success = task.Wait(timeout);

            if (!success)
            {
                throw new TimeoutException($"GetTurnAction is not complete after timeout {timeout}.");
            }
            return(result);
        }
Esempio n. 7
0
 public override void RevertTurn(ITurnAction action)
 {
     gameObject.SetActive(true);
     if (action is TurnActionPickedUp)
     {
         Debug.Log("Revert Water Picked Up");
         Score.inst.RevertScore();
     }
     else if (action is TurnActionSpread)
     {
         Debug.Log("Revert Water Spread");
         m_transform.parent.gameObject.SetActive(true);
     }
 }
Esempio n. 8
0
        private ITurnAction GetTurnAction(IEnumerable <IBattleBot> enemies)
        {
            ITurnAction result = null;
            var         task   = Task.Run(() =>
                                          result = BotAI.GetTurnAction(
                                              InsideView, enemies.Select(e => e.OutsideView).ToList(), Battlefield));
            var timeout = TimeSpan.FromSeconds(1);
            var success = task.Wait(timeout);

            if (!success)
            {
                throw new TimeoutException($"GetTurnAction is not complete after timeout {timeout}.");
            }

            return(result);
        }
Esempio n. 9
0
    public override void RevertTurn(ITurnAction action)
    {
        if (action is TurnActionHit)
        {
            m_durability = ((TurnActionHit)action).durability;
        }
        else if (action is TurnActionMoveHit)
        {
            TurnActionMoveHit a = (TurnActionMoveHit)action;
            m_durability = a.durability;
            //crtNode.rock = null;

            LevelManager.inst.UpdateRockNode(crtNode, this, a.node);

            crtNode = a.node;
            m_transform.position = crtNode.worldPosition;
            //crtNode.rock = this;
        }

        if (m_onAPit)
        {
            m_onAPit = false;
        }

        if (durability > 0)
        {
            gameObject.SetActive(true);
        }

        if (m_meshs != null)
        {
            if (m_durability == 1)
            {
                GetComponent <MeshFilter>().sharedMesh = m_meshs.GetMesh(true, m_data.durability == 1);
            }
            else if (m_durability == 2)
            {
                GetComponent <MeshFilter>().sharedMesh = m_meshs.GetMesh(false, false);
            }
            else if (m_durability == 3)
            {
                GetComponent <MeshFilter>().sharedMesh = m_meshs.GetMesh(false, false, true);
            }
        }
    }
Esempio n. 10
0
 public override void RevertTurn(ITurnAction action)
 {
     Destroy(gameObject);
 }
Esempio n. 11
0
 public override void RevertTurn(ITurnAction action)
 {
     m_full = false;
 }
Esempio n. 12
0
 public void AddAction(ITurnAction action)
 {
     _actions.Add(action);
 }
Esempio n. 13
0
 public Turn(ITurnAction action)
 {
     _actions = new List <ITurnAction> {
         action
     };
 }
Esempio n. 14
0
 public override void RevertTurn(ITurnAction action)
 {
     Debug.LogError("Cactus should not be there");
 }
Esempio n. 15
0
 private void EnemyTurnSignalListener(ITurnAction turnAction)
 {
     turnAction.Complete += TurnActionComplete;
     turnAction.Perform();
 }
Esempio n. 16
0
 public abstract void RevertTurn(ITurnAction action);
Esempio n. 17
0
 public void AddAction(ITurnAction action)
 {
     m_crtTurnActions.Add(action);
 }
Esempio n. 18
0
 public override void RevertTurn(ITurnAction action)
 {
 }