00001
00011 #ifndef __TVU_SMSCENARIO_H__
00012 #define __TVU_SMSCENARIO_H__
00013
00014 #ifndef __TVU_TYPESDEF_H__
00015 #include "tvu_typesdef.h"
00016 #endif
00017
00018 #ifndef __TVU_VISU3D_APPLICATION_H__
00019 #include "tvu_visu3d.application.h"
00020 #endif
00021
00022
00023 #define CLASSNAME_SMSCENARIO_ID 10900
00024 #define CLASSNAME_SMSCENARIO "SMScenario"
00025 #define CLASSNAME_SMACTOR_ID 10901
00026 #define CLASSNAME_SMACTOR "SMActor"
00027 #define CLASSNAME_SMPATH_ID 10902
00028 #define CLASSNAME_SMPATH "SMPath"
00029 #define CLASSNAME_SMSCENARIOHOLDER_ID 10903
00030 #define CLASSNAME_SMSCENARIOHOLDER "SMScenarioHolder"
00031
00032 #define ENAME_SM_SCENARIO_EXECUTE "Execute"
00033
00034 #define ENAME_SM_SCENARIO_ACTORS "SActors"
00035 #define ENAME_SM_SCENARIO_SUBSCENARIOS "SSubScenarios"
00036 #define ENAME_SM_SCENARIO_TIMEPOINTS "STimePoints"
00037 #define ENAME_SM_SCENARIO_POSITIONS "SPositions"
00038
00039 #define ENAME_SM_SCENARIOHOLDER_START "SStart"
00040 #define ENAME_SM_SCENARIOHOLDER_LOOPS "SLoops"
00041 #define ENAME_SM_SCENARIOHOLDER_ACTORS "SActorNames"
00042
00043 #define ENAME_SM_ACTOR_PATHS "APaths"
00044 #define ENAME_SM_ACTOR_AUTONAME "Auto"
00045
00046
00047 #define SM_REGISTER_ATTRIBUTE_CONSTRUCTOR(NameItem, class) \
00048 REGISTER_ATTRIBUTE_CONSTRUCTOR(CTSMScenario::m_ItemConstructors, NameItem, class)
00049
00050 class CTSMScenario;
00051 class CTSMScenarioHolder;
00052 class CTSMActor;
00053 class CTSMPath;
00054
00056 class CTSMScenario : public CTObject
00057 {
00058 public:
00060 CTSMScenario();
00061 ~CTSMScenario();
00063 DEFINE_ID_FUNCTIONS(CTSMScenario, CTObject, CLASSNAME_SMSCENARIO_ID, CLASSNAME_SMSCENARIO)
00064 public:
00066 virtual TBOOL OnPreLoad(LPTBYTE* lpBuffers);
00067 virtual TBOOL OnPostLoad(LPTBYTE* lpBuffers);
00068 virtual CTList GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00069 public:
00071 virtual TBOOL Build(CTList EnvObjects);
00072 virtual TBOOL BuildSubScenarios(CTList EnvObjects);
00074 virtual TBOOL ReStart();
00077 virtual CTList Execute();
00079 virtual CTList Execute(CTList pActorNames);
00081 virtual TBOOL IsTerminated();
00083 virtual TINT GetStartTime() { return m_StartTime; };
00084 virtual TINT GetStopTime() { return m_StopTime; };
00085 virtual TINT GetDuration() { return m_StopTime - m_StartTime; } ;
00086 public:
00088 CTSMScenario& operator = (CTSMScenario& Object);
00089 public:
00091 TINT m_Time;
00092 TINT m_StartTime, m_StopTime;
00094 CTList m_Actors;
00096 CTList m_SubScenarios;
00098 CTList m_TimePoints;
00100 CTList m_Positions;
00102 TBOOL m_IsBuilt;
00103 public:
00105 static TBOOL BuildNames();
00107 static CTTree m_ItemConstructors;
00108 CTTree m_OldItemConstructors;
00109 TBOOL m_OldNameMustBeRead;
00111 static CTList m_AllActors;
00112 static TINT m_ActorID;
00113 };
00114 typedef CTSMScenario* LPCTSMScenario;
00115
00116 class CTSMScenarioHolder : public CTObject
00117 {
00118 public:
00120 CTSMScenarioHolder();
00121 ~CTSMScenarioHolder();
00123 DEFINE_ID_FUNCTIONS(CTSMScenarioHolder, CTObject, CLASSNAME_SMSCENARIOHOLDER_ID, CLASSNAME_SMSCENARIOHOLDER)
00124 public:
00126 virtual CTList GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00128 virtual TBOOL Build(CTList TimePoints);
00130 virtual TBOOL ReStart();
00133 virtual CTList Execute(TINT t);
00135 virtual TBOOL IsTerminated(TINT t);
00137 virtual TINT GetDuration() { return m_pScenario->GetDuration()*m_Loops.m_i; };
00138 public:
00140 CTSMScenarioHolder& operator = (CTSMScenarioHolder& Object);
00141 public:
00142 CTSMScenario* m_pScenario;
00143 CTSMScenario* m_pParentScenario;
00144 CTInt* m_pStartTime;
00145 CTList m_Actors;
00146 CTInt m_Loops;
00147 CTString m_StartTimeName;
00148 CTList m_ActorNames;
00149 };
00150 typedef CTSMScenarioHolder* LPCTSMScenarioHolder;
00151
00152 class CTSMActor : public CTObject
00153 {
00154 public:
00156 CTSMActor();
00157 ~CTSMActor();
00159 DEFINE_ID_FUNCTIONS(CTSMActor, CTObject, CLASSNAME_SMACTOR_ID, CLASSNAME_SMACTOR)
00160 public:
00161 virtual CTList GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00162 public:
00164 virtual TBOOL Build(CTList TimePoints, CTList Positions, CTList EnvObjects);
00167 virtual CTPersonPipe* Execute(TINT t);
00169 virtual CTSMPath* FindPath(TINT t);
00171 virtual TINT GetStartTime();
00172 virtual TINT GetStopTime();
00173 public:
00175 CTSMActor& operator = (CTSMActor& Object);
00176 public:
00177 CTList m_Paths;
00178 CTPersonPipe* m_Person;
00180 static CTList m_AllPersonPipes;
00181 static TINT m_PersonID;
00182 };
00183 typedef CTSMActor* LPCTSMActor;
00184
00185 class CTSMPath : public CTObject
00186 {
00187 public:
00189 CTSMPath();
00190 ~CTSMPath();
00192 DEFINE_ID_FUNCTIONS(CTSMPath, CTObject, CLASSNAME_SMPATH_ID, CLASSNAME_SMPATH)
00193 public:
00194 virtual TBOOL Load(LPTBYTE* lpBuffers);
00195 public:
00197 virtual TBOOL Build(CTList TimePoints, CTList Positions, CTList EnvObjects);
00198 public:
00200 CTSMPath& operator = (CTSMPath& Object);
00201 public:
00202 CTInt* m_StartTime;
00203 CTObject* m_StartPos;
00204 CTInt* m_StopTime;
00205 CTObject* m_StopPos;
00207 CTList m_Points;
00208 };
00209 typedef CTSMPath* LPCTSMPath;
00210
00211 #endif