Beispiel #1
0
        /// <summary>
        /// 取映射的类型。
        /// </summary>
        /// <param name="MapKey">映射键。</param>
        /// <param name="InterfaceName">接口名</param>
        /// <returns></returns>
        public static TypeMap GetTypeMap(string MapKey)
        {
            RegisterTypeMap();

            TypeMap typeMap = null;

            var MapQuery = MapList.Where(ww => ww.MapConfigKey != null && ww.MapConfigKey == MapKey);

            typeMap = MapQuery.FirstOrDefault();

            return(typeMap);
        }
Beispiel #2
0
 public Game(DirectoryInfo gameDir)
 {
     MountPath = gameDir;
     LoadMapList();
     LoadMapCycle();
     foreach (var map in gameDir.Combine("maps").GetFiles("*.*").Where(s => s.Extension == ".bsp" || s.Extension == ".vmf"))
     {
         var _map = new Map(map);
         // if (!_map.Background) _map.Order = MapList.FindIndex(a => a == _map.Name) + 1;
         // else _map.Hidden = true;
         Maps.Add(_map);
     }
     foreach (var map in MapList.Where(m => !Map.isBackground(m)).ToList())
     {
         var _map = Maps.Where(m => m.Name == map).FirstOrDefault();
         if (_map is null)
         {
             Maps.Add(new Map(map));
         }
     }
     foreach (var map in MapCycle)
     {
         var _map = Maps.Where(m => m.Name == map).FirstOrDefault();
         if (_map is null)
         {
             Maps.Add(new Map(map));
         }
     }
     GameInfoPath = gameDir.CombineFile("gameinfo.txt");
     if (!GameInfoPath.Exists)
     {
         throw new System.Exception("Could not find gameinfo.txt");
     }
     try
     {
         var text     = File.ReadAllText(GameInfoPath.FullName);
         var gameInfo = VdfConvert.Deserialize(text);
         var json     = gameInfo.ToJson(new VdfJsonConversionSettings()
         {
             ObjectDuplicateKeyHandling = DuplicateKeyHandling.Ignore, ValueDuplicateKeyHandling = DuplicateKeyHandling.Ignore
         });
         var hi = new JObject(json);
         Logger.Warn(hi.ToString());
         GameInfo = hi.ToObject <GameInfoWrapper>().GameInfo;
         Logger.Warn(GameInfo.ToString());
         Name = GameInfo.Game ?? Name;
         if (Name.IsNullOrWhiteSpace())
         {
             Name = GameInfo.Name ?? Name;
         }
         if (Name.IsNullOrWhiteSpace())
         {
             Name = GameInfo.Title ?? Name;
         }
         if (Name.IsNullOrWhiteSpace())
         {
             Name = GameInfo.Title2 ?? Name;
         }
         Icon      = GameInfo.Icon ?? Icon;
         Developer = GameInfo.Developer ?? null;
         Homepage  = GameInfo.Homepage ?? null;
         if (Homepage.IsNullOrWhiteSpace())
         {
             Homepage = GameInfo.DeveloperUrl ?? null;
         }
         if (GameInfo.Type.ToLower() == "singleplayer_only")
         {
             Type = GameType.SINGLEPLAYER_ONLY;
         }
         else if (GameInfo.Type.ToLower() == "multiplayer_only")
         {
             Type = GameType.MULTIPLAYER_ONLY;
         }
         SupportsVR = GameInfo.SupportsVR == 1;
         if (GameInfo.Hidden_maps != null)
         {
             foreach (var map in Maps)
             {
                 map.Hidden = GameInfo.Hidden_maps.ContainsKey(map.Name);
                 // if (map.Hidden) map.Order = -1;
             }
         }
     }
     catch (UnauthorizedAccessException ex)
     {
         Logger.Error(ex.ToString());
         Name = gameDir.Name;
     }
     if (MapList.Count > 0)
     {
         var maplist_nobg = MapList.Where(m => !Map.isBackground(m)).ToList();
         foreach (var map in Maps)
         {
             if (!map.Hidden && maplist_nobg.Contains(map.Name))
             {
                 map.Order = maplist_nobg.IndexOf(map.Name) + 1;
             }
         }
     }
     else
     {
         foreach (var(chapter, i) in gameDir.Combine("cfg").GetFiles("chapter*.cfg").WithIndex())
         {
             // ?? int.Parse(chapter.Name.GetDigits());
             var map    = chapter.ReadAllLines()[0].Split(" ").Last();
             var hasMap = Maps.Where(m => m.Name == map).FirstOrDefault();
             if (hasMap is null)
             {
                 Maps.Add(new Map(map)
                 {
                     Order = i + 1
                 });
             }
             else
             {
                 hasMap.Order = i + 1;
             }
         }
     }
     // Maps.Sort((x, y) => x.Name.CompareTo(y.Name));
     // Maps.Reverse();
     /*if (MapList.Count > 0)*/
     // Maps.Sort((x, y) => x.Order.CompareTo(y.Order));
 }