/// <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); } ITradeUnit unit = unitContext.Unit as ITradeUnit; if (unit == null || !unit.HasAssignedTradeRoute) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (unitContext.EnvironmentTarget == unit.TradeRoute.From.Environment) { unitContext.EnvironmentTarget = unit.TradeRoute.From; } else if (unitContext.EnvironmentTarget == unit.TradeRoute.To.Environment) { unitContext.EnvironmentTarget = unit.TradeRoute.To; } else { returnCode = BehaviorReturnCode.Failure; return(returnCode); } returnCode = BehaviorReturnCode.Success; return(returnCode); }
/// <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); } ITradeUnit tradeUnit = playerContext.BehaviorTarget as ITradeUnit; if (tradeUnit == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } var availRoutes = tradeUnit.Owner.GetAvailableTradeRoutes(tradeUnit, IncludeDomestic, IncludeGlobal); if (availRoutes == null || availRoutes.Count == 0) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (tradeUnit.HasAssignedTradeRoute) { tradeUnit.CancelTrade(); } // TODO: select best trade route here BaseTradeRoute route = availRoutes[0]; route.AutoRenew = AutoRenew; route.Balance = TradeBallance; route.UpdateBalance(); TradeTask task = new TradeTask(tradeUnit, route); task.Execute(); returnCode = BehaviorReturnCode.Success; 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); } ITradeUnit tradeUnit = unitContext.Unit as ITradeUnit; if (tradeUnit != null && tradeUnit.HasAssignedTradeRoute) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }