⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mlsscript.h

📁 [游戏开发参考书-用DirectX编写RPG游戏]这是一个系列的丛书如果你都看并且懂的话你就可以你工作啦!
💻 H
字号:
enum Types {
  _NONE = 0,
  _TEXT,
  _BOOL,
  _INT,
  _FLOAT,
  _CHOICE
};

typedef struct sTEXTEntry {
  long  Length;  // Maximum length of the text
  sTEXTEntry()  { Length = 0; }
} sTEXTEntry;

typedef struct sBOOLEntry {
  BOOL Value;  // Boolean value (TRUE/FALSE)
  sBOOLEntry() { Value = TRUE; }
} sBOOLEntry;

typedef struct sINTEntry {
  unsigned long Min, Max;  // Min/Max values
  sINTEntry() { Min = Max = 0; }
} sINTEntry;

typedef struct sFLOATEntry {
  float Min, Max;  // Min/Max values
  sFLOATEntry() { Min = Max = 0.0f; }
} sFLOATEntry;

typedef struct sCHOICEEntry {
  long   Count;  // # choices and current selection
  char **Text;   // Array of choice's text

  sCHOICEEntry() { Count = 0; Text = NULL; }
  ~sCHOICEEntry() 
  { 
    if(Count) {
      for(long i=0;i<Count;i++)
        delete Text[i];
    }
    delete [] Text;
  }
} sCHOICEEntry;

typedef struct sEntry {
  long Type;   // Type of blank entry
  void *Data;  // Buffer to hold entry data

  sEntry()  { Type = _NONE; Data = NULL; }
  ~sEntry() { delete [] Data;            }
} sEntry;

typedef struct sAction {
  long      ID;          // Action ID
  char      Text[256];   // Action text
  short     NumEntries;  // # of entries in action
  sEntry   *Entries;     // Array of entry structures
  sAction  *Next;        // Next action in linked list

  sAction() 
  {
    ID         = 0;
    Text[0]    = 0;
    NumEntries = 0;
    Entries    = NULL;
    Next       = NULL;
  }

  ~sAction()
  {
    delete [] Entries;
    delete Next;
  }
} sAction;

typedef struct sScript {
  long   Action;
  long   NumEntries;
  long  *EntrySizes;
  char **Entries;
  sScript *Next;

  sScript() 
  { 
    Action     = 0; 
    NumEntries = 0;
    EntrySizes = NULL;
    Entries    = NULL;
    Next       = NULL;
  }

  ~sScript()
  {
    delete [] EntrySizes;
    if(NumEntries) {
      for(long i=0;i<NumEntries;i++)
        delete [] Entries[i];
    }
    delete [] Entries;
    delete Next;
  }
} sScript;

class cMLSScript {
  private:
    // Script data
    long     m_NumScriptActions; // # actions in script    
    sScript *m_ScriptParent;     // list of script actions

    // Action data
    long     m_NumActions;    // # of actions in template
    sAction *m_ActionParent;  // list of template actions

    // Functions for reading text (mainly used in actions)
    BOOL GetNextQuotedLine(char *Data, FILE *fp, long MaxSize);
    BOOL GetNextWord(char *Data, FILE *fp, long MaxSize);

  public:
    cMLSScript();
    ~cMLSScript();

    // Script functions
    BOOL     LoadScript(char *Filename);
    BOOL     SaveScript(char *Filename);
    BOOL     FreeScript();
    sAction *GetScriptActionParent();
    BOOL     AddScriptTEXTAction();
    BOOL     AddScriptBOOLAction();
    BOOL     AddScriptINTAction();
    BOOL     AddScriptFLOATAction();
    BOOL     AddScriptCHOICEAction();
    BOOL     ExpandScriptText(char *Buffer, sScript *Script);
    
    // Action functions
    BOOL     LoadActions(char *Filename);
    BOOL     FreeActions();
    long     GetNumActions();
    sAction *GetActionParent();
    sAction *GetAction(long Num);
    BOOL     ExpandActionText(char *Buffer, sAction *Action);
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -