Exemple #1
0
        private void Refinery_RetrieveVirtualItem(object a_Sender, RetrieveVirtualItemEventArgs a_QueryArgs)
        {
            MainListItem listItem = m_ItemList[a_QueryArgs.ItemIndex];

            Object[] columnData = GetListItemColumnData(listItem);

            a_QueryArgs.Item = new ListViewItem();
            ListViewItem.ListViewSubItemCollection subitems = a_QueryArgs.Item.SubItems;
            bool isQuantityOk = (m_SelectedAssets != null) && m_Engine.m_Settings.Appearance.UseAssetQuantities;

            for (int i = 0; i < (int)Columns.MaxColumns; i++)
            {
                subitems.Add(new ListViewItem.ListViewSubItem());
            }

            if (!ItemPrice.IsValidPrice((double)columnData[(int)Columns.MarketPrice]))
            {
                a_QueryArgs.Item.BackColor = Color.White;
            }
            else
            {
                a_QueryArgs.Item.BackColor = m_Engine.GetPriceColor((double)columnData[(int)Columns.RefinedCost], (double)columnData[(int)Columns.MarketPrice], isQuantityOk);
            }

            subitems[(int)Columns.Name].Text        = (string)columnData[(int)Columns.Name];
            subitems[(int)Columns.MetaLevel].Text   = columnData[(int)Columns.MetaLevel].ToString();
            subitems[(int)Columns.RefinedCost].Text = ItemPrice.FormatPrice((double)columnData[(int)Columns.RefinedCost]);
            subitems[(int)Columns.MarketPrice].Text = ItemPrice.FormatPrice((double)columnData[(int)Columns.MarketPrice]);
            subitems[(int)Columns.PriceDelta].Text  = ItemPrice.FormatPrice((double)columnData[(int)Columns.PriceDelta]);
            subitems[(int)Columns.Yield].Text       = String.Format("{0:0.00%}", (double)columnData[(int)Columns.Yield]);

            subitems[(int)Columns.Tritanium].Text = Engine.FormatDouble((double)columnData[(int)Columns.Tritanium]);
            subitems[(int)Columns.Pyerite].Text   = Engine.FormatDouble((double)columnData[(int)Columns.Pyerite]);
            subitems[(int)Columns.Mexallon].Text  = Engine.FormatDouble((double)columnData[(int)Columns.Mexallon]);
            subitems[(int)Columns.Isogen].Text    = Engine.FormatDouble((double)columnData[(int)Columns.Isogen]);
            subitems[(int)Columns.Noxcium].Text   = Engine.FormatDouble((double)columnData[(int)Columns.Noxcium]);
            subitems[(int)Columns.Zydrine].Text   = Engine.FormatDouble((double)columnData[(int)Columns.Zydrine]);
            subitems[(int)Columns.Megacyte].Text  = Engine.FormatDouble((double)columnData[(int)Columns.Megacyte]);
            subitems[(int)Columns.Morphite].Text  = Engine.FormatDouble((double)columnData[(int)Columns.Morphite]);
            subitems[(int)Columns.Quantity].Text  = String.Format("{0:#,0}", columnData[(int)Columns.Quantity]);
            subitems[(int)Columns.Type].Text      = (string)columnData[(int)Columns.Type];

            double lossPercent          = (double)columnData[(int)Columns.LossPercent];
            bool   isInvalidLossPercent = double.IsInfinity(lossPercent);

            subitems[(int)Columns.LossPercent].Text   = isInvalidLossPercent ? "" : String.Format("{0:d}%", (int)(100 * lossPercent));
            subitems[(int)Columns.Volume].Text        = Engine.FormatDouble((double)columnData[(int)Columns.Volume]);
            subitems[(int)Columns.RefinedVolume].Text = Engine.FormatDouble((double)columnData[(int)Columns.RefinedVolume]);
        }
Exemple #2
0
            protected override int CompareItems(MainListItem a_Left, MainListItem a_Right)
            {
                Object[] leftColumns  = (Object[])m_ColumnData[a_Left.TypeID];
                Object[] rightColumns = (Object[])m_ColumnData[a_Right.TypeID];

                Object lhs = leftColumns[(int)m_Column];
                Object rhs = rightColumns[(int)m_Column];

                if (lhs is String)
                {
                    return(String.Compare((string)lhs, (string)rhs, StringComparison.OrdinalIgnoreCase));
                }

                return(Comparer.DefaultInvariant.Compare(leftColumns[(int)m_Column], rightColumns[(int)m_Column]));
            }
