Пример #1
0
        private void Init_TlbCmbContainer(bool a_IsSilent)
        {
            EventHandler      myHandler = new EventHandler(TlbCmbContainer_SelectedIndexChanged);
            ToolStripComboBox currCombo = TlbCmbContainer;

            currCombo.Items.Clear();

            ItemAssets    locationAssets = (ItemAssets)TextItemWithObject.GetData(TlbCmbLocation.SelectedItem);
            ContainerTree containers     = m_Assets.GetContainerTree(locationAssets);

            TextItemWithObject newItem    = new TextItemWithObject("[All items]", locationAssets);
            TextItemWithObject selectItem = newItem;

            currCombo.Items.Add(newItem);

            foreach (KeyValuePair <ItemAssets, string> keyValuePair in containers)
            {
                newItem = new TextItemWithObject(keyValuePair.Value, keyValuePair.Key);
                currCombo.Items.Add(newItem);
            }

            if (a_IsSilent)
            {
                SilentSetSelectedItem(currCombo, selectItem, myHandler);
            }
            else
            {
                currCombo.SelectedItem = selectItem;
            }
        }
Пример #2
0
        private void ParseAssetsXML(XmlDocument a_AssetsXml)
        {
            UnloadAssets();

            XmlNodeList globalNodes = a_AssetsXml.SelectNodes("//eveapi/result/rowset/row");

            foreach (XmlNode currNode in globalNodes)
            {
                UInt32 locationID = Convert.ToUInt32(currNode.Attributes["locationID"].Value);
                UInt32 typeID     = Convert.ToUInt32(currNode.Attributes["typeID"].Value);
                UInt32 quantity   = Convert.ToUInt32(currNode.Attributes["quantity"].Value);
                bool   isPacked   = (0 == Convert.ToUInt32(currNode.Attributes["singleton"].Value));

                ItemAssets currLocAssets = GetOrInsert_LocationAssets(locationID);
                ItemAssets currAsset     = GetOrInsert_ItemAssets(currLocAssets, typeID, isPacked);
                currAsset.Quantity += quantity;

                if (currNode.HasChildNodes)
                {
                    ParseNestedAssets(currNode, currAsset);
                }
            }

            m_CacheTime = EveApi.GetCacheTime(a_AssetsXml);
        }
Пример #3
0
        ItemAssets GetOrInsert_ItemAssets(ItemAssets a_Parent, UInt32 a_TypeID, bool a_IsPacked)
        {
            if (a_IsPacked && (a_Parent.NestedPacked != null) && a_Parent.NestedPacked.ContainsKey(a_TypeID))
            {
                return(a_Parent.NestedPacked[a_TypeID]);
            }

            ItemAssets newAsset = new ItemAssets(a_TypeID, a_IsPacked);

            if (a_IsPacked)
            {
                if (a_Parent.NestedPacked == null)
                {
                    a_Parent.NestedPacked = new AssetsMap();
                }

                a_Parent.NestedPacked.Add(a_TypeID, newAsset);
            }
            else
            {
                if (a_Parent.NestedAssembled == null)
                {
                    a_Parent.NestedAssembled = new AssetsList();
                }

                a_Parent.NestedAssembled.Add(newAsset);
            }

            return(newAsset);
        }
Пример #4
0
        protected void FillNestedContainers(ContainerTree a_Result, ItemAssets a_Parent, string a_CurrPath)
        {
            if (a_Parent.NestedAssembled == null)
            {
                return;
            }

            foreach (ItemAssets containedAsset in a_Parent.NestedAssembled)
            {
                if ((containedAsset.NestedPacked == null) && (containedAsset.NestedAssembled == null))
                {
                    continue;
                }

                string path = a_CurrPath;
                if (path != "")
                {
                    path += " \\ ";
                }
                path += m_EveDatabase.GetTypeIdName(containedAsset.TypeID);

                a_Result.Add(containedAsset, path);
                FillNestedContainers(a_Result, containedAsset, path);
            }
        }
Пример #5
0
        private void MakeRefineryItemList()
        {
            UInt32     characterID = ((TextItemWithUInt32)TlbCmbCharacter.SelectedItem).Data;
            ItemAssets container   = (ItemAssets)TextItemWithObject.GetData(TlbCmbContainer.SelectedItem);

            m_SelectedAssets = null;
            if (character_AllItems != characterID)
            {
                AssetFilter assetFilter = 0;
                if (TlbChkIgnoreContainers.Checked)
                {
                    assetFilter |= AssetFilter.NoAssembledContainers;
                }

                if (TlbChkIgnoreShips.Checked)
                {
                    assetFilter |= AssetFilter.NoAssembledShips;
                }

                if (TlbChkIgnoreAssembled.Checked)
                {
                    assetFilter |= AssetFilter.NoAssembled;
                }

                m_SelectedAssets = m_Assets.GetAssetsList(container, assetFilter);
            }

            ItemFilter filter = new ItemFilter();

            filter.Published      = TristateFilter.Yes;
            filter.PlainMaterials = TristateFilter.Yes;
            if (m_SelectedAssets != null)
            {
                filter.AssetsFilter = m_SelectedAssets;
            }

            SetupListItemsData(m_ItemsDB.FilterItems(filter), m_SelectedAssets);
            UpdateTotalsRow();

            // Optimization: pre-fill all column data (saves around 1 sec)
            Hashtable columnData = new Hashtable();

            foreach (MainListItem listItem in m_ItemList)
            {
                Object[] columnValues = GetListItemColumnData(listItem);
                columnData.Add(listItem.TypeID, columnValues);
            }

            CompareItemBase comparer = new CompareColumn(m_SortType, columnData);

            comparer.SetParameters(m_SortDirection);
            Array.Sort(m_ItemList, comparer);

            LstRefinery.VirtualListSize = m_ItemList.Count();
            UpdateLstRefinery();
        }
