private void OnResCompleted(bool result, IRes res) { TreeNode <NodeData> node = FindNode(LoadUrlHelper.AssetUrl2NodePath(res.Url), jsonTree.Head); if (result) { node.Data.State = NodeDataState.Downloaded; } else { node.Data.State = NodeDataState.Unload; } dirView.UpdateItem(node.Data.Name, node.Data.State); }
private void ParseLoadJson(bool result, IRes res) { string path = LoadUrlHelper.JsonUrl2NodePath(res.Url); TreeNode <NodeData> node = FindNode(path, jsonTree.Head); if (!result) { node.Data.State = NodeDataState.Unload; return; } if (res.Datas == null) { return; } string str = Encoding.UTF8.GetString(res.Datas); if (str != null) { path = path + ResSuffix; LoadUrlHelper.CreateDirIfNotFound(path, true); JsonData datas = JsonParser.GetData(str); node.Data.State = NodeDataState.Downloaded; TraverseCreate(datas, node, true, NodeDataState.Loading); //Check(jsonTree.Head); List <TreeNode <NodeData> > childs = node.Childs; if (childs != null && childs.Count > 0) { string[] urls = new string[childs.Count]; for (int i = 0; i < childs.Count; i++) { urls[i] = LoadUrlHelper.GetAssetUrl(path + '/' + childs[i].Data.Name); } LoadAssets(urls, node.Data.Name + ResSuffix); } ShowNodeDirItems(); } }
public void LoadTree(TreeNode <NodeData> node) { if (node.Data.State == NodeDataState.Unload) { List <TreeNode <NodeData> > loads = new List <TreeNode <NodeData> >(); TraverseSelect(node, loads); GenericTree <NodeData> .Traverse(node, (nd) => nd.Data.State = NodeDataState.Loading); string[] urls = new string[loads.Count]; for (int i = 0; i < loads.Count; i++) { urls[i] = LoadUrlHelper.GetJsonUrl(GetPathWithoutRoot(loads[i]) + suffix); } ILoader loader = DownloadManager.Instance.GetDownloader(node.Data.Name, urls, ResType.Json, ParseLoadJson); loader.RegisterEvent(progressCtl.LoaderFinish); if (loads.Count > 0) { progressCtl.AddLoader(loader); Debug($"新增{loads.Count}个请求"); } } }