/// <summary> /// Retrieves the continent information for the given map ID /// </summary> /// <param name="mapId">The ID of a zone</param> /// <returns>The continent data</returns> public Data.Entities.Continent GetContinentByMap(int mapId) { Data.Entities.Continent result = null; if (this.MapContinentsCache.ContainsKey(mapId)) { int continentId; this.MapContinentsCache.TryGetValue(mapId, out continentId); this.ContinentsCache.TryGetValue(continentId, out result); } if (result == null) { // If we didn't get the continent from our cache of Map ID -> Continent ID, // request the map info and add it our cache try { var map = LocalizationUtil.IsSupportedCulture() ? GW2.V2.Maps.ForCurrentUICulture().Find(mapId) : GW2.V2.Maps.ForDefaultCulture().Find(mapId); if (map != null) { this.MapContinentsCache.TryAdd(mapId, map.ContinentId); this.ContinentsCache.TryGetValue(map.ContinentId, out result); } } catch (Exception ex) { // Don't crash if something goes wrong, but log the error logger.Error(ex); } } return(result); }
/// <summary> /// Retrieves the continent information for the given continent ID /// </summary> /// <param name="mapId">The ID of a continent</param> /// <returns>The continent data</returns> public Data.Entities.Continent GetContinent(int continentId) { try { // Get all continents var continent = GW2.V2.Continents.ForCurrentUICulture().Find(continentId); if (continent != null) { Data.Entities.Continent cont = new Data.Entities.Continent(continentId); cont.Name = continent.Name; cont.Height = continent.ContinentDimensions.Height; cont.Width = continent.ContinentDimensions.Width; cont.FloorIds = continent.FloorIds; cont.MaxZoom = continent.MaximumZoom; cont.MinZoom = continent.MinimumZoom; return cont; } } catch (Exception ex) { // Don't crash if something goes wrong, but log the error logger.Error(ex); } return null; }
/// <summary> /// Retrieves continent information for all continents /// </summary> /// <returns>a collection of continents</returns> public IEnumerable<Data.Entities.Continent> GetContinents() { List<Data.Entities.Continent> continents = new List<Data.Entities.Continent>(); try { var data = GW2.V2.Continents.ForCurrentUICulture().FindAll(); foreach (var continent in data.Values) { Data.Entities.Continent cont = new Data.Entities.Continent(continent.ContinentId); cont.Name = continent.Name; cont.Height = continent.ContinentDimensions.Height; cont.Width = continent.ContinentDimensions.Width; cont.FloorIds = continent.FloorIds; cont.MaxZoom = continent.MaximumZoom; cont.MinZoom = continent.MinimumZoom; continents.Add(cont); } } catch (Exception ex) { // Don't crash if something goes wrong, but log the error logger.Error(ex); } return continents; }
/// <summary> /// Retrieves the continent information for the given continent ID /// </summary> /// <param name="mapId">The ID of a continent</param> /// <returns>The continent data</returns> public Data.Entities.Continent GetContinent(int continentId) { Data.Entities.Continent result = null; if (this.ContinentsCache.ContainsKey(continentId)) { this.ContinentsCache.TryGetValue(continentId, out result); } return(result); }
/// <summary> /// Initializes the zone service /// </summary> public void Initialize() { if (Monitor.TryEnter(this.initLock)) { try { if (this.MapNamesCache.IsEmpty) { foreach (var mapName in LocalizationUtil.IsSupportedCulture() ? GW2.V2.Maps.ForCurrentUICulture().FindAll() : GW2.V2.Maps.ForDefaultCulture().FindAll()) { this.MapNamesCache.TryAdd(mapName.Key, mapName.Value.MapName); } } if (this.ContinentsCache.IsEmpty) { // Get all continents var continents = LocalizationUtil.IsSupportedCulture() ? GW2.V2.Continents.ForCurrentUICulture().FindAll() : GW2.V2.Continents.ForDefaultCulture().FindAll(); foreach (var continent in continents.Values) { Data.Entities.Continent cont = new Data.Entities.Continent(continent.ContinentId); cont.Name = continent.Name; cont.Height = continent.ContinentDimensions.Height; cont.Width = continent.ContinentDimensions.Width; cont.FloorIds = continent.FloorIds; cont.MaxZoom = continent.MaximumZoom; cont.MinZoom = continent.MinimumZoom; this.ContinentsCache.TryAdd(cont.Id, cont); } } } finally { Monitor.Exit(this.initLock); } } }
/// <summary> /// Initializes the zone service /// </summary> public void Initialize() { if (Monitor.TryEnter(this.initLock)) { try { if (this.MapNamesCache.IsEmpty) { foreach (var mapName in GW2.V1.MapNames.ForCurrentUICulture().FindAll()) { this.MapNamesCache.TryAdd(mapName.Key, mapName.Value); } } if (this.ContinentsCache.IsEmpty) { // Get all continents var continents = GW2.V2.Continents.ForCurrentUICulture().FindAll(); foreach (var continent in continents.Values) { Data.Entities.Continent cont = new Data.Entities.Continent(continent.ContinentId); cont.Name = continent.Name; cont.Height = continent.ContinentDimensions.Height; cont.Width = continent.ContinentDimensions.Width; cont.FloorIds = continent.FloorIds; cont.MaxZoom = continent.MaximumZoom; cont.MinZoom = continent.MinimumZoom; this.ContinentsCache.TryAdd(cont.Id, cont); } } } finally { Monitor.Exit(this.initLock); } } }