Add Missions+ gamemode
parent
95cab790c1
commit
754dfefefd
|
@ -84,6 +84,9 @@ msgstr ""
|
||||||
msgid "Load a saved mission"
|
msgid "Load a saved mission"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Missions+"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Chapters:"
|
msgid "Chapters:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -340,6 +343,9 @@ msgstr ""
|
||||||
msgid "<< Back \\Back to the previous screen"
|
msgid "<< Back \\Back to the previous screen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "+\\Missions with bonus content and optional challenges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Play\\Start mission!"
|
msgid "Play\\Start mission!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -583,6 +589,15 @@ msgstr ""
|
||||||
msgid "Invert\\Invert values on this axis"
|
msgid "Invert\\Invert values on this axis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Space Programmer\\Disables radio-control"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Space Researcher\\Disables using all previously researched technologies"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Space Explorer\\Disables astronaut abilities"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "\\New player name"
|
msgid "\\New player name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -190,6 +190,7 @@ void InitializeEventTypeTexts()
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_ABORT] = "EVENT_INTERFACE_ABORT";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_ABORT] = "EVENT_INTERFACE_ABORT";
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_USER] = "EVENT_INTERFACE_USER";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_USER] = "EVENT_INTERFACE_USER";
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_SATCOM] = "EVENT_INTERFACE_SATCOM";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_SATCOM] = "EVENT_INTERFACE_SATCOM";
|
||||||
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_PLUS] = "EVENT_INTERFACE_PLUS";
|
||||||
|
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_CHAP] = "EVENT_INTERFACE_CHAP";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_CHAP] = "EVENT_INTERFACE_CHAP";
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_LIST] = "EVENT_INTERFACE_LIST";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_LIST] = "EVENT_INTERFACE_LIST";
|
||||||
|
@ -272,6 +273,10 @@ void InitializeEventTypeTexts()
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT]= "EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT]= "EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT";
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT]= "EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT]= "EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT";
|
||||||
|
|
||||||
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_PLUS_TRAINER] = "EVENT_INTERFACE_PLUS_TRAINER";
|
||||||
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_PLUS_RESEARCH] = "EVENT_INTERFACE_PLUS_RESEARCH";
|
||||||
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_PLUS_EXPLORER] = "EVENT_INTERFACE_PLUS_EXPLORER";
|
||||||
|
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_GLINTl] = "EVENT_INTERFACE_GLINTl";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_GLINTl] = "EVENT_INTERFACE_GLINTl";
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_GLINTr] = "EVENT_INTERFACE_GLINTr";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_GLINTr] = "EVENT_INTERFACE_GLINTr";
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_GLINTu] = "EVENT_INTERFACE_GLINTu";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_GLINTu] = "EVENT_INTERFACE_GLINTu";
|
||||||
|
|
|
@ -225,6 +225,7 @@ enum EventType
|
||||||
EVENT_INTERFACE_ABORT = 412,
|
EVENT_INTERFACE_ABORT = 412,
|
||||||
EVENT_INTERFACE_USER = 413,
|
EVENT_INTERFACE_USER = 413,
|
||||||
EVENT_INTERFACE_SATCOM = 414,
|
EVENT_INTERFACE_SATCOM = 414,
|
||||||
|
EVENT_INTERFACE_PLUS = 415,
|
||||||
|
|
||||||
EVENT_INTERFACE_CHAP = 420,
|
EVENT_INTERFACE_CHAP = 420,
|
||||||
EVENT_INTERFACE_LIST = 421,
|
EVENT_INTERFACE_LIST = 421,
|
||||||
|
@ -311,6 +312,10 @@ enum EventType
|
||||||
EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT = 573,
|
EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT = 573,
|
||||||
EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT = 574,
|
EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT = 574,
|
||||||
|
|
||||||
|
EVENT_INTERFACE_PLUS_TRAINER = 575,
|
||||||
|
EVENT_INTERFACE_PLUS_RESEARCH = 576,
|
||||||
|
EVENT_INTERFACE_PLUS_EXPLORER = 577,
|
||||||
|
|
||||||
EVENT_INTERFACE_GLINTl = 590,
|
EVENT_INTERFACE_GLINTl = 590,
|
||||||
EVENT_INTERFACE_GLINTr = 591,
|
EVENT_INTERFACE_GLINTr = 591,
|
||||||
EVENT_INTERFACE_GLINTu = 592,
|
EVENT_INTERFACE_GLINTu = 592,
|
||||||
|
|
|
@ -77,6 +77,7 @@ void InitializeRestext()
|
||||||
stringsText[RT_TITLE_PERSO] = TR("Customize your appearance");
|
stringsText[RT_TITLE_PERSO] = TR("Customize your appearance");
|
||||||
stringsText[RT_TITLE_WRITE] = TR("Save the current mission");
|
stringsText[RT_TITLE_WRITE] = TR("Save the current mission");
|
||||||
stringsText[RT_TITLE_READ] = TR("Load a saved mission");
|
stringsText[RT_TITLE_READ] = TR("Load a saved mission");
|
||||||
|
stringsText[RT_TITLE_PLUS] = TR("Missions+");
|
||||||
|
|
||||||
stringsText[RT_PLAY_CHAP_CHAPTERS] = TR("Chapters:");
|
stringsText[RT_PLAY_CHAP_CHAPTERS] = TR("Chapters:");
|
||||||
stringsText[RT_PLAY_CHAP_PLANETS] = TR("Planets:");
|
stringsText[RT_PLAY_CHAP_PLANETS] = TR("Planets:");
|
||||||
|
@ -181,6 +182,7 @@ void InitializeRestext()
|
||||||
stringsEvent[EVENT_INTERFACE_ABORT] = TR("\\Return to Colobot: Gold Edition");
|
stringsEvent[EVENT_INTERFACE_ABORT] = TR("\\Return to Colobot: Gold Edition");
|
||||||
stringsEvent[EVENT_INTERFACE_QUIT] = TR("Quit\\Quit Colobot: Gold Edition");
|
stringsEvent[EVENT_INTERFACE_QUIT] = TR("Quit\\Quit Colobot: Gold Edition");
|
||||||
stringsEvent[EVENT_INTERFACE_BACK] = TR("<< Back \\Back to the previous screen");
|
stringsEvent[EVENT_INTERFACE_BACK] = TR("<< Back \\Back to the previous screen");
|
||||||
|
stringsEvent[EVENT_INTERFACE_PLUS] = TR("+\\Missions with bonus content and optional challenges");
|
||||||
stringsEvent[EVENT_INTERFACE_PLAY] = TR("Play\\Start mission!");
|
stringsEvent[EVENT_INTERFACE_PLAY] = TR("Play\\Start mission!");
|
||||||
stringsEvent[EVENT_INTERFACE_SETUPd] = TR("Device\\Driver and resolution settings");
|
stringsEvent[EVENT_INTERFACE_SETUPd] = TR("Device\\Driver and resolution settings");
|
||||||
stringsEvent[EVENT_INTERFACE_SETUPg] = TR("Graphics\\Graphics settings");
|
stringsEvent[EVENT_INTERFACE_SETUPg] = TR("Graphics\\Graphics settings");
|
||||||
|
@ -275,6 +277,10 @@ void InitializeRestext()
|
||||||
stringsEvent[EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT] = TR("Invert\\Invert values on this axis");
|
stringsEvent[EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT] = TR("Invert\\Invert values on this axis");
|
||||||
stringsEvent[EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT] = TR("Invert\\Invert values on this axis");
|
stringsEvent[EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT] = TR("Invert\\Invert values on this axis");
|
||||||
|
|
||||||
|
stringsEvent[EVENT_INTERFACE_PLUS_TRAINER] = TR("Space Programmer\\Disables radio-control");
|
||||||
|
stringsEvent[EVENT_INTERFACE_PLUS_RESEARCH] = TR("Space Researcher\\Disables using all previously researched technologies");
|
||||||
|
stringsEvent[EVENT_INTERFACE_PLUS_EXPLORER] = TR("Space Explorer\\Disables astronaut abilities");
|
||||||
|
|
||||||
stringsEvent[EVENT_INTERFACE_NEDIT] = TR("\\New player name");
|
stringsEvent[EVENT_INTERFACE_NEDIT] = TR("\\New player name");
|
||||||
stringsEvent[EVENT_INTERFACE_NOK] = TR("OK\\Choose the selected player");
|
stringsEvent[EVENT_INTERFACE_NOK] = TR("OK\\Choose the selected player");
|
||||||
stringsEvent[EVENT_INTERFACE_NDELETE] = TR("Delete player\\Deletes the player from the list");
|
stringsEvent[EVENT_INTERFACE_NDELETE] = TR("Delete player\\Deletes the player from the list");
|
||||||
|
|
|
@ -71,6 +71,7 @@ enum ResTextType
|
||||||
RT_TITLE_WRITE = 50,
|
RT_TITLE_WRITE = 50,
|
||||||
RT_TITLE_READ = 51,
|
RT_TITLE_READ = 51,
|
||||||
RT_TITLE_USER = 52,
|
RT_TITLE_USER = 52,
|
||||||
|
RT_TITLE_PLUS = 53,
|
||||||
|
|
||||||
RT_PLAY_CHAP_CHAPTERS = 60,
|
RT_PLAY_CHAP_CHAPTERS = 60,
|
||||||
RT_PLAY_CHAP_PLANETS = 61,
|
RT_PLAY_CHAP_PLANETS = 61,
|
||||||
|
|
|
@ -29,6 +29,7 @@ const std::map<LevelCategory, std::string> CATEGORY_DIR_MAP = {
|
||||||
{ LevelCategory::Exercises, "exercises" },
|
{ LevelCategory::Exercises, "exercises" },
|
||||||
{ LevelCategory::Challenges, "challenges" },
|
{ LevelCategory::Challenges, "challenges" },
|
||||||
{ LevelCategory::CodeBattles, "battles" },
|
{ LevelCategory::CodeBattles, "battles" },
|
||||||
|
{ LevelCategory::GamePlus, "plus" },
|
||||||
{ LevelCategory::CustomLevels, "custom" },
|
{ LevelCategory::CustomLevels, "custom" },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ enum class LevelCategory
|
||||||
Missions,
|
Missions,
|
||||||
FreeGame,
|
FreeGame,
|
||||||
CodeBattles,
|
CodeBattles,
|
||||||
|
GamePlus,
|
||||||
CustomLevels,
|
CustomLevels,
|
||||||
Max,
|
Max,
|
||||||
};
|
};
|
||||||
|
|
|
@ -2461,6 +2461,7 @@ bool CRobotMain::EventFrame(const Event &event)
|
||||||
{
|
{
|
||||||
if (m_levelCategory == LevelCategory::Missions ||
|
if (m_levelCategory == LevelCategory::Missions ||
|
||||||
m_levelCategory == LevelCategory::FreeGame ||
|
m_levelCategory == LevelCategory::FreeGame ||
|
||||||
|
m_levelCategory == LevelCategory::GamePlus ||
|
||||||
m_levelCategory == LevelCategory::CustomLevels)
|
m_levelCategory == LevelCategory::CustomLevels)
|
||||||
{
|
{
|
||||||
if (!IOIsBusy() && m_missionType != MISSION_CODE_BATTLE)
|
if (!IOIsBusy() && m_missionType != MISSION_CODE_BATTLE)
|
||||||
|
@ -3781,6 +3782,12 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject)
|
||||||
m_build |= BUILD_FLAG;
|
m_build |= BUILD_FLAG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_levelCategory == LevelCategory::GamePlus && !m_ui->GetPlusResearch() && !resetObject) // new game plus?
|
||||||
|
{
|
||||||
|
m_researchDone[0] |= m_playerProfile->GetFreeGameResearchUnlock();
|
||||||
|
m_build |= m_playerProfile->GetFreeGameBuildUnlock();
|
||||||
|
}
|
||||||
|
|
||||||
if (!resetObject)
|
if (!resetObject)
|
||||||
{
|
{
|
||||||
m_short->SetMode(false); // vehicles?
|
m_short->SetMode(false); // vehicles?
|
||||||
|
@ -5347,6 +5354,16 @@ bool CRobotMain::GetTrainerPilot()
|
||||||
return m_cheatTrainerPilot;
|
return m_cheatTrainerPilot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CRobotMain::GetPlusTrainer()
|
||||||
|
{
|
||||||
|
return m_ui->GetPlusTrainer();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CRobotMain::GetPlusExplorer()
|
||||||
|
{
|
||||||
|
return m_ui->GetPlusExplorer();
|
||||||
|
}
|
||||||
|
|
||||||
//! Indicates whether the scene is fixed, without interaction
|
//! Indicates whether the scene is fixed, without interaction
|
||||||
bool CRobotMain::GetFixScene()
|
bool CRobotMain::GetFixScene()
|
||||||
{
|
{
|
||||||
|
|
|
@ -266,6 +266,8 @@ public:
|
||||||
const std::string& GetScriptName();
|
const std::string& GetScriptName();
|
||||||
const std::string& GetScriptFile();
|
const std::string& GetScriptFile();
|
||||||
bool GetTrainerPilot();
|
bool GetTrainerPilot();
|
||||||
|
bool GetPlusTrainer();
|
||||||
|
bool GetPlusExplorer();
|
||||||
bool GetFixScene();
|
bool GetFixScene();
|
||||||
bool GetShowSoluce();
|
bool GetShowSoluce();
|
||||||
bool GetSceneSoluce();
|
bool GetSceneSoluce();
|
||||||
|
|
|
@ -314,7 +314,7 @@ void CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type,
|
||||||
m_object->SetPartRotation(13, Math::Vector(10.0f*Math::PI/180.0f, -5.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f));
|
m_object->SetPartRotation(13, Math::Vector(10.0f*Math::PI/180.0f, -5.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f));
|
||||||
|
|
||||||
// Creates the neutron gun.
|
// Creates the neutron gun.
|
||||||
if ( option != 2 ) // with backpack?
|
if ( option != 2 && !m_main->GetPlusExplorer()) // with backpack?
|
||||||
{
|
{
|
||||||
rank = m_engine->CreateObject();
|
rank = m_engine->CreateObject();
|
||||||
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
||||||
|
|
|
@ -1627,6 +1627,11 @@ bool COldObject::GetTrainer()
|
||||||
return m_bTrainer;
|
return m_bTrainer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool COldObject::GetPlusTrainer()
|
||||||
|
{
|
||||||
|
return m_main->GetPlusTrainer();
|
||||||
|
}
|
||||||
|
|
||||||
void COldObject::SetToy(bool bEnable)
|
void COldObject::SetToy(bool bEnable)
|
||||||
{
|
{
|
||||||
m_bToy = bEnable;
|
m_bToy = bEnable;
|
||||||
|
|
|
@ -165,6 +165,7 @@ public:
|
||||||
|
|
||||||
void SetTrainer(bool bEnable) override;
|
void SetTrainer(bool bEnable) override;
|
||||||
bool GetTrainer() override;
|
bool GetTrainer() override;
|
||||||
|
bool GetPlusTrainer();
|
||||||
|
|
||||||
void SetToy(bool bEnable);
|
void SetToy(bool bEnable);
|
||||||
bool GetToy();
|
bool GetToy();
|
||||||
|
|
|
@ -64,7 +64,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
|
||||||
{
|
{
|
||||||
auto obj = MakeUnique<CBaseBuilding>(params.id, params.type);
|
auto obj = MakeUnique<CBaseBuilding>(params.id, params.type);
|
||||||
|
|
||||||
obj->SetTrainer(params.trainer);
|
obj->SetTrainer(params.trainer || obj->GetPlusTrainer());
|
||||||
obj->SetTeam(params.team);
|
obj->SetTeam(params.team);
|
||||||
|
|
||||||
float height = params.height;
|
float height = params.height;
|
||||||
|
|
|
@ -65,7 +65,7 @@ std::unique_ptr<CBaseRobot> CBaseRobot::Create(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
obj->SetTrainer(params.trainer);
|
obj->SetTrainer(params.trainer || obj->GetPlusTrainer());
|
||||||
}
|
}
|
||||||
|
|
||||||
obj->SetToy(params.toy);
|
obj->SetToy(params.toy);
|
||||||
|
|
|
@ -52,7 +52,7 @@ std::unique_ptr<CShielder> CShielder::Create(
|
||||||
auto obj = MakeUnique<CShielder>(params.id);
|
auto obj = MakeUnique<CShielder>(params.id);
|
||||||
|
|
||||||
obj->SetTeam(params.team);
|
obj->SetTeam(params.team);
|
||||||
obj->SetTrainer(params.trainer);
|
obj->SetTrainer(params.trainer || obj->GetPlusTrainer());
|
||||||
obj->SetToy(params.toy);
|
obj->SetToy(params.toy);
|
||||||
|
|
||||||
auto physics = MakeUnique<CPhysics>(obj.get());
|
auto physics = MakeUnique<CPhysics>(obj.get());
|
||||||
|
|
|
@ -201,6 +201,7 @@ void CMainDialog::StartPauseMenu()
|
||||||
|
|
||||||
if ( (m_main->GetLevelCategory() == LevelCategory::Missions || // missions ?
|
if ( (m_main->GetLevelCategory() == LevelCategory::Missions || // missions ?
|
||||||
m_main->GetLevelCategory() == LevelCategory::FreeGame || // free games?
|
m_main->GetLevelCategory() == LevelCategory::FreeGame || // free games?
|
||||||
|
m_main->GetLevelCategory() == LevelCategory::GamePlus || // new game plus?
|
||||||
m_main->GetLevelCategory() == LevelCategory::CustomLevels ) && // user ?
|
m_main->GetLevelCategory() == LevelCategory::CustomLevels ) && // user ?
|
||||||
m_main->GetMissionType() != MISSION_CODE_BATTLE )
|
m_main->GetMissionType() != MISSION_CODE_BATTLE )
|
||||||
{
|
{
|
||||||
|
|
|
@ -762,6 +762,21 @@ bool CMainUserInterface::GetSceneSoluce()
|
||||||
return m_screenLevelList->GetSceneSoluce();
|
return m_screenLevelList->GetSceneSoluce();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CMainUserInterface::GetPlusTrainer()
|
||||||
|
{
|
||||||
|
return m_screenLevelList->GetPlusTrainer();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CMainUserInterface::GetPlusResearch()
|
||||||
|
{
|
||||||
|
return m_screenLevelList->GetPlusResearch();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CMainUserInterface::GetPlusExplorer()
|
||||||
|
{
|
||||||
|
return m_screenLevelList->GetPlusExplorer();
|
||||||
|
}
|
||||||
|
|
||||||
bool CMainUserInterface::GetGamerOnlyHead()
|
bool CMainUserInterface::GetGamerOnlyHead()
|
||||||
{
|
{
|
||||||
if (m_phase == PHASE_APPERANCE)
|
if (m_phase == PHASE_APPERANCE)
|
||||||
|
|
|
@ -76,6 +76,9 @@ public:
|
||||||
void ChangePhase(Phase phase);
|
void ChangePhase(Phase phase);
|
||||||
|
|
||||||
bool GetSceneSoluce();
|
bool GetSceneSoluce();
|
||||||
|
bool GetPlusTrainer();
|
||||||
|
bool GetPlusResearch();
|
||||||
|
bool GetPlusExplorer();
|
||||||
|
|
||||||
void UpdateChapterPassed();
|
void UpdateChapterPassed();
|
||||||
void NextMission();
|
void NextMission();
|
||||||
|
|
|
@ -943,8 +943,9 @@ bool CObjectInterface::CreateInterface(bool bSelect)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( type == OBJECT_HUMAN ||
|
if ( (type == OBJECT_HUMAN ||
|
||||||
type == OBJECT_TECH )
|
type == OBJECT_TECH ) &&
|
||||||
|
!m_main->GetPlusExplorer() )
|
||||||
{
|
{
|
||||||
pos.x = ox+sx*7.7f;
|
pos.x = ox+sx*7.7f;
|
||||||
pos.y = oy+sy*0.5f;
|
pos.y = oy+sy*0.5f;
|
||||||
|
@ -986,7 +987,7 @@ bool CObjectInterface::CreateInterface(bool bSelect)
|
||||||
DefaultEnter(pw, EVENT_OBJECT_MTAKE);
|
DefaultEnter(pw, EVENT_OBJECT_MTAKE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( type == OBJECT_HUMAN ) // builder?
|
if ( type == OBJECT_HUMAN && !m_main->GetPlusExplorer()) // builder?
|
||||||
{
|
{
|
||||||
pos.x = 1.0f/640.0f;
|
pos.x = 1.0f/640.0f;
|
||||||
pos.y = 4.0f/480.0f;
|
pos.y = 4.0f/480.0f;
|
||||||
|
|
|
@ -48,6 +48,9 @@ CScreenLevelList::CScreenLevelList(CMainDialog* mainDialog)
|
||||||
: m_dialog(mainDialog),
|
: m_dialog(mainDialog),
|
||||||
m_category{},
|
m_category{},
|
||||||
m_sceneSoluce{false},
|
m_sceneSoluce{false},
|
||||||
|
m_plusTrainer{false},
|
||||||
|
m_plusResearch{false},
|
||||||
|
m_plusExplorer{false},
|
||||||
m_maxList{0},
|
m_maxList{0},
|
||||||
m_accessChap{0}
|
m_accessChap{0}
|
||||||
{
|
{
|
||||||
|
@ -86,6 +89,7 @@ void CScreenLevelList::CreateInterface()
|
||||||
if ( m_category == LevelCategory::Missions ) res = RT_TITLE_MISSION;
|
if ( m_category == LevelCategory::Missions ) res = RT_TITLE_MISSION;
|
||||||
if ( m_category == LevelCategory::FreeGame ) res = RT_TITLE_FREE;
|
if ( m_category == LevelCategory::FreeGame ) res = RT_TITLE_FREE;
|
||||||
if ( m_category == LevelCategory::CodeBattles ) res = RT_TITLE_CODE_BATTLES;
|
if ( m_category == LevelCategory::CodeBattles ) res = RT_TITLE_CODE_BATTLES;
|
||||||
|
if ( m_category == LevelCategory::GamePlus ) res = RT_TITLE_PLUS;
|
||||||
if ( m_category == LevelCategory::CustomLevels ) res = RT_TITLE_USER;
|
if ( m_category == LevelCategory::CustomLevels ) res = RT_TITLE_USER;
|
||||||
GetResource(RES_TEXT, res, name);
|
GetResource(RES_TEXT, res, name);
|
||||||
pw->SetName(name);
|
pw->SetName(name);
|
||||||
|
@ -109,6 +113,7 @@ void CScreenLevelList::CreateInterface()
|
||||||
res = RT_PLAY_CHAP_CHAPTERS;
|
res = RT_PLAY_CHAP_CHAPTERS;
|
||||||
if ( m_category == LevelCategory::Missions ) res = RT_PLAY_CHAP_PLANETS;
|
if ( m_category == LevelCategory::Missions ) res = RT_PLAY_CHAP_PLANETS;
|
||||||
if ( m_category == LevelCategory::FreeGame ) res = RT_PLAY_CHAP_PLANETS;
|
if ( m_category == LevelCategory::FreeGame ) res = RT_PLAY_CHAP_PLANETS;
|
||||||
|
if ( m_category == LevelCategory::GamePlus ) res = RT_PLAY_CHAP_PLANETS;
|
||||||
if ( m_category == LevelCategory::CustomLevels ) res = RT_PLAY_CHAP_USERLVL;
|
if ( m_category == LevelCategory::CustomLevels ) res = RT_PLAY_CHAP_USERLVL;
|
||||||
GetResource(RES_TEXT, res, name);
|
GetResource(RES_TEXT, res, name);
|
||||||
pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL11, name);
|
pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL11, name);
|
||||||
|
@ -138,6 +143,7 @@ void CScreenLevelList::CreateInterface()
|
||||||
if ( m_category == LevelCategory::Challenges ) res = RT_PLAY_LIST_CHALLENGES;
|
if ( m_category == LevelCategory::Challenges ) res = RT_PLAY_LIST_CHALLENGES;
|
||||||
if ( m_category == LevelCategory::Missions ) res = RT_PLAY_LIST_MISSIONS;
|
if ( m_category == LevelCategory::Missions ) res = RT_PLAY_LIST_MISSIONS;
|
||||||
if ( m_category == LevelCategory::FreeGame ) res = RT_PLAY_LIST_FREEGAME;
|
if ( m_category == LevelCategory::FreeGame ) res = RT_PLAY_LIST_FREEGAME;
|
||||||
|
if ( m_category == LevelCategory::GamePlus ) res = RT_PLAY_LIST_MISSIONS;
|
||||||
GetResource(RES_TEXT, res, name);
|
GetResource(RES_TEXT, res, name);
|
||||||
pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL12, name);
|
pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL12, name);
|
||||||
pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT);
|
pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT);
|
||||||
|
@ -179,6 +185,7 @@ void CScreenLevelList::CreateInterface()
|
||||||
|
|
||||||
// Button displays the "soluce":
|
// Button displays the "soluce":
|
||||||
if ( m_category != LevelCategory::Exercises &&
|
if ( m_category != LevelCategory::Exercises &&
|
||||||
|
m_category != LevelCategory::GamePlus &&
|
||||||
m_category != LevelCategory::FreeGame )
|
m_category != LevelCategory::FreeGame )
|
||||||
{
|
{
|
||||||
pos.x = ox+sx*9.5f;
|
pos.x = ox+sx*9.5f;
|
||||||
|
@ -191,10 +198,36 @@ void CScreenLevelList::CreateInterface()
|
||||||
}
|
}
|
||||||
m_sceneSoluce = false;
|
m_sceneSoluce = false;
|
||||||
|
|
||||||
|
if ( m_category == LevelCategory::GamePlus )
|
||||||
|
{
|
||||||
|
pos.x = ox+sx*9.5f;
|
||||||
|
pos.y = oy+sy*6.1f;
|
||||||
|
ddim.x = dim.x*3.4f;
|
||||||
|
ddim.y = dim.y*0.5f;
|
||||||
|
pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_PLUS_TRAINER);
|
||||||
|
pc->SetState(STATE_SHADOW);
|
||||||
|
pc->ClearState(STATE_CHECK);
|
||||||
|
|
||||||
|
pos.y = oy+sy*5.5f;
|
||||||
|
pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_PLUS_RESEARCH);
|
||||||
|
pc->SetState(STATE_SHADOW);
|
||||||
|
pc->ClearState(STATE_CHECK);
|
||||||
|
|
||||||
|
pos.x = ox+sx*12.9f;
|
||||||
|
pos.y = oy+sy*6.1f;
|
||||||
|
pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_PLUS_EXPLORER);
|
||||||
|
pc->SetState(STATE_SHADOW);
|
||||||
|
pc->ClearState(STATE_CHECK);
|
||||||
|
}
|
||||||
|
m_plusTrainer = false;
|
||||||
|
m_plusResearch = false;
|
||||||
|
m_plusExplorer = false;
|
||||||
|
|
||||||
UpdateSceneResume(m_chap[m_category]+1, m_sel[m_category]+1);
|
UpdateSceneResume(m_chap[m_category]+1, m_sel[m_category]+1);
|
||||||
|
|
||||||
if ( m_category == LevelCategory::Missions ||
|
if ( m_category == LevelCategory::Missions ||
|
||||||
m_category == LevelCategory::FreeGame ||
|
m_category == LevelCategory::FreeGame ||
|
||||||
|
m_category == LevelCategory::GamePlus ||
|
||||||
m_category == LevelCategory::CustomLevels )
|
m_category == LevelCategory::CustomLevels )
|
||||||
{
|
{
|
||||||
pos.x = ox+sx*9.5f;
|
pos.x = ox+sx*9.5f;
|
||||||
|
@ -295,6 +328,27 @@ bool CScreenLevelList::EventProcess(const Event &event)
|
||||||
pb->SetState(STATE_CHECK, m_sceneSoluce);
|
pb->SetState(STATE_CHECK, m_sceneSoluce);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case EVENT_INTERFACE_PLUS_TRAINER:
|
||||||
|
pb = static_cast<CButton*>(pw->SearchControl(EVENT_INTERFACE_PLUS_TRAINER));
|
||||||
|
if ( pb == nullptr ) break;
|
||||||
|
m_plusTrainer = !m_plusTrainer;
|
||||||
|
pb->SetState(STATE_CHECK, m_plusTrainer);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EVENT_INTERFACE_PLUS_RESEARCH:
|
||||||
|
pb = static_cast<CButton*>(pw->SearchControl(EVENT_INTERFACE_PLUS_RESEARCH));
|
||||||
|
if ( pb == nullptr ) break;
|
||||||
|
m_plusResearch = !m_plusResearch;
|
||||||
|
pb->SetState(STATE_CHECK, m_plusResearch);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EVENT_INTERFACE_PLUS_EXPLORER:
|
||||||
|
pb = static_cast<CButton*>(pw->SearchControl(EVENT_INTERFACE_PLUS_EXPLORER));
|
||||||
|
if ( pb == nullptr ) break;
|
||||||
|
m_plusExplorer = !m_plusExplorer;
|
||||||
|
pb->SetState(STATE_CHECK, m_plusExplorer);
|
||||||
|
break;
|
||||||
|
|
||||||
case EVENT_INTERFACE_PLAY:
|
case EVENT_INTERFACE_PLAY:
|
||||||
m_main->SetLevel(m_category, m_chap[m_category]+1, m_sel[m_category]+1);
|
m_main->SetLevel(m_category, m_chap[m_category]+1, m_sel[m_category]+1);
|
||||||
m_main->ChangePhase(PHASE_SIMUL);
|
m_main->ChangePhase(PHASE_SIMUL);
|
||||||
|
@ -331,6 +385,21 @@ bool CScreenLevelList::GetSceneSoluce()
|
||||||
return m_sceneSoluce;
|
return m_sceneSoluce;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CScreenLevelList::GetPlusTrainer()
|
||||||
|
{
|
||||||
|
return m_plusTrainer;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CScreenLevelList::GetPlusResearch()
|
||||||
|
{
|
||||||
|
return m_plusResearch;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CScreenLevelList::GetPlusExplorer()
|
||||||
|
{
|
||||||
|
return m_plusExplorer;
|
||||||
|
}
|
||||||
|
|
||||||
// Updates the chapters of exercises or missions.
|
// Updates the chapters of exercises or missions.
|
||||||
|
|
||||||
void CScreenLevelList::UpdateSceneChap(int &chap)
|
void CScreenLevelList::UpdateSceneChap(int &chap)
|
||||||
|
@ -392,7 +461,7 @@ void CScreenLevelList::UpdateSceneChap(int &chap)
|
||||||
pl->SetCheck(j, bPassed);
|
pl->SetCheck(j, bPassed);
|
||||||
pl->SetEnable(j, true);
|
pl->SetEnable(j, true);
|
||||||
|
|
||||||
if ( m_category == LevelCategory::Missions && !m_main->GetShowAll() && !bPassed )
|
if ( (m_category == LevelCategory::Missions || m_category == LevelCategory::GamePlus) && !m_main->GetShowAll() && !bPassed )
|
||||||
{
|
{
|
||||||
j ++;
|
j ++;
|
||||||
break;
|
break;
|
||||||
|
@ -459,7 +528,7 @@ void CScreenLevelList::UpdateSceneList(int chap, int &sel)
|
||||||
pl->SetCheck(j, bPassed);
|
pl->SetCheck(j, bPassed);
|
||||||
pl->SetEnable(j, true);
|
pl->SetEnable(j, true);
|
||||||
|
|
||||||
if ( m_category == LevelCategory::Missions && !m_main->GetShowAll() && !bPassed )
|
if ( (m_category == LevelCategory::Missions || m_category == LevelCategory::GamePlus) && !m_main->GetShowAll() && !bPassed )
|
||||||
{
|
{
|
||||||
readAll = false;
|
readAll = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,9 @@ public:
|
||||||
void SetSelection(LevelCategory category, int chap, int rank);
|
void SetSelection(LevelCategory category, int chap, int rank);
|
||||||
|
|
||||||
bool GetSceneSoluce();
|
bool GetSceneSoluce();
|
||||||
|
bool GetPlusTrainer();
|
||||||
|
bool GetPlusResearch();
|
||||||
|
bool GetPlusExplorer();
|
||||||
|
|
||||||
void AllMissionUpdate();
|
void AllMissionUpdate();
|
||||||
void ShowSoluceUpdate();
|
void ShowSoluceUpdate();
|
||||||
|
@ -65,6 +68,9 @@ protected:
|
||||||
LevelCategory m_category;
|
LevelCategory m_category;
|
||||||
|
|
||||||
bool m_sceneSoluce;
|
bool m_sceneSoluce;
|
||||||
|
bool m_plusTrainer;
|
||||||
|
bool m_plusResearch;
|
||||||
|
bool m_plusExplorer;
|
||||||
|
|
||||||
std::map<LevelCategory, int> m_chap; // selected chapter (0..8)
|
std::map<LevelCategory, int> m_chap; // selected chapter (0..8)
|
||||||
std::map<LevelCategory, int> m_sel; // chosen mission (0..98)
|
std::map<LevelCategory, int> m_sel; // chosen mission (0..98)
|
||||||
|
|
|
@ -91,14 +91,22 @@ void CScreenMainMenu::CreateInterface()
|
||||||
pg = pw->CreateGroup(pos, ddim, 26, EVENT_LABEL1); // quit
|
pg = pw->CreateGroup(pos, ddim, 26, EVENT_LABEL1); // quit
|
||||||
pg->SetState(STATE_SHADOW);
|
pg->SetState(STATE_SHADOW);
|
||||||
|
|
||||||
ddim.x = 0.18f;
|
ddim.x = 0.12f;
|
||||||
ddim.y = dim.y*0.8f;
|
ddim.y = dim.y*0.8f;
|
||||||
pos.x = 0.41f;
|
pos.x = 0.41f;
|
||||||
|
|
||||||
pos.y = oy+sy*10.5f;
|
pos.y = oy+sy*10.5f;
|
||||||
|
|
||||||
pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_MISSION);
|
pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_MISSION);
|
||||||
pb->SetState(STATE_SHADOW);
|
pb->SetState(STATE_SHADOW);
|
||||||
|
|
||||||
|
ddim.x = 0.06f;
|
||||||
|
pos.x = 0.53f;
|
||||||
|
pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_PLUS);
|
||||||
|
pb->SetState(STATE_SHADOW);
|
||||||
|
|
||||||
|
ddim.x = 0.18f;
|
||||||
|
pos.x = 0.41f;
|
||||||
|
|
||||||
pos.y = oy+sy*9.6f;
|
pos.y = oy+sy*9.6f;
|
||||||
pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_FREE);
|
pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_FREE);
|
||||||
pb->SetState(STATE_SHADOW);
|
pb->SetState(STATE_SHADOW);
|
||||||
|
@ -218,6 +226,11 @@ bool CScreenMainMenu::EventProcess(const Event &event)
|
||||||
m_main->ChangePhase(PHASE_LEVEL_LIST);
|
m_main->ChangePhase(PHASE_LEVEL_LIST);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case EVENT_INTERFACE_PLUS:
|
||||||
|
m_main->SetLevel(LevelCategory::GamePlus, 0, 0);
|
||||||
|
m_main->ChangePhase(PHASE_LEVEL_LIST);
|
||||||
|
break;
|
||||||
|
|
||||||
case EVENT_INTERFACE_USER:
|
case EVENT_INTERFACE_USER:
|
||||||
m_main->SetLevel(LevelCategory::CustomLevels, 0, 0);
|
m_main->SetLevel(LevelCategory::CustomLevels, 0, 0);
|
||||||
m_main->ChangePhase(PHASE_LEVEL_LIST);
|
m_main->ChangePhase(PHASE_LEVEL_LIST);
|
||||||
|
|
Loading…
Reference in New Issue