Exemple #1
0
        private void PopulateOrders()
        {
            if (InvokeRequired)
            {
                // Insure this is called in a GUI friendly thread.
                Invoke((MethodInvoker) delegate { PopulateOrders(); });
                return;
            }
            // Begin update.
            marketBuyersList.BeginUpdate();
            marketSellersList.BeginUpdate();
            // Clear list.
            marketBuyersList.Items.Clear();
            marketSellersList.Items.Clear();
            // Update region status.
            ShowUpdatingRegions();
            // Get type.
            InvType type = marketTree.SelectedNode?.Tag as InvType;
            // Get region.
            RegionItem item = regionSelect.SelectedItem as RegionItem;

            if (item != null && type != null && item.regionID != 0)
            {
                PopulateOrders(type.typeID, item.regionID);
            }
            // Complete update.
            marketBuyersList.EndUpdate();
            marketSellersList.EndUpdate();
        }
Exemple #2
0
 public GenerateInvSetForm(InvType typeFP)
 {
     this.InitializeComponent();
     this.invType = typeFP;
     this.para = new InvSplitPara();
     if (typeFP == InvType.Special)
     {
         this.label1.Text = "汉字防伪开具专用发票设置";
         this.label3.Text = "提示:此设置只对汉字防伪用户开具“清单行商品名称”为空的超过汉字防伪限制的专用发票单据起作用";
         this.ckShow.Text = "在专用发票生成之前显示";
     }
     else if (typeFP == InvType.Common)
     {
         this.label1.Text = "汉字防伪开具普通发票设置";
         this.label3.Text = "提示:此设置只对汉字防伪用户开具“清单行商品名称”为空的超过汉字防伪限制的普通发票单据起作用";
         this.ckShow.Text = "在普通发票生成之前显示";
     }
     this.para.GetInvSplitPara(typeFP);
     this.rdForbidden.Checked = this.para.below7ForbiddenInv;
     this.rdSplit.Checked = this.para.below7Split;
     this.rdGenerlist.Checked = this.para.below7Generlist;
     this.rdForbidden2.Checked = this.para.above7ForbiddenInv;
     this.rdSplit2.Checked = this.para.above7Split;
     this.rdGenerlist2.Checked = this.para.above7Generlist;
     this.ckShow.Checked = this.para.ShowSetForm;
     if (WbjkEntry.RegFlag_ST || WbjkEntry.RegFlag_KT)
     {
         this.rdSplit2.Visible = false;
     }
     else if (WbjkEntry.RegFlag_JT)
     {
         this.rdGenerlist2.Visible = true;
     }
 }
 internal Invitation(InvType invType, string invId, Participant inviter, int variant)
 {
     mInvitationType = invType;
     mInvitationId = invId;
     mInviter = inviter;
     mVariant = variant;
 }
 public HsParam(string pName, object pValue, DataType pType, InvType invType)
 {
     paramName  = pName;
     paramValue = pValue;
     paramType  = pType;
     invokeType = invType;
 }
 internal Invitation(InvType invType, string invId, Participant inviter, int variant)
 {
     mInvitationType = invType;
     mInvitationId   = invId;
     mInviter        = inviter;
     mVariant        = variant;
 }
Exemple #6
0
 public SelectDanJuForFP(InvType fptype, int LeftInvCount)
 {
     this.fpType = fptype;
     this.Initialize();
     this.aisinoDataGrid1.add_DataGridRowClickEvent(new EventHandler <DataGridRowEventArgs>(this.aisinoDataGrid1_DataGridRowClickEvent));
     this.leftInvCount = LeftInvCount;
 }
Exemple #7
0
 public MarketTreeNode(InvType invType)
 {
     InvType     = invType;
     Name        = invType.TypeName;
     Id          = InvType.TypeId;
     IsFocusable = true;
 }
Exemple #8
0
        public void Read(Stream s)
        {
            BinaryReader br = new BinaryReader(s);

            type = (InvType)br.ReadUInt32();
            hash = br.ReadBytes(32);
        }
        private void executeValidateOrderType(GridCellValidationEventArgs eventArgs)
        {
            if (eventArgs.Value == null)
            {
                eventArgs.IsValid = false;
                eventArgs.SetError("Invalid item.");
                return;
            }
            string  value = eventArgs.Value.ToString();
            InvType item  = MarketTypes.SingleOrDefault(f => f.TypeName == value);

            if (item == null)
            {
                eventArgs.IsValid = false;
                eventArgs.SetError("Invalid item.");
            }
            else
            {
                if (Orders.SingleOrDefault(order => order.Order.TypeId == item.TypeId) != null)
                {
                    eventArgs.IsValid = false;
                    eventArgs.SetError("An order for this item already exists.");
                }
                else
                {
                    ((OrderVm)eventArgs.Row).Order.TypeId  = item.TypeId;
                    ((OrderVm)eventArgs.Row).Order.InvType = item;
                }
            }
        }
        private void UpdateAmounts(InvType type, InvAction action, MyPhysicalInventoryItem item)
        {
            InventoryItem storage = ItemDeltas.Find(x => x.Index == item.ItemId && x.TypeId == item.Content.TypeId && x.SubtypeId == item.Content.SubtypeId);

            if (storage == null)
            {
                ItemDeltas.Add(new InventoryItem()
                {
                    TypeId        = item.Content.TypeId,
                    SubtypeId     = item.Content.SubtypeId,
                    Index         = item.ItemId,
                    InventoryType = type,
                    Removed       = (action == InvAction.Remove) ? item.Amount : 0,
                    Added         = (action == InvAction.Add) ? item.Amount : 0
                });
            }
            else if (action == InvAction.Add)
            {
                storage.Added += item.Amount;
            }
            else if (action == InvAction.Remove)
            {
                storage.Removed += item.Amount;
            }
        }
