mirror of
https://github.com/vcmi/vcmi.git
synced 2024-11-28 08:48:48 +02:00
Added separate borderless & exclusive fullscreen options
This commit is contained in:
parent
f2dfd6de42
commit
d18b240d6d
@ -46,8 +46,10 @@
|
||||
"vcmi.systemOptions.otherGroup" : "Other Settings", // unused right now
|
||||
"vcmi.systemOptions.townsGroup" : "Town Screen",
|
||||
|
||||
"vcmi.systemOptions.fullscreenButton.hover" : "Fullscreen",
|
||||
"vcmi.systemOptions.fullscreenButton.help" : "{Fullscreen}\n\nIf selected, VCMI will run in fullscreen mode, otherwise it will run in windowed mode",
|
||||
"vcmi.systemOptions.fullscreenBorderless.hover" : "Fullscreen (borderless)",
|
||||
"vcmi.systemOptions.fullscreenBorderless.help" : "{Borderless Fullscreen}\n\nIf selected, VCMI will run in borderless fullscreen mode. In this mode, game will always use same resolution as desktop, ignoring selected resolution.",
|
||||
"vcmi.systemOptions.fullscreenExclusive.hover" : "Fullscreen (exclusive)",
|
||||
"vcmi.systemOptions.fullscreenExclusive.help" : "{Fullscreen}\n\nIf selected, VCMI will run in exclusive fullscreen mode. In this mode, game will change resolution of monitor to selected resolution.",
|
||||
"vcmi.systemOptions.resolutionButton.hover" : "Resolution: %wx%h",
|
||||
"vcmi.systemOptions.resolutionButton.help" : "{Select Resolution}\n\nChange in-game screen resolution.",
|
||||
"vcmi.systemOptions.resolutionMenu.hover" : "Select Resolution",
|
||||
|
@ -46,8 +46,6 @@
|
||||
"vcmi.systemOptions.otherGroup" : "Andere Einstellungen", // unused right now
|
||||
"vcmi.systemOptions.townsGroup" : "Stadt-Bildschirm",
|
||||
|
||||
"vcmi.systemOptions.fullscreenButton.hover" : "Vollbild",
|
||||
"vcmi.systemOptions.fullscreenButton.help" : "{Vollbild}\n\n Wenn ausgewählt wird VCMI im Vollbildmodus laufen, ansonsten im Fenstermodus",
|
||||
"vcmi.systemOptions.resolutionButton.hover" : "Auflösung: %wx%h",
|
||||
"vcmi.systemOptions.resolutionButton.help" : "{Wähle Auflösung}\n\n Ändert die Spielauflösung. Spielneustart ist erforderlich um neue Auflösung zu übernehmen.",
|
||||
"vcmi.systemOptions.resolutionMenu.hover" : "Wähle Auflösung",
|
||||
|
@ -37,13 +37,10 @@
|
||||
"vcmi.systemOptions.otherGroup" : "Inne ustawienia", // unused right now
|
||||
"vcmi.systemOptions.townsGroup" : "Ekran miasta",
|
||||
|
||||
"vcmi.systemOptions.fullscreenButton.hover" : "Pełny ekran",
|
||||
"vcmi.systemOptions.fullscreenButton.help" : "{Pełny ekran}\n\n Po wybraniu VCMI uruchomi się w trybie pełnoekranowym, w przeciwnym wypadku uruchomi się w oknie",
|
||||
"vcmi.systemOptions.resolutionButton.hover" : "Rozdzielczość: %wx%h",
|
||||
"vcmi.systemOptions.resolutionButton.help" : "{Wybierz rozdzielczość}\n\n Zmień rozdzielczość ekranu w grze. Restart gry jest wymagany, by zmiany zostały uwzględnione.",
|
||||
"vcmi.systemOptions.resolutionMenu.hover" : "Wybierz rozdzielczość",
|
||||
"vcmi.systemOptions.resolutionMenu.help" : "Zmień rozdzielczość ekranu w grze.",
|
||||
"vcmi.systemOptions.fullscreenFailed" : "{Pełny ekran}\n\n Nieudane przełączenie w tryb pełnoekranowy! Obecna rozdzielczość nie jest wspierana przez wyświetlacz!",
|
||||
"vcmi.systemOptions.framerateButton.hover" : "Pokaż FPS",
|
||||
"vcmi.systemOptions.framerateButton.help" : "{Pokaż FPS}\n\n Przełącza widoczność licznika klatek na sekundę (FPS) w rogu okna gry.",
|
||||
|
||||
|
@ -37,13 +37,10 @@
|
||||
"vcmi.systemOptions.otherGroup" : "Иное", // unused right now
|
||||
"vcmi.systemOptions.townsGroup" : "Экран города",
|
||||
|
||||
"vcmi.systemOptions.fullscreenButton.hover" : "Полный экран",
|
||||
"vcmi.systemOptions.fullscreenButton.help" : "{Полный экран}\n\n Если выбрано, то VCMI будет работать в полноэкранном режиме, если нет - в окне",
|
||||
"vcmi.systemOptions.resolutionButton.hover" : "Разрешение %wx%h",
|
||||
"vcmi.systemOptions.resolutionButton.help" : "{Разрешение экрана}\n\n Изменение разрешения экрана. Для применения нового разрешения требуется перезапуск игры.",
|
||||
"vcmi.systemOptions.resolutionMenu.hover" : "Выбрать разрешения экрана",
|
||||
"vcmi.systemOptions.resolutionMenu.help" : "Изменение разрешения экрана в игре.",
|
||||
"vcmi.systemOptions.fullscreenFailed" : "{Полный экран}\n\n Невозможно переключиться в полноэкранный режим - выбранное разрешение не поддерживается дисплеем!",
|
||||
"vcmi.systemOptions.framerateButton.hover" : "Показывать частоту кадров",
|
||||
"vcmi.systemOptions.framerateButton.help" : "{Показывать частоту кадров}\n\n Включить счетчик частоты кадров в углу игрового клиента",
|
||||
|
||||
|
@ -46,13 +46,10 @@
|
||||
"vcmi.systemOptions.otherGroup" : "Otras configuraciones", // actualmente no utilizada
|
||||
"vcmi.systemOptions.townsGroup" : "Pantalla de la ciudad",
|
||||
|
||||
"vcmi.systemOptions.fullscreenButton.hover" : "Pantalla completa",
|
||||
"vcmi.systemOptions.fullscreenButton.help" : "{Pantalla completa}\n\n Si se selecciona, VCMI se ejecutará en modo de pantalla completa, de lo contrario se ejecutará en ventana",
|
||||
"vcmi.systemOptions.resolutionButton.hover" : "Resolución: %wx%h",
|
||||
"vcmi.systemOptions.resolutionButton.help" : "{Seleccionar resolución}\n\n Cambia la resolución de la pantalla del juego. Se requiere reiniciar el juego para aplicar la nueva resolución.",
|
||||
"vcmi.systemOptions.resolutionMenu.hover" : "Seleccionar resolución",
|
||||
"vcmi.systemOptions.resolutionMenu.help" : "Cambia la resolución de la pantalla del juego.",
|
||||
"vcmi.systemOptions.fullscreenFailed" : "{Pantalla completa}\n\n ¡Fallo al cambiar a modo de pantalla completa! ¡La resolución actual no es compatible con la pantalla!",
|
||||
"vcmi.systemOptions.framerateButton.hover" : "Mostrar FPS",
|
||||
"vcmi.systemOptions.framerateButton.help" : "{Mostrar FPS}\n\n Muestra el contador de Frames Por Segundo en la esquina de la ventana del juego.",
|
||||
|
||||
|
@ -38,15 +38,18 @@
|
||||
"vcmi.systemOptions.otherGroup" : "Інші налаштування",
|
||||
"vcmi.systemOptions.townsGroup" : "Екран міста",
|
||||
|
||||
"vcmi.adventureOptions.infoBarPick.help" : "{Повідомлення у панелі статусу}\n\nЗа можливості, повідомлення про відвідування об'єктів карти пригод будуть відображені у панелі статусу замість окремого вікна",
|
||||
"vcmi.adventureOptions.infoBarPick.hover" : "Повідомлення у панелі статусу",
|
||||
"vcmi.systemOptions.fullscreenBorderless.hover" : "На весь екран (безрамкове вікно)",
|
||||
"vcmi.systemOptions.fullscreenBorderless.help" : "{На весь екран (безрамкове вікно)}\n\nЯкщо обрано, VCMI працюватиме у режимі безрамкового вікна на весь екран. У цьому режимі гра завжди використовує ту саму роздільну здатність, що й робочий стіл, ігноруючи вибрану роздільну здатність",
|
||||
"vcmi.systemOptions.fullscreenExclusive.hover" : "На весь екран (ексклюзивний режим)",
|
||||
"vcmi.systemOptions.fullscreenExclusive.help" : "{На весь екран (ексклюзивний режим)}\n\nnЯкщо вибрано, VCMI працюватиме у ексклюзивному повноекранному режимі. У цьому режимі гра змінюватиме роздільну здатність монітора на вибрану роздільну здатність",
|
||||
"vcmi.adventureOptions.infoBarPick.help" : "{Повідомлення у панелі статусу}\n\nЗа можливості, повідомлення про відвідування об'єктів карти пригод будуть відображені у панелі статусу замість окремого вікна",
|
||||
"vcmi.adventureOptions.infoBarPick.hover" : "Повідомлення у панелі статусу",
|
||||
"vcmi.systemOptions.fullscreenButton.hover" : "Повноекранний режим",
|
||||
"vcmi.systemOptions.fullscreenButton.help" : "{Повноекранний режим}\n\n Якщо обрано, VCMI буде запускатися в режимі на весь екран, інакше — віконний режим",
|
||||
"vcmi.systemOptions.resolutionButton.hover" : "Роздільна здатність: %wx%h",
|
||||
"vcmi.systemOptions.resolutionButton.help" : "{Роздільна здатність}\n\n Зміна розширення екрану в грі. Аби зміни набули чинності необхідно перезавантажити гру.",
|
||||
"vcmi.systemOptions.resolutionMenu.hover" : "Обрати роздільну здатність",
|
||||
"vcmi.systemOptions.resolutionMenu.help" : "Змінити роздільну здатність екрану в грі.",
|
||||
"vcmi.systemOptions.fullscreenFailed" : "{Повноекранний режим}\n\n Не вдалося перейти в повноекранний режим! Поточна роздільна здатність не підтримується дисплеєм!",
|
||||
"vcmi.systemOptions.framerateButton.hover" : "Лічильник кадрів",
|
||||
"vcmi.systemOptions.framerateButton.help" : "{Лічильник кадрів}\n\n Перемикає видимість лічильника кадрів на секунду у кутку ігрового вікна",
|
||||
|
||||
|
@ -297,7 +297,8 @@ std::shared_ptr<CToggleGroup> InterfaceObjectConfigurable::buildToggleGroup(cons
|
||||
for(const auto & item : config["items"].Vector())
|
||||
{
|
||||
itemIdx = item["index"].isNull() ? itemIdx + 1 : item["index"].Integer();
|
||||
group->addToggle(itemIdx, std::dynamic_pointer_cast<CToggleBase>(buildWidget(item)));
|
||||
auto newToggle = std::dynamic_pointer_cast<CToggleButton>(buildWidget(item));
|
||||
group->addToggle(itemIdx, newToggle);
|
||||
}
|
||||
}
|
||||
if(!config["selected"].isNull())
|
||||
|
@ -102,9 +102,13 @@ GeneralOptionsTab::GeneralOptionsTab()
|
||||
targetLabel->setText(std::to_string(value) + "%");
|
||||
});
|
||||
//settings that do not belong to base game:
|
||||
addCallback("fullscreenChanged", [this](bool value)
|
||||
addCallback("fullscreenBorderlessChanged", [this](bool value)
|
||||
{
|
||||
setFullscreenMode(value);
|
||||
setFullscreenMode(value, false);
|
||||
});
|
||||
addCallback("fullscreenExclusiveChanged", [this](bool value)
|
||||
{
|
||||
setFullscreenMode(value, true);
|
||||
});
|
||||
addCallback("setGameResolution", [this](int dummyValue)
|
||||
{
|
||||
@ -135,7 +139,8 @@ GeneralOptionsTab::GeneralOptionsTab()
|
||||
const auto & currentResolution = settings["video"]["resolution"];
|
||||
|
||||
std::shared_ptr<CLabel> resolutionLabel = widget<CLabel>("resolutionLabel");
|
||||
resolutionLabel->setText(resolutionToLabelString(currentResolution["width"].Integer(), currentResolution["height"].Integer()));
|
||||
if (resolutionLabel)
|
||||
resolutionLabel->setText(resolutionToLabelString(currentResolution["width"].Integer(), currentResolution["height"].Integer()));
|
||||
|
||||
std::shared_ptr<CLabel> scalingLabel = widget<CLabel>("scalingLabel");
|
||||
scalingLabel->setText(scalingToLabelString(currentResolution["scaling"].Integer()));
|
||||
@ -143,12 +148,13 @@ GeneralOptionsTab::GeneralOptionsTab()
|
||||
std::shared_ptr<CToggleButton> spellbookAnimationCheckbox = widget<CToggleButton>("spellbookAnimationCheckbox");
|
||||
spellbookAnimationCheckbox->setSelected(settings["video"]["spellbookAnimation"].Bool());
|
||||
|
||||
std::shared_ptr<CToggleButton> fullscreenCheckbox = widget<CToggleButton>("fullscreenCheckbox");
|
||||
fullscreenCheckbox->setSelected(settings["video"]["fullscreen"].Bool());
|
||||
onFullscreenChanged([&](const JsonNode &newState) //used when pressing F4 etc. to change fullscreen checkbox state
|
||||
{
|
||||
widget<CToggleButton>("fullscreenCheckbox")->setSelected(newState.Bool());
|
||||
});
|
||||
std::shared_ptr<CToggleButton> fullscreenBorderlessCheckbox = widget<CToggleButton>("fullscreenBorderlessCheckbox");
|
||||
if (fullscreenBorderlessCheckbox)
|
||||
fullscreenBorderlessCheckbox->setSelected(settings["video"]["fullscreen"].Bool() && !settings["video"]["realFullscreen"].Bool());
|
||||
|
||||
std::shared_ptr<CToggleButton> fullscreenExclusiveCheckbox = widget<CToggleButton>("fullscreenExclusiveCheckbox");
|
||||
if (fullscreenExclusiveCheckbox)
|
||||
fullscreenExclusiveCheckbox->setSelected(settings["video"]["fullscreen"].Bool() && settings["video"]["realFullscreen"].Bool());
|
||||
|
||||
std::shared_ptr<CToggleButton> framerateCheckbox = widget<CToggleButton>("framerateCheckbox");
|
||||
framerateCheckbox->setSelected(settings["video"]["showfps"].Bool());
|
||||
@ -170,16 +176,6 @@ GeneralOptionsTab::GeneralOptionsTab()
|
||||
|
||||
std::shared_ptr<CLabel> soundVolumeLabel = widget<CLabel>("soundValueLabel");
|
||||
soundVolumeLabel->setText(std::to_string(CCS->soundh->getVolume()) + "%");
|
||||
|
||||
#ifdef VCMI_MOBILE
|
||||
// On mobile platforms, VCMI always uses OS screen resolutions
|
||||
// Players can control UI size via "Interface Scaling" option instead
|
||||
std::shared_ptr<CButton> resolutionButton = widget<CButton>("resolutionButton");
|
||||
|
||||
resolutionButton->disable();
|
||||
resolutionLabel->disable();
|
||||
fullscreenCheckbox->block(true);
|
||||
#endif
|
||||
}
|
||||
|
||||
void GeneralOptionsTab::selectGameResolution()
|
||||
@ -224,9 +220,19 @@ void GeneralOptionsTab::setGameResolution(int index)
|
||||
widget<CLabel>("resolutionLabel")->setText(resolutionToLabelString(resolution.x, resolution.y));
|
||||
}
|
||||
|
||||
void GeneralOptionsTab::setFullscreenMode(bool on)
|
||||
void GeneralOptionsTab::setFullscreenMode(bool on, bool exclusive)
|
||||
{
|
||||
setBoolSetting("video", "realFullscreen", exclusive);
|
||||
setBoolSetting("video", "fullscreen", on);
|
||||
|
||||
std::shared_ptr<CToggleButton> fullscreenExclusiveCheckbox = widget<CToggleButton>("fullscreenExclusiveCheckbox");
|
||||
std::shared_ptr<CToggleButton> fullscreenBorderlessCheckbox = widget<CToggleButton>("fullscreenBorderlessCheckbox");
|
||||
|
||||
if (fullscreenBorderlessCheckbox)
|
||||
fullscreenBorderlessCheckbox->setSelected(on && !exclusive);
|
||||
|
||||
if (fullscreenExclusiveCheckbox)
|
||||
fullscreenExclusiveCheckbox->setSelected(on && exclusive);
|
||||
}
|
||||
|
||||
void GeneralOptionsTab::selectGameScaling()
|
||||
|
@ -21,7 +21,7 @@ private:
|
||||
std::vector<Point> supportedResolutions;
|
||||
std::vector<int> supportedScaling;
|
||||
|
||||
void setFullscreenMode( bool on);
|
||||
void setFullscreenMode( bool on, bool exclusive);
|
||||
|
||||
void selectGameResolution();
|
||||
void setGameResolution(int index);
|
||||
|
@ -32,14 +32,20 @@
|
||||
"items" : [
|
||||
{
|
||||
"name": "resolutionLabel",
|
||||
"text": "vcmi.systemOptions.resolutionButton.hover"
|
||||
"text": "vcmi.systemOptions.resolutionButton.hover",
|
||||
"created" : "desktop"
|
||||
},
|
||||
{
|
||||
"name": "scalingLabel",
|
||||
"text": "vcmi.systemOptions.scalingButton.hover"
|
||||
},
|
||||
{
|
||||
"text": "vcmi.systemOptions.fullscreenButton.hover"
|
||||
"text": "vcmi.systemOptions.fullscreenBorderless.hover",
|
||||
"created" : "desktop"
|
||||
},
|
||||
{
|
||||
"text": "vcmi.systemOptions.fullscreenExclusive.hover",
|
||||
"created" : "desktop"
|
||||
},
|
||||
{
|
||||
"text": "vcmi.systemOptions.framerateButton.hover"
|
||||
@ -59,6 +65,7 @@
|
||||
"type": "buttonGear",
|
||||
"help": "vcmi.systemOptions.resolutionButton",
|
||||
"callback": "setGameResolution",
|
||||
"created" : "desktop"
|
||||
},
|
||||
{
|
||||
"name": "scalingButton",
|
||||
@ -67,9 +74,16 @@
|
||||
"callback": "setGameScaling",
|
||||
},
|
||||
{
|
||||
"name": "fullscreenCheckbox",
|
||||
"help": "vcmi.systemOptions.fullscreenButton",
|
||||
"callback": "fullscreenChanged"
|
||||
"name": "fullscreenBorderlessCheckbox",
|
||||
"help": "vcmi.systemOptions.fullscreenBorderless",
|
||||
"callback": "fullscreenBorderlessChanged"
|
||||
"created" : "desktop"
|
||||
},
|
||||
{
|
||||
"name": "fullscreenExclusiveCheckbox",
|
||||
"help": "vcmi.systemOptions.fullscreenExclusive",
|
||||
"callback": "fullscreenExclusiveChanged"
|
||||
"created" : "desktop"
|
||||
},
|
||||
{
|
||||
"name": "framerateCheckbox",
|
||||
|
Loading…
Reference in New Issue
Block a user