Beispiel #1
0
        Map CreateBaseMap_i(MapRecord mapEntry)
        {
            Map map;

            if (mapEntry.Instanceable())
            {
                map = new MapInstanced(mapEntry.Id, i_gridCleanUpDelay);
            }
            else
            {
                map = new Map(mapEntry.Id, i_gridCleanUpDelay, 0, Difficulty.None);
            }

            map.DiscoverGridMapFiles();

            i_maps[mapEntry.Id] = map;

            foreach (uint childMapId in _parentMapData[mapEntry.Id])
            {
                map.AddChildTerrainMap(CreateBaseMap_i(CliDB.MapStorage.LookupByKey(childMapId)));
            }

            if (!mapEntry.Instanceable())
            {
                map.LoadRespawnTimes();
                map.LoadCorpseData();
            }

            return(map);
        }
Beispiel #2
0
        public Map CreateBaseMap(uint id)
        {
            Map map = FindBaseMap(id);

            if (map == null)
            {
                lock (this)
                {
                    var entry = CliDB.MapStorage.LookupByKey(id);
                    Contract.Assert(entry != null);

                    if (entry.Instanceable())
                    {
                        map = new MapInstanced(id, i_gridCleanUpDelay);
                    }
                    else
                    {
                        map = new Map(id, i_gridCleanUpDelay, 0, Difficulty.None);
                        map.LoadRespawnTimes();
                        map.LoadCorpseData();
                    }

                    i_maps[id] = map;
                }
            }
            Contract.Assert(map != null);
            return(map);
        }
Beispiel #3
0
 public void DoForAllMaps(Action <Map> worker)
 {
     foreach (var map in i_maps.Values)
     {
         MapInstanced mapInstanced = map.ToMapInstanced();
         if (mapInstanced)
         {
             var instances = mapInstanced.GetInstancedMaps();
             foreach (var instance in instances.Values)
             {
                 worker(instance);
             }
         }
         else
         {
             worker(map);
         }
     }
 }
Beispiel #4
0
        public void DoForAllMapsWithMapId(uint mapId, Action <Map> worker)
        {
            var map = i_maps.LookupByKey(mapId);

            if (map != null)
            {
                MapInstanced mapInstanced = map.ToMapInstanced();
                if (mapInstanced)
                {
                    var instances = mapInstanced.GetInstancedMaps();
                    foreach (var instance in instances)
                    {
                        worker(instance.Value);
                    }
                }
                else
                {
                    worker(map);
                }
            }
        }