AbyssLib 1.301
あびす謹製ノベルゲームフレームワークライブラリ
|
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