static private void OnAvatarAttriSync(AttachedInfo info) { if (thePlayer == null) { return; } thePlayer.SynEntityAttrs(info); }
static private void OnOtherAttriSync(AttachedInfo info) { var entity = MogoWorld.Entities.GetValueOrDefault(info.id, null); if (entity != null) { entity.SynEntityAttrs(info); } }
public void SynEntityAttrs(AttachedInfo info) { if (info.props == null) { return; } var type = this.GetType(); foreach (var prop in info.props) { SetAttr(prop.Property, prop.Value, type); } }
public void SynEntityAttrs(AttachedInfo info) { if (info.props == null) { return; } var type = this.GetType(); foreach (var prop in info.props) { //Mogo.Util.LoggerHelper.Debug("SynEntityAttrs:------ " + prop.Key + " " + prop.Value); SetAttr(prop.Key, prop.Value, type); } //if (!MogoWorld.isLoadingScene) //{ // UpdateView(); //} //else //{ // hasCache = true; //} }
public void Query(string _string, tabfun.Action_1_param <Classes> queryResult, bool isSearch = false) { var preticks = System.DateTime.Now.Ticks; Debug.Log(" <<<<<<<<<<<< 开始检查... 参数:" + _string); var rootfiledata = new FileData("tabfun/path.json", FileData.FileType.Rootfile); string path = string.Empty; if (Application.platform == RuntimePlatform.Android) { path = Application.streamingAssetsPath + "/" + rootfiledata.Filepath; } else { path = "file://" + Application.streamingAssetsPath + "/" + rootfiledata.Filepath; } tabfun.helper.Coroutine.Instance.StartWWW(new WWW(path), (www) => { if (www.error == null) { var jsondata = JsonMapper.ToObject(tabfun.helper.Coroutine.Instance.GetJsonString(www)); if (jsondata == null) { return; } tabfun.helper.LitJson.FindKey(jsondata, "query_drugs", (data) => { if (data == null) { return; } tabfun.helper.LitJson.Each(data, (key, value) => { if (value == null) { return; } tabfun.helper.LitJson.FindKey(value as JsonData, "contain", (containJsonData) => { if (containJsonData == null) { return; } tabfun.helper.LitJson.Each(containJsonData, (k, v) => { var names = v.ToString().Split('_'); bool isFound = false; foreach (var name in names) { if (name == _string) { isFound = true; break; } } if (isFound) { var query_drug_root = (value as JsonData); var drugspath = query_drug_root["path"]["drugs"].ToString(); Debug.Log(" >>>>>>>>>>>> " + _string + " 所在key:" + key + " 所在的drugs路径:" + drugspath); string p = string.Empty; if (Application.platform == RuntimePlatform.Android) { p = Application.streamingAssetsPath + "/" + drugspath; } else { p = "file://" + Application.streamingAssetsPath + "/" + drugspath; } tabfun.helper.Coroutine.Instance.StartWWW(new WWW(p), (drugswww) => { if (drugswww.error == null) { Debug.Log(" 加载完成! 药品json文件: " + p); var drugsjsondata = JsonMapper.ToObject(tabfun.helper.Coroutine.Instance.GetJsonString(drugswww)); if (drugsjsondata == null) { return; } var returnClasses = new Classes(); var drugname = drugsjsondata["name"].ToString(); var drugs = drugsjsondata["drugs"]; var classes = drugsjsondata["classes"]; var drug = drugs[names[0]]; var drugclass = drug["所属类药"] == null ? "" : drug["所属类药"].ToString(); var drugparentclass = drug["所属父类药"] == null ? "" : drug["所属父类药"].ToString(); tabfun.Action_1_param <JsonData> findresult = (jd) => { returnClasses.Name = jd["名称"] == null ? string.Empty : jd["名称"].ToString(); returnClasses.TheSystemOfDrug = jd["所属系统药"] == null ? string.Empty : jd["所属系统药"].ToString(); returnClasses.TheFunctionalMedicine = jd["所属功能药"] == null ? string.Empty : jd["所属功能药"].ToString(); returnClasses.OnBehalfOfTheDrugName = jd["代表药物"] == null ? string.Empty : jd["代表药物"].ToString(); switch (jd["showType"].ToString()) { case "0": returnClasses.Mtype = Classes.ModelType.UnknownType; break; case "1": { returnClasses.Mtype = Classes.ModelType.BaseStructrueModelType; var infff = jd["信息详情"]; if (infff != null) { returnClasses.Info = new Information(); var infosturcture = infff["自身结构"]; var shiyingzheng = infff["适应症"]; var zhuyishixiang = infff["注意事项"]; var other1 = infff["其他1"]; var other2 = infff["其他2"]; if (infosturcture != null) { foreach (var i in infosturcture) { returnClasses.Info.StructureList.Add(i.ToString()); } } if (shiyingzheng != null) { foreach (var i in shiyingzheng) { returnClasses.Info.IndicationsList.Add(i.ToString()); } } if (zhuyishixiang != null) { foreach (var i in zhuyishixiang) { returnClasses.Info.PrecautionsList.Add(i.ToString()); } } if (other1 != null) { returnClasses.Info.Other1 = other1.ToString(); } if (other2 != null) { returnClasses.Info.Other2 = other2.ToString(); } } } break; case "2": returnClasses.Mtype = Classes.ModelType.OnBehalfOfDrugModelType; break; } var subclasses = jd["包含子类"]; if (subclasses != null) { foreach (var name in subclasses) { returnClasses.SubClassesName.Add(name.ToString()); } } var includedrugs = jd["包含药物"]; if (includedrugs != null) { tabfun.helper.LitJson.Each(includedrugs, (includedrugsKey, includedrugsValue) => { Debug.Log("该类包含的所有药品:" + includedrugsValue.ToString()); var drugjsondata = drugs[includedrugsValue.ToString()]; var n = drugjsondata["药品名称"] == null ? string.Empty : drugjsondata["药品名称"].ToString(); if (!isSearch || (isSearch && names[0] == n) || (isSearch && returnClasses.Mtype == Classes.ModelType.OnBehalfOfDrugModelType && returnClasses.OnBehalfOfTheDrugName == n)) { var durg = new Drug(); durg.Name = n; durg.TheSystemOfDrug = drugjsondata["所属系统药"] == null ? string.Empty : drugjsondata["所属系统药"].ToString(); durg.TheFunctionalMedicine = drugjsondata["所属功能药"] == null ? string.Empty : drugjsondata["所属功能药"].ToString(); durg.TheNameOfTheClass = drugjsondata["所属类药"] == null ? string.Empty : drugjsondata["所属类药"].ToString(); durg.TheNameOfTheParentClass = drugjsondata["所属父类药"] == null ? string.Empty : drugjsondata["所属父类药"].ToString(); var info = drugjsondata["知识点"]; if (info != null) { durg.Info = new Information(); var infosturcture = info["自身结构"]; var shiyingzheng = info["适应症"]; var zhuyishixiang = info["注意事项"]; var other1 = info["其他1"]; var other2 = info["其他2"]; if (infosturcture != null) { foreach (var i in infosturcture) { durg.Info.StructureList.Add(i.ToString()); } } if (shiyingzheng != null) { foreach (var i in shiyingzheng) { durg.Info.IndicationsList.Add(i.ToString()); } } if (zhuyishixiang != null) { foreach (var i in zhuyishixiang) { durg.Info.PrecautionsList.Add(i.ToString()); } } if (other1 != null) { durg.Info.Other1 = other1.ToString(); } if (other2 != null) { durg.Info.Other2 = other2.ToString(); } } var fujiainfo = drugjsondata["附加信息"]; if (fujiainfo != null) { foreach (var i in fujiainfo) { var item = i as JsonData; var attachedinfo = new AttachedInfo(); attachedinfo.TrackableName = item["识别图"] == null ? string.Empty : item["识别图"].ToString(); attachedinfo.ModelName = item["模型名称"] == null ? string.Empty : item["模型名称"].ToString(); attachedinfo.PngName = item["png"] == null ? string.Empty : item["png"].ToString(); durg.AttachedInfoList.Add(attachedinfo); } } returnClasses.Drugs.Add(durg); } }); List <Drug> l = new List <Drug>(); foreach (var d in returnClasses.Drugs) { l.Add(d); } returnClasses.Drugs.Clear(); returnClasses.Drugs.Add(l.Find((d) => { return(d.Name == names[0]); })); foreach (var d in l) { if (d.Name != names[0]) { returnClasses.Drugs.Add(d); } } l.Clear(); } var attached = jd["附加信息"]; if (attached != null) { foreach (var i in attached) { var item = i as JsonData; var attachedinfo = new AttachedInfo(); attachedinfo.TrackableName = item["识别图"] == null ? string.Empty : item["识别图"].ToString(); attachedinfo.ModelName = item["模型名称"] == null ? string.Empty : item["模型名称"].ToString(); attachedinfo.PngName = item["png"] == null ? string.Empty : item["png"].ToString(); returnClasses.AttachedInfoList.Add(attachedinfo); } } Debug.Log(" >>>>>>>>>> 查询 " + _string + " 所消耗时间 " + (System.DateTime.Now.Ticks - preticks) / 10000.0f + "微妙"); queryResult(returnClasses); }; tabfun.helper.LitJson.FindKey(classes, drugclass, (jd) => { if (jd == null) { tabfun.helper.LitJson.FindKey(classes, drugparentclass, (findvalue) => { if (findvalue != null) { findresult(findvalue); } }); } else { findresult(jd); } }); } else { Debug.Log(" 加载失败! 药品json文件路径:" + p); } }); } }); }); }); }); } else { Debug.Log(" <<<<<<<<<<<< 加载失败:" + rootfiledata.Filepath); } }); }
/// <summary> /// 附加一个实现器 /// </summary> /// <param name="info"></param> public void AttachImplementor(AttachedInfo info) { this.attachedImplementorInfo.Add(info); }