private void FilterShowResult() { var lpGrid = XamlComponentsManager.GetManager().Get <Grid>(XamlComponentsType.LpGrid); // 获取数据库 var newTypeIDs = LocalConfigLoadManager.GetConfigClass <TypeIDDBClass>(); List <LpGroupTypeShow> groups = new List <LpGroupTypeShow>(); foreach (var item in _lpItemsBuffer) { var iShow = new LpGroupTypeShow(); // 获取物品名称和数量 newTypeIDs.TryGet(item.type_id, out string name); iShow.Name = name; iShow.Count = item.quantity; iShow.IskCost = item.isk_cost; iShow.LpCpost = item.lp_cost; if (item.required_items != null) { // 前置名和前置数量,以及前置总价 StringBuilder preNames = new StringBuilder(); StringBuilder preCounts = new StringBuilder(); foreach (var preItem in item.required_items) { _dictLpItemRequestData.TryGetValue(preItem.type_id, out var jsonfpi); if (jsonfpi != null) { // 这里需要有个变量来控制前置消耗是按照卖单还是买单 if (!Signal.LpPreSale) { iShow.PreCost += jsonfpi.buy.max * preItem.quantity; } else { iShow.PreCost += jsonfpi.sell.min * preItem.quantity; } } newTypeIDs.TryGet(preItem.type_id, out string preN); preNames.Append($"{preN}&"); preCounts.Append($"{preItem.quantity}&"); } preNames.RemoveLast(1); iShow.PreName = preNames.ToString(); preCounts.RemoveLast(1); iShow.PreCount = preCounts.ToString(); } _dictLpItemRequestData.TryGetValue(item.type_id, out var jsonfi); if (jsonfi != null) { iShow.Buy = jsonfi.buy.max * item.quantity; iShow.Sale = jsonfi.sell.min * item.quantity; } groups.Add(iShow); } var queryLpGroupVM = lpGrid.Resources["queryLpGroupVM"] as ViewModel.Query.QueryLpGroupVM; queryLpGroupVM.TypeShowSources = groups; StatusManager.GetManager()?.ShowMsg($"请求数据完毕....."); }
/// <summary> /// 窗口绘制完毕 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Window_ContentRendered(object sender, EventArgs e) { // 加载预选数据 LocalConfigLoadManager.ReadYaml <Dictionary <int, NewTypeID> >("Resources/newTypeIDs.yaml", LocalConfigLoadManager.OnReadYamlFinished_NewTypeID); LocalConfigLoadManager.ReadYaml <Dictionary <int, NewMarketGroup> >("Resources/newMarketGroups.yaml", LocalConfigLoadManager.OnReadYamlFinished_NewMarketGroup); LocalConfigLoadManager.ReadYaml <List <Model.DataSources.Region> >("Resources/regionGalaxy.yaml", LocalConfigLoadManager.OnReadYamlFinished_RegionGalaxy); LocalConfigLoadManager.ReadYaml <Dictionary <int, NewNpcCorporations> >("Resources/newNpcCorporations.yaml", LocalConfigLoadManager.OnReadYamlFinished_NewNpcCorpGroup); LocalConfigLoadManager.ReadYaml <Dictionary <int, NewBuleprints> >("Resources/newBlueprints.yaml", LocalConfigLoadManager.OnReadYamlFinished_NewBlueprintsGroup); LocalConfigLoadManager.ReadYaml <Dictionary <int, TypeMaterials> >("Resources/typeMaterials.yaml", LocalConfigLoadManager.OnReadYamlFinished_TypeMaterials); LayoutSwitchManager.GetManager()?.Init(); }
/// <summary> /// 蓝图制造组被选中,物品列表 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ManufacturingGroupTree_Selected(object sender, RoutedEventArgs e) { var node = (e.OriginalSource as TreeViewItem).Header as MarketGroupNode; if (node != null && !node.IsGroup && node.TypeID != null) { // MessageBox.Show(node.TypeID.ID.ToString()); LocalConfigLoadManager.SS(node.TypeID.ID); } //if (node != null && node.IsGroup && node.Group.hasTypes) // QueryManager.QueryStart(QueryType.Market, QueryType.Market.ToString(), node); //else if (node != null && !node.IsGroup && node.TypeID != null) // QueryManager.QueryStart(QueryType.Market, QueryType.Market.ToString(), node.TypeID.ID.ToString()); }
protected override void Init() { base.Init(); var treeView = XamlComponentsManager.GetManager().Get <TreeView>(XamlComponentsType.MarketGroupTree); if (treeView != null) { treeView.ItemsSource = LocalConfigLoadManager.GroupMarketTypeIDs(); } try { var marketGrid = XamlComponentsManager.GetManager().Get <Grid>(XamlComponentsType.MarketGrid); (marketGrid?.Resources["rgVM"] as ViewModel.DataSources.MarketGroupRegionGalaxyVM).Regions = LocalConfigLoadManager.GetConfigClass <RegionGalaxyDBClass>().Regions; } catch (Exception exp) { System.Windows.MessageBox.Show(exp.Message); } }
protected override void Init() { base.Init(); var treeView = XamlComponentsManager.GetManager().Get <TreeView>(XamlComponentsType.ManufacturingGroupTree); try { if (treeView != null) { // 想用多线程,就要添加VM List <Datas.MarketGroupNode> nodes = new List <Datas.MarketGroupNode>(); nodes.Add(LocalConfigLoadManager.GroupMarketTypeIDs()?[0]); treeView.ItemsSource = nodes; } } catch (Exception exp) { System.Windows.MessageBox.Show(exp.Message); } }
private void QueryMarketGroupCompleteMuti(string result) { counter++; var rList = JsonTools.ParseTo <List <JsonFormatType> >(result); // 更新UI var listView = XamlComponentsManager.GetManager().Get <ListView>(XamlComponentsType.MarketGroupListView); var newTypeIDs = LocalConfigLoadManager.GetConfigClass <TypeIDDBClass>(); try { if (listView != null) { lock (_queryMarketGroupResults) { foreach (var node in rList) { newTypeIDs.TryGet(node.buy.forQuery.types[0], out string name); _queryMarketGroupResults.Add(new MarketGroupTypeShow(name, node.sell.min, node.buy.max)); } } } StatusManager.GetManager()?.ShowMsg($"正在查询第[{counter}/{times}]批次数据....."); } catch { } try { if (counter >= times) { querying = false; var marketGrid = XamlComponentsManager.GetManager().Get <Grid>(XamlComponentsType.MarketGrid); var queryMarketGroupVM = marketGrid.Resources["queryMarketGroupVM"] as ViewModel.Query.QueryMarketGroupVM; queryMarketGroupVM.TypeShowSources = _queryMarketGroupResults; StatusManager.GetManager()?.ShowMsg("查询完毕...."); } } catch { } }
private void ThreadSearchQueryIDs() { List <string> ids = new List <string>(); int index = 0; int counter = 0; StringBuilder sb = new StringBuilder(); try { StatusManager.GetManager()?.ShowMsg("解析数据中....."); var typeIDs = LocalConfigLoadManager.GetConfigClass <TypeIDDBClass>().TypeIDs; var marketGroupDB = LocalConfigLoadManager.GetConfigClass <MarketGroupDBClass>().MarketGroupDB; var itemTypeFilterVM = XamlComponentsManager.GetManager().Get <Grid>(XamlComponentsType.RootGrid).Resources["itemTypeFilterVM"] as ItemTypeFilterVM; foreach (var no in typeIDs.Values) { // 这里需要处理一下,因为服务端只支持单次处理200个 if (no != null && no.name != null && no.name.Contains(_mgSearchStr)) { // 获取所在组,找到最上层的组 marketGroupDB.TryGetValue(no.marketGroupID, out var group); if (group == null) { continue; } var resultGroup = GetRoot(group, marketGroupDB); Filter.ItemTypeFilterDict.TryGetValue(itemTypeFilterVM.SelectedItem, out var rootID); if (rootID == resultGroup.ID) { // 如果是所在组类型,则查询 sb.Append($"{no.ID},"); index++; } } if (index > 199) { counter++; index = 0; ids.Add(sb.RemoveLast(1).ToString()); sb.Clear(); } } } catch (Exception e) { MessageBox.Show(e.Message); } // 处理最后一段数据 ids.Add(sb.RemoveLast(1).ToString()); StatusManager.GetManager()?.ShowMsg("获取远端服务器数据....."); // 设置批次查询计数器与查询状态,使用多线程查询时,禁止对同一个功能的后续查询 // 等待批次处理完毕再进行下面的 counter = 0; times = ids.Count; // 清空数据缓存 _queryMarketGroupResults = new List <MarketGroupTypeShow>(); foreach (var str in ids) { if (string.IsNullOrEmpty(str)) { times--; if (times <= 0) { StatusManager.GetManager()?.ShowMsg("没有匹配到请求的数据,本次请求取消,检查物品类型....."); querying = false; return; } continue; } new Thread(new ThreadStart(() => { HttpRequestManager.SetQueryPost(str, RegionGalaxyID.MarketGroupRegionID, RegionGalaxyID.MarketGroupGalaxyID); HttpRequestManager.Post("NULL", QueryMarketGroupCompleteMuti); })).Start(); Thread.Sleep(100); } }
private void BtnClick_Test(object sender, RoutedEventArgs e) { var co = LocalConfigLoadManager.GetConfigClass <TypeMaterialsDBClass>().TypeMaterials.Count; MessageBox.Show(co.ToString()); }