Пример #1
0
        //* ────────────-_______________________*
        //* constructor & destructor ───────────────────────*

        //* -----------------------------------------------------------------------*
        /// <summary>コンストラクタ。</summary>
        ///
        /// <param name="index2assert">インデックスをアセット名に変換するためのコールバック用デリゲート。</param>
        /// <param name="loopSEInterval">効果音を繰り返し再生する際の間隔。</param>
        /// <param name="fileXGS">XACTサウンドエンジン ファイル名。</param>
        /// <param name="fileXSB">XACT再生キュー ファイル名。</param>
        /// <param name="fileXWBSE">XACT波形バンク(効果音) ファイル名。</param>
        /// <param name="fileXWBBGM">XACT波形バンク(BGM) ファイル名。</param>
        public CAudio(
            Converter <ushort, string> index2assert, ushort loopSEInterval,
            string fileXGS, string fileXSB, string fileXWBSE, string fileXWBBGM
            )
        {
            CLogger.add("音響処理の初期化をしています...");
            LOOPSE_INTERVAL = loopSEInterval;
            try
            {
                INDEX2ASERT = index2assert;
                engine      = new AudioEngine(fileXGS);
                waveBankSE  = new WaveBank(engine, fileXWBSE);
                waveBankBGM = new WaveBank(engine, fileXWBBGM, 0, 32767);
                soundBank   = new SoundBank(engine, fileXSB);
                MICROTHREAD_MANAGER.add(threadPlaySE());
                MICROTHREAD_MANAGER.add(threadGC());
            }
            catch (Exception e)
            {
                Dispose();
                CLogger.add(
                    "音響処理の初期化に失敗しましたので、サウンドを切り離します。" + Environment.NewLine +
                    e.ToString());
                CLogger.add(
                    "Microsoft .NET Framework 1.1 がインストールされていない可能性があります。" + Environment.NewLine +
                    "このゲームを実行するためにはMicrosoft .NET Framework 2.0 SP1または" + Environment.NewLine +
                    "3.5 以降が必要ですが、音響処理の実行には 1.1 も別途必要となります。" + Environment.NewLine +
                    "このランタイムは、下記のWebサイトで入手することが出来ます。" + Environment.NewLine + Environment.NewLine +
                    "(日本語) http://www.microsoft.com/japan/msdn/netframework/" + Environment.NewLine + Environment.NewLine +
                    "あるいは、最新のDirectXをインストールされていない可能性があります。" + Environment.NewLine +
                    "このランタイムは、下記のWebサイトで入手することが出来ます。" + Environment.NewLine + Environment.NewLine +
                    "(日本語) http://www.microsoft.com/japan/windows/DirectX/");
            }
            CLogger.add("音響処理の初期化完了。");
        }
Пример #2
0
 //* -----------------------------------------------------------------------*
 /// <summary>
 /// <para>オブジェクトが別の状態へ移行する時に呼び出されます。</para>
 /// <para>このメソッドは、遷移先の<c>setup</c>よりも先に呼び出されます。</para>
 /// </summary>
 ///
 /// <param name="entity">この状態を終了したオブジェクト。</param>
 /// <param name="privateMembers">
 /// オブジェクトと状態クラスのみがアクセス可能なフィールド。
 /// </param>
 /// <param name="nextState">オブジェクトが次に適用する状態。</param>
 public override void teardown(CEntity entity, CGame privateMembers, IState nextState)
 {
     CGame.instance.Window.Title += " " + CGame.version;
     CLogger.add(CStateCapsXNA.instance.report);
     CLogger.add("全ての初期化が完了しました。ゲームを起動します...");
     aiInitializer.Dispose();
 }
