public override ISimpleTask Clone() { var clone = new DestroyTask(Type); clone.Copy(this); return(clone); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { PlayerBehaviorContext playerContext = context as PlayerBehaviorContext; if (playerContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } Player player = playerContext.Player; if (player.Units.Count == 0) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } BaseUnit unit = player.Units.FirstOrDefault(u => u is MoveableUnit && !u.CanColonize && !u.IsDead && !((MoveableUnit)u).IsInDock && !((MoveableUnit)u).IsOnOrbit); if (unit == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } DestroyTask task = new DestroyTask(unit); task.Execute(); if (task.IsTaskFinished) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } DestroyTask task = new DestroyTask(unitContext.Unit); task.Execute(); if (task.IsTaskFinished) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }