summaryrefslogtreecommitdiffstats
path: root/src/brain.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/brain.h')
-rw-r--r--src/brain.h202
1 files changed, 202 insertions, 0 deletions
diff --git a/src/brain.h b/src/brain.h
new file mode 100644
index 0000000..071c4b1
--- /dev/null
+++ b/src/brain.h
@@ -0,0 +1,202 @@
+// brain.h
+
+#ifndef _BRAIN_H_
+#define _BRAIN_H_
+
+
+class CInstanceManager;
+class CD3DEngine;
+class CTerrain;
+class CWater;
+class CCamera;
+class CObject;
+class CPhysics;
+class CMotion;
+class CTaskManager;
+class CInterface;
+class CWindow;
+class CDisplayText;
+class CScript;
+class CRobotMain;
+class CStudio;
+class CSound;
+class CParticule;
+
+enum ObjectType;
+enum TaskManipOrder;
+enum TaskManipArm;
+enum TaskFlagOrder;
+enum TaskShieldMode;
+
+
+#define BRAINMAXSCRIPT 10
+
+
+
+enum TraceOper
+{
+ TO_STOP = 0, // arrêt
+ TO_ADVANCE = 1, // avance
+ TO_RECEDE = 2, // recule
+ TO_TURN = 3, // tourne
+ TO_PEN = 4, // changement de couleur
+};
+
+typedef struct
+{
+ TraceOper oper;
+ float param;
+}
+TraceRecord;
+
+
+
+class CBrain
+{
+public:
+ CBrain(CInstanceManager* iMan, CObject* object);
+ ~CBrain();
+
+ void DeleteObject(BOOL bAll=FALSE);
+
+ void SetPhysics(CPhysics* physics);
+ void SetMotion(CMotion* motion);
+
+ BOOL EventProcess(const Event &event);
+ BOOL CreateInterface(BOOL bSelect);
+
+ BOOL Write(char *line);
+ BOOL Read(char *line);
+
+ BOOL IsBusy();
+ void SetActivity(BOOL bMode);
+ BOOL RetActivity();
+ BOOL IsProgram();
+ BOOL ProgramExist(int rank);
+ void RunProgram(int rank);
+ int FreeProgram();
+ int RetProgram();
+ void StopProgram();
+ void StopTask();
+
+ BOOL IntroduceVirus();
+ void SetActiveVirus(BOOL bActive);
+ BOOL RetActiveVirus();
+
+ void SetScriptRun(int rank);
+ int RetScriptRun();
+ void SetScriptName(int rank, char *name);
+ char* RetScriptName(int rank);
+ void SetSoluceName(char *name);
+ char* RetSoluceName();
+
+ BOOL ReadSoluce(char* filename);
+ BOOL ReadProgram(int rank, char* filename);
+ BOOL RetCompile(int rank);
+ BOOL WriteProgram(int rank, char* filename);
+ BOOL ReadStack(FILE *file);
+ BOOL WriteStack(FILE *file);
+
+ Error StartTaskTake();
+ Error StartTaskManip(TaskManipOrder order, TaskManipArm arm);
+ Error StartTaskFlag(TaskFlagOrder order, int rank);
+ Error StartTaskBuild(ObjectType type);
+ Error StartTaskSearch();
+ Error StartTaskTerraform();
+ Error StartTaskPen(BOOL bDown, int color);
+ Error StartTaskRecover();
+ Error StartTaskShield(TaskShieldMode mode);
+ Error StartTaskFire(float delay);
+ Error StartTaskFireAnt(D3DVECTOR impact);
+ Error StartTaskGunGoal(float dirV, float dirH);
+ Error StartTaskReset(D3DVECTOR goal, D3DVECTOR angle);
+
+ void UpdateInterface(float rTime);
+ void UpdateInterface();
+
+protected:
+ BOOL EventFrame(const Event &event);
+
+ void StartEditScript(int rank, char* name);
+ void StopEditScript(BOOL bCancel);
+
+ Error EndedTask();
+
+ void GroundFlat();
+ void ColorFlag(int color);
+
+ void UpdateScript(CWindow *pw);
+ int RetSelScript();
+ void BlinkScript(BOOL bEnable);
+
+ void CheckInterface(CWindow *pw, EventMsg event, BOOL bState);
+ void EnableInterface(CWindow *pw, EventMsg event, BOOL bState);
+ void DeadInterface(CWindow *pw, EventMsg event, BOOL bState);
+ void DefaultEnter(CWindow *pw, EventMsg event, BOOL bState=TRUE);
+
+ void TraceRecordStart();
+ void TraceRecordFrame();
+ void TraceRecordStop();
+ BOOL TraceRecordOper(TraceOper oper, float param);
+ BOOL TraceRecordPut(char *buffer, int max, TraceOper oper, float param);
+
+protected:
+ CInstanceManager* m_iMan;
+ CD3DEngine* m_engine;
+ CTerrain* m_terrain;
+ CWater* m_water;
+ CCamera* m_camera;
+ CObject* m_object;
+ CPhysics* m_physics;
+ CMotion* m_motion;
+ CInterface* m_interface;
+ CDisplayText* m_displayText;
+ CRobotMain* m_main;
+ CStudio* m_studio;
+ CSound* m_sound;
+ CParticule* m_particule;
+ CTaskManager* m_primaryTask;
+ CTaskManager* m_secondaryTask;
+
+ CScript* m_script[BRAINMAXSCRIPT];
+ int m_selScript; // rang du script sélectionné
+ int m_program; // rang du programme exécuté / -1
+ BOOL m_bActivity;
+ BOOL m_bBurn;
+ BOOL m_bActiveVirus;
+
+ int m_scriptRun;
+ char m_scriptName[BRAINMAXSCRIPT][50];
+ char m_soluceName[50];
+
+ EventMsg m_buttonAxe;
+ EventMsg m_manipStyle;
+ EventMsg m_defaultEnter;
+ EventMsg m_interfaceEvent[100];
+
+ CObject* m_antTarget;
+ CObject* m_beeBullet;
+ float m_beeBulletSpeed;
+ D3DVECTOR m_startPos;
+ float m_time;
+ float m_burnTime;
+ float m_lastUpdateTime;
+ float m_lastHumanTime;
+ float m_lastSpiderTime;
+ float m_lastWormTime;
+ float m_lastBulletTime;
+ float m_lastAlarmTime;
+ int m_soundChannelAlarm;
+ int m_flagColor;
+
+ BOOL m_bTraceRecord;
+ TraceOper m_traceOper;
+ D3DVECTOR m_tracePos;
+ float m_traceAngle;
+ int m_traceColor;
+ int m_traceRecordIndex;
+ TraceRecord* m_traceRecordBuffer;
+};
+
+
+#endif //_BRAIN_H_