protected override void Initialize() { // create all application services and add to main services container. _services = new ServiceContainer(); ServiceLocator.SetLocatorProvider(() => _services); var vfsStorage = new VfsStorage(); var pathStorage = new FileSystemStorage("data"); var uiAssetsStorage = new ZipStorage(pathStorage, "UI_Assets.zip"); vfsStorage.MountInfos.Add(new VfsMountInfo(uiAssetsStorage, null)); // Register the virtual file system as a service. _services.Register(typeof(IStorage), null, vfsStorage); // The GraphicsDeviceManager needs to be registered in the service container. // (This is required by the XNA content managers.) _services.Register(typeof(IGraphicsDeviceService), null, _graphicsDeviceManager); _services.Register(typeof(GraphicsDeviceManager), null, _graphicsDeviceManager); var uiContentManager = new StorageContentManager(_services, uiAssetsStorage); _services.Register(typeof(ContentManager), "UIContent", uiContentManager); // ----- Initialize Services // Register the game class. _services.Register(typeof(Microsoft.Xna.Framework.Game), null, this); _services.Register(typeof(kbPCB), null, this); // Input _inputManager = new InputManager(false); _services.Register(typeof(IInputService), null, _inputManager); // Graphics _graphicsManager = new GraphicsManager(GraphicsDevice, Window, uiContentManager); _services.Register(typeof(IGraphicsService), null, _graphicsManager); // GUI _uiManager = new UIManager(this, _inputManager); _services.Register(typeof(IUIService), null, _uiManager); // Animation _animationManager = new AnimationManager(); _services.Register(typeof(IAnimationService), null, _animationManager); // Game logic _gameObjectManager = new GameObjectManager(); _services.Register(typeof(IGameObjectService), null, _gameObjectManager); // Profiler _profiler = new HierarchicalProfiler("Main"); _services.Register(typeof(HierarchicalProfiler), "Main", _profiler); // add more stuff here var editor2D = new Editor2D(this); Components.Add(editor2D); base.Initialize(); }