From e05fba22fd7040b4464aba45df6022958c47255d Mon Sep 17 00:00:00 2001 From: krzys-h Date: Thu, 6 Aug 2015 19:03:15 +0200 Subject: [PATCH] Moved some interface controls around --- po/colobot.pot | 12 +- po/de.po | 6 +- po/fr.po | 6 +- po/pl.po | 6 +- po/ru.po | 6 +- src/common/event.cpp | 1 + src/common/event.h | 1 + src/common/restext.cpp | 5 +- src/ui/screen/screen_setup_graphics.cpp | 186 ++++++++++++------------ 9 files changed, 122 insertions(+), 107 deletions(-) diff --git a/po/colobot.pot b/po/colobot.pot index d850ee55..387e8266 100644 --- a/po/colobot.pot +++ b/po/colobot.pot @@ -324,9 +324,6 @@ msgstr "" msgid "Robbie\\Your assistant" msgstr "" -msgid "Simple shadows\\Shadows on the ground" -msgstr "" - msgid "Marks on the ground\\Marks on the ground" msgstr "" @@ -423,13 +420,18 @@ msgstr "" msgid "MSAA\\Multisample anti-aliasing" msgstr "" -msgid "" -"Shadow mapping\\Shadow buffer resolution, higher is bigger range but slower" +msgid "Simple shadows\\Shadows on the ground" +msgstr "" + +msgid "Shadow mapping\\Beautiful shadows!" msgstr "" msgid "Better shadow maps\\Shadow transparency and self shadowing" msgstr "" +msgid "Shadow resolution\\Higher means better range and quality, but slower" +msgstr "" + msgid "Standard controls\\Standard key functions" msgstr "" diff --git a/po/de.po b/po/de.po index 404aabf2..f873b254 100644 --- a/po/de.po +++ b/po/de.po @@ -1311,8 +1311,10 @@ msgstr "Astronauten auswählen\\Astronauten auswählen" msgid "Semicolon terminator missing" msgstr "Es fehlt ein Strichpunkt \";\" am Ende der Anweisung" -msgid "" -"Shadow mapping\\Shadow buffer resolution, higher is bigger range but slower" +msgid "Shadow mapping\\Beautiful shadows!" +msgstr "" + +msgid "Shadow resolution\\Higher means better range and quality, but slower" msgstr "" msgid "Shield level" diff --git a/po/fr.po b/po/fr.po index 06d5b3cd..20512978 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1307,8 +1307,10 @@ msgstr "Sélectionner le cosmonaute\\Sélectionner le cosmonaute" msgid "Semicolon terminator missing" msgstr "Terminateur point-virgule non trouvé" -msgid "" -"Shadow mapping\\Shadow buffer resolution, higher is bigger range but slower" +msgid "Shadow mapping\\Beautiful shadows!" +msgstr "" + +msgid "Shadow resolution\\Higher means better range and quality, but slower" msgstr "" msgid "Shield level" diff --git a/po/pl.po b/po/pl.po index 299d62ea..781ab9a5 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1311,8 +1311,10 @@ msgstr "Zaznacz astronautę\\Zaznacza astronautę" msgid "Semicolon terminator missing" msgstr "Brak średnika na końcu wiersza" -msgid "" -"Shadow mapping\\Shadow buffer resolution, higher is bigger range but slower" +msgid "Shadow mapping\\Beautiful shadows!" +msgstr "" + +msgid "Shadow resolution\\Higher means better range and quality, but slower" msgstr "" msgid "Shield level" diff --git a/po/ru.po b/po/ru.po index 69582c78..e1a091b9 100644 --- a/po/ru.po +++ b/po/ru.po @@ -1305,8 +1305,10 @@ msgstr "Выбор астронавта\\Выбор астронавта" msgid "Semicolon terminator missing" msgstr "Отсутствует точка с запятой" -msgid "" -"Shadow mapping\\Shadow buffer resolution, higher is bigger range but slower" +msgid "Shadow mapping\\Beautiful shadows!" +msgstr "" + +msgid "Shadow resolution\\Higher means better range and quality, but slower" msgstr "" msgid "Shield level" diff --git a/src/common/event.cpp b/src/common/event.cpp index c7fc4e35..9e03884c 100644 --- a/src/common/event.cpp +++ b/src/common/event.cpp @@ -227,6 +227,7 @@ void InitializeEventTypeTexts() EVENT_TYPE_TEXT[EVENT_INTERFACE_MSAA] = "EVENT_INTERFACE_MSAA"; EVENT_TYPE_TEXT[EVENT_INTERFACE_SHADOW_MAPPING] = "EVENT_INTERFACE_SHADOW_MAPPING"; EVENT_TYPE_TEXT[EVENT_INTERFACE_SHADOW_MAPPING_QUALITY] = "EVENT_INTERFACE_SHADOW_MAPPING_QUALITY"; + EVENT_TYPE_TEXT[EVENT_INTERFACE_SHADOW_MAPPING_BUFFER] = "EVENT_INTERFACE_SHADOW_MAPPING_BUFFER"; EVENT_TYPE_TEXT[EVENT_INTERFACE_KINFO1] = "EVENT_INTERFACE_KINFO1"; EVENT_TYPE_TEXT[EVENT_INTERFACE_KINFO2] = "EVENT_INTERFACE_KINFO2"; diff --git a/src/common/event.h b/src/common/event.h index bc8f1629..cbb335b7 100644 --- a/src/common/event.h +++ b/src/common/event.h @@ -249,6 +249,7 @@ enum EventType EVENT_INTERFACE_MSAA = 786, EVENT_INTERFACE_SHADOW_MAPPING = 787, EVENT_INTERFACE_SHADOW_MAPPING_QUALITY = 788, + EVENT_INTERFACE_SHADOW_MAPPING_BUFFER = 789, EVENT_INTERFACE_KINFO1 = 500, EVENT_INTERFACE_KINFO2 = 501, diff --git a/src/common/restext.cpp b/src/common/restext.cpp index 6dae1e71..cb664fe9 100644 --- a/src/common/restext.cpp +++ b/src/common/restext.cpp @@ -179,7 +179,6 @@ void InitializeRestext() stringsEvent[EVENT_INTERFACE_APPLY] = TR("Apply changes\\Activates the changed settings"); stringsEvent[EVENT_INTERFACE_TOTO] = TR("Robbie\\Your assistant"); - stringsEvent[EVENT_INTERFACE_SHADOW] = TR("Simple shadows\\Shadows on the ground"); stringsEvent[EVENT_INTERFACE_GROUND] = TR("Marks on the ground\\Marks on the ground"); stringsEvent[EVENT_INTERFACE_DIRTY] = TR("Dust\\Dust and dirt on bots and buildings"); stringsEvent[EVENT_INTERFACE_FOG] = TR("Fog\\Fog"); @@ -212,8 +211,10 @@ void InitializeRestext() stringsEvent[EVENT_INTERFACE_TEXTURE_MIPMAP] = TR("Mipmap level\\Mipmap level"); stringsEvent[EVENT_INTERFACE_TEXTURE_ANISOTROPY]= TR("Anisotropy level\\Anisotropy level"); stringsEvent[EVENT_INTERFACE_MSAA] = TR("MSAA\\Multisample anti-aliasing"); - stringsEvent[EVENT_INTERFACE_SHADOW_MAPPING] = TR("Shadow mapping\\Shadow buffer resolution, higher is bigger range but slower"); + stringsEvent[EVENT_INTERFACE_SHADOW] = TR("Simple shadows\\Shadows on the ground"); + stringsEvent[EVENT_INTERFACE_SHADOW_MAPPING] = TR("Shadow mapping\\Beautiful shadows!"); stringsEvent[EVENT_INTERFACE_SHADOW_MAPPING_QUALITY]= TR("Better shadow maps\\Shadow transparency and self shadowing"); + stringsEvent[EVENT_INTERFACE_SHADOW_MAPPING_BUFFER] = TR("Shadow resolution\\Higher means better range and quality, but slower"); stringsEvent[EVENT_INTERFACE_KDEF] = TR("Standard controls\\Standard key functions"); assert(INPUT_SLOT_MAX < EVENT_INTERFACE_KEY_END-EVENT_INTERFACE_KEY); diff --git a/src/ui/screen/screen_setup_graphics.cpp b/src/ui/screen/screen_setup_graphics.cpp index 0ffdd49c..3559b191 100644 --- a/src/ui/screen/screen_setup_graphics.cpp +++ b/src/ui/screen/screen_setup_graphics.cpp @@ -67,9 +67,6 @@ void CScreenSetupGraphics::CreateInterface() ddim.y = dim.y*0.5f; pos.x = ox+sx*3; pos.y = 0.65f; - pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_SHADOW); - pc->SetState(STATE_SHADOW); - pos.y -= 0.048f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_GROUND); pc->SetState(STATE_SHADOW); if ( m_simulationSetup ) @@ -99,25 +96,6 @@ void CScreenSetupGraphics::CreateInterface() pc->SetState(STATE_DEAD); } - pos.x = ox+sx*3; - pos.y = 0.245f; - ddim.x = dim.x*2.2f; - ddim.y = 18.0f/480.0f; - pes = pw->CreateEnumSlider(pos, ddim, 0, EVENT_INTERFACE_MSAA); - pes->SetState(STATE_SHADOW); - std::vector msaaOptions; - for(int i = 1; i <= m_engine->GetDevice()->GetMaxSamples(); i *= 2) - msaaOptions.push_back(i); - pes->SetPossibleValues(msaaOptions); - if(m_engine->GetDevice()->GetMaxSamples() < 2) - pes->ClearState(STATE_ENABLE); - pos.y += ddim.y/2; - pos.x += 0.005f; - ddim.x = 0.40f; - GetResource(RES_EVENT, EVENT_INTERFACE_MSAA, name); - pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL12, name); - pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); - pos.x = ox+sx*8.5f; pos.y = 0.65f; ddim.x = dim.x*2.2f; @@ -167,7 +145,70 @@ void CScreenSetupGraphics::CreateInterface() pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL13, name); pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); + pos.x = ox+sx*8.5f; + pos.y = 0.475f; + ddim.x = dim.x*3; + ddim.y = dim.y*0.5f; + pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_SHADOW); + pc->SetState(STATE_SHADOW); + pos.y -= 0.048f; + pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_SHADOW_MAPPING); + pc->SetState(STATE_SHADOW); + pos.y -= 0.048f; + pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_SHADOW_MAPPING_QUALITY); + pc->SetState(STATE_SHADOW); + if (!m_engine->IsShadowMappingQualitySupported()) + { + pc->ClearState(STATE_ENABLE); + } + pos.y -= 0.048f*1.5f; + + ddim.x = dim.x*2.2f; + ddim.y = 18.0f/480.0f; + pes = pw->CreateEnumSlider(pos, ddim, 0, EVENT_INTERFACE_SHADOW_MAPPING_BUFFER); + pes->SetState(STATE_SHADOW); + std::map shadowOptions = { + {0, "Screen buffer"} + }; + if (m_engine->GetDevice()->IsFramebufferSupported()) + { + for(int i = 128; i <= m_engine->GetDevice()->GetMaxTextureSize(); i *= 2) + shadowOptions[i] = StrUtils::ToString(i)+"x"+StrUtils::ToString(i); + pes->SetPossibleValues(shadowOptions); + } + else + { + pes->ClearState(STATE_ENABLE); + } + pos.y += ddim.y/2; + pos.x += 0.005f; + ddim.x = 0.40f; + GetResource(RES_EVENT, EVENT_INTERFACE_SHADOW_MAPPING_BUFFER, name); + pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL12, name); + pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); + + + pos.x = ox+sx*12.5f; + pos.y = 0.455f; + ddim.x = dim.x*2.2f; + ddim.y = 18.0f/480.0f; + pes = pw->CreateEnumSlider(pos, ddim, 0, EVENT_INTERFACE_MSAA); + pes->SetState(STATE_SHADOW); + std::vector msaaOptions; + for(int i = 1; i <= m_engine->GetDevice()->GetMaxSamples(); i *= 2) + msaaOptions.push_back(i); + pes->SetPossibleValues(msaaOptions); + if(m_engine->GetDevice()->GetMaxSamples() < 2) + pes->ClearState(STATE_ENABLE); + pos.y += ddim.y/2; + pos.x += 0.005f; + ddim.x = 0.40f; + GetResource(RES_EVENT, EVENT_INTERFACE_MSAA, name); + pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL12, name); + pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); + + pos.x = ox+sx*12.5f; pos.y = 0.385f; ddim.x = dim.x*2.2f; ddim.y = 18.0f/480.0f; @@ -185,7 +226,7 @@ void CScreenSetupGraphics::CreateInterface() pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL12, name); pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); - pos.x = ox+sx*8.5f; + pos.x = ox+sx*12.5f; pos.y = 0.315f; ddim.x = dim.x*2.2f; ddim.y = 18.0f/480.0f; @@ -199,7 +240,7 @@ void CScreenSetupGraphics::CreateInterface() pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL12, name); pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); - pos.x = ox+sx*8.5f; + pos.x = ox+sx*12.5f; pos.y = 0.245f; ddim.x = dim.x*2.2f; ddim.y = 18.0f/480.0f; @@ -219,47 +260,6 @@ void CScreenSetupGraphics::CreateInterface() pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); - pos.x = ox+sx*12.5; - pos.y = 0.385f; - ddim.x = dim.x*2.2f; - ddim.y = 18.0f/480.0f; - pes = pw->CreateEnumSlider(pos, ddim, 0, EVENT_INTERFACE_SHADOW_MAPPING); - pes->SetState(STATE_SHADOW); - std::map shadowOptions = { - { -1, "Disabled" }, - }; - if (m_engine->GetDevice()->IsFramebufferSupported()) - { - for(int i = 128; i <= m_engine->GetDevice()->GetMaxTextureSize(); i *= 2) - shadowOptions[i] = StrUtils::ToString(i)+"x"+StrUtils::ToString(i); - } - else - { - shadowOptions[0] = "Screen buffer"; // TODO: Is this the proper name for this? - } - pes->SetPossibleValues(shadowOptions); - if (!m_engine->IsShadowMappingSupported()) - { - pes->ClearState(STATE_ENABLE); - } - pos.y += ddim.y/2; - pos.x += 0.005f; - ddim.x = 0.40f; - GetResource(RES_EVENT, EVENT_INTERFACE_SHADOW_MAPPING, name); - pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL12, name); - pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); - - pos.x = ox+sx*12.5; - pos.y = 0.315f; - ddim.x = dim.x*6; - ddim.y = dim.y*0.5f; - pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_SHADOW_MAPPING_QUALITY); - pc->SetState(STATE_SHADOW); - if (!m_engine->IsShadowMappingQualitySupported()) - { - pes->ClearState(STATE_ENABLE); - } - ddim.x = dim.x*2; ddim.y = dim.y*1; pos.x = ox+sx*10; @@ -338,12 +338,8 @@ bool CScreenSetupGraphics::EventProcess(const Event &event) ChangeSetupButtons(); break; - case EVENT_INTERFACE_TEXTURE_FILTER: - case EVENT_INTERFACE_TEXTURE_MIPMAP: - case EVENT_INTERFACE_TEXTURE_ANISOTROPY: - case EVENT_INTERFACE_MSAA: case EVENT_INTERFACE_SHADOW_MAPPING: - ChangeSetupButtons(); + m_engine->SetShadowMapping(!m_engine->GetShadowMapping()); UpdateSetupButtons(); break; @@ -352,6 +348,15 @@ bool CScreenSetupGraphics::EventProcess(const Event &event) UpdateSetupButtons(); break; + case EVENT_INTERFACE_SHADOW_MAPPING_BUFFER: + case EVENT_INTERFACE_TEXTURE_FILTER: + case EVENT_INTERFACE_TEXTURE_MIPMAP: + case EVENT_INTERFACE_TEXTURE_ANISOTROPY: + case EVENT_INTERFACE_MSAA: + ChangeSetupButtons(); + UpdateSetupButtons(); + break; + case EVENT_INTERFACE_MIN: ChangeSetupQuality(-1); UpdateSetupButtons(); @@ -409,21 +414,10 @@ void CScreenSetupGraphics::UpdateSetupButtons() pes->SetVisibleValue(m_engine->GetMultiSample()); } - pes = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW_MAPPING)); - if ( pes != 0 ) + pc = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW_MAPPING)); + if ( pc != 0 ) { - if (!m_engine->GetShadowMapping()) - { - pes->SetVisibleValue(-1); - } - else if (!m_engine->GetShadowMappingOffscreen()) - { - pes->SetVisibleValue(0); - } - else - { - pes->SetVisibleValue(m_engine->GetShadowMappingOffscreenResolution()); - } + pc->SetState(STATE_CHECK, m_engine->GetShadowMapping()); } pc = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW_MAPPING_QUALITY)); @@ -433,6 +427,20 @@ void CScreenSetupGraphics::UpdateSetupButtons() pc->SetState(STATE_CHECK, m_engine->GetShadowMapping() && m_engine->GetShadowMappingQuality()); } + pes = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW_MAPPING_BUFFER)); + if ( pes != 0 ) + { + pes->SetState(STATE_ENABLE, m_engine->GetShadowMapping() && m_engine->GetDevice()->IsFramebufferSupported()); + if (!m_engine->GetShadowMappingOffscreen()) + { + pes->SetVisibleValue(0); + } + else + { + pes->SetVisibleValue(m_engine->GetShadowMappingOffscreenResolution()); + } + } + pc = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW)); if ( pc != 0 ) { @@ -565,22 +573,16 @@ void CScreenSetupGraphics::ChangeSetupButtons() m_engine->SetMultiSample(static_cast(value)); } - pes = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW_MAPPING)); + pes = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW_MAPPING_BUFFER)); if ( pes != 0 ) { value = pes->GetVisibleValue(); - if(value == -1) + if(value == 0) { - m_engine->SetShadowMapping(false); - } - else if(value == 0) - { - m_engine->SetShadowMapping(true); m_engine->SetShadowMappingOffscreen(false); } else { - m_engine->SetShadowMapping(true); m_engine->SetShadowMappingOffscreen(true); m_engine->SetShadowMappingOffscreenResolution(value); }