Esempio n. 1
0
 static private void OnAvatarAttriSync(AttachedInfo info)
 {
     if (thePlayer == null)
     {
         return;
     }
     thePlayer.SynEntityAttrs(info);
 }
Esempio n. 2
0
    static private void OnOtherAttriSync(AttachedInfo info)
    {
        var entity = MogoWorld.Entities.GetValueOrDefault(info.id, null);

        if (entity != null)
        {
            entity.SynEntityAttrs(info);
        }
    }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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;
            //}
        }
Esempio n. 5
0
    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);
 }