Exemple #11
0
 public AddOrdersEvent(InvType item, bool sellOrder = true, bool buyOrder = true)
 {
     Items     = new List <InvType>();
     SellOrder = sellOrder;
     BuyOrder  = buyOrder;
     Items.Add(item);
 }
Exemple #12
0
        public async Task <IActionResult> AddOrEdit([Bind("TypeId,TypeName,UserName,UserIP,UserDate")] InvType invType)
        {
            UserDetails();
            if (ModelState.IsValid)
            {
                if (!InvTypeExists(invType.TypeName))
                {
                    string typename = invType.TypeName;
                    if (invType.TypeId == 0)
                    {
                        _context.Add(invType);
                        addToast(); // triggers addToast
                    }
                    else
                    {
                        _context.Update(invType);
                        editToast(); // triggers editToast
                    }
                    await _context.SaveChangesAsync();

                    return(RedirectToAction(nameof(Index)));
                }
                else
                {
                    warnToast(); // triggers warnToast
                }
            }
            return(View(invType));
        }
Exemple #13
0
        public async Task <MarketBrowserItem> GetMarketDetails(MapRegion region, InvType invType)
        {
            EveMarketDataResponse <EmdItemOrders> orderResponse = await _eveMarketService.GetItemOrderAsync(region.RegionId, invType.TypeId).ConfigureAwait(false);

            var buyOrders  = new List <MarketBrowserOrder>();
            var sellOrders = new List <MarketBrowserOrder>();

            foreach (EmdItemOrders.ItemOrderEntry order in orderResponse.Result.Orders)
            {
                MarketBrowserOrder marketBrowserOrder = ApiEntityMapper.Map(order, new MarketBrowserOrder());
                if (order.OrderType == OrderType.Buy)
                {
                    buyOrders.Add(marketBrowserOrder);
                }
                else
                {
                    sellOrders.Add(marketBrowserOrder);
                }
            }
            CrestMarketHistory history = await _eveMarketService.GetMarketHistoryAsync(region.RegionId, invType.TypeId).ConfigureAwait(false);

            var marketHistory = history.Entries.Select(entry => ApiEntityMapper.Map(entry, new MarketHistoryAggregateEntry())).ToList();

            var item = new MarketBrowserItem(invType, marketHistory, sellOrders, buyOrders, 7);

            return(item);
        }
Exemple #14
0
        public AisinoDataSet GetXSDJ(InvType fpType, int pagesize, int pageno)
        {
            Dictionary <string, object> dictionary = new Dictionary <string, object>();
            string invTypeStr = CommonTool.GetInvTypeStr(fpType);

            dictionary.Add("DJZL", invTypeStr);
            return(this.baseDAO.querySQLDataSet("aisino.Fwkp.Wbjk.FPSCGetXSDJ", dictionary, pagesize, pageno));
        }
Exemple #15
0
 internal Invitation(InvType invType, string invId, Participant inviter, int variant, long creationTime)
 {
     mInvitationType = invType;
     mInvitationId   = invId;
     mInviter        = inviter;
     mVariant        = variant;
     mCreationTime   = creationTime;
 }
Exemple #16
0
        public void ImportTxt(string Path, PriceType JGFS, InvType FPLX)
        {
            this.path       = Path;
            base.Pricemode  = JGFS;
            base.FaPiaomode = FPLX;
            XSDJ xSDJ = this.GetXSDJ();

            base.SaveImport(xSDJ);
        }
 private void btnSet_Click(object sender, EventArgs e)
 {
     try
     {
         InvType common = InvType.Common;
         if (this.radioBtnPTFP.Checked)
         {
             common       = InvType.Common;
             IniRead.type = "c";
         }
         else if (this.radioBtnZYFP.Checked)
         {
             common       = InvType.Special;
             IniRead.type = "s";
         }
         else if (this.radioBtnHYFP.Checked)
         {
             common       = InvType.transportation;
             IniRead.type = "f";
         }
         else if (this.radioBtnJDCFP.Checked)
         {
             common       = InvType.vehiclesales;
             IniRead.type = "j";
         }
         ExcelPassword password = new ExcelPassword();
         password.ShowDialog();
         if (password.DialogResult == DialogResult.Yes)
         {
             new ExcelSetForm(common).ShowDialog();
         }
         else
         {
             base.Close();
             return;
         }
         this.fileControl1.get_TextBoxFile().Text = PropValue.ExcelFile1Path;
         this.fileControl2.get_TextBoxFile().Text = PropValue.ExcelFile2Path;
         if (PropValue.SingleDoubleTable == "1")
         {
             this.label2.Visible       = false;
             this.fileControl2.Visible = false;
             this.label1.Text          = "传入路径";
         }
         else if (PropValue.SingleDoubleTable == "2")
         {
             this.label2.Visible       = true;
             this.fileControl2.Visible = true;
             this.label1.Text          = "主表路径";
         }
     }
     catch (Exception exception)
     {
         HandleException.HandleError(exception);
     }
 }