Пример #3
0
        //* ────________________________________*
        //* methods ───────────────────────────────-*

        //* -----------------------------------------------------------------------*
        /// <summary>
        /// アンマネージ リソースの解放およびリセットに関連付けられている
        /// アプリケーション定義のタスクを実行します。
        /// </summary>
        public void Dispose()
        {
            try
            {
                foreach (EffectObject eo in FORCE_PATTERNS.Values)
                {
                    eo.Dispose();
                }
                FORCE_PATTERNS.Clear();
            }
            catch (Exception e)
            {
                CLogger.add("レガシ ゲームパッドの解放に失敗しました。");
                CLogger.add(e);
            }
            if (device != null)
            {
                try
                {
                    device.Unacquire();
                    device.Dispose();
                }
                catch (Exception e)
                {
                    CLogger.add("レガシ ゲームパッドの解放に失敗しました。");
                    CLogger.add(e);
                }
                device = null;
            }
            exception = new ObjectDisposedException(GetType().ToString());
        }
Пример #4
0
        //* ────────────-_______________________*
        //* constructor & destructor ───────────────────────*

        //* -----------------------------------------------------------------------*
        /// <summary>コンストラクタ。</summary>
        /// <remarks>
        /// 接続されているデバイスを認識し、初期化します。XBOX360コントローラを
        /// 自動的に識別し、初期化の対象から外します。
        /// </remarks>
        ///
        /// <param name="__hWnd">ウィンドウハンドル</param>
        public CLegacyInputManager(IntPtr __hWnd)
        {
            CLogger.add("レガシ ゲームパッドの初期化をしています...");
            bool       bFailed = false;
            DeviceList pads    =
                Manager.GetDevices(DeviceClass.GameControl, EnumDevicesFlags.AttachedOnly);

            foreach (DeviceInstance pad in pads)
            {
                if (!(Regex.IsMatch(pad.ProductName, "Xbox ?360", RegexOptions.IgnoreCase)))
                {
                    CLegacyInput device = new CLegacyInput(pad.InstanceGuid, __hWnd);
                    if (device.isDisposed)
                    {
                        bFailed = true;
                    }
                    else
                    {
                        DEVICES.Add(device);
                    }
                    DEVICES.Add(device);
                }
            }
            if (bFailed)
            {
                CLogger.add(
                    "いくつかのレガシ ゲームパッドにおいて初期化が失敗しました。\r\n" +
                    "最新のDirectXがインストールされていない可能性があります。\r\n" +
                    "このランタイムは、下記のWebサイトで入手することが出来ます。\r\n\r\n" +
                    "(日本語) http://www.microsoft.com/japan/windows/DirectX/");
            }
            CLogger.add("レガシ ゲームパッドの初期化完了。");
        }
Пример #5
0
        //* ────────────-_______________________*
        //* constructor & destructor ───────────────────────*

        //* -----------------------------------------------------------------------*
        /// <summary>コンストラクタ。</summary>
        ///
        /// <param name="game">ゲーム コンポーネントをアタッチするゲーム。</param>
        public CGuideWrapper(Game game)
        {
            if (instance != null)
            {
                throw new InvalidOperationException(
                          string.Format(Resources.CLASS_ERR_SINGLETON, typeof(CGuideWrapper).FullName));
            }
            instance  = this;
            this.game = game;
            try
            {
                gsc = new GamerServicesComponent(game);
                game.Components.Add(gsc);
                isAvaliableUseGamerService = true;
            }
            catch (Exception e)
            {
                CLogger.add(Resources.LIVE_WARN_FAILED);
                CLogger.add(e);
                removeGamerServiceComponent();
            }
#if WINDOWS
            iconset[(int)MessageBoxIcon.None]    = System.Windows.Forms.MessageBoxIcon.None;
            iconset[(int)MessageBoxIcon.Error]   = System.Windows.Forms.MessageBoxIcon.Exclamation;
            iconset[(int)MessageBoxIcon.Warning] = System.Windows.Forms.MessageBoxIcon.Information;
            iconset[(int)MessageBoxIcon.Alert]   = System.Windows.Forms.MessageBoxIcon.Stop;
#endif
        }
Пример #6
0
        //* -----------------------------------------------------------------------*
        /// <summary>設定データを補助記憶装置へ格納します。</summary>
        /// <remarks>
        /// XBOX360版では生のXML、Windows版ではDeflate圧縮されたXMLが格納されます。
        /// </remarks>
        ///
        /// <param name="path">設定データ ファイルへのパス</param>
        /// <returns>正常に保存できた場合、<c>true</c></returns>
        private bool save(string path)
        {
            bool result = false;

            if (path != null)
            {
                Stream stream = null;
                try
                {
                    stream = File.Open(path, FileMode.Create, FileAccess.Write);
#if WINDOWS
                    if (m_compress)
                    {
                        stream = new DeflateStream(stream, CompressionMode.Compress);
                    }
#endif
                    (new XmlSerializer(typeof(_T), new XmlRootAttribute())).Serialize(stream, data);
                }
                catch (Exception e)
                {
                    CLogger.add(e);
                }
                finally
                {
                    if (stream != null)
                    {
                        stream.Close();
                    }
                }
            }
            return(result);
        }
Пример #7
0
        //* ────________________________________*
        //* methods ───────────────────────────────-*

        //* -----------------------------------------------------------------------*
        /// <summary>
        /// <para>状態が開始された時に呼び出されます。</para>
        /// <para>このメソッドは、遷移元の<c>teardown</c>よりも後に呼び出されます。</para>
        /// </summary>
        ///
        /// <param name="entity">この状態を適用されたオブジェクト。</param>
        /// <param name="privateMembers">
        /// オブジェクトと状態クラスのみがアクセス可能なフィールド。
        /// </param>
        public override void setup(IEntity entity, object privateMembers)
        {
#if TRACE
            CLogger.add(sceneName + "シーンを開始します。");
#endif
            localCoRoutineManager.initialize();
            base.setup(entity, privateMembers);
        }
Пример #8
0
        //* -----------------------------------------------------------------------*
        /// <summary>メッセージボックスを表示します。</summary>
        ///
        /// <param name="strText">表示したいメッセージ文字列</param>
        public static void show(string strText)
        {
            CLogger.add(strText);
#if WINDOWS
            MessageBox.Show(strText, titleBar, MessageBoxButtons.OK, MessageBoxIcon.Hand);
#else
            CStateGuideHelper.instance.reserveMessage(endMessageBox, strText);
#endif
        }
Пример #9
0
        //* -----------------------------------------------------------------------*
        /// <summary>
        /// <para>オブジェクトが別の状態へ移行する時に呼び出されます。</para>
        /// <para>このメソッドは、遷移先の<c>setup</c>よりも先に呼び出されます。</para>
        /// </summary>
        ///
        /// <param name="entity">この状態を終了したオブジェクト。</param>
        /// <param name="privateMembers">
        /// オブジェクトと状態クラスのみがアクセス可能なフィールド。
        /// </param>
        /// <param name="nextState">オブジェクトが次に適用する状態。</param>
        public override void teardown(CEntity entity, CGame privateMembers, IState nextState)
        {
            taskManager.Dispose();
            taskManager.nextState = CStateDefault.instance;
            GC.Collect();
#if TRACE
            CLogger.add(sceneName + "シーンを終了しました。");
#endif
        }
Пример #10
0
        //* ────________________________________*
        //* methods ───────────────────────────────-*

        //* -----------------------------------------------------------------------*
        /// <summary>
        /// アンマネージ リソースの解放およびリセットに関連付けられている
        /// アプリケーション定義のタスクを実行します。
        /// </summary>
        public void Dispose()
        {
            CLogger.add("レガシ ゲームパッドの解放をしています...");
            foreach (CLegacyInput device in DEVICES)
            {
                device.Dispose();
            }
            DEVICES.Clear();
            CLogger.add("レガシ ゲームパッドの解放完了。");
        }
