public void LoadAndInitializeLevel() { XElement levelData = LoadLevelData(); if (Data.Profile.PlayingRaceMode) { RaceLapCount = GetLapsForRace(levelData); } else { XElement rankFractionElement = levelData.Element(Rank_Fraction_Data_Element); RankACandyFraction = GetCandyFractionForRanking(rankFractionElement, "a", Rank_A_Candy_Fraction); RankBCandyFraction = GetCandyFractionForRanking(rankFractionElement, "b", Rank_B_Candy_Fraction); } WireUpCallElementFactoryCallbacks(); Map = BlockFactory.CreateLevelBlockMap(levelData.Element(Terrain_Data_Element).Element(BlockFactory.Data_Group_Node_Name)); CollectableFactory.LoadCollectables(levelData.Element(Terrain_Data_Element).Element(CollectableFactory.Data_Group_Node_Name)); SignpostFactory.LoadSignposts(levelData.Element(Terrain_Data_Element).Element(SignpostFactory.Data_Group_Node_Name)); FlagFactory.LoadFlags(levelData.Element(Terrain_Data_Element).Element(FlagFactory.Data_Group_Node_Name)); Player = CharacterFactory.LoadPlayer(levelData.Element(CharacterFactory.Player_Data_Node_Name)); FinalizeLevelSetup(levelData); }