Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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;
        }
Esempio n. 3
0
        /// <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;
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        /// <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);
                }
            }
        }
Esempio n. 6
0
        /// <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);
                }
            }
        }