Пример #11
0
        //* ────________________________________*
        //* methods ───────────────────────────────-*

        //* -----------------------------------------------------------------------*
        /// <summary>
        /// <para>状態が開始された時に呼び出されます。</para>
        /// <para>このメソッドは、遷移元の<c>teardown</c>よりも後に呼び出されます。</para>
        /// </summary>
        ///
        /// <param name="entity">この状態を適用されたオブジェクト。</param>
        /// <param name="privateMembers">
        /// オブジェクトと状態クラスのみがアクセス可能なフィールド。
        /// </param>
        public override void setup(CEntity entity, CGame privateMembers)
        {
            CLogger.add(Resources.SCENE_INITIALIZE);
            entity.allowSameState = true;
            CGame.instance.Content.RootDirectory = Resources.DIR_CONTENT;
            CStateCapsXNA xnastate = CStateCapsXNA.instance;

            xnastate.nextState          = CAIInupt.instance;
            aiInitializer.nextState     = xnastate;
            aiInitializer.changedState += onInitializerChanged;
        }
Пример #12
0
        //* -----------------------------------------------------------------------*
        /// <summary>
        /// <para>オブジェクトが別の状態へ移行する時に呼び出されます。</para>
        /// <para>このメソッドは、遷移先の<c>setup</c>よりも先に呼び出されます。</para>
        /// </summary>
        ///
        /// <param name="entity">この状態を終了したオブジェクト。</param>
        /// <param name="privateMembers">
        /// オブジェクトと状態クラスのみがアクセス可能なフィールド。
        /// </param>
        /// <param name="nextState">オブジェクトが次に適用する状態。</param>
        public override void teardown(IEntity entity, object privateMembers, IState nextState)
        {
            localCoRoutineManager.Dispose();
            phaseManager.reset();
            localGameComponentManager.Dispose();
            GC.Collect();
            base.teardown(entity, privateMembers, nextState);
#if TRACE
            CLogger.add(sceneName + "シーンを終了しました。");
#endif
        }
Пример #13
0
        //* -----------------------------------------------------------------------*
        /// <summary>設定データを補助記憶装置から読み出します。</summary>
        /// <remarks>
        /// XBOX360版では生のXML、Windows版ではDeflate圧縮されたXMLから読み出します。
        /// </remarks>
        ///
        /// <param name="path">設定データ ファイルへのパス</param>
        private void load(string path)
        {
            bool readed = false;

            if (path != null && File.Exists(path))
            {
                Stream stream = null;
                try
                {
#if WINDOWS
                    if (m_compress)
                    {
                        stream = new DeflateStream(
                            File.Open(path, FileMode.Open, FileAccess.Read),
                            CompressionMode.Decompress);
                    }
                    else
#endif
                    {
                        stream = File.Open(path, FileMode.Open, FileAccess.Read);
                    }
                    data = (_T)((new XmlSerializer(typeof(_T), new XmlRootAttribute())).Deserialize(stream));
                    if (data != null)
                    {
                        readed = true;
                        CLogger.add(string.Format("{0}を{1}へ読み込みました。",
                                                  fileName, typeName));
                    }
                }
                catch (Exception e)
                {
                    CLogger.add("設定データに互換性がありません。解決するためにデータをリセットします。");
                    CLogger.add(e);
                }
                if (stream != null)
                {
                    stream.Close();
                }
            }
            else
            {
                CLogger.add(string.Format("指定した補助記憶装置に{0}が存在しません。", fileName));
            }
            if (!readed)
            {
                resetData();
                readed = save();
            }
            CLogger.add(data.ToString());
            if (loaded != null)
            {
                loaded(this, readed);
            }
        }
