Add Missions+ gamemode
parent
95cab790c1
commit
754dfefefd
|
@ -84,6 +84,9 @@ msgstr ""
|
|||
msgid "Load a saved mission"
|
||||
msgstr ""
|
||||
|
||||
msgid "Missions+"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chapters:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -340,6 +343,9 @@ msgstr ""
|
|||
msgid "<< Back \\Back to the previous screen"
|
||||
msgstr ""
|
||||
|
||||
msgid "+\\Missions with bonus content and optional challenges"
|
||||
msgstr ""
|
||||
|
||||
msgid "Play\\Start mission!"
|
||||
msgstr ""
|
||||
|
||||
|
@ -583,6 +589,15 @@ msgstr ""
|
|||
msgid "Invert\\Invert values on this axis"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -190,6 +190,7 @@ void InitializeEventTypeTexts()
|
|||
EVENT_TYPE_TEXT[EVENT_INTERFACE_ABORT] = "EVENT_INTERFACE_ABORT";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_USER] = "EVENT_INTERFACE_USER";
|
||||
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_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_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_GLINTr] = "EVENT_INTERFACE_GLINTr";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_GLINTu] = "EVENT_INTERFACE_GLINTu";
|
||||
|
|
|
@ -225,6 +225,7 @@ enum EventType
|
|||
EVENT_INTERFACE_ABORT = 412,
|
||||
EVENT_INTERFACE_USER = 413,
|
||||
EVENT_INTERFACE_SATCOM = 414,
|
||||
EVENT_INTERFACE_PLUS = 415,
|
||||
|
||||
EVENT_INTERFACE_CHAP = 420,
|
||||
EVENT_INTERFACE_LIST = 421,
|
||||
|
@ -311,6 +312,10 @@ enum EventType
|
|||
EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT = 573,
|
||||
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_GLINTr = 591,
|
||||
EVENT_INTERFACE_GLINTu = 592,
|
||||
|
|
|
@ -77,6 +77,7 @@ void InitializeRestext()
|
|||
stringsText[RT_TITLE_PERSO] = TR("Customize your appearance");
|
||||
stringsText[RT_TITLE_WRITE] = TR("Save the current 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_PLANETS] = TR("Planets:");
|
||||
|
@ -181,6 +182,7 @@ void InitializeRestext()
|
|||
stringsEvent[EVENT_INTERFACE_ABORT] = TR("\\Return to 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_PLUS] = TR("+\\Missions with bonus content and optional challenges");
|
||||
stringsEvent[EVENT_INTERFACE_PLAY] = TR("Play\\Start mission!");
|
||||
stringsEvent[EVENT_INTERFACE_SETUPd] = TR("Device\\Driver and resolution 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_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_NOK] = TR("OK\\Choose the selected player");
|
||||
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_READ = 51,
|
||||
RT_TITLE_USER = 52,
|
||||
RT_TITLE_PLUS = 53,
|
||||
|
||||
RT_PLAY_CHAP_CHAPTERS = 60,
|
||||
RT_PLAY_CHAP_PLANETS = 61,
|
||||
|
|
|
@ -29,6 +29,7 @@ const std::map<LevelCategory, std::string> CATEGORY_DIR_MAP = {
|
|||
{ LevelCategory::Exercises, "exercises" },
|
||||
{ LevelCategory::Challenges, "challenges" },
|
||||
{ LevelCategory::CodeBattles, "battles" },
|
||||
{ LevelCategory::GamePlus, "plus" },
|
||||
{ LevelCategory::CustomLevels, "custom" },
|
||||
};
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ enum class LevelCategory
|
|||
Missions,
|
||||
FreeGame,
|
||||
CodeBattles,
|
||||
GamePlus,
|
||||
CustomLevels,
|
||||
Max,
|
||||
};
|
||||
|
|
|
@ -2461,6 +2461,7 @@ bool CRobotMain::EventFrame(const Event &event)
|
|||
{
|
||||
if (m_levelCategory == LevelCategory::Missions ||
|
||||
m_levelCategory == LevelCategory::FreeGame ||
|
||||
m_levelCategory == LevelCategory::GamePlus ||
|
||||
m_levelCategory == LevelCategory::CustomLevels)
|
||||
{
|
||||
if (!IOIsBusy() && m_missionType != MISSION_CODE_BATTLE)
|
||||
|
@ -3781,6 +3782,12 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject)
|
|||
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)
|
||||
{
|
||||
m_short->SetMode(false); // vehicles?
|
||||
|
@ -5347,6 +5354,16 @@ bool CRobotMain::GetTrainerPilot()
|
|||
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
|
||||
bool CRobotMain::GetFixScene()
|
||||
{
|
||||
|
|
|
@ -266,6 +266,8 @@ public:
|
|||
const std::string& GetScriptName();
|
||||
const std::string& GetScriptFile();
|
||||
bool GetTrainerPilot();
|
||||
bool GetPlusTrainer();
|
||||
bool GetPlusExplorer();
|
||||
bool GetFixScene();
|
||||
bool GetShowSoluce();
|
||||
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));
|
||||
|
||||
// Creates the neutron gun.
|
||||
if ( option != 2 ) // with backpack?
|
||||
if ( option != 2 && !m_main->GetPlusExplorer()) // with backpack?
|
||||
{
|
||||
rank = m_engine->CreateObject();
|
||||
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
||||
|
|
|
@ -1627,6 +1627,11 @@ bool COldObject::GetTrainer()
|
|||
return m_bTrainer;
|
||||
}
|
||||
|
||||
bool COldObject::GetPlusTrainer()
|
||||
{
|
||||
return m_main->GetPlusTrainer();
|
||||
}
|
||||
|
||||
void COldObject::SetToy(bool bEnable)
|
||||
{
|
||||
m_bToy = bEnable;
|
||||
|
|
|
@ -165,6 +165,7 @@ public:
|
|||
|
||||
void SetTrainer(bool bEnable) override;
|
||||
bool GetTrainer() override;
|
||||
bool GetPlusTrainer();
|
||||
|
||||
void SetToy(bool bEnable);
|
||||
bool GetToy();
|
||||
|
|
|
@ -64,7 +64,7 @@ std::unique_ptr<CBaseBuilding> CBaseBuilding::Create(
|
|||
{
|
||||
auto obj = MakeUnique<CBaseBuilding>(params.id, params.type);
|
||||
|
||||
obj->SetTrainer(params.trainer);
|
||||
obj->SetTrainer(params.trainer || obj->GetPlusTrainer());
|
||||
obj->SetTeam(params.team);
|
||||
|
||||
float height = params.height;
|
||||
|
|
|
@ -65,7 +65,7 @@ std::unique_ptr<CBaseRobot> CBaseRobot::Create(
|
|||
}
|
||||
else
|
||||
{
|
||||
obj->SetTrainer(params.trainer);
|
||||
obj->SetTrainer(params.trainer || obj->GetPlusTrainer());
|
||||
}
|
||||
|
||||
obj->SetToy(params.toy);
|
||||
|
|
|
@ -52,7 +52,7 @@ std::unique_ptr<CShielder> CShielder::Create(
|
|||
auto obj = MakeUnique<CShielder>(params.id);
|
||||
|
||||
obj->SetTeam(params.team);
|
||||
obj->SetTrainer(params.trainer);
|
||||
obj->SetTrainer(params.trainer || obj->GetPlusTrainer());
|
||||
obj->SetToy(params.toy);
|
||||
|
||||
auto physics = MakeUnique<CPhysics>(obj.get());
|
||||
|
|
|
@ -201,6 +201,7 @@ void CMainDialog::StartPauseMenu()
|
|||
|
||||
if ( (m_main->GetLevelCategory() == LevelCategory::Missions || // missions ?
|
||||
m_main->GetLevelCategory() == LevelCategory::FreeGame || // free games?
|
||||
m_main->GetLevelCategory() == LevelCategory::GamePlus || // new game plus?
|
||||
m_main->GetLevelCategory() == LevelCategory::CustomLevels ) && // user ?
|
||||
m_main->GetMissionType() != MISSION_CODE_BATTLE )
|
||||
{
|
||||
|
|
|
@ -762,6 +762,21 @@ bool CMainUserInterface::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()
|
||||
{
|
||||
if (m_phase == PHASE_APPERANCE)
|
||||
|
|
|
@ -76,6 +76,9 @@ public:
|
|||
void ChangePhase(Phase phase);
|
||||
|
||||
bool GetSceneSoluce();
|
||||
bool GetPlusTrainer();
|
||||
bool GetPlusResearch();
|
||||
bool GetPlusExplorer();
|
||||
|
||||
void UpdateChapterPassed();
|
||||
void NextMission();
|
||||
|
|
|
@ -943,8 +943,9 @@ bool CObjectInterface::CreateInterface(bool bSelect)
|
|||
}
|
||||
}
|
||||
|
||||
if ( type == OBJECT_HUMAN ||
|
||||
type == OBJECT_TECH )
|
||||
if ( (type == OBJECT_HUMAN ||
|
||||
type == OBJECT_TECH ) &&
|
||||
!m_main->GetPlusExplorer() )
|
||||
{
|
||||
pos.x = ox+sx*7.7f;
|
||||
pos.y = oy+sy*0.5f;
|
||||
|
@ -986,7 +987,7 @@ bool CObjectInterface::CreateInterface(bool bSelect)
|
|||
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.y = 4.0f/480.0f;
|
||||
|
|
|
@ -48,6 +48,9 @@ CScreenLevelList::CScreenLevelList(CMainDialog* mainDialog)
|
|||
: m_dialog(mainDialog),
|
||||
m_category{},
|
||||
m_sceneSoluce{false},
|
||||
m_plusTrainer{false},
|
||||
m_plusResearch{false},
|
||||
m_plusExplorer{false},
|
||||
m_maxList{0},
|
||||
m_accessChap{0}
|
||||
{
|
||||
|
@ -86,6 +89,7 @@ void CScreenLevelList::CreateInterface()
|
|||
if ( m_category == LevelCategory::Missions ) res = RT_TITLE_MISSION;
|
||||
if ( m_category == LevelCategory::FreeGame ) res = RT_TITLE_FREE;
|
||||
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;
|
||||
GetResource(RES_TEXT, res, name);
|
||||
pw->SetName(name);
|
||||
|
@ -109,6 +113,7 @@ void CScreenLevelList::CreateInterface()
|
|||
res = RT_PLAY_CHAP_CHAPTERS;
|
||||
if ( m_category == LevelCategory::Missions ) 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;
|
||||
GetResource(RES_TEXT, res, 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::Missions ) res = RT_PLAY_LIST_MISSIONS;
|
||||
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);
|
||||
pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL12, name);
|
||||
pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT);
|
||||
|
@ -179,6 +185,7 @@ void CScreenLevelList::CreateInterface()
|
|||
|
||||
// Button displays the "soluce":
|
||||
if ( m_category != LevelCategory::Exercises &&
|
||||
m_category != LevelCategory::GamePlus &&
|
||||
m_category != LevelCategory::FreeGame )
|
||||
{
|
||||
pos.x = ox+sx*9.5f;
|
||||
|
@ -191,10 +198,36 @@ void CScreenLevelList::CreateInterface()
|
|||
}
|
||||
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);
|
||||
|
||||
if ( m_category == LevelCategory::Missions ||
|
||||
m_category == LevelCategory::FreeGame ||
|
||||
m_category == LevelCategory::GamePlus ||
|
||||
m_category == LevelCategory::CustomLevels )
|
||||
{
|
||||
pos.x = ox+sx*9.5f;
|
||||
|
@ -295,6 +328,27 @@ bool CScreenLevelList::EventProcess(const Event &event)
|
|||
pb->SetState(STATE_CHECK, m_sceneSoluce);
|
||||
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:
|
||||
m_main->SetLevel(m_category, m_chap[m_category]+1, m_sel[m_category]+1);
|
||||
m_main->ChangePhase(PHASE_SIMUL);
|
||||
|
@ -331,6 +385,21 @@ bool CScreenLevelList::GetSceneSoluce()
|
|||
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.
|
||||
|
||||
void CScreenLevelList::UpdateSceneChap(int &chap)
|
||||
|
@ -392,7 +461,7 @@ void CScreenLevelList::UpdateSceneChap(int &chap)
|
|||
pl->SetCheck(j, bPassed);
|
||||
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 ++;
|
||||
break;
|
||||
|
@ -459,7 +528,7 @@ void CScreenLevelList::UpdateSceneList(int chap, int &sel)
|
|||
pl->SetCheck(j, bPassed);
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -43,6 +43,9 @@ public:
|
|||
void SetSelection(LevelCategory category, int chap, int rank);
|
||||
|
||||
bool GetSceneSoluce();
|
||||
bool GetPlusTrainer();
|
||||
bool GetPlusResearch();
|
||||
bool GetPlusExplorer();
|
||||
|
||||
void AllMissionUpdate();
|
||||
void ShowSoluceUpdate();
|
||||
|
@ -65,6 +68,9 @@ protected:
|
|||
LevelCategory m_category;
|
||||
|
||||
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_sel; // chosen mission (0..98)
|
||||
|
|
|
@ -91,14 +91,22 @@ void CScreenMainMenu::CreateInterface()
|
|||
pg = pw->CreateGroup(pos, ddim, 26, EVENT_LABEL1); // quit
|
||||
pg->SetState(STATE_SHADOW);
|
||||
|
||||
ddim.x = 0.18f;
|
||||
ddim.x = 0.12f;
|
||||
ddim.y = dim.y*0.8f;
|
||||
pos.x = 0.41f;
|
||||
|
||||
pos.y = oy+sy*10.5f;
|
||||
|
||||
pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_MISSION);
|
||||
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;
|
||||
pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_FREE);
|
||||
pb->SetState(STATE_SHADOW);
|
||||
|
@ -218,6 +226,11 @@ bool CScreenMainMenu::EventProcess(const Event &event)
|
|||
m_main->ChangePhase(PHASE_LEVEL_LIST);
|
||||
break;
|
||||
|
||||
case EVENT_INTERFACE_PLUS:
|
||||
m_main->SetLevel(LevelCategory::GamePlus, 0, 0);
|
||||
m_main->ChangePhase(PHASE_LEVEL_LIST);
|
||||
break;
|
||||
|
||||
case EVENT_INTERFACE_USER:
|
||||
m_main->SetLevel(LevelCategory::CustomLevels, 0, 0);
|
||||
m_main->ChangePhase(PHASE_LEVEL_LIST);
|
||||
|
|
Loading…
Reference in New Issue