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; } }
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); }
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); }
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); } }
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(); }
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); }
/// <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; } } }
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); }
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); } } }
/// <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); }
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); } } }
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); }