Pause game when in background, closes #609

dev-time-step
krzys-h 2016-02-13 21:35:01 +01:00
parent c93fa12552
commit a3477edc8e
13 changed files with 128 additions and 29 deletions

View File

@ -286,6 +286,9 @@ msgstr ""
msgid "Custom levels\\Levels from mods created by the users"
msgstr ""
msgid "SatCom"
msgstr ""
msgid "Change player\\Change player"
msgstr ""
@ -379,6 +382,9 @@ msgstr ""
msgid "Quake at explosions\\The screen shakes at explosions"
msgstr ""
msgid "Pause in background\\Pause the game when the window is unfocused"
msgstr ""
msgid "Automatic indent\\When program editing"
msgstr ""
@ -509,6 +515,9 @@ msgstr ""
msgid "Pause\\Pause the game without opening menu"
msgstr ""
msgid "Cheat console\\Show cheat console"
msgstr ""
msgid "Sound effects:\\Volume of engines, voice, shooting, etc."
msgstr ""
@ -530,13 +539,13 @@ msgstr ""
msgid "Normal\\Normal sound volume"
msgstr ""
msgid "Use a joystick\\Joystick or keyboard"
msgstr ""
msgid ""
"Access to solution\\Shows the solution (detailed instructions for missions)"
msgstr ""
msgid "Invert\\Invert values on this axis"
msgstr ""
msgid "\\New player name"
msgstr ""

View File

@ -376,6 +376,9 @@ msgstr "Andere Kamera\\Sichtpunkt einstellen"
msgid "Change player\\Change player"
msgstr "Anderer Spieler\\Spielername ändern"
msgid "Cheat console\\Show cheat console"
msgstr ""
msgid "Checkpoint"
msgstr "Checkpoint"
@ -751,6 +754,9 @@ msgstr "Anweisungen\\Anweisungen für die Mission oder Übung"
msgid "Internal error - tell the developers"
msgstr "Interner Fehler - Benachrichtige die Entwickler"
msgid "Invert\\Invert values on this axis"
msgstr ""
msgid "Jet temperature"
msgstr "Triebwerktemperatur"
@ -1040,6 +1046,9 @@ msgstr "Partikel in den Menüs\\Funken und Sterne in den Menüs"
msgid "Paste (Ctrl+v)"
msgstr "Einfügen (Ctrl+v)"
msgid "Pause in background\\Pause the game when the window is unfocused"
msgstr ""
msgid "Pause/continue"
msgstr "Pause/Weitermachen"
@ -1281,6 +1290,9 @@ msgstr "Forschungsprogramm Kettenantrieb"
msgid "Run research program for winged bots"
msgstr "Forschungsprogramm Jetantrieb"
msgid "SatCom"
msgstr "SatCom"
msgid "Satellite report"
msgstr "Satellitenbericht"
@ -1610,9 +1622,6 @@ msgstr "Markierung für unterirdisches Platinvorkommen"
msgid "Uranium ore"
msgstr "Platinerz"
msgid "Use a joystick\\Joystick or keyboard"
msgstr "Joystick\\Joystick oder Tastatur"
msgid "User levels"
msgstr "Userlevels"
@ -1896,9 +1905,6 @@ msgstr "www.epsitec.com"
#~ msgid "Robbie\\Your assistant"
#~ msgstr "Robby\\Ihr Assistent"
#~ msgid "SatCom"
#~ msgstr "SatCom"
#~ msgid "Sky\\Clouds and nebulae"
#~ msgstr "Himmel\\Himmel und Wolken"
@ -1916,6 +1922,9 @@ msgstr "www.epsitec.com"
#~ "working.\n"
#~ msgstr "Die Liste ist ohne \\l;Radar\\u object\\radar; nicht verfügbar.\n"
#~ msgid "Use a joystick\\Joystick or keyboard"
#~ msgstr "Joystick\\Joystick oder Tastatur"
#~ msgid "User\\User levels"
#~ msgstr "User\\Userlevels"

