Exemple #1
0
    static bool LoadTableToCache()
    {
        string path = Application.dataPath + TriggerAreaTableFilePath;

        if (!File.Exists(path))
        {
            EditorUtility.DisplayDialog("提示", "文件 " + path + " 不存在,无法加载", "确定");
            return(false);
        }

        FileStream   rfs = new FileStream(path, FileMode.Open);
        StreamReader sr  = new StreamReader(rfs, Encoding.GetEncoding("GB2312"));

        mDic.Clear();

        sr.ReadLine();
        sr.ReadLine();//skip

        while (!sr.EndOfStream)
        {
            string   curLine = sr.ReadLine();
            string[] values  = curLine.Split('\t');

            TriggerAreaData data = new TriggerAreaData
            {
                Id      = int.Parse(values[0]),
                SceneId = int.Parse(values[1]),
                X       = float.Parse(values[2]),
                Y       = float.Parse(values[3]),
                R       = float.Parse(values[4])
            };

            if (!mDic.ContainsKey(data.SceneId))
            {
                mDic[data.SceneId] = new List <TriggerAreaData>();
            }

            mDic[data.SceneId].Add(data);
        }
        rfs.Close();
        sr.Close();


        return(true);
    }
Exemple #2
0
    public void Save()
    {
        if (!LoadTableToCache())
        {
            return;
        }

        if (!mDic.ContainsKey(SceneId.intValue))
        {
            mDic[SceneId.intValue] = new List <TriggerAreaData>();
        }
        mDic[SceneId.intValue].Clear();

        var objs = GameObject.FindObjectsOfType <TriggerArea>();
        {
            var __array3       = objs;
            var __arrayLength3 = __array3.Length;
            for (int __i3 = 0; __i3 < __arrayLength3; ++__i3)
            {
                var obj = __array3[__i3];
                {
                    TriggerAreaData data = new TriggerAreaData
                    {
                        Id      = obj.Id,
                        SceneId = obj.SceneId,
                        X       = obj.gameObject.transform.position.x,
                        Y       = obj.gameObject.transform.position.z,
                        R       = obj.Radius
                    };
                    mDic[SceneId.intValue].Add(data);
                }
            }
        }

        SortedDictionary <int, TriggerAreaData> dict = new SortedDictionary <int, TriggerAreaData>();
        {
            // foreach(var pair in mDic)
            var __enumerator4 = (mDic).GetEnumerator();
            while (__enumerator4.MoveNext())
            {
                var pair = __enumerator4.Current;
                {
                    {
                        var __list6      = pair.Value;
                        var __listCount6 = __list6.Count;
                        for (int __i6 = 0; __i6 < __listCount6; ++__i6)
                        {
                            var area = __list6[__i6];
                            {
                                if (dict.ContainsKey(area.Id))
                                {
                                    string str = string.Format("Id{0}重复", area.Id);
                                    EditorUtility.DisplayDialog("提示", str, "确定");
                                    return;
                                }
                                dict.Add(area.Id, area);
                            }
                        }
                    }
                }
            }
        }

        //SortedDictionary<>;
        string path = Application.dataPath + TriggerAreaTableFilePath;

        if (File.Exists(path))
        {
            File.Delete(path);
        }
        FileStream   wfs = new FileStream(path, FileMode.CreateNew);
        StreamWriter sw  = new StreamWriter(wfs, Encoding.GetEncoding("GB2312"));

        sw.WriteLine("INT\tINT\tFLOAT\tFLOAT\tFLOAT");
        sw.WriteLine("索引ID\t场景ID\tX坐标\tZ坐标\t半径");
        {
            // foreach(var data in dict)
            var __enumerator5 = (dict).GetEnumerator();
            while (__enumerator5.MoveNext())
            {
                var data = __enumerator5.Current;
                {
                    sw.WriteLine(data.Value.GetString());
                }
            }
        }

        sw.Close();
        wfs.Close();

        EditorUtility.DisplayDialog("提示", "保存文件成功[" + path + "]", "确定");
    }