00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #if !defined(GROUPCLASS_H)
00024 #define GROUPCLASS_H
00025 #include <QString>
00026 #include <QDateTime>
00027 #include <QList>
00028
00029 #include "Root.h"
00030 #include "Ingredients.h"
00031 #include "BaseClasses.h"
00032 #include "BaseActions.h"
00033
00034 class MHVisible;
00035
00036
00037
00038
00039 class MHTimer {
00040 public:
00041 int m_nTimerId;
00042 QTime m_Time;
00043 };
00044
00045 class MHGroup : public MHRoot
00046 {
00047 public:
00048 MHGroup();
00049 virtual ~MHGroup();
00050 virtual void PrintMe(FILE *fd, int nTabs) const;
00051
00052 virtual void Preparation(MHEngine *engine);
00053 virtual void Activation(MHEngine *engine);
00054 virtual void Deactivation(MHEngine *engine);
00055 virtual void Destruction(MHEngine *engine);
00056
00057 virtual MHRoot *FindByObjectNo(int n);
00058
00059
00060 virtual void SetTimer(int nTimerId, bool fAbsolute, int nMilliSecs, MHEngine *);
00061
00062 virtual void MakeClone(MHRoot *pTarget, MHRoot *pRef, MHEngine *engine);
00063
00064 protected:
00065 void Initialise(MHParseNode *p, MHEngine *engine);
00066
00067 int m_nOrigGCPriority;
00068 MHActionSequence m_StartUp, m_CloseDown;
00069 MHOwnPtrSequence <MHIngredient> m_Items;
00070 bool m_fIsApp;
00071 friend class MHEngine;
00072
00073
00074
00075
00076 QTime m_StartTime;
00077 QList<MHTimer*> m_Timers;
00078 int CheckTimers(MHEngine *engine);
00079
00080 int m_nLastId;
00081
00082 friend class MHEGEngine;
00083 };
00084
00085 class MHScene : public MHGroup
00086 {
00087 public:
00088 MHScene();
00089 void Initialise(MHParseNode *p, MHEngine *engine);
00090 virtual const char *ClassName() { return "Scene"; }
00091 virtual void PrintMe(FILE *fd, int nTabs) const;
00092 virtual void Activation(MHEngine *engine);
00093
00094
00095 virtual void SetInputRegister(int nReg, MHEngine *engine);
00096 protected:
00097 int m_nEventReg;
00098 int m_nSceneCoordX, m_nSceneCoordY;
00099 int m_nAspectRatioW, m_nAspectRatioH;
00100 bool m_fMovingCursor;
00101
00102
00103 friend class MHEngine;
00104 };
00105
00106
00107 class MHApplication : public MHGroup
00108 {
00109 public:
00110 MHApplication();
00111 virtual ~MHApplication();
00112 virtual const char *ClassName() { return "Application"; }
00113 void Initialise(MHParseNode *p, MHEngine *engine);
00114 virtual void PrintMe(FILE *fd, int nTabs) const;
00115 virtual bool IsShared() { return true; }
00116 virtual void Activation(MHEngine *engine);
00117 protected:
00118 MHActionSequence m_OnSpawnCloseDown, m_OnRestart;
00119
00120 int m_nCharSet;
00121 MHColour m_BGColour, m_TextColour, m_ButtonRefColour, m_HighlightRefColour, m_SliderRefColour;
00122 int m_nTextCHook, m_nIPCHook, m_nStrCHook, m_nBitmapCHook, m_nLineArtCHook;
00123 MHFontBody m_Font;
00124 MHOctetString m_FontAttrs;
00125 int m_tuneinfo;
00126
00127
00128 int m_nLockCount;
00129
00130
00131 MHSequence <MHVisible *> m_DisplayStack;
00132 int FindOnStack(const MHRoot *pVis);
00133
00134 MHScene *m_pCurrentScene;
00135 bool m_fRestarting;
00136 QString m_Path;
00137
00138
00139 friend class MHEngine;
00140 };
00141
00142 class MHLaunch: public MHElemAction
00143 {
00144 public:
00145 MHLaunch(): MHElemAction(":Launch") {}
00146 virtual void Perform(MHEngine *engine);
00147 };
00148
00149
00150 class MHQuit: public MHElemAction
00151 {
00152 public:
00153 MHQuit(): MHElemAction(":Quit") {}
00154 virtual void Perform(MHEngine *engine);
00155 };
00156
00157
00158 class MHSendEvent: public MHElemAction
00159 {
00160 public:
00161 MHSendEvent(): MHElemAction(":SendEvent"), m_EventType(EventIsAvailable) {}
00162 virtual void Initialise(MHParseNode *p, MHEngine *engine);
00163 virtual void Perform(MHEngine *engine);
00164 virtual void PrintArgs(FILE *fd, int nTabs) const;
00165 protected:
00166 MHGenericObjectRef m_EventSource;
00167 enum EventType m_EventType;
00168 MHParameter m_EventData;
00169 };
00170
00171 class MHSetTimer: public MHElemAction
00172 {
00173 public:
00174 MHSetTimer(): MHElemAction(":SetTimer"), m_TimerType(ST_NoNewTimer) {}
00175 virtual void Initialise(MHParseNode *p, MHEngine *engine);
00176 virtual void Perform(MHEngine *engine);
00177 protected:
00178 virtual void PrintArgs(FILE *fd, int nTabs) const;
00179 MHGenericInteger m_TimerId;
00180
00181
00182 enum { ST_NoNewTimer, ST_TimerAbsolute, ST_TimerRelative } m_TimerType;
00183 MHGenericInteger m_TimerValue;
00184 MHGenericBoolean m_AbsFlag;
00185 };
00186
00187 class MHSpawn: public MHElemAction
00188 {
00189 public:
00190 MHSpawn(): MHElemAction(":Spawn") {}
00191 virtual void Perform(MHEngine *engine);
00192 };
00193
00194
00195 class MHPersistent: public MHElemAction
00196 {
00197 public:
00198 MHPersistent(const char *name, bool fIsLoad): MHElemAction(name), m_fIsLoad(fIsLoad) {}
00199 virtual void Initialise(MHParseNode *p, MHEngine *engine);
00200 virtual void Perform(MHEngine *engine);
00201 protected:
00202 virtual void PrintArgs(FILE *fd, int nTabs) const;
00203 bool m_fIsLoad;
00204 MHObjectRef m_Succeeded;
00205 MHOwnPtrSequence<MHObjectRef> m_Variables;
00206 MHGenericOctetString m_FileName;
00207 };
00208
00209
00210
00211 class MHTransitionTo: public MHElemAction
00212 {
00213 public:
00214 MHTransitionTo();
00215 virtual void Initialise(MHParseNode *p, MHEngine *engine);
00216 virtual void Perform(MHEngine *engine);
00217 protected:
00218 virtual void PrintArgs(FILE *fd, int nTabs) const;
00219 bool m_fIsTagged;
00220 int m_nConnectionTag;
00221 int m_nTransitionEffect;
00222 };
00223
00224
00225 class MHLockScreen: public MHElemAction
00226 {
00227 public:
00228 MHLockScreen(): MHElemAction(":LockScreen") {}
00229 virtual void Perform(MHEngine *engine);
00230 };
00231
00232 class MHUnlockScreen: public MHElemAction
00233 {
00234 public:
00235 MHUnlockScreen(): MHElemAction(":UnlockScreen") {}
00236 virtual void Perform(MHEngine *engine);
00237 };
00238
00239 class MHGetEngineSupport: public MHElemAction
00240 {
00241 public:
00242 MHGetEngineSupport(): MHElemAction(":GetEngineSupport") {}
00243 virtual void Initialise(MHParseNode *p, MHEngine *engine);
00244 virtual void Perform(MHEngine *engine);
00245 protected:
00246 virtual void PrintArgs(FILE *fd, int ) const { m_Feature.PrintMe(fd, 0); m_Answer.PrintMe(fd, 0); }
00247 MHGenericOctetString m_Feature;
00248 MHObjectRef m_Answer;
00249 };
00250
00251
00252 class MHSetInputRegister: public MHActionInt
00253 {
00254 public:
00255 MHSetInputRegister(): MHActionInt(":SetInputRegister") {}
00256 virtual void CallAction(MHEngine *engine, MHRoot *pTarget, int nArg) { pTarget->SetInputRegister(nArg, engine); };
00257 };
00258
00259
00260 #endif