View File

@ -373,6 +373,9 @@ msgstr "Changement de caméra\\Autre de point de vue"
msgid "Change player\\Change player"
msgstr "Autre joueur\\Choix du nom du joueur"
msgid "Cheat console\\Show cheat console"
msgstr ""
msgid "Checkpoint"
msgstr "Indicateur"
@ -745,6 +748,9 @@ msgstr "Instructions mission\\Marche à suivre"
msgid "Internal error - tell the developers"
msgstr "Erreur interne - contacter les développeurs"
msgid "Invert\\Invert values on this axis"
msgstr ""
msgid "Jet temperature"
msgstr "Température du réacteur"
@ -1032,6 +1038,9 @@ msgstr "Particules dans l'interface\\Pluie de particules"
msgid "Paste (Ctrl+v)"
msgstr "Coller (Ctrl+v)"
msgid "Pause in background\\Pause the game when the window is unfocused"
msgstr ""
msgid "Pause/continue"
msgstr "Pause/continuer"
@ -1269,6 +1278,9 @@ msgstr "Recherche les chenilles"
msgid "Run research program for winged bots"
msgstr "Recherche les robots volants"
msgid "SatCom"
msgstr "SatCom"
msgid "Satellite report"
msgstr "Rapport du satellite"
@ -1596,9 +1608,6 @@ msgstr "Emplacement pour derrick (uranium)"
msgid "Uranium ore"
msgstr "Minerai d'uranium"
msgid "Use a joystick\\Joystick or keyboard"
msgstr "Utilise un joystick\\Joystick ou clavier"
msgid "User levels"
msgstr "Niveaux supplémentaires"
@ -1883,9 +1892,6 @@ msgstr "www.epsitec.com"
#~ msgid "Robbie\\Your assistant"
#~ msgstr "Robbie\\Votre assistant"
#~ msgid "SatCom"
#~ msgstr "SatCom"
#~ msgid "Sky\\Clouds and nebulae"
#~ msgstr "Ciel\\Ciel et nuages"
@ -1906,6 +1912,9 @@ msgstr "www.epsitec.com"
#~ "working.\n"
#~ msgstr "Liste non disponible sans \\l;radar\\u object\\radar;.\n"
#~ msgid "Use a joystick\\Joystick or keyboard"
#~ msgstr "Utilise un joystick\\Joystick ou clavier"
#~ msgid "User\\User levels"
#~ msgstr "Suppl.\\Niveaux supplémentaires"

View File

