public void TakeAction <T>(ITurnAction <T> turnAction, T turnEntity) where T : ITurnEntity { if (turnAction.CanTakeAction(turnEntity)) { turnAction.TakeAction(turnEntity); } }
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; } }
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); }
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); }
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(); }
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); }
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); } }
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); }
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); } } }
public override void RevertTurn(ITurnAction action) { Destroy(gameObject); }
public override void RevertTurn(ITurnAction action) { m_full = false; }
public void AddAction(ITurnAction action) { _actions.Add(action); }
public Turn(ITurnAction action) { _actions = new List <ITurnAction> { action }; }
public override void RevertTurn(ITurnAction action) { Debug.LogError("Cactus should not be there"); }
private void EnemyTurnSignalListener(ITurnAction turnAction) { turnAction.Complete += TurnActionComplete; turnAction.Perform(); }
public abstract void RevertTurn(ITurnAction action);
public void AddAction(ITurnAction action) { m_crtTurnActions.Add(action); }
public override void RevertTurn(ITurnAction action) { }