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

AbyssLibSrc/AbyssLib/AbyssLib/TaskManager.h

説明を見る。
00001 /*************************************************
00002 ファイル名:TaskManager.h
00003 作成者  :あびす
00004 役割   :描画タスクの管理
00005 *************************************************/
00010 #ifndef ABYSSLIB_TASKMANAGER_H
00011 #define ABYSSLIB_TASKMANAGER_H
00012 
00013 namespace nsAbyssLib{
00014 
00015 namespace nsCore{
00016 //依存クラス(参照先:AbyssLib.h)
00017 class INovelEngine;
00018 }
00019 
00020 namespace nsTaskManager{
00021 
00022 //描画タスクの種類
00026 enum DRAWTASK_TYPE{
00030     TYPE_NONE,                                                                              //なし
00034     TYPE_RECT,                                                                              //矩形
00038     TYPE_TEXT,                                                                              //テキスト
00042     TYPE_GRAPHIC,                                                                           //グラフィック
00043 };
00044 //転送方法
00050 enum DRAWTASK_BLTTYPE{
00054     BLTTYPE_NML = 0,                                                                        //通常
00058     BLTTYPE_ADD = 1,                                                                        //加色合成
00062     BLTTYPE_SUB = 2,                                                                        //減色合成
00066     BLTTYPE_FAST = 4,                                                                       //抜き色なし
00072     BLTTYPE_NONE = 8,                                                                       //(門番)
00073 };
00074 //立ち絵の優先順位
00078 enum TASKMANAGER_CHPRIORITY{
00082     CHPRIORITY_LCR,                                                                         //左中右
00086     CHPRIORITY_LRC,                                                                         //左右中
00090     CHPRIORITY_CLR,                                                                         //中左右
00094     CHPRIORITY_CRL,                                                                         //中右左
00098     CHPRIORITY_RCL,                                                                         //右中左
00102     CHPRIORITY_RLC,                                                                         //右左中
00103 };
00104 
00105 //画面更新のパターン
00109 enum UPDATETYPE{
00113     UPDATETYPE_NONE,                                                                        //通常
00114 };
00115 
00116 //画面効果のパターン
00120 enum EFFECTTYPE{
00124     EFFECTTYPE_NONE,                                                                        //通常
00125 };
00126 
00127 //描画タスク
00131 struct DrawTask{
00132     //共通
00138     BYTE a;                                                                                 //透過度
00144     int x;                                                                                  //X座標
00150     int y;                                                                                  //Y座標
00156     int z;                                                                                  //描画の順序(1)
00163     bool IsShow;                                                                            //表示の有無
00170     unsigned int BltType;                                                                   //転送方法
00177     float Degree;                                                                           //回転角度
00178 
00179     //矩形用
00185     RECT RectPos;                                                                           //位置
00191     COLORREF Color;                                                                         //カラー
00192 
00193     //テキスト用
00199     TextTokenSection Text;                                                                  //テキスト
00200 
00201     //画像用
00207     RECT SrcRect;                                                                           //転送元矩形
00213     mystr FileName;                                                                         //ファイル名
00220     float ScalingX;                                                                         //拡大倍率(X方向)
00227     float ScalingY;                                                                         //拡大倍率(Y方向)
00228 
00229     //その他
00236     unsigned int zz;                                                                        //描画の順序(2)
00243     unsigned int Type;                                                                      //描画タスクの種類
00250     int nArg[10];                                                                           //引数(定数)
00257     mystr strArg[10];                                                                       //引数(文字列)
00258 
00262     DrawTask(){                                                                             //デフォルトコンストラクタ
00263         Clear();
00264     }
00268     void Clear(){                                                                           //各要素をクリア
00269         a = 255;
00270         x = 0;
00271         y = 0;
00272         z = 0;
00273         IsShow = false;
00274         BltType = BLTTYPE_NML;
00275         Degree = 0.0f;
00276 
00277         ZeroMemory(&RectPos, sizeof(RectPos));
00278         Color = 0;
00279 
00280         Text.clear();
00281 
00282         ZeroMemory(&SrcRect, sizeof(SrcRect));
00283         FileName = "";
00284         ScalingX = 1.0f;
00285         ScalingY = 1.0f;
00286 
00287         zz = 0;
00288         Type = 0;
00289         for(unsigned int i=0;i<10;i++){
00290             nArg[i] = 0;
00291             strArg[i] = "";
00292         }
00293     }
00299     bool operator ==(const DrawTask& t) const{                                              //比較演算子
00300         return(a==t.a && x==t.x && y==t.y && z==t.z && IsShow==t.IsShow && BltType==t.BltType && Degree==t.Degree && 
00301                RectPos.left==t.RectPos.left && RectPos.top==t.RectPos.top && RectPos.right==t.RectPos.right && RectPos.bottom==t.RectPos.bottom && Color==t.Color && 
00302                Text==t.Text && 
00303                SrcRect.left==t.SrcRect.left && SrcRect.top==t.SrcRect.top && SrcRect.right==t.SrcRect.right && SrcRect.bottom==t.SrcRect.bottom && FileName==t.FileName && ScalingX==t.ScalingX && ScalingY==t.ScalingY && 
00304                zz==t.zz && Type==t.Type);
00305     }
00306 };
00307 
00308 //スプライト
00315 struct Sprite{
00320     DrawTask SpriteTask[2];                                                                 //描画タスク
00321 
00325     Sprite(){                                                                               //デフォルトコンストラクタ
00326         Clear();
00327     }
00331     void Clear(){                                                                           //各要素をクリア
00332         SpriteTask[0].Clear();
00333         SpriteTask[1].Clear();
00334     }
00335 };
00336 
00337 //ボタン
00344 struct Button{
00350     bool IsPushed;                                                                          //クリック検知用
00356     bool IsCursored;                                                                        //カーソル検知用
00362     bool IsEnable;                                                                          //有効か?
00366     RECT ClickRect;                                                                         //判定矩形
00373     RECT SrcRect[2][4];                                                                     //転送元矩形
00377     mystr DestLabel;                                                                        //移動先ラベル
00381     mystr OnClickSE;                                                                        //クリック時のSE
00385     mystr OnCursorSE;                                                                       //カーソル時のSE
00389     Sprite ButtonTask;                                                                      //スプライト
00390 
00394     Button(){                                                                               //デフォルトコンストラクタ
00395         Clear();
00396     }
00400     void Clear(){                                                                           //各要素をクリア
00401         IsPushed = false;
00402         IsCursored = false;
00403         IsEnable = false;
00404         ZeroMemory(&ClickRect, sizeof(ClickRect));
00405         ZeroMemory(SrcRect, sizeof(SrcRect));
00406         DestLabel = "";
00407         OnClickSE = "";
00408         OnCursorSE = "";
00409         ButtonTask.Clear();
00410     }
00411 };
00412 
00413 //各種効果パターンのパラメータ
00417 struct EffectParam{
00421     int Type;                                                                               //種類
00427     DWORD Time;                                                                             //効果時間
00431     COLORREF Color;                                                                         //効果の色
00437     int nArg[10];                                                                           //引数(定数)
00443     mystr strArg[10];                                                                       //引数(文字列)
00444 
00448     EffectParam(){                                                                          //デフォルトコンストラクタ
00449         Clear();
00450     }
00454     void Clear(){                                                                           //各要素をクリア
00455         Type = 0;
00456         Time = 0;
00457         Color = 0;
00458         for(unsigned int i=0;i<10;i++){
00459             nArg[i] = 0;
00460             strArg[i] = "";
00461         }
00462     }
00463 };
00464 
00465 //各種更新パターンのパラメータ
00469 struct UpdateParam{
00473     int Type;                                                                               //種類
00479     DWORD Time;                                                                             //更新時間
00483     COLORREF Color;                                                                         //更新の色
00489     int nArg[10];                                                                           //引数(定数)
00495     mystr strArg[10];                                                                       //引数(文字列)
00496 
00500     UpdateParam(){                                                                          //デフォルトコンストラクタ
00501         Clear();
00502     }
00506     void Clear(){                                                                           //各要素をクリア
00507         Type = 0;
00508         Time = 0;
00509         Color = 0;
00510         for(unsigned int i=0;i<10;i++){
00511             nArg[i] = 0;
00512             strArg[i] = "";
00513         }
00514     }
00515 };
00516 
00517 //描画タスク・スプライト・ボタン管理(インターフェース)
00523 class ITaskManager{
00524 public:
00525     //z
00533     virtual void SetMaxZ(int z) = 0;                                                        //最大Zを設定
00541     virtual void SetMinZ(int z) = 0;                                                        //最小Zを設定
00548     virtual void SetReservedZBG(int z) = 0;                                                 //予約済みZ座標(背景)を設定
00556     virtual void SetReservedZCh1(int z) = 0;                                                //予約済みZ座標(立ち絵1)を設定
00564     virtual void SetReservedZCh2(int z) = 0;                                                //予約済みZ座標(立ち絵2)を設定
00572     virtual void SetReservedZCh3(int z) = 0;                                                //予約済みZ座標(立ち絵3)を設定
00573     //背景・立ち絵
00579     virtual void SetBG(const DrawTask& Task) = 0;                                           //背景を設定
00585     virtual void SetLCh(const DrawTask& Task) = 0;                                          //左立ち絵を設定
00591     virtual void SetCCh(const DrawTask& Task) = 0;                                          //中央立ち絵を設定
00597     virtual void SetRCh(const DrawTask& Task) = 0;                                          //右立ち絵を設定
00604     virtual void SetChPriority(unsigned int ChPriority) = 0;                                //立ち絵の優先順位を設定
00609     virtual void SetCharaSpace(unsigned int Space) = 0;                                     //立ち絵と画面左右端の間隔を設定
00610     //スプライト
00616     virtual void AddSprite(const char* SpriteName) = 0;                                     //新規追加
00623     virtual bool FindSprite(const char* SpriteName) const = 0;                              //存在するか?
00629     virtual void SetAllSpriteShow(bool IsShow) = 0;                                         //全表示/非表示
00637     virtual void SetSpriteShow(const char* SpriteName, bool IsShow) = 0;                    //表示/非表示
00648     virtual void SetSprite(const char* SpriteName, int x, int y, int z, BYTE a) = 0;        //移動(絶対座標)
00661     virtual void MoveSprite(const char* SpriteName, int x, int y, int z, int a) = 0;        //移動(相対座標)
00675     virtual void SetSpriteImage(const char* SpriteName, const char* FileName, unsigned int BltType, RECT Image, float ScalingX, float ScalingY, float Degree) = 0;
00676                                                                                             //画像を設定
00683     virtual void SetSpriteText(const char* SpriteName, const TextTokenSection& Text) = 0;   //テキストを設定
00690     virtual void SetSprite(const char* SpriteName, const DrawTask& Task) = 0;               //スプライトを設定
00691     //ボタン
00699     virtual void AddButton(const char* ButtonName) = 0;                                     //新規追加
00706     virtual bool FindButton(const char* ButtonName) const = 0;                              //存在するか?
00714     virtual void SetAllButtonShow(bool IsShow) = 0;                                         //全表示/非表示
00724     virtual void SetButtonShow(const char* ButtonName, bool IsShow) = 0;                    //表示/非表示
00732     virtual void SetAllButtonEnable(bool IsEnable) = 0;                                     //全有効化/無効化
00742     virtual void SetButtonEnable(const char* ButtonName, bool IsEnable) = 0;                //有効化/無効化
00753     virtual void SetButton(const char* ButtonName, int x, int y, int z, BYTE a) = 0;        //移動(絶対座標)
00766     virtual void MoveButton(const char* ButtonName, int x, int y, int z, int a) = 0;        //移動(相対座標)
00786     virtual void SetButtonImage(const char* ButtonName, const char* FileName, unsigned int BltType, RECT Normal, RECT OnCursor, RECT OnHold, RECT Disable, float ScalingX, float ScalingY, float Degree) = 0;
00787                                                                                             //画像を設定
00794     virtual void SetButton(const char* ButtonName, const DrawTask& Task) = 0;               //ボタンを設定
00803     virtual void SetButtonClickRect(const char* ButtonName, RECT ClickRect) = 0;            //判定矩形を設定
00811     virtual void SetButtonDestLabel(const char* ButtonName, const char* DestLabel) = 0;     //移動先ラベルを設定
00819     virtual void SetButtonSound(const char* ButtonName, const char* OnCursor, const char* OnClick) = 0;
00820                                                                                             //カーソル時/クリック時のSEを設定
00821     //画面更新
00826     virtual int GetUpdateType() const = 0;                                                  //更新の種類を取得
00832     virtual void SetUpdateParam(const UpdateParam& Parameter) = 0;                          //更新パターンを設定
00833     //画面効果
00838     virtual int GetEffectType() const = 0;                                                  //効果の種類を取得
00844     virtual void SetEffectParam(const EffectParam& Parameter) = 0;                          //効果パターンを設定
00845     //その他
00852     virtual bool IsUsedSE(const char* FileName) const = 0;                                  //SEを使用しているか?
00859     virtual bool IsUsedImage(const char* FileName) const = 0;                               //画像を使用しているか?
00860 };
00861 
00862 //前方宣言
00863 class TMAccessor;
00864 
00865 //描画タスク・スプライト・ボタン管理
00871 class TaskManager : public ITaskManager{
00875     friend class TMAccessor;                                                                //フレンドクラス
00876 public:
00880     TaskManager();                                                                          //デフォルトコンストラクタ
00881 
00885     void Initialize();                                                                      //初期化
00886 
00893     void SetParent(INovelEngine* Parent);                                                   //親エンジンを設定
00894 
00895     void SetMaxZ(int z);                                                                    //最大Zを設定
00896     void SetMinZ(int z);                                                                    //最小Zを設定
00897     void SetReservedZBG(int z);                                                             //予約済みZ座標(背景)を設定
00898     void SetReservedZCh1(int z);                                                            //予約済みZ座標(立ち絵1)を設定
00899     void SetReservedZCh2(int z);                                                            //予約済みZ座標(立ち絵2)を設定
00900     void SetReservedZCh3(int z);                                                            //予約済みZ座標(立ち絵3)を設定
00901 
00902     void SetBG(const DrawTask& Task);                                                       //背景を設定
00903     void SetLCh(const DrawTask& Task);                                                      //左立ち絵を設定
00904     void SetCCh(const DrawTask& Task);                                                      //中央立ち絵を設定
00905     void SetRCh(const DrawTask& Task);                                                      //右立ち絵を設定
00906     void SetChPriority(unsigned int ChPriority);                                            //立ち絵の優先順位を設定
00907     void SetCharaSpace(unsigned int Space);                                                 //立ち絵と画面左右端の間隔を設定
00908 
00909     void AddSprite(const char* SpriteName);                                                 //新規追加
00910     bool FindSprite(const char* SpriteName) const;                                          //存在するか?
00911     void SetAllSpriteShow(bool IsShow);                                                     //全表示/非表示
00912     void SetSpriteShow(const char* SpriteName, bool IsShow);                                //表示/非表示
00913     void SetSprite(const char* SpriteName, int x, int y, int z, BYTE a);                    //移動(絶対座標)
00914     void MoveSprite(const char* SpriteName, int x, int y, int z, int a);                    //移動(相対座標)
00915     void SetSpriteImage(const char* SpriteName, const char* FileName, unsigned int BltType, RECT Image, float ScalingX, float ScalingY, float Degree);
00916                                                                                             //画像を設定
00917     void SetSpriteText(const char* SpriteName, const TextTokenSection& Text);               //テキストを設定
00918     void SetSprite(const char* SpriteName, const DrawTask& Task);                           //スプライトを設定
00919 
00920     void AddButton(const char* ButtonName);                                                 //新規追加
00921     bool FindButton(const char* ButtonName) const;                                          //存在するか?
00922     void SetAllButtonShow(bool IsShow);                                                     //全表示/非表示
00923     void SetButtonShow(const char* ButtonName, bool IsShow);                                //表示/非表示
00924     void SetAllButtonEnable(bool IsEnable);                                                 //全有効化/無効化
00925     void SetButtonEnable(const char* ButtonName, bool IsEnable);                            //有効化/無効化
00926     void SetButton(const char* ButtonName, int x, int y, int z, BYTE a);                    //移動(絶対座標)
00927     void MoveButton(const char* ButtonName, int x, int y, int z, int a);                    //移動(相対座標)
00928     void SetButtonImage(const char* ButtonName, const char* FileName, unsigned int BltType, RECT Normal, RECT OnCursor, RECT OnHold, RECT Disable, float ScalingX, float ScalingY, float Degree);
00929                                                                                             //画像を設定
00930     void SetButton(const char* ButtonName, const DrawTask& Task);                           //ボタンを設定
00931     void SetButtonClickRect(const char* ButtonName, RECT ClickRect);                        //判定矩形を設定
00932     void SetButtonDestLabel(const char* ButtonName, const char* DestLabel);                 //移動先ラベルを設定
00933     void SetButtonSound(const char* ButtonName, const char* OnCursor, const char* OnClick); //カーソル時/クリック時のSEを設定
00937     void CheckButton();                                                                     //押下状態を調べて更新
00944     void EnterBRCS();                                                                       //検知の排他制御(開始)
00950     void LeaveBRCS();                                                                       //検知の排他制御(終了)
00957     void EnterBVCS();                                                                       //表示の排他制御(開始)
00963     void LeaveBVCS();                                                                       //表示の排他制御(終了)
00964 
00970     void Update();                                                                          //タスクリストを構築
00971     int GetUpdateType() const;                                                              //更新の種類を取得
00972     void SetUpdateParam(const UpdateParam& Parameter);                                      //更新パターンを設定
00973 
00980     void ExecuteEffect1();                                                                  //実行(各種描画前)
00987     void ExecuteEffect2();                                                                  //実行(各種描画後(テキストウインドウ描画前))
00994     void ExecuteEffect3();                                                                  //実行(各種描画後(テキストウインドウ描画後))
00995     int GetEffectType() const;                                                              //効果の種類を取得
00996     void SetEffectParam(const EffectParam& Parameter);                                      //効果パターンを設定
00997 
01002     void SaveL(IIOStream* IOStream);                                                        //保存(ローカル)
01007     void LoadL(IIOStream* IOStream);                                                        //読み込み(ローカル)
01012     vector<DrawTask>& GetTaskList();                                                        //描画タスクリストを取得(1)
01017     const vector<DrawTask>& GetTaskList() const;                                            //描画タスクリストを取得(2)
01018     bool IsUsedSE(const char* FileName) const;                                              //SEを使用しているか?
01019     bool IsUsedImage(const char* FileName) const;                                           //画像を使用しているか?
01020 private:
01021     //親エンジンのアドレス
01022     INovelEngine* Outer;                                                                    //親エンジンのアドレス
01023     //z
01024     int m_MaxZ, m_MinZ, m_RZBG, m_RZCh1, m_RZCh2, m_RZCh3;                                  //z座標
01025     //描画タスクリスト
01026     vector<DrawTask> m_TaskList;                                                            //描画タスクリスト
01027     //描画タスク関係
01028     Sprite m_BG;                                                                            //背景
01029     Sprite m_LCh;                                                                           //左立ち絵
01030     Sprite m_CCh;                                                                           //中央立ち絵
01031     Sprite m_RCh;                                                                           //右立ち絵
01032     map<string, Sprite> m_Sprite;                                                           //スプライト
01033     map<string, Button> m_Button;                                                           //ボタン
01034     unsigned int m_CharaSpace;                                                              //立ち絵と画面左右端の間隔
01035     unsigned int m_ChPriority[2];                                                           //立ち絵の優先順位
01036     unsigned int m_DrawTaskIterator;                                                        //描画タスクのイテレータ
01037     //画面更新用
01038     UpdateParam m_UpdateData;                                                               //画面更新用パラメータ
01039     //画面効果用
01040     EffectParam m_EffectData;                                                               //画面効果用パラメータ
01041     //状態変数
01042     map<string, bool> BRCS; bool IsBRCS;                                                    //ボタン検知の排他制御用
01043     map<string, bool> BVCS[2];  bool IsBVCS;                                                //ボタン表示の排他制御用
01044     //状態変数(画面更新用)
01045     int UpdateI[4];
01046     BYTE UpdateBy[4];
01047     mystr UpdateS[4];
01048     DWORD UpdateDw[4];
01049     double UpdateD[4];
01050     COLORREF UpdateC[4];
01051     //状態変数(画面効果用)
01052     int EffectI[4];
01053     BYTE EffectBy[4];
01054     mystr EffectS[4];
01055     DWORD EffectDw[4];
01056     double EffectD[4];
01057     COLORREF EffectC[4];
01058 
01059     TaskManager(const TaskManager&);                                                        //コピーコンストラクタ(禁止)
01060     TaskManager& operator =(const TaskManager&);                                            //代入演算子(禁止)
01061 };
01062 
01063 //描画タスク・スプライト・ボタンへのアクセッサ(インターフェース)
01069 class ITMAccessor{
01070 public:
01071     //描画タスクリスト
01075     virtual void ClearTaskList() = 0;                                                       //描画タスクリストを消去
01081     virtual void ZSortTaskList() = 0;                                                       //描画タスクリストをZソート
01087     virtual void DuplicateTaskList() = 0;                                                   //描画タスクリストを複写
01095     virtual void PushTaskList(const DrawTask& PushTask) = 0;                                //描画タスクリストを追加
01102     virtual void PushTaskListIM(const DrawTask& PushTask) = 0;                              //描画タスクリストを追加(即座)
01110     virtual void GetTaskList(unsigned int& Num, DrawTask* _DrawTask[]) = 0;                 //描画タスクリストを取得/設定
01111     //背景・立ち絵
01118     virtual Sprite& GetBG() = 0;                                                            //背景を取得
01125     virtual Sprite& GetLCh() = 0;                                                           //左立ち絵を取得
01132     virtual Sprite& GetCCh() = 0;                                                           //中央立ち絵を取得
01139     virtual Sprite& GetRCh() = 0;                                                           //右立ち絵を取得
01140     //スプライト
01149     virtual Sprite& GetSprite(const char* SpriteName) = 0;                                  //スプライトを取得(1)
01157     virtual void GetSprite(unsigned int& Num, Sprite* _Sprite[]) = 0;                       //スプライトを取得(2)
01158     //ボタン
01167     virtual Button& GetButton(const char* ButtonName) = 0;                                  //ボタンを取得(1)
01175     virtual void GetButton(unsigned int& Num, Button* _Button[]) = 0;                       //ボタンを取得(2)
01176     //立ち絵の表示位置
01182     virtual void SetChLocation() = 0;                                                       //立ち絵の表示位置を設定
01183     //描画タスクのイテレータ
01187     virtual void SwitchDrawTaskIterator() = 0;                                              //描画タスクのイテレータを切替
01192     virtual unsigned int GetDrawTaskIterator() = 0;                                         //描画タスクのイテレータを取得
01193     //画面効果
01200     virtual EffectParam& GetEffectParam() = 0;                                              //効果パターンを取得/設定
01201     //画面更新
01208     virtual UpdateParam& GetUpdateParam() = 0;                                              //更新パターンを取得/設定
01209     //状態変数(全般)
01213     virtual void InitStateVar() = 0;                                                        //全状態変数を初期化
01214     //状態変数(画面更新用)を取得/設定
01222     virtual int& GetUpdateI(unsigned int Num) = 0;
01230     virtual BYTE& GetUpdateBy(unsigned int Num) = 0;
01238     virtual mystr& GetUpdateS(unsigned int Num) = 0;
01246     virtual DWORD& GetUpdateDw(unsigned int Num) = 0;
01254     virtual double& GetUpdateD(unsigned int Num) = 0;
01262     virtual COLORREF& GetUpdateC(unsigned int Num) = 0;
01263     //状態変数(画面効果用)を取得/設定
01271     virtual int& GetEffectI(unsigned int Num) = 0;
01279     virtual BYTE& GetEffectBy(unsigned int Num) = 0;
01287     virtual mystr& GetEffectS(unsigned int Num) = 0;
01295     virtual DWORD& GetEffectDw(unsigned int Num) = 0;
01303     virtual double& GetEffectD(unsigned int Num) = 0;
01311     virtual COLORREF& GetEffectC(unsigned int Num) = 0;
01312 };
01313 
01314 //描画タスク・スプライト・ボタンへのアクセッサ
01321 class TMAccessor : public ITMAccessor{
01322 public:
01326     TMAccessor(){}                                                                          //デフォルトコンストラクタ
01327 
01332     void SetParent(INovelEngine* Parent);                                                   //親エンジンを設定
01333 
01334     void ClearTaskList();                                                                   //描画タスクリストを消去
01335     void ZSortTaskList();                                                                   //描画タスクリストをZソート
01336     void DuplicateTaskList();                                                               //描画タスクリストを複写
01337     void PushTaskList(const DrawTask& PushTask);                                            //描画タスクリストを追加
01338     void PushTaskListIM(const DrawTask& PushTask);                                          //描画タスクリストを追加(即座)
01339     void GetTaskList(unsigned int& Num, DrawTask* _DrawTask[]);                             //描画タスクリストを取得/設定
01340 
01341     Sprite& GetBG();                                                                        //背景を取得
01342     Sprite& GetLCh();                                                                       //左立ち絵を取得
01343     Sprite& GetCCh();                                                                       //中央立ち絵を取得
01344     Sprite& GetRCh();                                                                       //右立ち絵を取得
01345 
01346     Sprite& GetSprite(const char* SpriteName);                                              //スプライトを取得(1)
01347     void GetSprite(unsigned int& Num, Sprite* _Sprite[]);                                   //スプライトを取得(2)
01348 
01349     Button& GetButton(const char* ButtonName);                                              //ボタンを取得(1)
01350     void GetButton(unsigned int& Num, Button* _Button[]);                                   //ボタンを取得(2)
01351 
01352     void SetChLocation();                                                                   //立ち絵の表示位置を設定
01353 
01354     void SwitchDrawTaskIterator();                                                          //描画タスクのイテレータを切替
01355     unsigned int GetDrawTaskIterator();                                                     //描画タスクのイテレータを取得
01356 
01357     EffectParam& GetEffectParam();                                                          //効果パターンを取得/設定
01358 
01359     UpdateParam& GetUpdateParam();                                                          //更新パターンを取得/設定
01360 
01361     void InitStateVar();                                                                    //全状態変数を初期化
01362 
01363     //状態変数(画面更新用)を取得/設定
01364     int& GetUpdateI(unsigned int Num);
01365     BYTE& GetUpdateBy(unsigned int Num);
01366     mystr& GetUpdateS(unsigned int Num);
01367     DWORD& GetUpdateDw(unsigned int Num);
01368     double& GetUpdateD(unsigned int Num);
01369     COLORREF& GetUpdateC(unsigned int Num);
01370 
01371     //状態変数(画面効果用)を取得/設定
01372     int& GetEffectI(unsigned int Num);
01373     BYTE& GetEffectBy(unsigned int Num);
01374     mystr& GetEffectS(unsigned int Num);
01375     DWORD& GetEffectDw(unsigned int Num);
01376     double& GetEffectD(unsigned int Num);
01377     COLORREF& GetEffectC(unsigned int Num);
01378 private:
01379     INovelEngine* Outer;                                                                    //親エンジンのアドレス
01380 
01381     TMAccessor(const TMAccessor&);                                                          //コピーコンストラクタ(禁止)
01382     TMAccessor& operator =(const TMAccessor&);                                              //代入演算子(禁止)
01383 };
01384 
01385 #ifdef __cplusplus
01386 extern "C"{
01387 #endif
01388 
01389 //アクセッサを取得/設定
01394 __declspec(dllexport) ITMAccessor* GetTMAccessor();                                         //アクセッサを取得
01399 __declspec(dllexport) void SetTMAccessor(INovelEngine* Parent);                             //アクセッサを設定
01400 
01401 #ifdef __cplusplus
01402 }
01403 #endif
01404 
01405 }
01406 }
01407 
01408 #endif
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義