@ -379,6 +379,9 @@ msgstr "Zmień kamerę\\Przełącza pomiędzy kamerą pokładową i śledzącą"
msgid "Change player\\Change player"
msgstr "Zmień gracza\\Zmień gracza"
msgid "Cheat console\\Show cheat console"
msgstr ""
msgid "Checkpoint"
msgstr "Punkt kontrolny"
@ -752,6 +755,9 @@ msgstr "Rozkazy\\Pokazuje rozkazy dotyczące bieżącej misji"
msgid "Internal error - tell the developers"
msgstr "Błąd wewnętrzny - powiadom twórców gry"
msgid "Invert\\Invert values on this axis"
msgstr ""
msgid "Jet temperature"
msgstr "Temperatura silnika"
@ -1039,6 +1045,9 @@ msgstr "Cząstki w interfejsie\\Para i iskry z silników w interfejsie"
msgid "Paste (Ctrl+v)"
msgstr "Wklej (Ctrl+V)"
msgid "Pause in background\\Pause the game when the window is unfocused"
msgstr ""
msgid "Pause/continue"
msgstr "Pauza/Kontynuuj"
@ -1277,6 +1286,9 @@ msgstr "Rozpocznij prace badawcze nad transporterem na gąsienicach"
msgid "Run research program for winged bots"
msgstr "Rozpocznij prace badawcze nad transporterem latającym"
msgid "SatCom"
msgstr "SatCom"
msgid "Satellite report"
msgstr "Raport z satelity"
@ -1601,9 +1613,6 @@ msgstr "Złoże uranu (miejsce na kopalnię)"
msgid "Uranium ore"
msgstr "Ruda uranu"
msgid "Use a joystick\\Joystick or keyboard"
msgstr "Używaj joysticka\\Joystick lub klawiatura"
msgid "User levels"
msgstr "Poziomy użytkownika"
@ -1876,9 +1885,6 @@ msgstr "www.epsitec.com"
#~ msgid "Robbie\\Your assistant"
#~ msgstr "Robbie\\Twój asystent"
#~ msgid "SatCom"
#~ msgstr "SatCom"
#~ msgid "Sky\\Clouds and nebulae"
#~ msgstr "Niebo\\Chmury i mgławice"
@ -1898,6 +1904,9 @@ msgstr "www.epsitec.com"
#~ "Lista jest dostępna jedynie gdy działa \\l;stacja radarowa\\u object"
#~ "\\radar;.\n"
#~ msgid "Use a joystick\\Joystick or keyboard"
#~ msgstr "Używaj joysticka\\Joystick lub klawiatura"
#~ msgid "\\b;Aliens\n"
#~ msgstr "\\b;Obcy\n"

View File

@ -371,6 +371,9 @@ msgstr "Изменить вид\\Переключение между борто
msgid "Change player\\Change player"
msgstr "Новый игрок\\Выберите имя для игрока"
msgid "Cheat console\\Show cheat console"
msgstr ""
msgid "Checkpoint"
msgstr "Контрольная точка"
@ -744,6 +747,9 @@ msgstr "Инструкции\\Показывает инструкции по т
msgid "Internal error - tell the developers"
msgstr ""
msgid "Invert\\Invert values on this axis"
msgstr ""
msgid "Jet temperature"
msgstr "Температура реактивного двигателя"
@ -1035,6 +1041,9 @@ msgstr "Частицы в интерфейсе меню\\Пар из труб и
msgid "Paste (Ctrl+v)"
msgstr "Вставить (Ctrl+V)"
msgid "Pause in background\\Pause the game when the window is unfocused"
msgstr ""
msgid "Pause/continue"
msgstr "Пауза/продолжить"
@ -1276,6 +1285,9 @@ msgstr "Начать исследование программы для гусе
msgid "Run research program for winged bots"
msgstr "Начать исследование программы для летающего бота"
msgid "SatCom"
msgstr "SatCom"
msgid "Satellite report"
msgstr "Спутниковый отчет"
@ -1601,9 +1613,6 @@ msgstr "Запасы урана (место для буровой вышки)"
msgid "Uranium ore"
msgstr "Урановая руда"
msgid "Use a joystick\\Joystick or keyboard"
msgstr "Использовать джойстик\\Джойстик или клавиатура"
msgid "User levels"
msgstr "Пользовательские уровни"
@ -1887,9 +1896,6 @@ msgstr "www.epsitec.com"
#~ msgid "Robbie\\Your assistant"
#~ msgstr "Робби\\Ваш помощник"
#~ msgid "SatCom"
#~ msgstr "SatCom"
#~ msgid "Sky\\Clouds and nebulae"
#~ msgstr "Небо\\Облака и туманности"
@ -1908,6 +1914,9 @@ msgstr "www.epsitec.com"
#~ msgstr ""
#~ "Список доступен только если \\l;radar station\\u object\\radar; работают\n"
#~ msgid "Use a joystick\\Joystick or keyboard"
#~ msgstr "Использовать джойстик\\Джойстик или клавиатура"
#~ msgid "User\\User levels"
#~ msgstr "Польз.\\Пользовательские уровни"

View File