Пример #14
0
        //* ────________________________________*
        //* methods ───────────────────────────────-*

        //* -----------------------------------------------------------------------*
        /// <summary>
        /// アセット名に対応したリソースをコンテンツマネージャ経由で読み出します。
        /// </summary>
        ///
        /// <param name="bForce">リソース本体が<c>null</c>でなくても強制的に再読み込みするかどうか</param>
        /// <param name="mgrContent">コンテンツマネージャ</param>
        public bool load(bool bForce, ContentManager mgrContent)
        {
            bool bNull   = (resource == null);
            bool bResult = (asset != null && (bForce || bNull));

            if (bResult)
            {
                resource = mgrContent.Load <_T>(asset);
                CLogger.add("コンテンツ " + asset + " を読込しました。");
            }
            return(bResult);
        }
Пример #15
0
        //* -----------------------------------------------------------------------*
        /// <summary>設定データを補助記憶装置から読み出します。</summary>
        /// <remarks>
        /// XBOX360版では生のXML、Windows版ではDeflate圧縮されたXMLから読み出します。
        /// </remarks>
        ///
        /// <param name="path">設定データ ファイルへのパス</param>
        private void load(string path)
        {
            bool readed = false;

            if (path != null && File.Exists(path))
            {
                Stream stream = null;
                try
                {
#if WINDOWS
                    if (m_compress)
                    {
                        stream = new DeflateStream(
                            File.Open(path, FileMode.Open, FileAccess.Read),
                            CompressionMode.Decompress);
                    }
                    else
#endif
                    {
                        stream = File.Open(path, FileMode.Open, FileAccess.Read);
                    }
                    data = (_T)((new XmlSerializer(typeof(_T), new XmlRootAttribute())).Deserialize(stream));
                    if (data != null)
                    {
                        readed = true;
                        CLogger.add(string.Format(Resources.IO_INFO_LOADED, fileName, typeName));
                    }
                }
                catch (Exception e)
                {
                    CLogger.add(Resources.IO_WARN_XML_COLLISION);
                    CLogger.add(e);
                }
                if (stream != null)
                {
                    stream.Close();
                }
            }
            else
            {
                CLogger.add(string.Format(Resources.IO_WARN_NOT_FOUND, fileName));
            }
            if (!readed)
            {
                resetData();
                readed = save();
            }
            CLogger.add(data.ToString());
            if (loaded != null)
            {
                loaded(this, readed);
            }
        }
Пример #16
0
        //* -----------------------------------------------------------------------*
        /// <summary>設定データを補助記憶装置から読み出します。</summary>
        /// <remarks>
        /// <para>
        /// XBOX360版では読み出すデバイスを選択するダイアログが出現します。
        /// 一方、Windows版では無条件にカレントフォルダが選択されます。
        /// </para>
        /// <para>
        /// また、XBOX360版ではアプリケーションとは非同期にダイアログが
        /// 表示されるので、出現中もアプリケーションは停止せず進行を続けます。
        /// </para>
        /// </remarks>
        public void load()
        {
            CLogger.add("ゲーム 設定データを読込しています...");
#if WINDOWS
            __load(FILE);
#else
            if ((device == null || !device.IsConnected) && !Guide.IsVisible)
            {
                device = null;
                CGuideManager.reserveSelectDevice(load);
            }
#endif
        }
