Ejemplo n.º 1
0
        public static Map AllocateMapInstance(int mapId)
        {
            Map result;

            if (MapMgr._mapInstancePool.ContainsKey(mapId))
            {
                Map source = MapMgr.FindMap(mapId);
                Map map    = null;
                MapMgr.m_lock.AcquireWriterLock(-1);
                try
                {
                    if (MapMgr._mapInstancePool[mapId].Count > 0)
                    {
                        map = MapMgr._mapInstancePool[mapId].Dequeue();
                    }
                }
                catch
                {
                }
                finally
                {
                    MapMgr.m_lock.ReleaseWriterLock();
                }
                if (map == null)
                {
                    result = source.Clone();
                }
                else
                {
                    map.CopyData(source);
                    result = map;
                }
            }
            else
            {
                result = null;
            }
            return(result);
        }