@ -212,6 +212,7 @@ void InitializeEventTypeTexts()
EVENT_TYPE_TEXT[EVENT_INTERFACE_INVERTX] = "EVENT_INTERFACE_INVERTX";
EVENT_TYPE_TEXT[EVENT_INTERFACE_INVERTY] = "EVENT_INTERFACE_INVERTY";
EVENT_TYPE_TEXT[EVENT_INTERFACE_EFFECT] = "EVENT_INTERFACE_EFFECT";
EVENT_TYPE_TEXT[EVENT_INTERFACE_BGPAUSE] = "EVENT_INTERFACE_BGPAUSE";
EVENT_TYPE_TEXT[EVENT_INTERFACE_FOG] = "EVENT_INTERFACE_FOG";
EVENT_TYPE_TEXT[EVENT_INTERFACE_EDITMODE]= "EVENT_INTERFACE_EDITMODE";
EVENT_TYPE_TEXT[EVENT_INTERFACE_EDITVALUE]= "EVENT_INTERFACE_EDITVALUE";

View File

@ -241,6 +241,7 @@ enum EventType
EVENT_INTERFACE_INVERTX = 468,
EVENT_INTERFACE_INVERTY = 469,
EVENT_INTERFACE_EFFECT = 470,
EVENT_INTERFACE_BGPAUSE = 471,
EVENT_INTERFACE_FOG = 474,
EVENT_INTERFACE_EDITMODE= 476,
EVENT_INTERFACE_EDITVALUE= 477,

View File

@ -194,6 +194,7 @@ void InitializeRestext()
stringsEvent[EVENT_INTERFACE_INVERTX] = TR("Mouse inversion X\\Inversion of the scrolling direction on the X axis");
stringsEvent[EVENT_INTERFACE_INVERTY] = TR("Mouse inversion Y\\Inversion of the scrolling direction on the Y axis");
stringsEvent[EVENT_INTERFACE_EFFECT] = TR("Quake at explosions\\The screen shakes at explosions");
stringsEvent[EVENT_INTERFACE_BGPAUSE] = TR("Pause in background\\Pause the game when the window is unfocused");
stringsEvent[EVENT_INTERFACE_EDITMODE] = TR("Automatic indent\\When program editing");
stringsEvent[EVENT_INTERFACE_EDITVALUE] = TR("Big indent\\Indent 2 or 4 spaces per level defined by braces");
stringsEvent[EVENT_INTERFACE_SOLUCE4] = TR("Access to solutions\\Show program \"4: Solution\" in the exercises");

View File

@ -41,6 +41,7 @@ CSettings::CSettings()
m_interfaceRain = true;
m_soluce4 = true;
m_movies = true;
m_focusLostPause = true;
m_fontSize = 19.0f;
m_windowPos = Math::Point(0.15f, 0.17f);
@ -78,6 +79,7 @@ void CSettings::SaveSettings()
GetConfigFile().SetBoolProperty("Setup", "InterfaceRain", m_interfaceRain);
GetConfigFile().SetBoolProperty("Setup", "Soluce4", m_soluce4);
GetConfigFile().SetBoolProperty("Setup", "Movies", m_movies);
GetConfigFile().SetBoolProperty("Setup", "FocusLostPause", m_focusLostPause);
GetConfigFile().SetBoolProperty("Setup", "CameraScroll", camera->GetCameraScroll());
GetConfigFile().SetBoolProperty("Setup", "CameraInvertX", camera->GetCameraInvertX());
GetConfigFile().SetBoolProperty("Setup", "CameraInvertY", camera->GetCameraInvertY());
@ -148,6 +150,7 @@ void CSettings::LoadSettings()
GetConfigFile().GetBoolProperty("Setup", "InterfaceRain", m_interfaceRain);
GetConfigFile().GetBoolProperty("Setup", "Soluce4", m_soluce4);
GetConfigFile().GetBoolProperty("Setup", "Movies", m_movies);
GetConfigFile().GetBoolProperty("Setup", "FocusLostPause", m_focusLostPause);
if (GetConfigFile().GetBoolProperty("Setup", "CameraScroll", bValue))
camera->SetCameraScroll(bValue);
@ -334,6 +337,15 @@ bool CSettings::GetMovies()
return m_movies;
}
void CSettings::SetFocusLostPause(bool focusLostPause)
{
m_focusLostPause = focusLostPause;
}
bool CSettings::GetFocusLostPause()
{
return m_focusLostPause;
}
void CSettings::SetFontSize(float size)
{
@ -420,4 +432,4 @@ void CSettings::SetLanguage(Language language)
Language CSettings::GetLanguage()
{
return m_language;
}
}