Пример #6
0
        ItemAssets GetOrInsert_LocationAssets(UInt32 a_LocationID)
        {
            if (Assets.ContainsKey(a_LocationID))
            {
                return(Assets[a_LocationID]);
            }

            ItemAssets newLocation = new ItemAssets(a_LocationID, false);

            Assets.Add(a_LocationID, newLocation);
            return(newLocation);
        }
Пример #7
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;
                }
            }
        }
Пример #8
0
        public ContainerTree GetContainerTree(ItemAssets a_Location)
        {
            ContainerTree result = new ContainerTree();

            if (a_Location != null)
            {
                FillNestedContainers(result, a_Location, "");
                return(result);
            }

            foreach (ItemAssets locationAssets in Assets.Values)
            {
                FillNestedContainers(result, locationAssets, "");
            }

            return(result);
        }
Пример #9
0
        protected void GetAssetsList_FillNested(ItemAssets a_Container, ItemAssets a_Target, AssetFilter a_Filter)
        {
            if (a_Container.NestedPacked != null)
            {
                foreach (ItemAssets containedAsset in a_Container.NestedPacked.Values)
                {
                    GetAssetsList_AddAsset(containedAsset, a_Target, a_Filter);
                }
            }

            if ((a_Container.NestedAssembled != null) && (0 == (a_Filter & AssetFilter.NoAssembled)))
            {
                foreach (ItemAssets containedAsset in a_Container.NestedAssembled)
                {
                    GetAssetsList_AddAsset(containedAsset, a_Target, a_Filter);
                }
            }
        }
Пример #10
0
        /// <summary>
        /// Compiles assets into a list, iterating through any nested ones
        /// </summary>
        /// <param name="a_Container">null or container. If null, all known assets are compiled.</param>
        /// <returns>Compiled assets</returns>
        public AssetsMap GetAssetsList(ItemAssets a_Container, AssetFilter a_Filter)
        {
            ItemAssets container = new ItemAssets(0, false);

            container.NestedPacked = new AssetsMap();

            if (a_Container != null)
            {
                GetAssetsList_FillNested(a_Container, container, a_Filter);
                return(container.NestedPacked);
            }

            foreach (ItemAssets locationAssets in Assets.Values)
            {
                GetAssetsList_FillNested(locationAssets, container, a_Filter);
            }

            return(container.NestedPacked);
        }
Пример #11
0
        private void ParseNestedAssets(XmlNode a_ParentNode, ItemAssets a_Parent)
        {
            XmlNodeList nestedNodes = a_ParentNode.SelectNodes("rowset/row");

            foreach (XmlNode currNode in nestedNodes)
            {
                UInt32 typeID   = Convert.ToUInt32(currNode.Attributes["typeID"].Value);
                UInt32 quantity = Convert.ToUInt32(currNode.Attributes["quantity"].Value);
                bool   isPacked = (0 != Convert.ToUInt32(currNode.Attributes["singleton"].Value));

                ItemAssets currAsset = GetOrInsert_ItemAssets(a_Parent, typeID, isPacked);
                currAsset.Quantity += quantity;

                if (currNode.HasChildNodes)
                {
                    ParseNestedAssets(currNode, currAsset);
                }
            }
        }
Пример #12
0
        protected void GetAssetsList_AddAsset(ItemAssets a_Asset, ItemAssets a_Target, AssetFilter a_Filter)
        {
            if (!a_Asset.IsPacked && (a_Filter != 0))
            {
                UInt32 itemCategory = m_EveDatabase.GetTypeIdCategory(a_Asset.TypeID);
                if (((a_Filter & AssetFilter.NoAssembledContainers) != 0) && (itemCategory == (UInt32)EveCategories.Celestial))
                {
                    return;
                }

                if (((a_Filter & AssetFilter.NoAssembledShips) != 0) && (itemCategory == (UInt32)EveCategories.Ship))
                {
                    return;
                }
            }

            ItemAssets targetAsset = GetOrInsert_ItemAssets(a_Target, a_Asset.TypeID, true);

            targetAsset.Quantity += a_Asset.Quantity;
            GetAssetsList_FillNested(a_Asset, a_Target, a_Filter);
        }