2014-10-14 13:11:37 +00:00
|
|
|
|
/*
|
|
|
|
|
* This file is part of the Colobot: Gold Edition source code
|
|
|
|
|
* Copyright (C) 2001-2014, Daniel Roux, EPSITEC SA & TerranovaTeam
|
|
|
|
|
* http://epsiteс.ch; http://colobot.info; http://github.com/colobot
|
|
|
|
|
*
|
|
|
|
|
* 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://gnu.org/licenses
|
|
|
|
|
*/
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
|
|
|
|
// maindialog.h
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
2012-09-15 19:47:19 +00:00
|
|
|
|
#include "graphics/core/color.h"
|
2013-02-16 21:37:43 +00:00
|
|
|
|
|
2012-06-26 20:23:05 +00:00
|
|
|
|
#include "object/robotmain.h"
|
|
|
|
|
|
2013-12-31 11:58:45 +00:00
|
|
|
|
#include "app/pausemanager.h"
|
|
|
|
|
|
2013-04-01 16:24:12 +00:00
|
|
|
|
#include <vector>
|
|
|
|
|
|
2013-03-17 18:01:32 +00:00
|
|
|
|
|
2012-09-15 19:47:19 +00:00
|
|
|
|
class CEventQueue;
|
|
|
|
|
class CSoundInterface;
|
|
|
|
|
|
2013-02-16 21:37:43 +00:00
|
|
|
|
namespace Gfx {
|
2012-09-15 19:47:19 +00:00
|
|
|
|
class CEngine;
|
|
|
|
|
class CParticle;
|
2013-02-16 21:37:43 +00:00
|
|
|
|
}
|
2012-09-15 19:47:19 +00:00
|
|
|
|
|
2013-02-16 21:37:43 +00:00
|
|
|
|
namespace Ui {
|
2012-09-15 19:47:19 +00:00
|
|
|
|
|
2012-06-26 20:23:05 +00:00
|
|
|
|
class CInterface;
|
|
|
|
|
class CWindow;
|
|
|
|
|
class CControl;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const int USERLISTMAX = 100;
|
|
|
|
|
const int MAXSCENE = 1000;
|
|
|
|
|
|
2012-09-15 19:47:19 +00:00
|
|
|
|
|
2012-06-26 20:23:05 +00:00
|
|
|
|
struct SceneInfo
|
|
|
|
|
{
|
|
|
|
|
char numTry;
|
|
|
|
|
char bPassed;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct GamerPerso
|
|
|
|
|
{
|
|
|
|
|
int face; // face
|
|
|
|
|
int glasses; // glasses
|
2012-09-15 19:47:19 +00:00
|
|
|
|
Gfx::Color colorHair; // hair color
|
|
|
|
|
Gfx::Color colorCombi; // spacesuit volor
|
|
|
|
|
Gfx::Color colorBand; // strips color
|
2012-06-26 20:23:05 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CMainDialog
|
|
|
|
|
{
|
|
|
|
|
public:
|
2013-02-16 21:37:43 +00:00
|
|
|
|
CMainDialog();
|
2012-06-26 20:23:05 +00:00
|
|
|
|
~CMainDialog();
|
|
|
|
|
|
|
|
|
|
bool EventProcess(const Event &event);
|
|
|
|
|
void ChangePhase(Phase phase);
|
|
|
|
|
|
2012-09-26 20:57:43 +00:00
|
|
|
|
void SetSceneRead(const char* name);
|
|
|
|
|
void SetStackRead(const char* name);
|
|
|
|
|
void SetSceneName(const char* name);
|
|
|
|
|
void SetSceneRank(int rank);
|
|
|
|
|
std::string & GetSceneRead();
|
|
|
|
|
std::string & GetStackRead();
|
|
|
|
|
char* GetSceneName();
|
|
|
|
|
int GetSceneRank();
|
2012-10-02 19:44:14 +00:00
|
|
|
|
const char* GetSceneDir();
|
2012-09-26 20:57:43 +00:00
|
|
|
|
bool GetSceneSoluce();
|
2014-10-20 19:15:39 +00:00
|
|
|
|
std::string GetSavegameDir();
|
|
|
|
|
std::string & GetPHYSFSSavegameDir();
|
2012-09-26 20:57:43 +00:00
|
|
|
|
std::string & GetPublicDir();
|
2012-09-15 19:47:19 +00:00
|
|
|
|
|
|
|
|
|
bool GetTooltip();
|
|
|
|
|
bool GetGlint();
|
|
|
|
|
bool GetSoluce4();
|
|
|
|
|
bool GetMovies();
|
|
|
|
|
bool GetNiceReset();
|
|
|
|
|
bool GetHimselfDamage();
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
2014-07-11 14:40:07 +00:00
|
|
|
|
void BuildSceneName(std::string &filename, char *base, int rank, bool sceneFile = true);
|
2012-09-26 20:57:43 +00:00
|
|
|
|
void BuildResumeName(char *filename, char *base, int rank);
|
|
|
|
|
std::string & GetFilesDir();
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
|
|
|
|
void StartAbort();
|
|
|
|
|
void StartDeleteObject();
|
|
|
|
|
void StartDeleteGame(char *gamer);
|
|
|
|
|
void StartQuit();
|
|
|
|
|
void StartDialog(Math::Point dim, bool bFire, bool bOK, bool bCancel);
|
|
|
|
|
void FrameDialog(float rTime);
|
|
|
|
|
void StopDialog();
|
|
|
|
|
bool IsDialog();
|
|
|
|
|
|
|
|
|
|
void StartSuspend();
|
|
|
|
|
void StopSuspend();
|
|
|
|
|
|
|
|
|
|
void SetupMemorize();
|
|
|
|
|
void SetupRecall();
|
|
|
|
|
|
|
|
|
|
bool ReadGamerInfo();
|
|
|
|
|
bool WriteGamerInfo();
|
|
|
|
|
void SetGamerInfoTry(int rank, int numTry);
|
2012-09-15 19:47:19 +00:00
|
|
|
|
int GetGamerInfoTry(int rank);
|
2012-06-26 20:23:05 +00:00
|
|
|
|
void SetGamerInfoPassed(int rank, bool bPassed);
|
2012-09-15 19:47:19 +00:00
|
|
|
|
bool GetGamerInfoPassed(int rank);
|
2012-06-26 20:23:05 +00:00
|
|
|
|
bool NextMission();
|
|
|
|
|
|
|
|
|
|
void WriteGamerPerso(char *gamer);
|
|
|
|
|
void ReadGamerPerso(char *gamer);
|
|
|
|
|
void SetGamerFace(char *gamer, int face);
|
2012-09-15 19:47:19 +00:00
|
|
|
|
int GetGamerFace(char *gamer);
|
|
|
|
|
int GetGamerFace();
|
|
|
|
|
int GetGamerGlasses();
|
|
|
|
|
bool GetGamerOnlyHead();
|
|
|
|
|
float GetPersoAngle();
|
|
|
|
|
Gfx::Color GetGamerColorHair();
|
|
|
|
|
Gfx::Color GetGamerColorCombi();
|
|
|
|
|
Gfx::Color GetGamerColorBand();
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
|
|
|
|
void AllMissionUpdate();
|
|
|
|
|
void ShowSoluceUpdate();
|
2014-09-26 18:53:11 +00:00
|
|
|
|
|
|
|
|
|
std::string& GetUserLevelName(int id);
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
void GlintMove();
|
2012-09-15 19:47:19 +00:00
|
|
|
|
void FrameParticle(float rTime);
|
|
|
|
|
void NiceParticle(Math::Point mouse, bool bPress);
|
2012-06-26 20:23:05 +00:00
|
|
|
|
void ReadNameList();
|
|
|
|
|
void UpdateNameList();
|
|
|
|
|
void UpdateNameEdit();
|
|
|
|
|
void UpdateNameControl();
|
|
|
|
|
void UpdateNameFace();
|
|
|
|
|
void NameSelect();
|
|
|
|
|
void NameCreate();
|
|
|
|
|
void NameDelete();
|
|
|
|
|
void UpdatePerso();
|
|
|
|
|
void CameraPerso();
|
|
|
|
|
void FixPerso(int rank, int index);
|
|
|
|
|
void ColorPerso();
|
|
|
|
|
void DefPerso();
|
|
|
|
|
bool IsIOReadScene();
|
|
|
|
|
void IOReadName();
|
|
|
|
|
void IOReadList();
|
|
|
|
|
void IOUpdateList();
|
|
|
|
|
void IODeleteScene();
|
|
|
|
|
bool IOWriteScene();
|
|
|
|
|
bool IOReadScene();
|
2012-09-15 19:47:19 +00:00
|
|
|
|
int GetChapPassed();
|
2012-06-26 20:23:05 +00:00
|
|
|
|
void UpdateSceneChap(int &chap);
|
|
|
|
|
void UpdateSceneList(int chap, int &sel);
|
|
|
|
|
void UpdateSceneResume(int rank);
|
|
|
|
|
void UpdateDisplayMode();
|
|
|
|
|
void ChangeDisplay();
|
|
|
|
|
void UpdateApply();
|
|
|
|
|
void UpdateSetupButtons();
|
|
|
|
|
void ChangeSetupButtons();
|
|
|
|
|
void ChangeSetupQuality(int quality);
|
|
|
|
|
void UpdateKey();
|
2012-09-15 19:47:19 +00:00
|
|
|
|
void ChangeKey(EventType event);
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
|
|
|
|
protected:
|
2012-09-15 19:47:19 +00:00
|
|
|
|
CApplication* m_app;
|
|
|
|
|
CRobotMain* m_main;
|
|
|
|
|
CEventQueue* m_eventQueue;
|
|
|
|
|
Gfx::CEngine* m_engine;
|
|
|
|
|
CInterface* m_interface;
|
|
|
|
|
Gfx::CParticle* m_particle;
|
|
|
|
|
Gfx::CCamera* m_camera;
|
|
|
|
|
CSoundInterface* m_sound;
|
2013-12-31 11:58:45 +00:00
|
|
|
|
CPauseManager* m_pause;
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
|
|
|
|
Phase m_phase; // copy of CRobotMain
|
|
|
|
|
Phase m_phaseSetup; // tab selected
|
|
|
|
|
Phase m_phaseTerm; // phase trainer/scene/proto
|
|
|
|
|
float m_phaseTime;
|
|
|
|
|
|
|
|
|
|
GamerPerso m_perso; // perso: description
|
|
|
|
|
GamerPerso m_persoCopy; // perso: copy for cancellation
|
|
|
|
|
int m_persoTab; // perso: tab selected
|
|
|
|
|
float m_persoAngle; // perso: angle of presentation
|
|
|
|
|
|
2012-09-26 20:57:43 +00:00
|
|
|
|
std::string m_savegameDir; // savegame folder
|
|
|
|
|
std::string m_publicDir; // program folder
|
|
|
|
|
std::string m_filesDir; // case files
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
|
|
|
|
int m_index; // 0..4
|
|
|
|
|
int m_chap[10]; // selected chapter (0..8)
|
|
|
|
|
int m_sel[10]; // chosen mission (0..98)
|
|
|
|
|
int m_maxList;
|
|
|
|
|
int m_accessChap;
|
2012-09-26 20:57:43 +00:00
|
|
|
|
std::string m_sceneRead; // name of the scene to read
|
|
|
|
|
std::string m_stackRead; // name of the scene to read
|
2012-06-26 20:23:05 +00:00
|
|
|
|
char m_sceneName[20]; // name of the scene to play
|
|
|
|
|
int m_sceneRank; // rank of the scene to play
|
|
|
|
|
bool m_bSceneSoluce; // shows the solution
|
|
|
|
|
bool m_bSimulSetup; // adjustment during the game
|
|
|
|
|
bool m_accessEnable;
|
|
|
|
|
bool m_accessMission;
|
|
|
|
|
bool m_accessUser;
|
|
|
|
|
bool m_bDeleteGamer;
|
|
|
|
|
|
|
|
|
|
int m_userTotal;
|
2012-10-02 19:44:14 +00:00
|
|
|
|
|
|
|
|
|
std::vector<std::string> m_userList;
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
|
|
|
|
int m_shotDelay; // number of frames before copy
|
2012-09-26 20:57:43 +00:00
|
|
|
|
std::string m_shotName; // generate a file name
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
|
|
|
|
int m_setupSelMode;
|
|
|
|
|
bool m_setupFull;
|
|
|
|
|
|
|
|
|
|
bool m_bTooltip; // tooltips to be displayed?
|
|
|
|
|
bool m_bGlint; // reflections on buttons?
|
|
|
|
|
bool m_bRain; // rain in the interface?
|
|
|
|
|
bool m_bSoluce4; // solutions in program 4?
|
|
|
|
|
bool m_bMovies; // cinematics?
|
|
|
|
|
bool m_bNiceReset; // for CTaskReset
|
|
|
|
|
bool m_bHimselfDamage; // for shots
|
|
|
|
|
bool m_bCameraScroll; // for CCamera
|
|
|
|
|
bool m_bCameraInvertX; // for CCamera
|
|
|
|
|
bool m_bCameraInvertY; // for CCamera
|
|
|
|
|
bool m_bEffect; // for CCamera
|
2014-10-22 04:44:17 +00:00
|
|
|
|
bool m_bBlood; // for CCamera
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
2013-12-31 11:58:45 +00:00
|
|
|
|
Math::Point m_glintMouse;
|
|
|
|
|
float m_glintTime;
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
2013-12-31 11:58:45 +00:00
|
|
|
|
int m_loadingCounter;
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
2013-12-31 11:58:45 +00:00
|
|
|
|
bool m_bDialog; // this dialogue?
|
|
|
|
|
bool m_bDialogFire; // setting on fire?
|
|
|
|
|
bool m_bDialogDelete;
|
|
|
|
|
Math::Point m_dialogPos;
|
|
|
|
|
Math::Point m_dialogDim;
|
|
|
|
|
float m_dialogParti;
|
|
|
|
|
float m_dialogTime;
|
|
|
|
|
PauseType m_bInitPause;
|
2012-09-15 19:47:19 +00:00
|
|
|
|
Gfx::CameraType m_initCamera;
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
2013-12-31 11:58:45 +00:00
|
|
|
|
int m_partiPhase[10];
|
|
|
|
|
float m_partiTime[10];
|
|
|
|
|
Math::Point m_partiPos[10];
|
2012-06-26 20:23:05 +00:00
|
|
|
|
|
2013-12-31 11:58:45 +00:00
|
|
|
|
SceneInfo m_sceneInfo[MAXSCENE];
|
2013-05-26 15:47:54 +00:00
|
|
|
|
|
2014-11-10 16:37:34 +00:00
|
|
|
|
std::vector<std::string> m_saveList;
|
2012-06-26 20:23:05 +00:00
|
|
|
|
};
|
|
|
|
|
|
2012-09-15 19:47:19 +00:00
|
|
|
|
} // namespace Ui
|
2013-02-16 21:37:43 +00:00
|
|
|
|
|