View File

@ -53,6 +53,9 @@ public:
void SetMovies(bool movies);
bool GetMovies();
void SetFocusLostPause(bool focusLostPause);
bool GetFocusLostPause();
//! Managing the size of the default fonts
//@{
@ -90,6 +93,7 @@ protected:
bool m_interfaceRain;
bool m_soluce4;
bool m_movies;
bool m_focusLostPause;
float m_fontSize;
Math::Point m_windowPos;

View File

@ -695,6 +695,26 @@ bool CRobotMain::ProcessEvent(Event &event)
return EventFrame(event);
}
if (event.type == EVENT_FOCUS_LOST)
{
GetLogger()->Trace("Window unfocused\n");
if (m_settings->GetFocusLostPause())
{
m_focusPause = m_pause->ActivatePause(PAUSE_ENGINE);
}
return false;
}
if (event.type == EVENT_FOCUS_GAINED)
{
GetLogger()->Trace("Window focused\n");
if (m_focusPause != nullptr)
{
m_pause->DeactivatePause(m_focusPause);
}
return false;
}
if (event.type == EVENT_WRITE_SCENE_FINISHED)
{
IOWriteSceneFinished();

View File

@ -460,6 +460,7 @@ protected:
Phase m_phase = PHASE_WELCOME1;
ActivePause* m_userPause = nullptr;
ActivePause* m_focusPause = nullptr;
ActivePause* m_freePhotoPause = nullptr;
bool m_cmdEdit = false;
ActivePause* m_cmdEditPause = nullptr;

View File

@ -123,6 +123,9 @@ void CScreenSetupGame::CreateInterface()
pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_RAIN);
pc->SetState(STATE_SHADOW);
pos.y -= 0.048f;
pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_BGPAUSE);
pc->SetState(STATE_SHADOW);
pos.y -= 0.048f;
pos.y -= 0.048f;
pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_EDITMODE);
pc->SetState(STATE_SHADOW);
@ -133,7 +136,6 @@ void CScreenSetupGame::CreateInterface()
pos.y -= 0.048f;
pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_EDITVALUE);
pc->SetState(STATE_SHADOW);
pos.y -= 0.048f;
ddim.y = dim.y*3.0f;
pos.y -= ddim.y;
@ -174,6 +176,12 @@ bool CScreenSetupGame::EventProcess(const Event &event)
UpdateSetupButtons();
break;
case EVENT_INTERFACE_BGPAUSE:
m_settings->SetFocusLostPause(!m_settings->GetFocusLostPause());
ChangeSetupButtons();
UpdateSetupButtons();
break;
case EVENT_INTERFACE_EDITMODE:
m_engine->SetEditIndentMode(!m_engine->GetEditIndentMode());
ChangeSetupButtons();
@ -284,6 +292,12 @@ void CScreenSetupGame::UpdateSetupButtons()
pc->SetState(STATE_CHECK, m_settings->GetInterfaceRain());
}
pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_BGPAUSE));
if ( pc != nullptr )
{
pc->SetState(STATE_CHECK, m_settings->GetFocusLostPause());
}
pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_EDITMODE));
if ( pc != nullptr )
{