Ejemplo n.º 1
0
        private static void Main(string[] args)
        {
            //List<int> tl = new List<int> { 1, 2, 4, 5, 6, 7 };
            //tl.ForEach(Test) ;
            var queue = new TradeQueue();

            string tradeLoaderString   = ConfigReader.GetConfig("Plugins").TradeLoader;
            string tradeConsumerString = ConfigReader.GetConfig("Plugins").TradeConsumer;
            var    loader    = DiLoader.GetType <ILoader>(tradeLoaderString);
            var    consumers = new List <IConsumer>();

            for (var i = 0; i < 5; i++)
            {
                consumers.Add(DiLoader.GetType <IConsumer>(tradeConsumerString));
            }
            var processor = new MultiTradeProcessor(queue, consumers);

            processor.Start();
            var readKey = ' ';

            Task.Factory.StartNew(() => Run(queue, loader));
            while (readKey != 'm')
            {
                readKey = Console.ReadKey().KeyChar;
            }
            _flag = false;
            processor.Stop();
        }
Ejemplo n.º 2
0
 public void removeTrade(XElement trade)
 {
     if (TradeQueue.Contains(trade))
     {
         TradeQueue.Remove(trade);
         trade.Remove();
     }
 }
Ejemplo n.º 3
0
        private static void Run(TradeQueue queue, ILoader loader)
        {
            var i = 0;

            while (_flag)
            {
                i++;
                Console.WriteLine("Reading ... " + i);
                queue.Queue(loader.GetNext());
            }
        }
Ejemplo n.º 4
0
        public Ship(XElement ship)
            : base(ship)
        {
            this._crew              = new ObservableCollection <CMember>();
            this._tradeQueue        = new ObservableCollection <XElement>();
            this._constructionWares = new ObservableCollection <XElement>();
            this._drones            = new ObservableCollection <XElement>();

            if (ship.Attribute("name") == null)
            {
                EntityValueConverter conv = new EntityValueConverter();
                XAttribute           name = new XAttribute("name", conv.Convert(ship.Attribute("macro").Value, null, null, null));
                ship.Add(name);
            }

            IEnumerable <XElement> crewquery =
                from crew in this.Data.Descendants().Elements("component")
                where (string)crew.Attribute("class") == "npc"
                select crew;

            foreach (XElement person in crewquery)
            {
                Crew.Add(new CMember(person));
            }

            foreach (XElement trade in this.Data.Elements("trade").Elements("shopping").Elements("trade"))
            {
                TradeQueue.Add(trade);
            }

            IEnumerable <XElement> buildmodulesQuery =
                from buildmodules in this.Data.Descendants().Elements("connection")
                where (string)buildmodules.Attribute("macro") == "connection_buildmodule01"
                select buildmodules;

            IEnumerable <XElement> constructionWaresQuery =
                from wares in buildmodulesQuery.Descendants <XElement>().Elements("resources").Elements("ware")
                select wares;

            foreach (XElement ware in constructionWaresQuery)
            {
                ConstructionWares.Add(ware);
            }

            foreach (XElement drone in this.Data.Elements("ammunition").Elements("available").Elements("item"))
            {
                Drones.Add(drone);
            }


            IEnumerable <XElement> cargoList =
                from cargo in this.Data.Descendants().Elements("component")
                where (string)cargo.Attribute("class") == "storage" & (string)cargo.Attribute("macro") != "unit_player_ship_storage_macro"
                select cargo;

            foreach (XElement cargoType in cargoList)
            {
                string cargoTypeName = cargoType.Attribute("macro").Value;
                switch (cargoTypeName)
                {
                case "storage_ship_l_bulk_01_macro":
                case "storage_ship_m_bulk_01_macro":
                case "storage_ship_l_bulk_02_macro":
                case "storage_ship_l_bulk_03_macro":
                case "storage_ship_l_bulk_04_macro":
                case "storage_ship_xl_bulk_01_macro":
                    BulkCargo = cargoType;
                    break;

                case "storage_ship_l_container_01_macro":
                case "storage_ship_l_container_02_macro":
                case "storage_ship_m_container_01_macro":
                case "storage_ship_xl_container_01_macro":
                    ContainerCargo = cargoType;
                    break;

                case "storage_ship_l_energy_01_macro":
                case "storage_ship_l_energy_02_macro":
                case "storage_ship_xl_energy_01_macro":
                case "storage_ship_m_energy_01_macro":
                    EnergyCargo = cargoType;
                    break;

                case "storage_ship_l_fuel_01_macro":
                case "storage_ship_xl_fuel_01_macro":
                    FuelCargo = cargoType;
                    break;

                case "storage_ship_l_liquid_01_macro":
                case "storage_ship_l_liquid_02_macro":
                case "storage_ship_l_liquid_03_macro":
                case "storage_ship_xl_liquid_01_macro":
                case "storage_ship_m_liquid_01_macro":
                    LiquidCargo = cargoType;
                    break;

                case "storage_ship_xl_universal_01_macro":
                case "storage_ship_xs_universal_01_macro":
                case "storage_temp_huge_macro":
                    UniversalCargo = cargoType;
                    break;
                }
            }

            Gravidar = this.Data.Element("gravidar");

            LoadDetails();
        }
Ejemplo n.º 5
0
        private async Task <bool> Run()
        {
            TradeQueue.Clear();
            BattleCharacter target = GameObjectManager.Target as BattleCharacter;

            if (target == null)
            {
                Log("No target found to trade to.");
                return(false);
            }
            if (target.IsMe)
            {
                Log("We can't trade with ourselves.");
                return(false);
            }
            if (target.Type != GameObjectType.Pc)
            {
                Log("We can't trade with an NPC.");
                return(false);
            }
            if (!target.IsWithinInteractRange)
            {
                Log("Target is too far away to interact with.");
                return(false);
            }

            Log($"Starting to trade with {target.Name}.");

            await QueueTradeItems(AutoTradeSettings.ItemsToTrade);

            await TradeItems(TradeQueue, target);

            if (FailedTradeCount >= 5)
            {
                LogCritical("Too many failed trades, exiting.");
            }
            else if (!TradeQueue.Any())
            {
                LogSuccess("Done trading!");
            }
            else
            {
                LogCritical("We're done trading, but didn't trip FailedTradeCount and have items still in the queue?");
            }

            if (InputNumeric.IsOpen)
            {
                InputNumeric.Close();
                await Coroutine.Wait(5000, () => !InputNumeric.IsOpen);
            }

            if (Trade.IsOpen)
            {
                Trade.Close();
                await Coroutine.Wait(5000, () => !Trade.IsOpen);
            }

            TradeQueue.TrimExcess();

            TreeRoot.Stop("Finished trading.");
            return(true);
        }
Ejemplo n.º 6
0
 private void AggregateTradesHandler(AggregateTradeMessage message)
 {
     TradeQueue.Enqueue(message);
 }