Пример #17
0
        //* -----------------------------------------------------------------------*
        /// <summary>起動前の各種検証をします。</summary>
        ///
        /// <returns>起動検証に成功した場合、<c>true</c></returns>
        public bool validate()
        {
            bool bResult = true;

            try
            {
                complete();
                string strErrorMessage = errorMessage;
                CMessageBox.titleBar = title;
                if (strErrorMessage.Length != 0)
                {
                    throw new ArgumentOutOfRangeException(
                              strErrorMessage, "初期設定データの一部に不正な値を検出しました。");
                }
                CLogger.outFile = fileIOConfigure.fileLog;
                CLogger.add(ToString());
                using (CValidateEnvironment envValidator = new CValidateEnvironment())
                {
                    CLogger.add(envValidator.ToString());
                    if (!envValidator.AVALIABLE)
                    {
                        throw new PlatformNotSupportedException(envValidator.ERROR_MESSAGE);
                    }
                }
                using (CValidateDirectX dxValidator = new CValidateDirectX())
                {
                    CLogger.add(dxValidator.ToString());
                    if (!dxValidator.isAvaliablePS11)
                    {
                        throw new PlatformNotSupportedException("ビデオチップがピクセルシェーダ1.1に対応していません。");
                    }
                }
#if WINDOWS
                mutex = new Mutex(false, codename);
                if (!mutex.WaitOne(0, false))
                {
                    throw new ApplicationException("多重起動されました。" + Environment.NewLine + "このアプリケーションは多重起動に対応しておりません。");
                }
#endif
            }
            catch (Exception e)
            {
                CMessageBox.show(
                    "起動時の環境検証に失敗しました。非対応のハードウェアまたはOSを使用しているか、" + Environment.NewLine +
                    "あるいはいくつかのランタイム ライブラリが不足している可能性があります。" +
                    Environment.NewLine + Environment.NewLine + e.ToString());
                bResult = false;
            }
            isAllAvaliable = bResult;
            return(bResult);
        }
Пример #18
0
 //* -----------------------------------------------------------------------*
 /// <summary>ゲームを初期化します。</summary>
 protected override void Initialize()
 {
     try
     {
         // ここで初めてゲーマー サービスの初期化をするっぽい
         base.Initialize();
     }
     catch (GamerServicesNotAvailableException e)
     {
         CLogger.add(nineball.Properties.Resources.WARN_GAMER_SERVICE);
         CLogger.add(e);
         CGuideWrapper.instance.removeGamerServiceComponent();
     }
 }
Пример #19
0
            //* ────________________________________*
            //* methods ───────────────────────────────-*

            //* -----------------------------------------------------------------------*
            /// <summary>XBOX360ガイドを開始します。</summary>
            public override bool start()
            {
                bool bResult = false;

                if (!Guide.IsVisible)
                {
                    try {
                        Guide.BeginShowStorageDeviceSelector(callback, null);
                        bResult = true;
                    }
                    catch (Exception e) { CLogger.add(e); }
                }
                return(bResult);
            }
Пример #20
0
            //* ────________________________________*
            //* methods ───────────────────────────────-*

            //* -----------------------------------------------------------------------*
            /// <summary>XBOX360ガイドを開始します。</summary>
            public override bool start()
            {
                bool bResult = false;

                if (!Guide.IsVisible)
                {
                    try {
                        Guide.BeginShowMessageBox(PlayerIndex.One, "エラーが発生しました。",
                                                  MESSAGE, BUTTONS, 0, MessageBoxIcon.Error, callback, null);
                        bResult = true;
                    }
                    catch (Exception e) { CLogger.add(e); }
                }
                return(bResult);
            }
Пример #21
0
        //* -----------------------------------------------------------------------*
        /// <summary>設定データを補助記憶装置へ格納します。</summary>
        ///
        /// <returns>保存に成功した場合、true</returns>
        public bool save()
        {
            CLogger.add(string.Format("{0}を{1}へ保存しています...。", typeName, fileName));
            bool result = false;

            if (CIOInfo.instance.deviceReady)
            {
                result = save(CIOInfo.instance.getPath(fileName));
            }
            CLogger.add(string.Format("{0}を{1}へ保存{2}。",
                                      typeName, fileName, result ? "完了" : "に失敗"));
            if (saved != null)
            {
                saved(this, result);
            }
            return(result);
        }
Пример #22
0
        //* -----------------------------------------------------------------------*
        /// <summary>設定データを補助記憶装置へ格納します。</summary>
        ///
        /// <returns>保存に成功した場合、true</returns>
        public bool save()
        {
            CLogger.add(string.Format(Resources.IO_INFO_SAVING, typeName, fileName));
            bool result = false;

            if (CIOInfo.instance.deviceReady)
            {
                result = save(CIOInfo.instance.getPath(fileName));
            }
            CLogger.add(string.Format(Resources.IO_INFO_SAVED,
                                      typeName, fileName, result ? Resources.SUCCEEDED : Resources.FAILED));
            if (saved != null)
            {
                saved(this, result);
            }
            return(result);
        }