Exemple #18
0
        private void MarketTree_AfterSelect(object sender, TreeViewEventArgs e)
        {
            InvType type = e.Node.Tag as InvType;

            if (type != null)
            {
                typeNameLabel.Text = type.name;
                Image img = ImageManager.GetTypeImage(type.typeID, 64);
                typeImage.Image = img;
            }
            PopulateOrders();
        }
Exemple #19
0
 public InvType(InvType baseType)
     : base(baseType)
 {
     MetaGroupId = baseType.MetaGroupId;
     Mass = baseType.Mass;
     Volume = baseType.Volume;
     Capacity = baseType.Capacity;
     PortionSize = baseType.PortionSize;
     RaceId = baseType.RaceId;
     BasePrice = baseType.BasePrice;
     MarketGroupId = baseType.MarketGroupId;
     GroupId = baseType.GroupId;
 }
 public InventoryGUI(int type)
 {
     if (type == 0) //TODO: integrate inventory with inventory GUI and items
     {
         invType = InvType.Inventory;
         STACKLIMIT = 15;
     }
     else if (type == 1)
     {
         invType = InvType.Chest;
         STACKLIMIT = 1500;
     }
 }
Exemple #21
0
 public Inventory(int invSize = 1, InvType inventoryType = InvType.Container, IList <InvItem> startingInv = null)
 {
     maxSize = invSize;
     type    = inventoryType;
     if (startingInv != null)
     {
         items = (List <InvItem>)startingInv;
     }
     else
     {
         items = new List <InvItem>();
     }
 }
Exemple #22
0
        /// <summary>
        /// Inventory Types
        /// </summary>
        /// <returns><c>Bag</c> of items from the Inventory</returns>
        internal static Bag <InvType> Types()
        {
            var list = new IndexedList <InvType>();

            foreach (invTypes type in Context.invTypes)
            {
                var item = new InvType
                {
                    ID            = type.typeID,
                    Description   = type.description.Clean(),
                    IconID        = type.iconID,
                    MarketGroupID = type.marketGroupID,
                    Name          = type.typeName,
                    RaceID        = type.raceID
                };

                if (type.basePrice.HasValue)
                {
                    item.BasePrice = type.basePrice.Value;
                }

                if (type.capacity.HasValue)
                {
                    item.Capacity = type.capacity.Value;
                }

                if (type.groupID.HasValue)
                {
                    item.GroupID = type.groupID.Value;
                }

                if (type.mass.HasValue)
                {
                    item.Mass = type.mass.Value;
                }

                if (type.published.HasValue)
                {
                    item.Published = type.published.Value;
                }

                if (type.volume.HasValue)
                {
                    item.Volume = type.volume.Value;
                }

                list.Items.Add(item);
            }

            return(new Bag <InvType>(list));
        }
 internal void WriteExcelResolverConfig(JiaGeType jg, InvType fapiao)
 {
     if (File.Exists(this.ExcelCRXmlPath))
     {
         XmlDocument document = new XmlDocument();
         document.Load(this.ExcelCRXmlPath);
         XmlNode node  = document.DocumentElement.SelectSingleNode("ExcelJEandFP");
         XmlNode node2 = node.SelectSingleNode("JinE");
         XmlNode node3 = node.SelectSingleNode("FaPiao");
         node2.InnerText = jg.ToString();
         node3.InnerText = fapiao.ToString();
         document.Save(this.ExcelCRXmlPath);
     }
 }
Exemple #24
0
 public ExcelForm(InvType type)
 {
     this.invtype = type;
     this.Initialize();
     this.combobox.Visible         = false;
     this.dataGridView1.DataSource = WenBenItem.Items();
     this.file_1.add_onClickEnd(new FileControl.OnClickEnd(this, (IntPtr)this.file_1_onClickEnd));
     this.file_2.add_onClickEnd(new FileControl.OnClickEnd(this, (IntPtr)this.file_2_onClickEnd));
     this.dataGridView1.Controls.Add(this.combobox);
     this.combobox.SelectedIndexChanged += new EventHandler(this.combobox_SelectedIndexChanged);
     this.combobox.Validating           += new CancelEventHandler(this.combobox_Validating);
     this.combobox.KeyUp += new KeyEventHandler(this.combobox_KeyUp);
     this.CheckInTableOneAndTwo(this.radioButton2.Checked);
 }
        public Inventory(uint red, uint green, uint blue, uint yellow, InvType type, string key)
        {
            _type = type;
            if (type == InvType.Turret)
            {
                WHITE = new Gun(-1, 200, 1, "WhiteBullet", InvType.Turret);
                _CurrentGunType = GunType.WHITE;
            }
            else if (type == InvType.Player)
            {
                RED = new Gun((int)red, 100, 1, "RedBullet", InvType.Player, Vector2.UnitY, -Vector2.UnitY * 3);
                GREEN = new Gun((int)green, 200, 1, "GreenBullet", InvType.Player, Vector2.UnitY, -Vector2.UnitY * 3);
                BLUE = new Gun((int)blue, 300, 1, "BlueBullet", InvType.Player, Vector2.UnitY, -Vector2.UnitY * 3);
                WHITE = new Gun(-1, 200, 1, "WhiteBullet", InvType.Player, Vector2.UnitY, -Vector2.UnitY * 3);

                _CurrentGunType = GunType.WHITE;
                YELLOW = yellow;
            }
            else if (type == InvType.Gunner)
            {
                List<Vector2> offsets = new List<Vector2>();

                switch (key)
                {
                    case "graybulbwithsidegunthings":
                        offsets.Add(new Vector2(0, -12));
                        offsets.Add(new Vector2(0, 8));
                        break;

                    case "blueshipwithbulb":
                        offsets.Add(new Vector2(0, -10));
                        offsets.Add(new Vector2(0, 8));
                        break;

                    case "browntriangleship":
                        offsets.Add(new Vector2(0, -10));
                        offsets.Add(new Vector2(0, 7));
                        break;
                }

                WHITE = new Gun(-1, 1000, 1, "EnemyBullet", InvType.Gunner, offsets.ToArray());
                _CurrentGunType = GunType.WHITE;
            }
            else if (type == InvType.Cannon)
            {
                WHITE = new Gun(-1, 2500, 1, "", InvType.Cannon, new Vector2[] { });
                _CurrentGunType = GunType.WHITE;
            }
        }
