using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; using Rmake.Framework.Logging; using Rmake.Rendering.APIWrapper; using Rmake.Rendering.ComponentLayer; namespace Rmake.GameRendering { /// /// GameRendering関連の初期化をおこなうクラス /// public class GameRenderingInitializer { private D3DDeviceWrapper device = null; private ComponentFactory componentFactory = null; private ComponentManager componentManager = null; private GameRenderingFactory factory = null; private GameRenderingManager manager = null; private bool initialized = false; /// /// GameRendering関連のインスタンスを生成するクラスの /// インスタンスを取得する /// public GameRenderingFactory Factory { get {return factory;} } /// /// GameRendering関連のインスタンスを管理するクラスの /// インスタンスを取得する /// public GameRenderingManager Manager { get {return manager;} } /// /// 初期化されているのならばtrue /// 初期化されていないのならばfalseを返す /// public bool Initialized { get { return initialized; } } /// /// Constructor /// private GameRenderingInitializer() { } ~GameRenderingInitializer() { this.Release(); } private static GameRenderingInitializer gameRenderingInitializer = null; static public GameRenderingInitializer GetInstance() { if (gameRenderingInitializer == null) { gameRenderingInitializer = new GameRenderingInitializer(); } return gameRenderingInitializer; } /// /// GameRendering を初期化する Method /// /// 初期化時に使用する Control /// true の場合は Window Mode /// 初期化に成功した場合は true、失敗した場合は false public bool Initialize(Control control, bool isWindowMode) { Release(); // New Instances device = new D3DDeviceWrapper(); componentManager = new ComponentManager(); componentFactory = new ComponentFactory(); manager = new GameRenderingManager(); factory = new GameRenderingFactory(); // Initialize Instances if(device.Initialize(control, isWindowMode) == false) { return false; } componentManager.Initialize(device); componentFactory.Initialize(device, componentManager); manager.Initialize(componentManager); factory.Initialize(componentFactory, manager); initialized = true; return true; } /// /// GameRendering の終了処理を行う /// public void Release() { initialized = false; if(factory != null) { factory.CleanUp(); factory = null; } if(manager != null) { manager.CleanUp(); manager = null; } if(componentFactory != null) { componentFactory.CleanUp(); componentFactory = null; } if(componentManager != null) { componentManager.CleanUp(); componentManager = null; } if (device != null) { device.CleanUp(); device = null; } } } }