AbyssLib 1.301
あびす謹製ノベルゲームフレームワークライブラリ
|
00001 /************************************************* 00002 ファイル名:Command.h 00003 作成者 :あびす 00004 役割 :各種命令 00005 *************************************************/ 00010 #ifndef ABYSSLIB_COMMAND_H 00011 #define ABYSSLIB_COMMAND_H 00012 00013 namespace nsAbyssLib{ 00014 namespace nsCommand{ 00015 00016 //各種命令の列挙型 00024 enum TYPE_CMD{ 00028 NO_CMD, //非命令 00029 }; 00030 00031 //各種命令のパラメータ 00037 struct CmdParam{ 00041 int nArg[10]; //定数 00045 mystr strArg[20]; //文字列 00049 Expression ExArg[30]; //多項式 00050 00054 CmdParam(){ //デフォルトコンストラクタ 00055 Clear(); 00056 } 00060 void Clear(){ //各要素をクリア 00061 for(int i=0;i<10;i++){ 00062 nArg[i] = 0; 00063 } 00064 for(int i=0;i<20;i++){ 00065 strArg[i] = ""; 00066 } 00067 for(int i=0;i<30;i++){ 00068 ExArg[i].clear(); 00069 } 00070 } 00071 }; 00072 00073 //命令クラス(インターフェース) 00080 class ICmd_Base{ 00081 public: 00089 virtual void Initialize(){} //状態変数を初期化 00097 virtual void Suicide() = 0; //自分自身を削除 00098 00104 virtual void Run() = 0; //命令を実行 00112 virtual void SetParent(INovelEngine* Parent){ //親エンジンを設定 00113 Outer = Parent; 00114 } 00121 virtual void SetParam(const CmdParam& Parameter){} //メンバ変数を設定 00122 00132 virtual int GetID() const = 0; //命令の種類を取得 00139 virtual void Print(const ITextStream* Output) const = 0; //命令の内容を表示 00140 00147 virtual void Save(IIOStream* IOStream){} //ファイルに書き込む 00154 virtual void Load(IIOStream* IOStream){} //ファイルから読み出す 00155 protected: 00161 INovelEngine* Outer; //親エンジンのアドレス 00162 }; 00163 00164 //命令クラスのFactory関数 00172 ICmd_Base* CommandFactory(unsigned int CommandType); 00173 00174 } 00175 } 00176 00177 #endif