Exemple #26
0
        private GEntity _createInvItem(InvType invType)
        {
            switch (invType)
            {
            case InvType.Dispenser:
                return(new Dispenser(0, 0, 0));

            case InvType.Mine:
                return(new Mine(0, 0, 0));

            case InvType.Turret:
                return(new Turret(0, 0, 0));
            }
            return(null);
        }
 internal void WriteTxtResolverConfig(string strTxtpath, JiaGeType jg, InvType fapiao)
 {
     if (File.Exists(this.TxtWbcrXmlPath))
     {
         XmlDocument document = new XmlDocument();
         document.Load(this.TxtWbcrXmlPath);
         document.DocumentElement.SelectSingleNode("TxtJieXiPath").InnerText = strTxtpath;
         XmlNode node2 = document.DocumentElement.SelectSingleNode("JinEandFaPiao");
         XmlNode node3 = node2.SelectSingleNode("JinE");
         XmlNode node4 = node2.SelectSingleNode("FaPiao");
         node3.InnerText = jg.ToString();
         node4.InnerText = fapiao.ToString();
         document.Save(this.TxtWbcrXmlPath);
     }
 }
Exemple #28
0
 public InvItem(InvNames name, string fullName, string description, Sprite sprite, int id, int price, int quantity, InvType type, InvSubtype subtype, EquipSlots slot, int rank, bool persist = false)
 {
     Name          = name;
     FullName      = fullName;
     Description   = description;
     Sprite        = sprite;
     ID            = id;
     Price         = price;
     Quantity      = quantity;
     Type          = type;
     Subtype       = subtype;
     Slot          = slot;
     Rank          = rank;
     PersistAtZero = persist;
 }
Exemple #29
0
        private async Task LoadMarketDetails(MapRegion region, InvType invType)
        {
            if (region == null)
            {
                _eventAggregator.PublishOnUIThread(new StatusEvent(this, "Cannot load data: No region selected"));
                return;
            }
            if (invType == null)
            {
                _eventAggregator.PublishOnUIThread(new StatusEvent(this, "Cannot load data: No type selected"));
                return;
            }
            _eventAggregator.PublishOnUIThread(new StatusEvent(this, "Fetching market data..."));
            MarketBrowserData = await GetMarketDetails(region, invType).ConfigureAwait(false);

            _eventAggregator.PublishOnUIThread(new StatusEvent(this, "Market data loaded"));
        }
Exemple #30
0
        internal static string GetInvTypeStr(InvType FPType)
        {
            switch (FPType)
            {
            case InvType.Special:
                return("s");

            case InvType.Common:
                return("c");

            case InvType.transportation:
                return("f");

            case InvType.vehiclesales:
                return("j");
            }
            return("NaN");
        }
Exemple #31
0
 public GenerateFP(InvType typeFP)
 {
     this.log        = LogUtil.GetLogger <GenerateFP>();
     this.fptkBLL    = new FPTKdal();
     this.billBL     = SaleBillCtrl.Instance;
     this.generBL    = GenerateInvoice.Instance;
     this.taxCard    = TaxCardFactory.CreateTaxCard();
     this.IsNewJDC   = false;
     this.NPCType    = 0;
     this.components = null;
     this.FPleftnum  = 0;
     this.Initialize();
     base.StartPosition  = FormStartPosition.CenterScreen;
     this.fpType         = typeFP;
     this.FPType_Card    = (InvoiceType)this.fpType;
     this.djType         = CommonTool.GetInvTypeStr(typeFP);
     this.lableFPZL.Text = ShowString.ShowFPZL(this.djType);
     this.FPleftnum      = (int)this.taxCard.GetInvNumber(this.FPType_Card);
 }
Exemple #32
0
        public Gun(int ammunition, int interval, int power, string bulletTemplateTag, InvType type, params Vector2[] offsets)
        {
            Ammunition = ammunition;
            DefaultTemplate = bulletTemplateTag;
            Power = power;
            Interval = interval;
            Elapsed = 0;
            _Type = type;

            if (offsets.Length == 0)
            {
                GunOffsets.Add(Vector2.Zero);
            }
            else
            {
                foreach (Vector2 offset in offsets)
                {
                    gunOffsets.Add(offset);
                }
            }
        }
