// 获取指定路径下所有可用的 Custom 模式地图绝对路径及其 UID ,但不做文件完整性检测。
    public static ScenarioMapDesc[] GetMapList(string path)
    {
        string[] maps = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly);
        List <ScenarioMapDesc> mapList = new List <ScenarioMapDesc> ();

        foreach (string map in maps)
        {
            string uidfile = map + "/MAP.uid";
            if (File.Exists(uidfile))
            {
                string uid = Pathea.IO.StringIO.LoadFromFile(uidfile, System.Text.Encoding.UTF8);
                uid = uid.Trim();

                if (uid.Length != 32)
                {
                    continue;
                }

                if (mapList.Find(iter => iter.UID == uid) != null)
                {
                    continue;
                }

                ScenarioMapDesc desc = new ScenarioMapDesc(uid, map);
                mapList.Add(desc);
                detectedMaps[uid] = desc;
            }
        }
        return(mapList.ToArray());
    }
    // 检测指定 UID 的地图文件完整性。
    // 将开启一个新的线程,返回 ScenarioIntegrityCheck 对象以供读取检测结果。
    public static ScenarioIntegrityCheck CheckIntegrityByUID(string uid, string rootpath)
    {
        ScenarioMapDesc desc = GetMapByUID(uid, rootpath);

        if (desc == null)
        {
            return(new ScenarioIntegrityCheck(""));
        }
        return(new ScenarioIntegrityCheck(desc.Path));
    }
    void GetMapItemDescs(List <MapItemDescs> mapItemDesces, string dir)
    {
        DirectoryInfo dirInfo = new DirectoryInfo(dir);

        if (!dirInfo.Exists)
        {
            Debug.LogWarning("The dir[" + GameConfig.CustomDataDir + "] is not exsit");
            return;
        }

        DirectoryInfo[] subDirInfos = dirInfo.GetDirectories();

        if (subDirInfos == null || subDirInfos.Length == 0)
        {
            return;
        }


        mMapDescs.Clear();
        ScenarioMapDesc[] map_descs = ScenarioMapUtils.GetMapList(dir);
        for (int i = 0; i < map_descs.Length; i++)
        {
            mMapDescs.Add(map_descs[i].Name, map_descs[i]);
        }

        foreach (DirectoryInfo info in subDirInfos)
        {
            MapItemDescs midcs = new MapItemDescs();
            if (mMapDescs.ContainsKey(info.Name))
            {
                ScenarioMapDesc desc = mMapDescs[info.Name];
                midcs.IsDir = false;
                midcs.Name  = desc.Name;
                midcs.Path  = desc.Path;
                midcs.UID   = desc.UID;
            }
            else
            {
                midcs.IsDir = true;
                midcs.Name  = info.Name;
                midcs.Path  = info.FullName;
                midcs.UID   = null;
            }

            mapItemDesces.Add(midcs);
        }
    }
Beispiel #4
0
        protected override void Load()
        {
            //            YirdData customData = CustomGameData.Mgr.Instance.GetYirdData(mGameName, yirdName);
            ////
            //            LoadCustom(newGame, customData);
            ScenarioMapDesc desc       = ScenarioMapUtils.GetMapByUID(mUID, GameConfig.CustomDataDir);
            CustomGameData  customData = CustomGameData.Mgr.Instance.GetCustomData(mUID, desc.Path);

            if (customData != null)
            {
                CustomGameData.Mgr.Instance.curGameData = customData;
                LoadCustom(newGame, customData);
            }
            else
            {
                Debug.LogError("Error");
            }
        }
    // 尝试获取指定 UID 的地图路径,不做文件完整性检测。
    public static ScenarioMapDesc GetMapByUID(string uid, string rootpath)
    {
        if (detectedMaps.ContainsKey(uid))
        {
            return(detectedMaps[uid]);
        }
        string[] mapuids = Directory.GetFiles(rootpath, "MAP.uid", SearchOption.AllDirectories);

        foreach (string mapuid in mapuids)
        {
            string tstuid = Pathea.IO.StringIO.LoadFromFile(mapuid, System.Text.Encoding.UTF8);
            tstuid = tstuid.Trim();
            if (tstuid == uid && tstuid.Length == 32)
            {
                FileInfo        fi     = new FileInfo(mapuid);
                ScenarioMapDesc retval = new ScenarioMapDesc(uid, fi.DirectoryName);
                detectedMaps[uid] = retval;
                return(retval);
            }
        }

        return(null);
    }