Пример #23
0
        //* -----------------------------------------------------------------------*
        /// <summary>設定データを補助記憶装置から読み出します。</summary>
        /// <remarks>
        /// XBOX360版では生のXML、Windows版ではDeflate圧縮されたXMLから読み出します。
        /// </remarks>
        ///
        /// <param name="strPath">設定データ ファイルへのパス</param>
        private void __load(string strPath)
        {
            bool bReaded = false;

            if (strPath != null && File.Exists(strPath))
            {
                Stream stream = null;
                try {
#if WINDOWS
                    stream = new DeflateStream(
                        File.Open(strPath, FileMode.Open, FileAccess.Read),
                        CompressionMode.Decompress);
#else
                    stream = File.Open(strPath, FileMode.Open, FileAccess.Read);
#endif
                    data = ( _T )((new XmlSerializer(typeof(_T))).Deserialize(stream));
                    if (data != null)
                    {
                        bReaded = true;
                    }
                }
                catch (Exception e) {
                    CLogger.add("設定データに互換性がありません。解決するためにデータをリセットします。");
                    CLogger.add(e);
                }
                if (stream != null)
                {
                    stream.Close();
                }
            }
            else
            {
                CLogger.add("指定した補助記憶装置に設定データが存在しません。");
            }
            if (!bReaded)
            {
                resetData();
                save();
            }
            CLogger.add(data.ToString());
            if (loaded != null)
            {
                loaded(this, EventArgs.Empty);
            }
        }
Пример #24
0
        //* ────________________________________*
        //* methods ───────────────────────────────-*

        //* -----------------------------------------------------------------------*
        /// <summary>ゲームを初期化します。</summary>
        protected override void Initialize()
        {
            CStateCapsXNA xnastate = CStateCapsXNA.instance;

            xnastate.nextState       = CStateInitialize.instance;
            CStarter.scene.nextState = xnastate;
#if !DEBUG
            CLogger.outFile = Resources.FILE_BOOTLOG;
            CLogger.add(xnastate.report);
#endif
            CStarter.startNineball(this, graphicDeviceManager);
            inputManager.ButtonsNum        = 1;
            inputManager.inputDevice       = EInputDevice.XBOX360 | EInputDevice.Keyboard;
            inputManager.keyboardAssign    = new Keys[] { Keys.Space };
            inputManager.xbox360Assign     = new Buttons[] { Buttons.A };
            inputManager.xbox360AxisAssign = EAxisXBOX360.DPad;
            new CGameComponent(this, inputManager, true);
            base.Initialize();
        }
Пример #25
0
        //* -----------------------------------------------------------------------*
        /// <summary>1フレーム分の更新処理をします。</summary>
        ///
        /// <param name="gameTime">前フレームからの経過時間</param>
        protected override void Update(GameTime gameTime)
        {
#if WINDOWS
            bool bUpdate = IsActive;
#else
            CGuideManager.update();
            bool bUpdate = IsActive && !Guide.IsVisible;
#endif
            if (bUpdate)
            {
                if (input != null)
                {
                    input.update();
                }
                if (!sceneManager.update(gameTime))
                {
                    CLogger.add("ゲームの終了処理を開始します。");
                    isExit = true;
                    Content.Unload();
                    if (input != null)
                    {
                        input.Dispose();
                        input = null;
                    }
                    if (audio != null)
                    {
                        audio.Dispose();
                        audio = null;
                    }
                    if (spriteDraw != null)
                    {
                        spriteDraw.Dispose();
                        spriteDraw = null;
                    }
                    Exit();
                }
            }
            if (audio != null)
            {
                audio.update();
            }
            base.Update(gameTime);
        }