Exemple #33
0
        public AisinoDataSet QueryXSDJ(string KeyWord, string Month, string DJtype, string CheckRule, int pagesize, int pageno)
        {
            string str = "";
            Dictionary <string, object> dictionary = new Dictionary <string, object>();

            dictionary.Add("key", KeyWord + "%");
            dictionary.Add("DJYF", Month);
            dictionary.Add("DJZL", DJtype);
            dictionary.Add("JYGZ", CheckRule);
            string str2 = dictionary["JYGZ"].ToString();

            if (str2 != null)
            {
                if (!(str2 == "s"))
                {
                    if (str2 == "c")
                    {
                        InvType invType = CommonTool.GetInvType(DJtype);
                        double  num     = TaxCardValue.GetInvLimit(DJtype) - 0.01;
                        dictionary.Remove("ZDJE");
                        dictionary.Add("ZDJE", num);
                        str = "aisino.Fwkp.Wbjk.CFQueryXSDJEx";
                        goto Label_00EA;
                    }
                    if (str2 == "x")
                    {
                        str = "aisino.Fwkp.Wbjk.CFQueryXSDJMutiSlv";
                        goto Label_00EA;
                    }
                }
                else
                {
                    str = "aisino.Fwkp.Wbjk.CFQueryXSDJAll";
                    goto Label_00EA;
                }
            }
            str = "aisino.Fwkp.Wbjk.CFQueryXSDJAll";
Label_00EA:
            return(this.baseDAO.querySQLDataSet(str, dictionary, pagesize, pageno));
        }
        private async Task LoadItem(InvType type)
        {
            _eventAggregator.PublishOnUIThread(new StatusEvent(this, "Processing trade details..."));
            if (type == null)
            {
                return;
            }
            setActualViewperiod();
            Transactions = await _transactionDetailsService.GetTransactions(type, ActualViewStart, ActualViewEnd);

            if (Transactions.Any())
            {
                Order order = await _transactionDetailsService.GetOrder(type).ConfigureAwait(false);

                TransactionAggregate = new TransactionAggregate(Transactions.GroupBy(t => t.TransactionDate.Date), type, order);
            }
            else
            {
                TransactionAggregate = new TransactionAggregate();
            }
            _eventAggregator.PublishOnUIThread(new StatusEvent(this, "Trade details loaded"));
        }
Exemple #35
0
        private void cmbInvType_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.cmbInvType.SelectedIndex == 0)
            {
                this.Input_InvType = InvType.Once;

                this.cmbRegCycleUnit.Enabled = false;
                this.txtRegAddInv.Enabled    = false;
                this.txtOnceInv.Enabled      = true;
                this.cmbAdjustRegInv.Enabled = false;
                this.txtAdjustRegInv.Enabled = false;
            }
            else if (this.cmbInvType.SelectedIndex == 1)
            {
                this.Input_InvType = InvType.Regular;

                this.cmbRegCycleUnit.Enabled = true;
                this.txtRegAddInv.Enabled    = true;
                this.txtOnceInv.Enabled      = false;
                this.cmbAdjustRegInv.Enabled = true;
                this.txtAdjustRegInv.Enabled = true;
            }
            else if (this.cmbInvType.SelectedIndex == 2)
            {
                this.Input_InvType = InvType.OnceAndRegular;

                this.cmbRegCycleUnit.Enabled = true;
                this.txtRegAddInv.Enabled    = true;
                this.txtOnceInv.Enabled      = true;
                this.cmbAdjustRegInv.Enabled = true;
                this.txtAdjustRegInv.Enabled = true;
            }
            else
            {
                // Do nothing.
            }
        }
Exemple #36
0
 /// <summary>
 /// Creates a custom inventory array of the specified type.
 /// </summary>
 /// <param name="type">inventory type</param>
 /// <returns>call success</returns>
 public bool CreateCustomInventoryArray(InvType type = InvType.All)
 {
     Trace.WriteLine(String.Format("Character:CreateCustomInventoryArray({0})", type.ToString()));
     return ExecuteMethod("CreateCustomInventoryArray", type.ToString().ToLower());
 }
Exemple #37
0
 public InvVect(InvType type, Hash hash)
 {
     this.type = type;
     this.hash = hash;
 }
 public void Read(Stream s)
 {
     BinaryReader br = new BinaryReader(s);
     type = (InvType)br.ReadUInt32();
     hash = br.ReadBytes(32);
 }
