Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }