Esempio n. 1
0
 internal void Load(string mapName)
 {
     WeakReference reference;
     MapLoadingData data;
     if(m_mapLoadingDict.TryGetValue( mapName, out reference ))
     {
         data = (MapLoadingData)reference.Target;
         if(data != null)
         {
             if (!m_mapLoadingList.Contains(data))
             {
                 m_mapLoadingList.Add( data );
                 return;
             }
             else
             {
                 return;
             }
         }
     }
     data = new MapLoadingData();
     if (reference == null)
     {
         m_mapLoadingDict.Add(mapName, new WeakReference(data));
     }
     else
     {
         reference.Target = data;
     }
     MapInfo level = DataReader.Load<MapInfo>("Data/Maps/" + mapName);
     data = InternalLoad(level, data);
     m_mapLoadingList.Add( data );
 }
Esempio n. 2
0
 private MapLoadingData InternalLoad(MapInfo level, MapLoadingData data)
 {
     data.Name = level.Name;
     data.Parts = new WorldPart[level.X, level.Y];
     data.Sence = new SencePart[level.X, level.Y];
     data.Size = new Point(level.X, level.Y);
     //m_senceManager.Initialize(size.X, size.Y, WorldPart.ImageSize);
     data.WorldSize = new Point(data.Size.X * WorldPart.ImageSize, data.Size.Y * WorldPart.ImageSize);
     data.LoadingLeft = 0;
     data.LayerCount = level.LayerCount;
     data.Pieces = new MapDrawer[data.LayerCount + 1, data.Size.X, data.Size.Y];
     data.CollusionLayer = level.CollusionLayer;
     data.Player = new Vector2(level.PX, level.PY);
     data.Layers = new WorldLayer[data.LayerCount + 1];
     data.PostLoading = level.PostLoading;
     for( int i = 0; i < data.LayerCount + 1; i++ )
     {
         data.Layers[i] = new WorldLayer( data.Size.X, data.Size.Y );
     }
     foreach( var item in level.Effects.List )
     {
         data.Layers[item.Layer].SetEffect( item.Effect );
     }
     foreach (MapItem mapData in level.List)
     {
         data.Sence[mapData.X,mapData.Y] = new SencePart(mapData.X, mapData.Y);
         data.Parts[mapData.X, mapData.Y] = new WorldPart(mapData, level, data.Sence[mapData.X, mapData.Y], data.CollusionLayer, data);
     }
     return data;
 }