Exemple #3
0
        /// <summary>
        /// Fills m_ItemList with data
        /// </summary>
        /// <param name="a_ListTypeIDs">TypeIDs of items to be filled into list</param>
        /// <param name="a_Assets">Null or Assets to be listed</param>
        private void SetupListItemsData(UInt32[] a_ListTypeIDs, AssetsMap a_Assets)
        {
            m_TotalsItem = null;

            List <MainListItem> specialItems = new List <MainListItem>();

            if (a_Assets != null)
            {
                m_TotalsItem          = new MainListItem();
                m_TotalsItem.TypeID   = SpecialTypeID_Totals;
                m_TotalsItem.ItemData = CreateSpecialItem_Totals();
                m_TotalsItem.Quantity = 0;

                specialItems.Add(m_TotalsItem);
            }

            m_ItemList = new MainListItem[specialItems.Count + a_ListTypeIDs.Count()];
            for (int i = 0; i < specialItems.Count; i++)
            {
                m_ItemList[i] = specialItems[i];
            }

            for (int i = 0; i < a_ListTypeIDs.Count(); i++)
            {
                UInt32       currTypeID = a_ListTypeIDs[i];
                MainListItem currItem   = new MainListItem();
                m_ItemList[specialItems.Count + i] = currItem;

                ItemAssets currAssets = null;
                if ((a_Assets != null) && a_Assets.ContainsKey(currTypeID))
                {
                    currAssets = (ItemAssets)a_Assets[currTypeID];
                }

                currItem.TypeID   = currTypeID;
                currItem.ItemData = m_ItemsDB.GetItemByTypeID(currTypeID);

                if (currAssets == null)
                {
                    currItem.Quantity = 1;
                }
                else
                {
                    currItem.Quantity = currAssets.Quantity;
                }
            }
        }
Exemple #4
0
            int IComparer.Compare(Object a_Left, Object a_Right)
            {
                MainListItem lhs = (MainListItem)a_Left;
                MainListItem rhs = (MainListItem)a_Right;

                bool isLhsTotals = (lhs.TypeID == SpecialTypeID_Totals);
                bool isRhsTotals = (rhs.TypeID == SpecialTypeID_Totals);

                if (isLhsTotals && isRhsTotals)
                {
                    return(0);
                }
                else if (isLhsTotals)
                {
                    return(-1);
                }
                else if (isRhsTotals)
                {
                    return(1);
                }

                return(m_SortDirection * CompareItems(lhs, rhs));
            }
Exemple #5
0
 protected abstract int CompareItems(MainListItem a_Left, MainListItem a_Right);
Exemple #6
0
        private Object[] GetListItemColumnData(MainListItem a_ListItem)
        {
            Object[] result = new Object[(int)Columns.MaxColumns];

            bool   isQuantityOk = (m_SelectedAssets != null) && m_Engine.m_Settings.Appearance.UseAssetQuantities;
            UInt32 quantity     = isQuantityOk ? a_ListItem.Quantity : 1;

            bool isTotals = (a_ListItem.ItemData.TypeID == SpecialTypeID_Totals);

            if (isTotals)
            {
                quantity = 1;
            }

            lock (a_ListItem.ItemData)
            {
                ItemPrice prices = m_Engine.GetItemPrices(a_ListItem.ItemData, m_ItemsDB.GetMutators(), quantity);

                result[(int)Columns.Name]        = a_ListItem.ItemData.ItemName;
                result[(int)Columns.MetaLevel]   = a_ListItem.ItemData.MetaLevel;
                result[(int)Columns.RefinedCost] = prices.RefinedCost;
                result[(int)Columns.MarketPrice] = prices.MarketPrice;
                result[(int)Columns.PriceDelta]  = prices.PriceDelta;
                result[(int)Columns.Yield]       = m_Engine.GetEffectiveYield(a_ListItem.ItemData, m_ItemsDB.GetMutators());

                double      refinedVolume   = 0;
                Columns[]   materialColumns = new Columns[] { Columns.Tritanium, Columns.Pyerite, Columns.Mexallon, Columns.Isogen, Columns.Noxcium, Columns.Zydrine, Columns.Megacyte, Columns.Morphite };
                Materials[] columnMaterials = new Materials[] { Materials.Tritanium, Materials.Pyerite, Materials.Mexallon, Materials.Isogen, Materials.Noxcium, Materials.Zydrine, Materials.Megacyte, Materials.Morphite };
                for (int i = 0; i < materialColumns.Length; i++)
                {
                    Columns   currColumn     = materialColumns[i];
                    Materials currMaterial   = columnMaterials[i];
                    double    materialAmount = 0;

                    if (isTotals)
                    {
                        materialAmount = a_ListItem.ItemData.MaterialAmount[(UInt32)currMaterial];
                    }
                    else
                    {
                        materialAmount = m_Engine.GetEffectiveRefineQuota(a_ListItem.ItemData, m_ItemsDB.GetMutators(), quantity, currMaterial);
                    }

                    refinedVolume          += materialAmount * MaterialsInfo.GetMaterialVolume(currMaterial);
                    result[(int)currColumn] = materialAmount;
                }

                result[(int)Columns.Quantity] = a_ListItem.Quantity;
                result[(int)Columns.Type]     = a_ListItem.ItemData.TypeSortString;

                double lossPercent = 0;
                if (!ItemPrice.IsValidPrice(prices.MarketPrice))
                {
                    lossPercent = double.PositiveInfinity;
                }
                else
                {
                    lossPercent = (prices.MarketPrice - prices.RefinedCost) / prices.MarketPrice;
                }

                result[(int)Columns.LossPercent]   = lossPercent;
                result[(int)Columns.Volume]        = quantity * a_ListItem.ItemData.Volume;
                result[(int)Columns.RefinedVolume] = refinedVolume;
            }

            return(result);
        }