diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index 3bdae15e52..fcde74bcac 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -10,6 +10,7 @@ using OpenRa.Orders; using OpenRa.Support; using OpenRa.Traits; using System.Windows.Forms; +using Timer = OpenRa.Support.Timer; namespace OpenRa { @@ -35,7 +36,10 @@ namespace OpenRa public static void ChangeMap(string mapName) { + Timer.Time( "----ChangeMap" ); + var manifest = new Manifest(LobbyInfo.GlobalSettings.Mods); + Timer.Time( "manifest: {0}" ); chat.AddLine(Color.White, "Debug", "Map change {0} -> {1}".F(Game.mapName, mapName)); Game.changePending = false; @@ -43,11 +47,14 @@ namespace OpenRa SheetBuilder.Initialize(renderer); SpriteSheetBuilder.Initialize(); FileSystem.UnmountTemporaryPackages(); + Timer.Time( "reset: {0}" ); foreach (var pkg in manifest.Packages) FileSystem.MountTemporary(new Package(pkg)); + Timer.Time( "mount tempory packages: {0}" ); Rules.LoadRules(mapName, manifest); + Timer.Time( "load rules: {0}" ); world = null; // trying to access the old world will NRE, rather than silently doing it wrong. world = new World(); @@ -56,18 +63,25 @@ namespace OpenRa if (a.Owner != null && a.Info.Traits.Contains()) a.Owner.Shroud.Explore(a); }; + Timer.Time( "world: {0}" ); SequenceProvider.Initialize(manifest.Sequences); viewport = new Viewport(clientSize, Game.world.Map.Offset, Game.world.Map.Offset + Game.world.Map.Size, renderer); + Timer.Time( "SeqProv, viewport: {0}" ); skipMakeAnims = true; foreach (var treeReference in Game.world.Map.Trees) world.CreateActor(treeReference.Image, new int2(treeReference.Location), null); + Timer.Time( "trees: {0}" ); world.LoadMapActors(Rules.AllRules); skipMakeAnims = false; + Timer.Time( "map actors: {0}" ); chrome = new Chrome(renderer); + Timer.Time( "chrome: {0}" ); + + Timer.Time( "----end ChangeMap" ); } internal static void Initialize(string mapName, Renderer renderer, int2 clientSize, int localPlayer, Controller controller) diff --git a/OpenRa.Game/World.cs b/OpenRa.Game/World.cs index b9e2cf4dae..6edf470c32 100644 --- a/OpenRa.Game/World.cs +++ b/OpenRa.Game/World.cs @@ -47,27 +47,38 @@ namespace OpenRa public World() { + Timer.Time( "----World.ctor" ); + Map = new Map( Rules.AllRules ); + Timer.Time( "new Map: {0}" ); FileSystem.MountTemporary( new Package( Map.Theater + ".mix" ) ); + Timer.Time( "mount temporary packages: {0}" ); TileSet = new TileSet( Map.TileSuffix ); + Timer.Time( "Tileset: {0}" ); BuildingInfluence = new BuildingInfluenceMap( this ); UnitInfluence = new UnitInfluenceMap( this ); + Timer.Time( "BIM/UIM: {0}" ); oreFrequency = (int)(Rules.General.GrowthRate * 60 * 25); oreTicks = oreFrequency; Map.InitOreDensity(); + Timer.Time( "Ore: {0}" ); CreateActor("World", new int2(int.MaxValue, int.MaxValue), null); for (int i = 0; i < 8; i++) players[i] = new Player(this, i, Game.LobbyInfo.Clients.FirstOrDefault(a => a.Index == i)); + Timer.Time( "worldActor, players: {0}" ); Bridges.MakeBridges(this); PathFinder = new PathFinder(this); + Timer.Time( "bridge, pathing: {0}" ); WorldRenderer = new WorldRenderer(this, Game.renderer); Minimap = new Minimap(this, Game.renderer); + Timer.Time( "renderer, minimap: {0}" ); + Timer.Time( "----end World.ctor" ); } public Actor CreateActor( string name, int2 location, Player owner )