AbyssLib 1.301
あびす謹製ノベルゲームフレームワークライブラリ

AbyssLibSrc/AbyssLib/AbyssLib/AbyssLib.h

説明を見る。
00001 /*************************************************
00002 ファイル名:AbyssLib.h
00003 作成者  :あびす
00004 役割   :ノベルエンジン
00005 *************************************************/
00010 #ifndef ABYSSLIB_ABYSSLIB_H
00011 #define ABYSSLIB_ABYSSLIB_H
00012 
00013 namespace nsAbyssLib{
00014 
00015 namespace nsScene{
00016 //依存クラス(参照先:Scene.h)
00017 class IScene_Base;
00018 }
00019 
00020 namespace nsCore{
00021 
00022 //状態遷移用
00026 enum NOVELENGINE_STATE{
00030     ST_NORMAL,                                                                  //通常
00034     ST_BACKLOG,                                                                 //既読履歴
00038     ST_SAVE,                                                                    //セーブ
00042     ST_LOAD,                                                                    //ロード
00046     ST_CONFIG,                                                                  //環境設定
00050     ST_MENU,                                                                    //メニュー
00054     ST_SUSPEND,                                                                 //一時停止
00058     ST_ENDAPP,                                                                  //アプリ終了
00059 };
00060 
00061 //初期化用
00067 enum NOVELPLAYER_INIT{
00072     IT_ALLOW_NONE = 0,                                                          //競合する可能性がある処理を一切行わない
00076     IT_ALLOW_CHANGEDISPLAYMODE = 1,                                             //画面モードの変更を行う
00081     IT_ALLOW_ALL = 1,                                                           //競合する可能性がある処理を全て行う
00082 };
00083 
00084 //ノベルエンジン(インターフェース)
00091 class INovelEngine{
00092 public:
00096     virtual void Initialize() = 0;                                              //初期化
00097 
00102     virtual ISingleHeap* GetLabel() = 0;                                        //ラベルを取得(1)
00107     virtual const ISingleHeap* GetLabel() const = 0;                            //ラベルを取得(2)
00112     virtual ISingleHeap* GetLocal() = 0;                                        //内部変数を取得(1)
00117     virtual const ISingleHeap* GetLocal() const = 0;                            //内部変数を取得(2)
00122     virtual ISingleHeap* GetGlobal() = 0;                                       //外部変数を取得(1)
00127     virtual const ISingleHeap* GetGlobal() const = 0;                           //外部変数を取得(2)
00132     virtual ISingleHeap* GetSymbolName() = 0;                                   //シンボル名を取得(1)
00137     virtual const ISingleHeap* GetSymbolName() const = 0;                       //シンボル名を取得(2)
00142     virtual ICommandHeap* GetCommand() = 0;                                     //命令リストを取得(1)
00147     virtual const ICommandHeap* GetCommand() const = 0;                         //命令リストを取得(2)
00148 
00153     virtual ITaskManager* GetTask() = 0;                                        //描画タスクの管理を取得(1)
00158     virtual const ITaskManager* GetTask() const = 0;                            //描画タスクの管理を取得(2)
00163     virtual ITextManager* GetText() = 0;                                        //既読履歴の管理を取得(1)
00168     virtual const ITextManager* GetText() const = 0;                            //既読履歴の管理を取得(2)
00169 
00174     virtual ITextStream* GetPrint() = 0;                                        //テキスト出力ストリームを取得(1)
00179     virtual const ITextStream* GetPrint() const = 0;                            //テキスト出力ストリームを取得(2)
00184     virtual IInputManager* GetInput() = 0;                                      //ユーザー入力用デバイスを取得(1)
00189     virtual const IInputManager* GetInput() const = 0;                          //ユーザー入力用デバイスを取得(2)
00194     virtual ISoundManager* GetSound() = 0;                                      //サウンド用デバイスを取得(1)
00199     virtual const ISoundManager* GetSound() const = 0;                          //サウンド用デバイスを取得(2)
00204     virtual IDrawManager* GetDraw() = 0;                                        //グラフィック用デバイスを取得(1)
00209     virtual const IDrawManager* GetDraw() const = 0;                            //グラフィック用デバイスを取得(2)
00210 
00217     virtual HWND GetMyAppHWND() const = 0;                                      //ウインドウハンドルを取得
00218 
00223     virtual unsigned int GetState() const = 0;                                  //状態を取得
00228     virtual void SetState(unsigned int State) = 0;                              //状態を設定
00233     virtual void PushState(unsigned int State) = 0;                             //状態をプッシュ
00234 
00240     virtual bool GetMenu() const = 0;                                           //メニューの有無を取得
00246     virtual void SetMenu(bool IsMenu) = 0;                                      //メニューの有無を設定
00247 
00254     virtual bool IsUsedSE(const char* FileName) const = 0;                      //SEを使用しているか?
00261     virtual bool IsUsedBGM(const char* FileName) const = 0;                     //BGMを使用しているか?
00268     virtual bool IsUsedVoice(const char* FileName) const = 0;                   //音声を使用しているか?
00275     virtual bool IsUsedImage(const char* FileName) const = 0;                   //画像を使用しているか?
00276     //セーブ/ロード
00283     virtual bool SaveLocalData(const char* FileName, IIOStream* IOStream) = 0;  //ローカルデータを保存する
00290     virtual bool LoadLocalData(const char* FileName, IIOStream* IOStream) = 0;  //ローカルデータを読み込む
00307     virtual bool AddLoadObject(const char* FileName, IIOStream* IOStream) = 0;  //オブジェクトファイルを追加で読み込む
00308     //スクリプト内で使用するデータ入出力クラスを設定・取得
00313     virtual void SetIOStreamUseInScript(IIOStream* IOStream) = 0;               //スクリプト内で使用するデータ入出力クラスを設定
00318     virtual IIOStream* GetIOStreamUseInScript() const = 0;                      //スクリプト内で使用するデータ入出力クラスを取得
00319 };
00320 
00321 //ノベルエンジン(コンパイル・リンク用)
00325 class NovelEditor : public INovelEngine{
00326 public:
00331     NovelEditor(BaseTextStream* Text);                                          //コンストラクタ
00335     ~NovelEditor();                                                             //デストラクタ
00336 
00337     ISingleHeap* GetLabel();                                                    //ラベルを取得(1)
00338     const ISingleHeap* GetLabel() const;                                        //ラベルを取得(2)
00339     ISingleHeap* GetLocal();                                                    //内部変数を取得(1)
00340     const ISingleHeap* GetLocal() const;                                        //内部変数を取得(2)
00341     ISingleHeap* GetGlobal();                                                   //外部変数を取得(1)
00342     const ISingleHeap* GetGlobal() const;                                       //外部変数を取得(2)
00343     ISingleHeap* GetSymbolName();                                               //シンボル名を取得(1)
00344     const ISingleHeap* GetSymbolName() const;                                   //シンボル名を取得(2)
00345     ICommandHeap* GetCommand();                                                 //命令リストを取得(1)
00346     const ICommandHeap* GetCommand() const;                                     //命令リストを取得(2)
00347 
00348     ITextStream* GetPrint();                                                    //テキスト出力ストリームを取得(1)
00349     const ITextStream* GetPrint() const;                                        //テキスト出力ストリームを取得(2)
00356     bool SaveScript(const string& FileName, IIOStream* IOStream);               //スクリプトファイルを保存する
00363     bool LoadScript(const string& FileName, IIOStream* IOStream);               //スクリプトファイルを読み込む
00370     bool SaveObject(const string& FileName, IIOStream* IOStream);               //オブジェクトファイルを保存する
00377     bool LoadObject(const string& FileName, IIOStream* IOStream);               //オブジェクトファイルを読み込む
00378     bool SaveLocalData(const char* FileName, IIOStream* IOStream){              //ローカルデータを保存する
00379         WARNING
00380         return(false);
00381     }
00382     bool LoadLocalData(const char* FileName, IIOStream* IOStream){              //ローカルデータをファイルから読み込む
00383         WARNING
00384         return(false);
00385     }
00386     bool AddLoadObject(const char* FileName, IIOStream* IOStream){              //オブジェクトファイルを追加で読み込む
00387         WARNING
00388         return(false);
00389     }
00390 
00391     void SetIOStreamUseInScript(IIOStream* IOStream){                           //スクリプト内で使用するデータ入出力クラスを設定
00392         WARNING
00393     }
00394     IIOStream* GetIOStreamUseInScript() const{                                  //スクリプト内で使用するデータ入出力クラスを取得
00395         WARNING
00396         return(NULL);
00397     }
00398 private:
00399     NovelEditor* Outer;                                                         //補助
00400     SingleHeap m_Label;                                                         //ラベル
00401     SingleHeap m_Local;                                                         //内部変数
00402     SingleHeap m_Global;                                                        //外部変数
00403     SingleHeap m_SymbolName;                                                    //シンボル名
00404     CommandHeap m_Command;                                                      //命令リスト
00405     BaseTextStream* m_TextStream;                                               //テキスト出力ストリーム
00406 
00407     NovelEditor();                                                              //デフォルトコンストラクタ(禁止)
00408     NovelEditor(const NovelEditor&);                                            //コピーコンストラクタ(禁止)
00409     NovelEditor& operator =(const NovelEditor&);                                //代入演算子(禁止)
00410     //以下呼び出し禁止メソッド
00411     void Initialize(){                                                          //初期化
00412         WARNING
00413     }
00414     ITaskManager* GetTask(){                                                    //描画タスクの管理を取得(1)
00415         WARNING
00416         return(NULL);
00417     }
00418     const ITaskManager* GetTask() const{                                        //描画タスクの管理を取得(2)
00419         WARNING
00420         return(NULL);
00421     }
00422     ITextManager* GetText(){                                                    //既読履歴の管理を取得(1)
00423         WARNING
00424         return(NULL);
00425     }
00426     const ITextManager* GetText() const{                                        //既読履歴の管理を取得(2)
00427         WARNING
00428         return(NULL);
00429     }
00430     IInputManager* GetInput(){                                                  //ユーザー入力用デバイスを取得(1)
00431         WARNING
00432         return(NULL);
00433     }
00434     const IInputManager* GetInput() const{                                      //ユーザー入力用デバイスを取得(2)
00435         WARNING
00436         return(NULL);
00437     }
00438     ISoundManager* GetSound(){                                                  //サウンド用デバイスを取得(1)
00439         WARNING
00440         return(NULL);
00441     }
00442     const ISoundManager* GetSound() const{                                      //サウンド用デバイスを取得(2)
00443         WARNING
00444         return(NULL);
00445     }
00446     IDrawManager* GetDraw(){                                                    //グラフィック用デバイスを取得(1)
00447         WARNING
00448         return(NULL);
00449     }
00450     const IDrawManager* GetDraw() const{                                        //グラフィック用デバイスを取得(2)
00451         WARNING
00452         return(NULL);
00453     }
00454     HWND GetMyAppHWND() const{                                                  //ウインドウハンドルを取得
00455         WARNING
00456         return(NULL);
00457     }
00458     unsigned int GetState() const{                                              //状態を取得
00459         WARNING
00460         return(0);
00461     }
00462     void SetState(unsigned int State){                                          //状態を設定
00463         WARNING
00464     }
00465     void PushState(unsigned int State){                                         //状態をプッシュ
00466         WARNING
00467     }
00468     bool GetMenu() const{                                                       //メニューの有無を取得
00469         WARNING
00470         return(false);
00471     }
00472     void SetMenu(bool IsMenu){                                                  //メニューの有無を設定
00473         WARNING
00474     }
00475     bool IsUsedSE(const char* FileName) const{                                  //SEを使用しているか?
00476         WARNING
00477         return(false);
00478     }
00479     bool IsUsedBGM(const char* FileName) const{                                 //BGMを使用しているか?
00480         WARNING
00481         return(false);
00482     }
00483     bool IsUsedVoice(const char* FileName) const{                               //音声を使用しているか?
00484         WARNING
00485         return(false);
00486     }
00487     bool IsUsedImage(const char* FileName) const{                               //画像を使用しているか?
00488         WARNING
00489         return(false);
00490     }
00491 };
00492 
00493 //ノベルエンジン(実行用)
00497 class NovelPlayer : public INovelEngine{
00498 public:
00507     NovelPlayer(BaseTextStream* Text, BaseInputManager* Input, BaseSoundManager* Sound, BaseDrawManager* Graphic, unsigned int InitFlag);
00508                                                                                 //コンストラクタ
00512     virtual ~NovelPlayer();                                                     //仮想デストラクタ
00513 
00514     void Initialize();                                                          //初期化
00515 
00516     ISingleHeap* GetLabel();                                                    //ラベルを取得(1)
00517     const ISingleHeap* GetLabel() const;                                        //ラベルを取得(2)
00518     ISingleHeap* GetLocal();                                                    //内部変数を取得(1)
00519     const ISingleHeap* GetLocal() const;                                        //内部変数を取得(2)
00520     ISingleHeap* GetGlobal();                                                   //外部変数を取得(1)
00521     const ISingleHeap* GetGlobal() const;                                       //外部変数を取得(2)
00522     ISingleHeap* GetSymbolName();                                               //シンボル名を取得(1)
00523     const ISingleHeap* GetSymbolName() const;                                   //シンボル名を取得(2)
00524     ICommandHeap* GetCommand();                                                 //命令リストを取得(1)
00525     const ICommandHeap* GetCommand() const;                                     //命令リストを取得(2)
00526 
00527     ITaskManager* GetTask();                                                    //描画タスクの管理を取得(1)
00528     const ITaskManager* GetTask() const;                                        //描画タスクの管理を取得(2)
00529     ITextManager* GetText();                                                    //既読履歴の管理を取得(1)
00530     const ITextManager* GetText() const;                                        //既読履歴の管理を取得(2)
00531 
00532     ITextStream* GetPrint();                                                    //テキスト出力ストリームを取得(1)
00533     const ITextStream* GetPrint() const;                                        //テキスト出力ストリームを取得(2)
00534     IInputManager* GetInput();                                                  //ユーザー入力用デバイスを取得(1)
00535     const IInputManager* GetInput() const;                                      //ユーザー入力用デバイスを取得(2)
00536     ISoundManager* GetSound();                                                  //サウンド用デバイスを取得(1)
00537     const ISoundManager* GetSound() const;                                      //サウンド用デバイスを取得(2)
00538     IDrawManager* GetDraw();                                                    //グラフィック用デバイスを取得(1)
00539     const IDrawManager* GetDraw() const;                                        //グラフィック用デバイスを取得(2)
00540 
00544     void Run();                                                                 //実行(ラベル指定なし)
00549     void Run(const string& LabelName);                                          //実行(ラベル指定あり)
00550 
00554     void Resume();                                                              //再開(ラベル指定なし)
00559     void Resume(const string& LabelName);                                       //再開(ラベル指定あり)
00560 
00561     //
00562     //  ウインドウハンドルを取得
00563     //
00564     //  ・ウインドウハンドルを取得
00565     //
00566     virtual HWND GetMyAppHWND() const = 0;
00567 
00568     unsigned int GetState() const;                                              //状態を取得
00569     void SetState(unsigned int State);                                          //状態を設定
00573     void PopState();                                                            //状態をポップ
00574     void PushState(unsigned int State);                                         //状態をプッシュ
00580     void InitState();                                                           //状態を初期化
00581 
00590     void EnableSystem();                                                        //入力受付を有効化
00599     void DisableSystem();                                                       //入力受付を無効化
00607     bool GetSystemState() const;                                                //入力受付の有無を取得
00608 
00609     bool GetMenu() const;                                                       //メニューの有無を取得
00610     void SetMenu(bool IsMenu);                                                  //メニューの有無を設定
00611 
00612     bool IsUsedSE(const char* FileName) const;                                  //SEを使用しているか?
00613     bool IsUsedBGM(const char* FileName) const;                                 //BGMを使用しているか?
00614     bool IsUsedVoice(const char* FileName) const;                               //音声を使用しているか?
00615     bool IsUsedImage(const char* FileName) const;                               //画像を使用しているか?
00616 
00623     bool LoadScript(const string& FileName, IIOStream* IOStream);               //スクリプトファイルを読み込む
00624     bool SaveLocalData(const char* FileName, IIOStream* IOStream);              //ローカルデータを保存する
00625     bool LoadLocalData(const char* FileName, IIOStream* IOStream);              //ローカルデータを読み込む
00632     bool SaveGlobalData(const string& FileName, IIOStream* IOStream);           //グローバルデータを保存する
00639     bool LoadGlobalData(const string& FileName, IIOStream* IOStream);           //グローバルデータを読み込む
00646     bool SaveEnvironmentData(const string& FileName, IIOStream* IOStream);      //環境設定を保存する
00655     bool LoadEnvironmentData(const string& FileName, bool AllowChangeDisplayMode, IIOStream* IOStream);
00656                                                                                 //環境設定を読み込む
00657     bool AddLoadObject(const char* FileName, IIOStream* IOStream);              //オブジェクトファイルを追加で読み込む
00658 
00659     void SetIOStreamUseInScript(IIOStream* IOStream);                           //スクリプト内で使用するデータ入出力クラスを設定
00660     IIOStream* GetIOStreamUseInScript() const;                                  //スクリプト内で使用するデータ入出力クラスを取得
00661 
00666     void SetNormalScene(IScene_Base* Scene);                                    //シーンクラス(通常)を設定
00671     void SetBackLogScene(IScene_Base* Scene);                                   //シーンクラス(既読履歴)を設定
00676     void SetSaveScene(IScene_Base* Scene);                                      //シーンクラス(セーブ)を設定
00681     void SetLoadScene(IScene_Base* Scene);                                      //シーンクラス(ロード)を設定
00686     void SetConfigScene(IScene_Base* Scene);                                    //シーンクラス(環境設定)を設定
00691     void SetMenuScene(IScene_Base* Scene);                                      //シーンクラス(メニュー)を設定
00692 protected:
00699     virtual void _Suspend(){}                                                   //一時停止(空関数)
00705     virtual void _EndApp() = 0;
00706 private:
00707     NovelPlayer* Outer;                                                         //補助
00708     string m_ScriptFileName;                                                    //読み込んだスクリプト名
00709     SingleHeap m_SymbolInfo;                                                    //シンボル情報
00710     BaseTextStream* m_TextStream;                                               //テキスト出力ストリーム
00711     bool m_IsMenu;                                                              //メニュー用
00712     bool m_SystemState;                                                         //入力受付用
00713     vector<unsigned int> m_State;                                               //状態管理用
00714     SingleHeap m_Label;                                                         //ラベル
00715     SingleHeap m_Local;                                                         //内部変数
00716     SingleHeap m_Global;                                                        //外部変数
00717     SingleHeap m_SymbolName;                                                    //シンボル名
00718     CommandHeap m_Command;                                                      //命令リスト
00719     TextManager m_ReadRecord;                                                   //既読履歴の管理
00720     TaskManager m_DrawTask;                                                     //描画タスクの管理
00721     BaseInputManager* m_InputManager;                                           //ユーザー入力用デバイス
00722     BaseSoundManager* m_SoundManager;                                           //サウンド用デバイス
00723     BaseDrawManager* m_DrawManager;                                             //グラフィック用デバイス
00724     IIOStream* m_IOStreamUseInScript;                                           //スクリプト内で使用するデータ入出力クラス
00725     IScene_Base* m_Normal;                                                      //シーンクラス(通常)
00726     IScene_Base* m_BackLog;                                                     //シーンクラス(既読履歴)
00727     IScene_Base* m_Save;                                                        //シーンクラス(セーブ)
00728     IScene_Base* m_Load;                                                        //シーンクラス(ロード)
00729     IScene_Base* m_Config;                                                      //シーンクラス(環境設定)
00730     IScene_Base* m_Menu;                                                        //シーンクラス(メニュー)
00731 
00732     NovelPlayer();                                                              //デフォルトコンストラクタ(禁止)
00733     NovelPlayer(const NovelPlayer&);                                            //コピーコンストラクタ(禁止)
00734     NovelPlayer& operator =(const NovelPlayer&);                                //代入演算子(禁止)
00735 };
00736 
00737 
00738 
00739 //各種設定の一括保存/読み込み
00749 void SaveSettingsToFile(NovelPlayer* Outer, IIOStream* IOStream, 
00750                         const char* GlobalDataFileName = DEFAULT_FILE_GLOBALSAVE, 
00751                         const char* KidokuDataFileName = DEFAULT_FILE_KIDOKUSAVE, 
00752                         const char* EnvironmentDataFileName = DEFAULT_FILE_ENVIRONMENT);
00763 void LoadSettingsFromFile(NovelPlayer* Outer, IIOStream* IOStream, 
00764                           unsigned int InitFlag = IT_ALLOW_ALL, 
00765                           const char* GlobalDataFileName = DEFAULT_FILE_GLOBALSAVE, 
00766                           const char* KidokuDataFileName = DEFAULT_FILE_KIDOKUSAVE, 
00767                           const char* EnvironmentDataFileName = DEFAULT_FILE_ENVIRONMENT);
00768 
00769 }
00770 }
00771 
00772 #endif
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義