Ejemplo n.º 1
0
        /// <summary>
        /// 创建市场组结点
        /// </summary>
        /// <param name="marketGroups"></param>
        /// <param name="groupTypeIDs"></param>
        /// <param name="groupRootFolder"></param>
        private static void GenerateNode(Dictionary <int, NewMarketGroup> marketGroups, Dictionary <int, List <NewTypeID> > groupTypeIDs,
                                         Dictionary <int, MarketGroupNode> groupRootFolder)
        {
            // 组内层级关系确立
            var tmpMarketGroups = CopyTools.DeepByBinaryFormatter(marketGroups);

            try
            {
                foreach (var kvg in marketGroups)
                {
                    // 拿到ID与组实例
                    var id    = kvg.Key;
                    var group = kvg.Value;
                    // 创建树状图节点
                    var node = new MarketGroupNode(group, true);
                    // 如果这个组内有item成员,则创建特殊组,成员为item
                    if (group.hasTypes)
                    {
                        groupTypeIDs.TryGetValue(id, out var typeLst);
                        node.AddMarketGroup(typeLst);
                    }
                    // 根结点并非一个,
                    if (group.parentGroupID == 0)
                    {
                        groupRootFolder.Add(id, node); // 处理最上层的根节点
                        tmpMarketGroups.Remove(kvg.Value.ID);
                    }
                    else // 否则,寻找父组添加到其内
                    {
                        foreach (var leaf in groupRootFolder)
                        {
                            if (Search(leaf.Value, node, tmpMarketGroups))
                            {
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                System.Windows.MessageBox.Show(e.Message);
            }
            //MessageBox.Show(marketGroups.Count.ToString());
            if (marketGroups.Count > 0)
            {
                GenerateNode(tmpMarketGroups, groupTypeIDs, groupRootFolder);
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 找寻市场组子节点
 /// </summary>
 /// <param name="find"></param>
 /// <param name="add"></param>
 /// <returns></returns>
 private static bool Search(MarketGroupNode find, MarketGroupNode add, Dictionary <int, NewMarketGroup> tmpMarketGroups)
 {
     if (find.IsGroup)                                 // 只有包含子物体的组允许访问
     {
         if (find.Group.ID == add.Group.parentGroupID) // 找到了则添加进去
         {
             if (add != null)
             {
                 find.AddMarketGroup(add);
             }
             tmpMarketGroups.Remove(add.Group.ID);
             return(true);
         }
         else
         {
             foreach (var findChild in find.ChildrensDcit.Values) // 否则继续找
             {
                 Search(findChild, add, tmpMarketGroups);
             }
         }
     }
     return(false);
 }
Ejemplo n.º 3
0
 public override void QueryStart(object parameter)
 {
     _groupNode = parameter as MarketGroupNode;
     if (_groupNode != null && !querying)
     {
         try
         {
             var ids = GetIDs();
             StatusManager.GetManager()?.ShowMsg("获取服务器数据中.....");
             counter  = 0;
             times    = ids.Count;
             querying = true;
             _queryMarketGroupResults = new List <MarketGroupTypeShow>();
             foreach (var idStr in ids)
             {
                 if (string.IsNullOrEmpty(idStr))
                 {
                     times--;
                     if (times <= 0)
                     {
                         StatusManager.GetManager()?.ShowMsg("没有匹配到请求的数据,本次请求取消,检查物品类型.....");
                         querying = false;
                         return;
                     }
                     continue;
                 }
                 new Thread(new ThreadStart(() => {
                     HttpRequestManager.SetQueryPost(idStr, RegionGalaxyID.MarketGroupRegionID, RegionGalaxyID.MarketGroupGalaxyID);
                     HttpRequestManager.Post("NULL", QueryMarketGroupCompleteMuti);
                 })).Start();
                 Thread.Sleep(100);
             }
         }
         catch { }
     }
 }
Ejemplo n.º 4
0
        public MainWindow()
        {
            InitializeComponent();



            using (var ele = new eveLocationEntities())
            {
                #region Regions
                var regions = ele.mapRegions;
                regions.Load();

                foreach (var region in regions)
                {
                    var node = new RegionNode
                    {
                        Name       = region.regionName,
                        NodeID     = region.regionID,
                        IsSelected = false
                    };

                    _locationNodes.Nodes.Add(node);
                }
                #endregion

                #region Systems
                var systems = ele.mapSolarSystems;
                systems.Load();

                foreach (var system in systems)
                {
                    var node = new SystemNode
                    {
                        Name         = system.solarSystemName,
                        NodeID       = system.solarSystemID,
                        ParentNodeID = system.regionID,
                        IsFiltered   = false
                    };

                    _locationNodes.Nodes.Add(node);
                }
                #endregion
            }

            using (var eie = new eveInventoryEntities())
            {
                #region Market Groups
                var groups = eie.invMarketGroups;
                groups.Load();

                //var groups = _eaw.GetMarketGroups().Result;

                foreach (var group in groups)
                {
                    //var tmp = @group.ParentGroup?.InferredId ?? 0;
                    var node = new MarketGroupNode
                    {
                        Name         = group.marketGroupName,
                        NodeID       = group.marketGroupID,
                        ParentNodeID = group.parentGroupID
                    };

                    _marketItemNodes.Nodes.Add(node);
                }
                #endregion

                #region Market Items

                var items = eie.invTypes;
                items.Load();

                //var items = _eaw.GetMarketTypes().Result;

                foreach (var item in items)
                {
                    switch (item.marketGroupID)
                    {
                    case 2155:
                        continue;

                    case null:
                        continue;

                    case 354496:
                        continue;

                    case 354341:
                        continue;

                    case 356922:
                        continue;

                    case 354395:
                        continue;

                    case 354396:
                        continue;
                    }

                    var node = new MarketItemNode
                    {
                        Name         = item.typeName,
                        NodeID       = item.typeID + 2000000000000000,
                        ParentNodeID = item.marketGroupID
                    };

                    _marketItemNodes.Nodes.Add(node);
                }

                #endregion
            }

            locationTreeView.ItemsSource = _locationNodes.Nodes;
            locationTreeView.Columns["Name"].SortOrder = ColumnSortOrder.Ascending;

            locationTreeView.View.NodeChanged += NodeChecked;


            marketItemTreeView.ItemsSource = _marketItemNodes.Nodes;
            marketItemTreeView.Columns["Name"].SortOrder = ColumnSortOrder.Ascending;
        }