summaryrefslogtreecommitdiffstats
path: root/src/object/robotmain.h
diff options
context:
space:
mode:
authorPiotr Dziwinski <piotrdz@gmail.com>2012-04-28 17:53:17 +0200
committerPiotr Dziwinski <piotrdz@gmail.com>2012-04-28 17:53:17 +0200
commit449cc186d5b8117d74ba22d6173497d00939f5f1 (patch)
tree39f38530dab2c9c8b33f5d8e42a81242bd48704b /src/object/robotmain.h
parenteeb69b34d2467e51ff84b3235f94506ce6bb9283 (diff)
downloadcolobot-449cc186d5b8117d74ba22d6173497d00939f5f1.tar.gz
colobot-449cc186d5b8117d74ba22d6173497d00939f5f1.tar.bz2
colobot-449cc186d5b8117d74ba22d6173497d00939f5f1.zip
Source files split into modules
Diffstat (limited to 'src/object/robotmain.h')
-rw-r--r--src/object/robotmain.h463
1 files changed, 463 insertions, 0 deletions
diff --git a/src/object/robotmain.h b/src/object/robotmain.h
new file mode 100644
index 0000000..bafa62a
--- /dev/null
+++ b/src/object/robotmain.h
@@ -0,0 +1,463 @@
+// * This file is part of the COLOBOT source code
+// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
+// *
+// * This program is free software: you can redistribute it and/or modify
+// * it under the terms of the GNU General Public License as published by
+// * the Free Software Foundation, either version 3 of the License, or
+// * (at your option) any later version.
+// *
+// * This program is distributed in the hope that it will be useful,
+// * but WITHOUT ANY WARRANTY; without even the implied warranty of
+// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// * GNU General Public License for more details.
+// *
+// * You should have received a copy of the GNU General Public License
+// * along with this program. If not, see http://www.gnu.org/licenses/.
+
+// robotmain.h
+
+#ifndef _ROBOTMAIN_H_
+#define _ROBOTMAIN_H_
+
+
+#include "d3dengine.h"
+#include "struct.h"
+#include "object.h"
+#include "mainmovie.h"
+#include "camera.h"
+#include "particule.h"
+
+
+enum Phase
+{
+ PHASE_INIT,
+ PHASE_TERM,
+ PHASE_NAME,
+ PHASE_PERSO,
+ PHASE_TRAINER,
+ PHASE_DEFI,
+ PHASE_MISSION,
+ PHASE_FREE,
+ PHASE_TEEN,
+ PHASE_USER,
+ PHASE_PROTO,
+ PHASE_LOADING,
+ PHASE_SIMUL,
+ PHASE_MODEL,
+ PHASE_SETUPd,
+ PHASE_SETUPg,
+ PHASE_SETUPp,
+ PHASE_SETUPc,
+ PHASE_SETUPs,
+ PHASE_SETUPds,
+ PHASE_SETUPgs,
+ PHASE_SETUPps,
+ PHASE_SETUPcs,
+ PHASE_SETUPss,
+ PHASE_WRITE,
+ PHASE_READ,
+ PHASE_WRITEs,
+ PHASE_READs,
+ PHASE_WIN,
+ PHASE_LOST,
+ PHASE_WELCOME1,
+ PHASE_WELCOME2,
+ PHASE_WELCOME3,
+ PHASE_GENERIC,
+};
+
+
+class CInstanceManager;
+class CMainDialog;
+class CMainShort;
+class CMainMap;
+class CEvent;
+class CD3DEngine;
+class CLight;
+class CWater;
+class CCloud;
+class CBlitz;
+class CPlanet;
+class CTerrain;
+class CModel;
+class CInterface;
+class CWindow;
+class CControl;
+class CDisplayText;
+class CDisplayInfo;
+class CSound;
+
+
+typedef struct
+{
+ D3DVECTOR pos;
+ float dist;
+ ObjectType type;
+ int min; // wins if>
+ int max; // wins if <
+ int lost; // lost if <=
+ BOOL bImmediat;
+ char message[100];
+}
+EndTake;
+
+
+#define MAXNEWSCRIPTNAME 20
+
+typedef struct
+{
+ BOOL bUsed;
+ ObjectType type;
+ char name[40];
+}
+NewScriptName;
+
+
+#define MAXSHOWLIMIT 5
+#define MAXSHOWPARTI 200
+#define SHOWLIMITTIME 20.0f
+
+typedef struct
+{
+ BOOL bUsed;
+ D3DVECTOR pos;
+ float radius;
+ int total;
+ int parti[MAXSHOWPARTI];
+ CObject* link;
+ float duration;
+ float time;
+}
+ShowLimit;
+
+
+#define SATCOM_HUSTON 0
+#define SATCOM_SAT 1
+#define SATCOM_OBJECT 2
+#define SATCOM_LOADING 3
+#define SATCOM_PROG 4
+#define SATCOM_SOLUCE 5
+#define SATCOM_MAX 6
+
+
+
+class CRobotMain
+{
+public:
+ CRobotMain(CInstanceManager* iMan);
+ ~CRobotMain();
+
+ void CreateIni();
+
+ void ChangePhase(Phase phase);
+ BOOL EventProcess(const Event &event);
+
+ BOOL CreateShortcuts();
+ void ScenePerso();
+
+ void SetMovieLock(BOOL bLock);
+ BOOL RetMovieLock();
+ BOOL RetInfoLock();
+ void SetSatComLock(BOOL bLock);
+ BOOL RetSatComLock();
+ void SetEditLock(BOOL bLock, BOOL bEdit);
+ BOOL RetEditLock();
+ void SetEditFull(BOOL bFull);
+ BOOL RetEditFull();
+ BOOL RetFreePhoto();
+ void SetFriendAim(BOOL bFriend);
+ BOOL RetFriendAim();
+
+ void SetTracePrecision(float factor);
+ float RetTracePrecision();
+
+ void ChangePause(BOOL bPause);
+
+ void SetSpeed(float speed);
+ float RetSpeed();
+
+ void UpdateShortcuts();
+ void SelectHuman();
+ CObject* SearchHuman();
+ CObject* SearchToto();
+ CObject* SearchNearest(D3DVECTOR pos, CObject* pExclu);
+ BOOL SelectObject(CObject* pObj, BOOL bDisplayError=TRUE);
+ CObject* RetSelectObject();
+ CObject* DeselectAll();
+ BOOL DeleteObject();
+
+ void ResetObject();
+ void ResetCreate();
+ Error CheckEndMission(BOOL bFrame);
+ void CheckEndMessage(char *message);
+ int RetObligatoryToken();
+ char* RetObligatoryToken(int i);
+ int IsObligatoryToken(char *token);
+ BOOL IsProhibitedToken(char *token);
+ void UpdateMap();
+ BOOL RetShowMap();
+
+ MainMovieType RetMainMovie();
+
+ void FlushDisplayInfo();
+ void StartDisplayInfo(int index, BOOL bMovie);
+ void StartDisplayInfo(char *filename, int index);
+ void StopDisplayInfo();
+ char* RetDisplayInfoName(int index);
+ int RetDisplayInfoPosition(int index);
+ void SetDisplayInfoPosition(int index, int pos);
+
+ void StartSuspend();
+ void StopSuspend();
+
+ float RetGameTime();
+
+ void SetFontSize(float size);
+ float RetFontSize();
+ void SetWindowPos(FPOINT pos);
+ FPOINT RetWindowPos();
+ void SetWindowDim(FPOINT dim);
+ FPOINT RetWindowDim();
+
+ void SetIOPublic(BOOL bMode);
+ BOOL RetIOPublic();
+ void SetIOPos(FPOINT pos);
+ FPOINT RetIOPos();
+ void SetIODim(FPOINT dim);
+ FPOINT RetIODim();
+
+ char* RetTitle();
+ char* RetResume();
+ char* RetScriptName();
+ char* RetScriptFile();
+ BOOL RetTrainerPilot();
+ BOOL RetFixScene();
+ BOOL RetGlint();
+ BOOL RetSoluce4();
+ BOOL RetMovies();
+ BOOL RetNiceReset();
+ BOOL RetHimselfDamage();
+ BOOL RetShowSoluce();
+ BOOL RetSceneSoluce();
+ BOOL RetShowAll();
+ BOOL RetCheatRadar();
+ char* RetSavegameDir();
+ char* RetPublicDir();
+ char* RetFilesDir();
+
+ void SetGamerName(char *name);
+ char* RetGamerName();
+ int RetGamerFace();
+ int RetGamerGlasses();
+ BOOL RetGamerOnlyHead();
+ float RetPersoAngle();
+
+ void StartMusic();
+ void ClearInterface();
+ void ChangeColor();
+
+ float SearchNearestObject(D3DVECTOR center, CObject *exclu);
+ BOOL FreeSpace(D3DVECTOR &center, float minRadius, float maxRadius, float space, CObject *exclu);
+ float RetFlatZoneRadius(D3DVECTOR center, float maxRadius, CObject *exclu);
+ void HideDropZone(CObject* metal);
+ void ShowDropZone(CObject* metal, CObject* truck);
+ void FlushShowLimit(int i);
+ void SetShowLimit(int i, ParticuleType parti, CObject *pObj, D3DVECTOR pos, float radius, float duration=SHOWLIMITTIME);
+ void AdjustShowLimit(int i, D3DVECTOR pos);
+ void StartShowLimit();
+ void FrameShowLimit(float rTime);
+
+ void CompileScript(BOOL bSoluce);
+ void LoadOneScript(CObject *pObj, int &nbError);
+ void LoadFileScript(CObject *pObj, char* filename, int objRank, int &nbError);
+ void SaveAllScript();
+ void SaveOneScript(CObject *pObj);
+ void SaveFileScript(CObject *pObj, char* filename, int objRank);
+ BOOL SaveFileStack(CObject *pObj, FILE *file, int objRank);
+ BOOL ReadFileStack(CObject *pObj, FILE *file, int objRank);
+
+ BOOL FlushNewScriptName();
+ BOOL AddNewScriptName(ObjectType type, char *name);
+ char* RetNewScriptName(ObjectType type, int rank);
+
+ void WriteFreeParam();
+ void ReadFreeParam();
+
+ BOOL IsBusy();
+ BOOL IOWriteScene(char *filename, char *filecbot, char *info);
+ CObject* IOReadScene(char *filename, char *filecbot);
+ void IOWriteObject(FILE *file, CObject* pObj, char *cmd);
+ CObject* IOReadObject(char *line, char* filename, int objRank);
+
+ int CreateSpot(D3DVECTOR pos, D3DCOLORVALUE color);
+
+protected:
+ BOOL EventFrame(const Event &event);
+ BOOL EventObject(const Event &event);
+ void InitEye();
+
+ void Convert();
+ void CreateScene(BOOL bSoluce, BOOL bFixScene, BOOL bResetObject);
+
+ void CreateModel();
+ D3DVECTOR LookatPoint( D3DVECTOR eye, float angleH, float angleV, float length );
+ CObject* CreateObject(D3DVECTOR pos, float angle, float zoom, float height, ObjectType type, float power=1.0f, BOOL bTrainer=FALSE, BOOL bToy=FALSE, int option=0);
+ int CreateLight(D3DVECTOR direction, D3DCOLORVALUE color);
+ void HiliteClear();
+ void HiliteObject(FPOINT pos);
+ void HiliteFrame(float rTime);
+ void CreateTooltip(FPOINT pos, char* text);
+ void ClearTooltip();
+ CObject* DetectObject(FPOINT pos);
+ void ChangeCamera();
+ void RemoteCamera(float pan, float zoom, float rTime);
+ void KeyCamera(EventMsg event, long param);
+ void AbortMovie();
+ BOOL IsSelectable(CObject* pObj);
+ void SelectOneObject(CObject* pObj, BOOL bDisplayError=TRUE);
+ void HelpObject();
+ BOOL DeselectObject();
+ void DeleteAllObjects();
+ void UpdateInfoText();
+ CObject* SearchObject(ObjectType type);
+ CObject* RetSelect();
+ void StartDisplayVisit(EventMsg event);
+ void FrameVisit(float rTime);
+ void StopDisplayVisit();
+ void ExecuteCmd(char *cmd);
+ BOOL TestGadgetQuantity(int rank);
+
+protected:
+ CInstanceManager* m_iMan;
+ CMainMovie* m_movie;
+ CMainDialog* m_dialog;
+ CMainShort* m_short;
+ CMainMap* m_map;
+ CEvent* m_event;
+ CD3DEngine* m_engine;
+ CParticule* m_particule;
+ CWater* m_water;
+ CCloud* m_cloud;
+ CBlitz* m_blitz;
+ CPlanet* m_planet;
+ CLight* m_light;
+ CTerrain* m_terrain;
+ CModel* m_model;
+ CInterface* m_interface;
+ CCamera* m_camera;
+ CDisplayText* m_displayText;
+ CDisplayInfo* m_displayInfo;
+ CSound* m_sound;
+
+ float m_time;
+ float m_gameTime;
+ float m_checkEndTime;
+ float m_winDelay;
+ float m_lostDelay;
+ BOOL m_bFixScene; // scene fixed, no interraction
+ BOOL m_bBase; // OBJECT_BASE exists in mission
+ FPOINT m_lastMousePos;
+ CObject* m_selectObject;
+
+ Phase m_phase;
+ int m_cameraRank;
+ D3DCOLORVALUE m_color;
+ BOOL m_bFreePhoto;
+ BOOL m_bCmdEdit;
+ BOOL m_bShowPos;
+ BOOL m_bSelectInsect;
+ BOOL m_bShowSoluce;
+ BOOL m_bShowAll;
+ BOOL m_bCheatRadar;
+ BOOL m_bAudioRepeat;
+ BOOL m_bShortCut;
+ int m_audioTrack;
+ int m_delayWriteMessage;
+ int m_movieInfoIndex;
+
+ BOOL m_bImmediatSatCom; // SatCom immediately?
+ BOOL m_bBeginSatCom; // messages SatCom poster?
+ BOOL m_bMovieLock; // movie in progress?
+ BOOL m_bSatComLock; // call of SatCom is possible?
+ BOOL m_bEditLock; // edition in progress?
+ BOOL m_bEditFull; // edition in full screen?
+ BOOL m_bPause; // simulation paused
+ BOOL m_bHilite;
+ BOOL m_bTrainerPilot; // remote trainer?
+ BOOL m_bSuspend;
+ BOOL m_bFriendAim;
+ BOOL m_bResetCreate;
+ BOOL m_bMapShow;
+ BOOL m_bMapImage;
+ char m_mapFilename[100];
+
+ FPOINT m_tooltipPos;
+ char m_tooltipName[100];
+ float m_tooltipTime;
+
+ char m_infoFilename[SATCOM_MAX][100]; // names of text files
+ CObject* m_infoObject;
+ int m_infoIndex;
+ int m_infoPos[SATCOM_MAX];
+ int m_infoUsed;
+
+ char m_title[100];
+ char m_resume[500];
+ char m_scriptName[100];
+ char m_scriptFile[100];
+ int m_endingWinRank;
+ int m_endingLostRank;
+ BOOL m_bWinTerminate;
+
+ float m_fontSize;
+ FPOINT m_windowPos;
+ FPOINT m_windowDim;
+
+ BOOL m_IOPublic;
+ FPOINT m_IOPos;
+ FPOINT m_IODim;
+
+ NewScriptName m_newScriptName[MAXNEWSCRIPTNAME];
+
+ float m_cameraPan;
+ float m_cameraZoom;
+
+ EventMsg m_visitLast;
+ CObject* m_visitObject;
+ CObject* m_visitArrow;
+ float m_visitTime;
+ float m_visitParticule;
+ D3DVECTOR m_visitPos;
+ D3DVECTOR m_visitPosArrow;
+
+ int m_endTakeTotal;
+ EndTake m_endTake[10];
+ long m_endTakeResearch;
+ float m_endTakeWinDelay;
+ float m_endTakeLostDelay;
+
+ int m_obligatoryTotal;
+ char m_obligatoryToken[100][20];
+ int m_prohibitedTotal;
+ char m_prohibitedToken[100][20];
+
+ char m_gamerName[100];
+
+ long m_freeBuild; // constructible buildings
+ long m_freeResearch; // researches possible
+
+ ShowLimit m_showLimit[MAXSHOWLIMIT];
+
+ D3DCOLORVALUE m_colorRefBot;
+ D3DCOLORVALUE m_colorNewBot;
+ D3DCOLORVALUE m_colorRefAlien;
+ D3DCOLORVALUE m_colorNewAlien;
+ D3DCOLORVALUE m_colorRefGreen;
+ D3DCOLORVALUE m_colorNewGreen;
+ D3DCOLORVALUE m_colorRefWater;
+ D3DCOLORVALUE m_colorNewWater;
+ float m_colorShiftWater;
+};
+
+
+#endif //_ROBOTMAIN_H_