Exemple #39
0
        public void ProcessState()
        {
            XDocument invIgnore = XDocument.Load(Settings.Instance.Path + "\\InvIgnore.xml"); //items to ignore
            DirectMarketWindow marketWindow = Cache.Instance.DirectEve.Windows.OfType<DirectMarketWindow>().FirstOrDefault();
            DirectMarketActionWindow sellWindow = Cache.Instance.DirectEve.Windows.OfType<DirectMarketActionWindow>().FirstOrDefault(w => w.IsSellAction);
            DirectReprocessingWindow reprorcessingWindow = Cache.Instance.DirectEve.Windows.OfType<DirectReprocessingWindow>().FirstOrDefault();

            switch (_States.CurrentValueDumpState)
            {
                case ValueDumpState.Idle:
                case ValueDumpState.Done:
                    break;

                case ValueDumpState.Begin:
                    if (_form.RefineCheckBox.Checked && _form.cbxSell.Checked)
                    {
                        _form.cbxSell.Checked = false;
                        _valueProcess = true;
                        _States.CurrentValueDumpState = ValueDumpState.GetItems;
                    }
                    else if (_form.RefineCheckBox.Checked && _valueProcess)
                    {
                        _form.RefineCheckBox.Checked = false;
                        _form.cbxSell.Checked = true;
                        _valueProcess = false;
                        _States.CurrentValueDumpState = ValueDumpState.GetItems;
                    }
                    else
                        _States.CurrentValueDumpState = ValueDumpState.GetItems;
                    break;

                case ValueDumpState.CheckMineralPrices:
                    _currentMineral = _form.InvTypesById.Values.FirstOrDefault(i => i.Id != 27029 && i.GroupId == 18 && i.LastUpdate < DateTime.Now.AddHours(-4));
                    if (_currentMineral == null)
                    {
                        if (DateTime.Now.Subtract(_lastExecute).TotalSeconds > Time.Instance.Marketlookupdelay_seconds)
                        {
                            _States.CurrentValueDumpState = ValueDumpState.SaveMineralPrices;
                            if (marketWindow != null)
                                marketWindow.Close();
                        }
                    }
                    else
                        _States.CurrentValueDumpState = ValueDumpState.GetMineralPrice;

                    break;

                case ValueDumpState.GetMineralPrice:
                    if (marketWindow == null)
                    {
                        if (DateTime.Now.Subtract(_lastExecute).TotalSeconds > Time.Instance.Marketlookupdelay_seconds)
                        {
                            Cache.Instance.DirectEve.ExecuteCommand(DirectCmd.OpenMarket);
                            _lastExecute = DateTime.Now;
                        }

                        return;
                    }

                    if (marketWindow.DetailTypeId != _currentMineral.Id)
                    {
                        if (DateTime.Now.Subtract(_lastExecute).TotalSeconds < Time.Instance.Marketlookupdelay_seconds)
                            return;

                        Logging.Log("ValueDump", "Loading orders for " + _currentMineral.Name, Logging.White);

                        marketWindow.LoadTypeId(_currentMineral.Id);
                        _lastExecute = DateTime.Now;
                        return;
                    }

                    if (marketWindow.BuyOrders.All(o => o.StationId != Cache.Instance.DirectEve.Session.StationId))
                    {
                        _currentMineral.LastUpdate = DateTime.Now;

                        Logging.Log("ValueDump", "No orders found for " + _currentMineral.Name, Logging.White);
                        _States.CurrentValueDumpState = ValueDumpState.CheckMineralPrices;
                    }

                    // Take top 5 orders, average the buy price and consider that median-buy (it's not really median buy but its what we want)
                    _currentMineral.MedianBuy = marketWindow.BuyOrders.Where(o => o.StationId == Cache.Instance.DirectEve.Session.StationId).OrderByDescending(o => o.Price).Take(5).Average(o => o.Price);
                    _currentMineral.LastUpdate = DateTime.Now;
                    _States.CurrentValueDumpState = ValueDumpState.CheckMineralPrices;

                    Logging.Log("ValueDump", "Average price for " + _currentMineral.Name + " is " + _currentMineral.MedianBuy.Value.ToString("#,##0.00"), Logging.White);
                    break;

                case ValueDumpState.SaveMineralPrices:
                    Logging.Log("ValueDump", "Saving InvTypes.xml", Logging.White);

                    XDocument xdoc = new XDocument(new XElement("invtypes"));
                    foreach (InvType type in _form.InvTypesById.Values.OrderBy(i => i.Id))
                        if (xdoc.Root != null) xdoc.Root.Add(type.Save());
                    try
                    {
                        xdoc.Save(InvTypesPath);
                    }
                    catch (Exception ex)
                    {
                        Logging.Log("ValueDump", "Unable to save [" + InvTypesPath + "], is it a file permissions issue? Is the file open and locked? exception was [ " + ex.Message + "]", Logging.Orange);
                    }

                    _States.CurrentValueDumpState = ValueDumpState.Idle;
                    break;

                case ValueDumpState.GetItems:

                    if (!Cache.Instance.OpenItemsHangar("Valuedump")) return;

                    Logging.Log("ValueDump", "Loading hangar items", Logging.White);

                    // Clear out the old
                    _form.Items.Clear();
                    List<DirectItem> hangarItems = Cache.Instance.ItemHangar.Items;
                    if (hangarItems != null)
                        _form.Items.AddRange(hangarItems.Where(i => i.ItemId > 0 && i.MarketGroupId > 0 && i.Quantity > 0).Select(i => new ItemCache(i, _form.RefineCheckBox.Checked)));

                    _States.CurrentValueDumpState = ValueDumpState.UpdatePrices;
                    break;

                case ValueDumpState.UpdatePrices:
                    _form.ItemsToSell.Clear();
                    _form.ItemsToRefine.Clear();
                    _form.ItemsToSellUnsorted.Clear();

                    if (_form.cbxSell.Checked)
                    {
                        _form.ItemsToSellUnsorted.AddRange(_form.cbxUndersell.Checked
                                                               ? _form.Items.Where(i => i.InvType != null)
                                                               : _form.Items.Where(
                                                                   i => i.InvType != null && i.InvType.MinSell.HasValue));

                        _form.ItemsToSell = _form.ItemsToSellUnsorted.OrderBy(i => i.Name).ToList();
                        _States.CurrentValueDumpState = ValueDumpState.NextItem;
                    }
                    else if (_form.RefineCheckBox.Checked)
                    {
                        _form.ItemsToSellUnsorted.AddRange(_form.Items.Where(i => i.InvType != null && i.InvType.MaxBuy.HasValue));
                        _form.ItemsToSell = _form.ItemsToSellUnsorted.OrderBy(i => i.Name).ToList();
                        _States.CurrentValueDumpState = ValueDumpState.NextItem;
                    }
                    else
                        _States.CurrentValueDumpState = ValueDumpState.Done;

                    break;

                case ValueDumpState.NextItem:

                    if (_form.ItemsToSell.Count == 0)
                    {
                        _States.CurrentValueDumpState = _form.ItemsToRefine.Count != 0 ? ValueDumpState.RefineItems : ValueDumpState.Done;
                        break;
                    }
                    bool block = false;
                    if (!_form.RefineCheckBox.Checked)
                        Logging.Log("ValueDump", _form.ItemsToSell.Count + " items left to sell", Logging.White);

                    _currentItem = _form.ItemsToSell[0];
                    _form.ItemsToSell.RemoveAt(0);

                    // Do not sell containers
                    if (_currentItem.GroupID == 448 || _currentItem.GroupID == 649)
                    {
                        Logging.Log("ValueDump", "Skipping " + _currentItem.Name, Logging.White);
                        break;
                    }
                    // Do not sell items in invignore.xml
                    if (invIgnore.Root != null)
                        if (invIgnore.Root.Elements("invtype").Any(element => _currentItem.TypeId == (int)element.Attribute("id")))
                        {
                            Logging.Log("ValueDump", "Skipping (block list) " + _currentItem.Name, Logging.White);
                            block = true;
                        }
                    if (block)
                        break;

                    _States.CurrentValueDumpState = ValueDumpState.StartQuickSell;
                    break;

                case ValueDumpState.StartQuickSell:
                    if ((DateTime.Now.Subtract(_lastExecute).TotalSeconds < Cache.Instance.RandomNumber(1,3)) && _form.cbxSell.Checked)
                        break;
                    _lastExecute = DateTime.Now;

                    DirectItem directItem = Cache.Instance.ItemHangar.Items.FirstOrDefault(i => i.ItemId == _currentItem.Id);
                    if (directItem == null)
                    {
                        Logging.Log("ValueDump", "Item " + _currentItem.Name + " no longer exists in the hanger", Logging.White);
                        break;
                    }

                    // Update Quantity
                    _currentItem.QuantitySold = _currentItem.Quantity - directItem.Quantity;

                    if (_form.cbxSell.Checked)
                    {
                        Logging.Log("ValueDump", "Starting QuickSell for " + _currentItem.Name, Logging.White);
                        if (!directItem.QuickSell())
                        {
                            _lastExecute = DateTime.Now.AddSeconds(-5);

                            Logging.Log("ValueDump", "QuickSell failed for " + _currentItem.Name + ", retrying in 5 seconds", Logging.White);
                            break;
                        }

                        _States.CurrentValueDumpState = ValueDumpState.WaitForSellWindow;
                    }
                    else
                    {
                        _States.CurrentValueDumpState = ValueDumpState.InspectRefinery;
                    }
                    break;

                case ValueDumpState.WaitForSellWindow:
                    if (sellWindow == null || !sellWindow.IsReady || sellWindow.Item.ItemId != _currentItem.Id)
                        break;

                    // Mark as new execution
                    _lastExecute = DateTime.Now;

                    Logging.Log("ValueDump", "Inspecting sell order for " + _currentItem.Name, Logging.White);
                    _States.CurrentValueDumpState = ValueDumpState.InspectOrder;
                    break;

                case ValueDumpState.InspectOrder:
                    // Let the order window stay open for random number
                    if (DateTime.Now.Subtract(_lastExecute).TotalSeconds < Cache.Instance.RandomNumber(1, 3))
                        break;

                    if (sellWindow != null && (!sellWindow.OrderId.HasValue || !sellWindow.Price.HasValue || !sellWindow.RemainingVolume.HasValue))
                    {
                        Logging.Log("ValueDump", "No order available for " + _currentItem.Name, Logging.White);

                        sellWindow.Cancel();
                        _States.CurrentValueDumpState = ValueDumpState.WaitingToFinishQuickSell;
                        break;
                    }

                    if (sellWindow != null)
                    {
                        double price = sellWindow.Price.Value;
                        int quantity = (int)Math.Min(_currentItem.Quantity - _currentItem.QuantitySold, sellWindow.RemainingVolume.Value);
                        double totalPrice = quantity * price;

                        const string otherPrices = " ";

                        if (!_form.cbxUndersell.Checked)
                        {
                            if (_currentItem.InvType.MinSell != null)
                            {
                                double perc = _currentItem.InvType.MinSell.Value / price;
                                double total = _currentItem.InvType.MinSell.Value * _currentItem.Quantity;
                                // If percentage >= 130% and total price >= 1m isk then skip this item (we don't undersell)
                                if (perc >= 1.4 && ((total - totalPrice) >= 2000000))
                                {
                                    Logging.Log("ValueDump", "Not underselling item " + _currentItem.Name + " [Min sell price: " + _currentItem.InvType.MinSell.Value.ToString("#,##0.00") + "][Sell price: " + price.ToString("#,##0.00") + "][" + perc.ToString("0%") + "]", Logging.White);

                                    sellWindow.Cancel();
                                    _States.CurrentValueDumpState = ValueDumpState.WaitingToFinishQuickSell;
                                    break;
                                }
                            }
                        }

                        // Update quantity sold
                        _currentItem.QuantitySold += quantity;

                        // Update station price
                        if (!_currentItem.StationBuy.HasValue)
                            _currentItem.StationBuy = price;
                        _currentItem.StationBuy = (_currentItem.StationBuy + price) / 2;

                        Logging.Log("ValueDump", "Selling " + quantity + " of " + _currentItem.Name + " [Sell price: " + (price * quantity).ToString("#,##0.00") + "]" + otherPrices, Logging.White);
                    }
                    if (sellWindow != null) sellWindow.Accept();

                    // Re-queue to check again
                    if (_currentItem.QuantitySold < _currentItem.Quantity)
                        _form.ItemsToSell.Add(_currentItem);

                    _lastExecute = DateTime.Now;
                    _States.CurrentValueDumpState = ValueDumpState.WaitingToFinishQuickSell;
                    break;

                case ValueDumpState.InspectRefinery:

                    if (_currentItem.InvType.MaxBuy != null)
                    {
                        double priceR = _currentItem.InvType.MaxBuy.Value;
                        int quantityR = _currentItem.Quantity;
                        double totalPriceR = quantityR * priceR;
                        int portions = quantityR / _currentItem.PortionSize;
                        double refinePrice = _currentItem.RefineOutput.Any() ? _currentItem.RefineOutput.Sum(m => m.Quantity * m.InvType.MaxBuy ?? 0) * portions : 0;
                        refinePrice *= (double)_form.RefineEfficiencyInput.Value / 100;

                        if (refinePrice > totalPriceR || totalPriceR <= 1500000 || _currentItem.TypeId == 30497)
                        {
                            Logging.Log("ValueDump", "Refining gives a better price for item " + _currentItem.Name + " [Refine price: " + refinePrice.ToString("#,##0.00") + "][Sell price: " + totalPriceR.ToString("#,##0.00") + "]", Logging.White);
                            // Add it to the refine list
                            _form.ItemsToRefine.Add(_currentItem);
                        }
                    }
                    /*else
                    {
                        Logging.Log("Selling gives a better price for item " + _currentItem.Name + " [Refine price: " + refinePrice.ToString("#,##0.00") + "][Sell price: " + totalPrice_r.ToString("#,##0.00") + "]");
                    }*/

                    _lastExecute = DateTime.Now;
                    _States.CurrentValueDumpState = ValueDumpState.NextItem;

                    break;

                case ValueDumpState.WaitingToFinishQuickSell:
                    if (sellWindow == null || !sellWindow.IsReady || sellWindow.Item.ItemId != _currentItem.Id)
                    {
                        DirectWindow modal = Cache.Instance.DirectEve.Windows.FirstOrDefault(w => w.IsModal);
                        if (modal != null)
                            modal.Close();

                        _States.CurrentValueDumpState = ValueDumpState.NextItem;
                        break;
                    }
                    break;

                case ValueDumpState.RefineItems:

                    if (reprorcessingWindow == null)
                    {
                        if (DateTime.Now.Subtract(_lastExecute).TotalSeconds > Cache.Instance.RandomNumber(1, 3))
                        {
                            IEnumerable<DirectItem> refineItems = Cache.Instance.ItemHangar.Items.Where(i => _form.ItemsToRefine.Any(r => r.Id == i.ItemId));
                            Cache.Instance.DirectEve.ReprocessStationItems(refineItems);

                            _lastExecute = DateTime.Now;
                        }
                        return;
                    }

                    if (reprorcessingWindow.NeedsQuote)
                    {
                        if (DateTime.Now.Subtract(_lastExecute).TotalSeconds > Cache.Instance.RandomNumber(1, 3))
                        {
                            reprorcessingWindow.GetQuotes();
                            _lastExecute = DateTime.Now;
                        }

                        return;
                    }

                    // Wait till we have a quote
                    if (reprorcessingWindow.Quotes.Count == 0)
                    {
                        _lastExecute = DateTime.Now;
                        return;
                    }

                    // Wait another 5 seconds to view the quote and then reprocess the stuff
                    if (DateTime.Now.Subtract(_lastExecute).TotalSeconds > 5)
                    {
                        // TODO: We should wait for the items to appear in our hangar and then sell them...
                        reprorcessingWindow.Reprocess();
                        _lastExecute = DateTime.Now;
                        Logging.Log("Valuedump", "Waiting 17 second", Logging.White);
                        _States.CurrentValueDumpState = ValueDumpState.WaitingToBack;
                    }
                    break;

                case ValueDumpState.WaitingToBack:
                    if (DateTime.Now.Subtract(_lastExecute).TotalSeconds > 17 && _valueProcess)
                    {
                        _States.CurrentValueDumpState = _valueProcess ? ValueDumpState.Begin : ValueDumpState.Done;
                    }
                    break;
            }
        }