public Level ImportLevel(Level level)
{
XElement xLevel;
#if XBOX360
xLevel = XElement.Load("Content\\Levels\\" + level.Name + ".xml");
#else
xLevel = XElement.Load("..\\..\\..\\Content\\Levels\\" + level.Name + ".xml");
#endif
//Gets all the information for a level and places it into the level object
foreach (var item in xLevel.Elements())
{
if (item.Name == XmlKeys.Name)
level.Name = item.Value;
if (item.Name == XmlKeys.Size && !level.IsMainMenu)
level.Size = GridSpace.GetDrawingCoord(new Vector2(int.Parse(item.Attribute(XName.Get("X", "")).Value),
int.Parse(item.Attribute(XName.Get("Y", "")).Value)));
if (item.Name == XmlKeys.Background)
level.Load(_mContent, item.Value);
if (item.Name == "Entities")
foreach (var element in item.Elements())
_mEntities.Add(new EntityInfo(element));
}
if(!level.IsMainMenu)
GetPlayerStart(level);
return level;
}
/// <summary> /// Loads the level from the content manager /// </summary> /// <param name="content">Content Manager to load from</param> public void Load(ContentManager content) { _mObjects.Clear(); Reset(); var importer = new Importer(content); importer.ImportLevel(this); _mPlayer = new Player(content, ref _mPhysicsEnvironment, _mControls, .8f, EntityInfo.CreatePlayerInfo(GridSpace.GetGridCoord(StartingPoint))); _mObjects.Add(_mPlayer); _mObjects.AddRange(importer.GetObjects(ref _mPhysicsEnvironment)); _mPlayerEnd = importer.GetPlayerEnd(); if (_mPlayerEnd != null) _mObjects.Add(_mPlayerEnd); _mObjects.AddRange(importer.GetWalls(this).Cast<GameObject>()); _mRails = importer.GetRails(); _mTrigger.AddRange(importer.GetTriggers()); PrepareCollisionMatrix(); MNumCollected = 0; MNumCollectable = 0; //Clear the collection lists _mCollected.Clear(); _mRemoveCollected.Clear(); foreach (var gObject in _mObjects) { if (gObject.CollisionType == XmlKeys.Collectable) MNumCollectable++; } }