Пример #26
0
        //* -----------------------------------------------------------------------*
        /// <summary>
        /// アンマネージ リソースの解放およびリセットに関連付けられている
        /// アプリケーション定義のタスクを実行します。
        /// </summary>
        public void Dispose()
        {
#if XBOX360
            try
            {
                device = null;
                if (container != null)
                {
                    container.Dispose();
                    container = null;
                }
            }
            catch (Exception e)
            {
                CLogger.add(string.Format(Resources.GENERAL_ERR_RELEASE, "I/O"));
                CLogger.add(e);
            }
            GC.SuppressFinalize(this);
#endif
        }
Пример #27
0
 //* -----------------------------------------------------------------------*
 /// <summary>ロード処理</summary>
 protected override void LoadContent()
 {
     CLogger.add("ゲームリソースを読込しています...");
     SStarter <_T> .SXACTInitializeData xact = INITIALIZE_DATA.XACTConfigure;
     if (xact)
     {
         audio = new CAudio(xact.index2assert, xact.loopSEInterval,
                            xact.fileXGS, xact.fileXSB, xact.fileXWBSE, xact.fileXWBBGM);
     }
     RESOURCE_MANAGER_TEXTURE.reload(true, Content);
     RESOURCE_MANAGER_FONT.reload(true, Content);
     if (spriteDraw != null)
     {
         spriteDraw.Dispose();
     }
     spriteDraw = new CSprite(GraphicsDevice);
     GC.Collect();
     base.LoadContent();
     CLogger.add("ゲームリソースの読込完了。");
 }
Пример #28
0
        //* -----------------------------------------------------------------------*
        /// <summary>
        /// アンマネージ リソースの解放およびリセットに関連付けられている
        /// アプリケーション定義のタスクを実行します。
        /// </summary>
        public void Dispose()
        {
#if XBOX360
            try
            {
                device = null;
                if (container != null)
                {
                    container.Dispose();
                    container = null;
                }
            }
            catch (Exception e)
            {
                CLogger.add("ゲーム 設定データI/Oクラスの解放時に例外が発生しました。");
                CLogger.add(e);
            }
            GC.SuppressFinalize(this);
#endif
        }
Пример #29
0
 //* -----------------------------------------------------------------------*
 /// <summary>ロード処理</summary>
 protected override void LoadContent()
 {
     CLogger.add("ゲームリソースを読込しています...");
     SStarter <_T> .SXACTInitializeData xact = initializeData.XACTConfigure;
     if (xact)
     {
         audio = new CAudio(xact.index2assert, xact.loopSEInterval,
                            xact.fileXGS, xact.fileXSB, xact.fileXWBSE, xact.fileXWBBGM);
     }
     textureResourceManager.reload(true, Content);
     fontResourceManager.reload(true, Content);
     if (spriteDraw != null)
     {
         spriteDraw.Dispose();
     }
     spriteDraw = new CSprite(GraphicsDevice);
     GC.Collect();
     base.LoadContent();
     CLogger.add("ゲームリソースの読込完了。");
 }
Пример #30
0
        //* -----------------------------------------------------------------------*
        /// <summary>設定データを補助記憶装置から読み出します。</summary>
        /// <remarks>
        /// XBOX360版ではアプリケーションとは非同期にダイアログが
        /// 表示されるので、出現中もアプリケーションは停止せず進行を続けます。
        /// </remarks>
        public void load()
        {
            CLogger.add(string.Format(Resources.IO_INFO_LOADING, fileName, typeName));
            CIOInfo info = CIOInfo.instance;

            if (info.deviceReady)
            {
                load(info.getPath(fileName));
            }
            else
            {
                if (CGuideWrapper.instance == null)
                {
                    Guide.BeginShowStorageDeviceSelector(onSelectedDevice, this);
                }
                else
                {
                    CGuideWrapper.instance.BeginShowStorageDeviceSelector(onSelectedDevice, this);
                }
            }
        }