GameServer
ScriptExecuterBase.h
[詳解]
1 
6 #ifndef __SCRIPTEXECUTERBASE_H__
7 #define __SCRIPTEXECUTERBASE_H__
8 
9 #include <string>
10 #include "TypeDefs.h"
11 #include "lua.hpp"
12 #include "lauxlib.h"
13 #include "lualib.h"
14 
20 {
21 
22 public:
23 
28 
32  virtual ~ScriptExecuterBase();
33 
39  void SetScriptDir(const char *pScriptDir) { ScriptDir = pScriptDir; }
40 
46  void ExecuteScript(const char *pScript);
47 
52  void Resume();
53 
59  bool IsFinished() const { return bIsFinished; }
60 
67  virtual void ShowMessage_Impl(const std::string &Message) = 0;
68 
75  virtual void PushSelection_Impl(const std::string &Message) = 0;
76 
82  virtual void ShowSelection_Impl() = 0;
83 
89  void OnSelectedSelection(int Index);
90 
97  virtual void SetFlag(int Flag) = 0;
98 
106  virtual bool GetFlag(int Flag) = 0;
107 
115  virtual bool IsQuestActive(u32 QuestId) = 0;
116 
123  virtual void ProgressQuest(u32 QuestId) = 0;
124 
132  virtual u32 GetQuestStageNo(u32 QuestId) = 0;
133 
141  virtual u32 GetItemCount(u32 ItemId) = 0;
142 
150  virtual void ConsumeItem(u32 ItemId, u32 Count) = 0;
151 
158  virtual void AcceptQuest(u32 QuestId) = 0;
159 
167  virtual bool IsQuestClear(u32 QuestId) = 0;
168 
175  virtual void ShowShop_Impl(u32 ShopId) = 0;
176 
177 protected:
178 
184  virtual void OnExecuteError(const std::string &ErrorMessage) = 0;
185 
190  virtual void OnFinished() = 0;
191 
197  virtual void ShowDebugMessage(const std::string &Message) = 0;
198 
205  virtual bool IsServer() const = 0;
206 
207 private:
208 
209  // Luaステート
210  lua_State *pState;
211 
212  // コルーチン用State
213  lua_State *pCoroutineState;
214 
215  // コルーチンの参照.
216  int CoroutineRef;
217 
218  // スクリプトが格納されたディレクトリ
219  std::string ScriptDir;
220 
221  // ID
222  long Id;
223 
224  // 終了しているか?
225  bool bIsFinished;
226 
227 
228  // 関数群をバインド。
229  void BindFunctions();
230 
231  // 関数をバインド。
232  void BindFunction(lua_CFunction Func, const char *pName);
233 
234  // Stateを生成.
235  void CreateState();
236 
237  // StateをClose
238  void CloseState();
239 
240  // サーバモードで動かしている時は動かさないものをコメントアウト
241  void CommentOutWithServerMode(std::string &Code);
242 
243  // 関数のコメントアウト
244  void CommentOutFunction(std::string &Code, const std::string &FunctionName);
245 
246 };
247 
248 #endif // #ifndef __SCRIPTEXECUTERBASE_H__
virtual void ConsumeItem(u32 ItemId, u32 Count)=0
アイテムを消費
void ExecuteScript(const char *pScript)
スクリプトを実行
Definition: ScriptExecuterBase.cpp:33
bool IsFinished() const
終了しているか?
Definition: ScriptExecuterBase.h:59
virtual bool GetFlag(int Flag)=0
フラグを取得
virtual void ShowShop_Impl(u32 ShopId)=0
ショップ画面を表示
virtual u32 GetItemCount(u32 ItemId)=0
アイテム数を取得
void Resume()
スクリプトの実行を再開
Definition: ScriptExecuterBase.cpp:101
ScriptExecuterBase()
コンストラクタ
Definition: ScriptExecuterBase.cpp:15
void OnSelectedSelection(int Index)
選択肢が選択された
Definition: ScriptExecuterBase.cpp:121
unsigned int u32
Definition: TypeDefs.h:10
virtual void OnExecuteError(const std::string &ErrorMessage)=0
virtual ~ScriptExecuterBase()
デストラクタ
Definition: ScriptExecuterBase.cpp:26
virtual bool IsQuestActive(u32 QuestId)=0
クエストが進行中か?
virtual void SetFlag(int Flag)=0
フラグをセット
スクリプト実行基底クラス
Definition: ScriptExecuterBase.h:19
virtual bool IsServer() const =0
サーバモードか?
virtual void PushSelection_Impl(const std::string &Message)=0
選択肢をプッシュ
virtual void ShowSelection_Impl()=0
選択肢を表示
virtual void ShowMessage_Impl(const std::string &Message)=0
メッセージを表示
virtual void AcceptQuest(u32 QuestId)=0
クエスト受注
virtual void ProgressQuest(u32 QuestId)=0
クエスト進行
virtual u32 GetQuestStageNo(u32 QuestId)=0
クエストのステージ番号を取得
void SetScriptDir(const char *pScriptDir)
スクリプトが格納されたディレクトリを設定
Definition: ScriptExecuterBase.h:39
virtual void OnFinished()=0
終了コールバック
virtual void ShowDebugMessage(const std::string &Message)=0
デバッグメッセージを表示
virtual bool IsQuestClear(u32 QuestId)=0
クエストをクリアしているか?