diff --git a/samples/golf/buildnumber.h b/samples/golf/buildnumber.h index 2cc5a6d91..002c77729 100644 --- a/samples/golf/buildnumber.h +++ b/samples/golf/buildnumber.h @@ -3,7 +3,7 @@ #ifndef BUILD_NUMBER_H_ #define BUILD_NUMBER_H_ -#define BUILDNUMBER 5448 -#define BUILDNUMBER_STR "5448" +#define BUILDNUMBER 5455 +#define BUILDNUMBER_STR "5455" #endif /* BUILD_NUMBER_H_ */ diff --git a/samples/golf/src/golf/GolfState.cpp b/samples/golf/src/golf/GolfState.cpp index d0940540f..c0b855c31 100644 --- a/samples/golf/src/golf/GolfState.cpp +++ b/samples/golf/src/golf/GolfState.cpp @@ -6255,7 +6255,8 @@ void GolfState::startFlyBy() //play the transition music if (m_sharedData.gameMode == GameMode::Tutorial - && cro::AudioMixer::getVolume(MixerChannel::UserMusic) < 0.01f) + && cro::AudioMixer::getVolume(MixerChannel::UserMusic) < 0.01f + && cro::AudioMixer::getVolume(MixerChannel::Music) != 0) { m_cameras[CameraID::Player].getComponent().play(); } @@ -6279,7 +6280,8 @@ void GolfState::startFlyBy() showScoreboard(true); m_newHole = true; - if (cro::AudioMixer::getVolume(MixerChannel::UserMusic) < 0.01f) + if (cro::AudioMixer::getVolume(MixerChannel::UserMusic) < 0.01f + && cro::AudioMixer::getVolume(MixerChannel::Music) != 0) { m_cameras[CameraID::Player].getComponent().play(); } diff --git a/samples/golf/src/golf/OptionsState.cpp b/samples/golf/src/golf/OptionsState.cpp index 22b63a20c..6ffb34ec3 100644 --- a/samples/golf/src/golf/OptionsState.cpp +++ b/samples/golf/src/golf/OptionsState.cpp @@ -1300,17 +1300,17 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit parent.getComponent().addChild(titleEnt.getComponent()); auto createLabel = [&](glm::vec2 pos, const std::string& str) - { - auto entity = m_scene.createEntity(); - entity.addComponent().setPosition(glm::vec3(pos, TextOffset)); - entity.addComponent(); - entity.addComponent(font).setCharacterSize(InfoTextSize); - entity.getComponent().setString(str); - entity.getComponent().setFillColour(TextNormalColour); - parent.getComponent().addChild(entity.getComponent()); + { + auto entity = m_scene.createEntity(); + entity.addComponent().setPosition(glm::vec3(pos, TextOffset)); + entity.addComponent(); + entity.addComponent(font).setCharacterSize(InfoTextSize); + entity.getComponent().setString(str); + entity.getComponent().setFillColour(TextNormalColour); + parent.getComponent().addChild(entity.getComponent()); - return entity; - }; + return entity; + }; //audio label auto audioLabel = createLabel(glm::vec2((bgBounds.width / 2.f) - 101.f, 156.f), MixerLabels[mixerChannelIndex]); @@ -1318,18 +1318,18 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit audioLabel.addComponent().active = true; audioLabel.getComponent().function = [&](cro::Entity e, float) - { - updateToolTip(e, ToolTipID::CustomMusic); - }; + { + updateToolTip(e, ToolTipID::CustomMusic); + }; //antialiasing label auto aliasLabel = createLabel(glm::vec2(12.f, 131.f), "Antialiasing"); aliasLabel.addComponent().active = true; aliasLabel.getComponent().function = [&](cro::Entity e, float) - { - updateToolTip(e, ToolTipID::AA); - }; + { + updateToolTip(e, ToolTipID::AA); + }; auto aaLabel = createLabel(glm::vec2(136.f, 131.f), AAStrings[AAIndexMap[m_sharedData.multisamples]]); centreText(aaLabel); @@ -1351,18 +1351,18 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit pixelLabel.addComponent().active = true; pixelLabel.getComponent().function = [&](cro::Entity e, float) - { - updateToolTip(e, ToolTipID::Pixel); - }; + { + updateToolTip(e, ToolTipID::Pixel); + }; //vertex snap label auto vertLabel = createLabel(glm::vec2(12.f, 67.f), "Vertex Snap (requires restart)"); vertLabel.addComponent().active = true; vertLabel.getComponent().function = [&](cro::Entity e, float) - { - updateToolTip(e, ToolTipID::VertSnap); - }; + { + updateToolTip(e, ToolTipID::VertSnap); + }; //full screen label createLabel(glm::vec2(12.f, 51.f), "Full Screen"); @@ -1375,21 +1375,21 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit beaconLabel.addComponent().active = true; beaconLabel.getComponent().function = [&](cro::Entity e, float) - { - updateToolTip(e, ToolTipID::Beacon); - }; + { + updateToolTip(e, ToolTipID::Beacon); + }; //ball trail label createLabel({ 204.f, 131.f }, "Enable Ball Trail"); - + //putting assist auto puttingEnt = createLabel({ 204.f, 115.f }, "Enable Putting Assist"); puttingEnt.addComponent().active = true; puttingEnt.getComponent().function = [&](cro::Entity e, float) - { - updateToolTip(e, ToolTipID::PuttingPower); - }; + { + updateToolTip(e, ToolTipID::PuttingPower); + }; //post process label @@ -1400,9 +1400,9 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit measureLabel.addComponent().active = true; measureLabel.getComponent().function = [&](cro::Entity e, float) - { - updateToolTip(e, ToolTipID::Units); - }; + { + updateToolTip(e, ToolTipID::Units); + }; //grid transparency createLabel({ 204.f, 67.f }, "Grid Amount"); @@ -1410,16 +1410,16 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit //tree quality auto treeLabel = createLabel({ 204.f, 51.f }, "Tree Quality"); treeLabel.addComponent().active = true; - treeLabel.getComponent().function = + treeLabel.getComponent().function = [&](cro::Entity e, float) - { - updateToolTip(e, ToolTipID::NeedsRestart); - }; + { + updateToolTip(e, ToolTipID::NeedsRestart); + }; //shadow quality createLabel({ 204.f, 35.f }, "Shadow Quality"); - + //crowd density /*auto crowdLabel =*/ createLabel({ 204, 19.f }, "Crowd Density"); //crowdLabel.addComponent().active = true; @@ -1431,30 +1431,30 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit auto createSlider = [&](glm::vec2 position) - { - auto entity = m_scene.createEntity(); - entity.addComponent().setPosition(position); - entity.addComponent(); - entity.addComponent() = spriteSheet.getSprite("slider"); - auto bounds = entity.getComponent().getTextureBounds(); - entity.getComponent().setOrigin({ std::floor(bounds.width / 2.f), /*std::floor*/(bounds.height / 2.f), -TextOffset }); + { + auto entity = m_scene.createEntity(); + entity.addComponent().setPosition(position); + entity.addComponent(); + entity.addComponent() = spriteSheet.getSprite("slider"); + auto bounds = entity.getComponent().getTextureBounds(); + entity.getComponent().setOrigin({ std::floor(bounds.width / 2.f), /*std::floor*/(bounds.height / 2.f), -TextOffset }); - auto userData = SliderData(position); - userData.onActivate = [](float distance) - { - float vol = distance; - cro::AudioMixer::setVolume(vol, mixerChannelIndex); - }; - entity.addComponent().active = true; - entity.getComponent().setUserData(userData); - entity.getComponent().function = SliderCallback(); + auto userData = SliderData(position); + userData.onActivate = [](float distance) + { + float vol = distance; + cro::AudioMixer::setVolume(vol, mixerChannelIndex); + }; + entity.addComponent().active = true; + entity.getComponent().setUserData(userData); + entity.getComponent().function = SliderCallback(); - parent.getComponent().addChild(entity.getComponent()); + parent.getComponent().addChild(entity.getComponent()); - m_sliders.push_back(entity); - return entity; - }; + m_sliders.push_back(entity); + return entity; + }; //volume slider auto volSlider = createSlider(glm::vec2(192.f, 153.f)); @@ -1463,33 +1463,33 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit tipEnt.addComponent().active = true; tipEnt.getComponent().function = [&, volSlider](cro::Entity e, float) - { - auto mousePos = m_scene.getActiveCamera().getComponent().pixelToCoords(cro::Mouse::getPosition()); - auto bounds = volSlider.getComponent().getLocalBounds(); - bounds = volSlider.getComponent().getWorldTransform() * bounds; - - if (bounds.contains(mousePos)) { - mousePos.x = std::floor(mousePos.x); - mousePos.y = std::floor(mousePos.y); - mousePos.z = ToolTipDepth / 2.f; - - if (m_tooltips[ToolTipID::Volume].getComponent().getScale().x == 0) + auto mousePos = m_scene.getActiveCamera().getComponent().pixelToCoords(cro::Mouse::getPosition()); + auto bounds = volSlider.getComponent().getLocalBounds(); + bounds = volSlider.getComponent().getWorldTransform() * bounds; + + if (bounds.contains(mousePos)) { - m_scene.getActiveCamera().getComponent().active = true; - } + mousePos.x = std::floor(mousePos.x); + mousePos.y = std::floor(mousePos.y); + mousePos.z = ToolTipDepth / 2.f; + + if (m_tooltips[ToolTipID::Volume].getComponent().getScale().x == 0) + { + m_scene.getActiveCamera().getComponent().active = true; + } - m_tooltips[ToolTipID::Volume].getComponent().setPosition(mousePos + (ToolTipOffset * m_viewScale.x)); - m_tooltips[ToolTipID::Volume].getComponent().setScale(m_viewScale); + m_tooltips[ToolTipID::Volume].getComponent().setPosition(mousePos + (ToolTipOffset * m_viewScale.x)); + m_tooltips[ToolTipID::Volume].getComponent().setScale(m_viewScale); - float vol = cro::AudioMixer::getVolume(mixerChannelIndex); - m_tooltips[ToolTipID::Volume].getComponent().setString("Vol: " + std::to_string(static_cast(vol * 100.f))); - } - else - { - m_tooltips[ToolTipID::Volume].getComponent().setScale(glm::vec2(0.f)); - } - }; + float vol = cro::AudioMixer::getVolume(mixerChannelIndex); + m_tooltips[ToolTipID::Volume].getComponent().setString("Vol: " + std::to_string(static_cast(vol * 100.f))); + } + else + { + m_tooltips[ToolTipID::Volume].getComponent().setScale(glm::vec2(0.f)); + } + }; volSlider.getComponent().addChild(tipEnt.getComponent()); @@ -1498,65 +1498,65 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit auto fovPos = glm::vec2(99.f, 112.f); auto fovSlider = createSlider(fovPos); auto userData = SliderData(fovPos, 76.f); - userData.onActivate = + userData.onActivate = [&, fovLabel](float distance) mutable - { - float fov = MinFOV + ((MaxFOV - MinFOV) * distance); + { + float fov = MinFOV + ((MaxFOV - MinFOV) * distance); - m_sharedData.fov = fov; + m_sharedData.fov = fov; - //raise a window resize message to trigger callbacks - auto size = cro::App::getWindow().getSize(); - auto* msg = cro::App::getInstance().getMessageBus().post(cro::Message::WindowMessage); - msg->data0 = size.x; - msg->data1 = size.y; - msg->event = SDL_WINDOWEVENT_SIZE_CHANGED; + //raise a window resize message to trigger callbacks + auto size = cro::App::getWindow().getSize(); + auto* msg = cro::App::getInstance().getMessageBus().post(cro::Message::WindowMessage); + msg->data0 = size.x; + msg->data1 = size.y; + msg->event = SDL_WINDOWEVENT_SIZE_CHANGED; - fovLabel.getComponent().setString("FOV: " + std::to_string(static_cast(m_sharedData.fov))); - }; + fovLabel.getComponent().setString("FOV: " + std::to_string(static_cast(m_sharedData.fov))); + }; fovSlider.getComponent().setUserData(userData); fovSlider.getComponent().function = [&](cro::Entity e, float) - { - const auto& [pos, width, _] = e.getComponent().getUserData(); - float amount = (m_sharedData.fov - MinFOV) / (MaxFOV - MinFOV); + { + const auto& [pos, width, _] = e.getComponent().getUserData(); + float amount = (m_sharedData.fov - MinFOV) / (MaxFOV - MinFOV); - e.getComponent().setPosition({ pos.x + (width * amount), pos.y }); - }; + e.getComponent().setPosition({ pos.x + (width * amount), pos.y }); + }; tipEnt = m_scene.createEntity(); tipEnt.addComponent(); tipEnt.addComponent().active = true; tipEnt.getComponent().function = [&, fovSlider](cro::Entity, float) - { - auto mousePos = m_scene.getActiveCamera().getComponent().pixelToCoords(cro::Mouse::getPosition()); - auto bounds = fovSlider.getComponent().getLocalBounds(); - bounds = fovSlider.getComponent().getWorldTransform() * bounds; - - if (bounds.contains(mousePos)) { - mousePos.x = std::floor(mousePos.x); - mousePos.y = std::floor(mousePos.y); - mousePos.z = ToolTipDepth; + auto mousePos = m_scene.getActiveCamera().getComponent().pixelToCoords(cro::Mouse::getPosition()); + auto bounds = fovSlider.getComponent().getLocalBounds(); + bounds = fovSlider.getComponent().getWorldTransform() * bounds; - if (m_tooltips[ToolTipID::FOV].getComponent().getScale().x == 0) + if (bounds.contains(mousePos)) { - m_scene.getActiveCamera().getComponent().active = true; - } + mousePos.x = std::floor(mousePos.x); + mousePos.y = std::floor(mousePos.y); + mousePos.z = ToolTipDepth; - m_tooltips[ToolTipID::FOV].getComponent().setPosition(mousePos + (ToolTipOffset * m_viewScale.x)); - m_tooltips[ToolTipID::FOV].getComponent().setScale(m_viewScale); + if (m_tooltips[ToolTipID::FOV].getComponent().getScale().x == 0) + { + m_scene.getActiveCamera().getComponent().active = true; + } - float fov = m_sharedData.fov; - m_tooltips[ToolTipID::FOV].getComponent().setString("FOV: " + std::to_string(static_cast(fov))); - } - else - { - m_tooltips[ToolTipID::FOV].getComponent().setScale(glm::vec2(0.f)); - } - }; + m_tooltips[ToolTipID::FOV].getComponent().setPosition(mousePos + (ToolTipOffset * m_viewScale.x)); + m_tooltips[ToolTipID::FOV].getComponent().setScale(m_viewScale); + + float fov = m_sharedData.fov; + m_tooltips[ToolTipID::FOV].getComponent().setString("FOV: " + std::to_string(static_cast(fov))); + } + else + { + m_tooltips[ToolTipID::FOV].getComponent().setScale(glm::vec2(0.f)); + } + }; fovSlider.getComponent().addChild(tipEnt.getComponent()); //grid transparency @@ -1565,16 +1565,16 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit auto ud = SliderData(transPos, 91.f); ud.onActivate = [&](float distance) - { - m_sharedData.gridTransparency = distance; - }; + { + m_sharedData.gridTransparency = distance; + }; transSlider.getComponent().setUserData(ud); transSlider.getComponent().function = [&](cro::Entity e, float) - { - const auto& [pos, width, _] = e.getComponent().getUserData(); - e.getComponent().setPosition({ pos.x + (width * m_sharedData.gridTransparency), pos.y }); - }; + { + const auto& [pos, width, _] = e.getComponent().getUserData(); + e.getComponent().setPosition({ pos.x + (width * m_sharedData.gridTransparency), pos.y }); + }; auto helpEnt = m_scene.createEntity(); helpEnt.addComponent().setPosition({ bgBounds.width / 2.f, -9.f, 0.1f }); @@ -1586,7 +1586,7 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit auto& uiSystem = *m_scene.getSystem(); - auto selectedID = uiSystem.addCallback([&,helpEnt](cro::Entity e) mutable + auto selectedID = uiSystem.addCallback([&, helpEnt](cro::Entity e) mutable { e.getComponent().setColour(cro::Colour::White); e.getComponent().play(); @@ -1609,33 +1609,33 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit }); auto unselectedID = uiSystem.addCallback([helpEnt](cro::Entity e) mutable { - e.getComponent().setColour(cro::Colour::Transparent); + e.getComponent().setColour(cro::Colour::Transparent); helpEnt.getComponent().setString(" "); }); auto createHighlight = [&](glm::vec2 pos) - { - auto ent = m_scene.createEntity(); - ent.addComponent().setPosition(pos); - ent.addComponent() = m_menuSounds.getEmitter("switch"); - ent.addComponent(); - ent.addComponent() = spriteSheet.getSprite("square_highlight"); - ent.getComponent().setColour(cro::Colour::Transparent); - ent.addComponent().setGroup(MenuID::Video); - auto bounds = ent.getComponent().getTextureBounds(); - ent.getComponent().area = bounds; - ent.getComponent().callbacks[cro::UIInput::Selected] = selectedID; - ent.getComponent().callbacks[cro::UIInput::Unselected] = unselectedID; - - ent.addComponent().function = HighlightAnimationCallback(); - ent.getComponent().setOrigin({ bounds.width / 2.f, bounds.height / 2.f, -HighlightOffset }); - ent.getComponent().move({ bounds.width / 2.f, bounds.height / 2.f }); - - parent.getComponent().addChild(ent.getComponent()); - - return ent; - }; + { + auto ent = m_scene.createEntity(); + ent.addComponent().setPosition(pos); + ent.addComponent() = m_menuSounds.getEmitter("switch"); + ent.addComponent(); + ent.addComponent() = spriteSheet.getSprite("square_highlight"); + ent.getComponent().setColour(cro::Colour::Transparent); + ent.addComponent().setGroup(MenuID::Video); + auto bounds = ent.getComponent().getTextureBounds(); + ent.getComponent().area = bounds; + ent.getComponent().callbacks[cro::UIInput::Selected] = selectedID; + ent.getComponent().callbacks[cro::UIInput::Unselected] = unselectedID; + + ent.addComponent().function = HighlightAnimationCallback(); + ent.getComponent().setOrigin({ bounds.width / 2.f, bounds.height / 2.f, -HighlightOffset }); + ent.getComponent().move({ bounds.width / 2.f, bounds.height / 2.f }); + + parent.getComponent().addChild(ent.getComponent()); + + return ent; + }; //channel select down auto entity = createHighlight(glm::vec2((bgBounds.width / 2.f) - 156.f, 147.f)); @@ -1643,7 +1643,7 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit entity.getComponent().setNextIndex(AVMixerRight, AVAAL); entity.getComponent().setPrevIndex(AVVolumeUp, TabController); entity.getComponent().callbacks[cro::UIInput::ButtonDown] = uiSystem.addCallback( - [&,audioLabel](cro::Entity e, cro::ButtonEvent evt) mutable + [&, audioLabel](cro::Entity e, cro::ButtonEvent evt) mutable { if (activated(evt)) { @@ -1660,7 +1660,7 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit entity.getComponent().setNextIndex(AVVolumeDown, AVAAR); entity.getComponent().setPrevIndex(AVMixerLeft, TabController); entity.getComponent().callbacks[cro::UIInput::ButtonDown] = uiSystem.addCallback( - [&,audioLabel](cro::Entity e, cro::ButtonEvent evt) mutable + [&, audioLabel](cro::Entity e, cro::ButtonEvent evt) mutable { if (activated(evt)) { @@ -1700,7 +1700,7 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit auto currIndex = AAIndexMap[m_sharedData.multisamples]; currIndex = (currIndex + (AASamples.size() - 1)) % AASamples.size(); //m_sharedData.multisamples = AASamples[currIndex]; - + aaLabel.getComponent().setString(AAStrings[currIndex]); centreText(aaLabel); @@ -1723,7 +1723,7 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit { auto currIndex = AAIndexMap[m_sharedData.multisamples]; currIndex = (currIndex + 1) % AASamples.size(); - // m_sharedData.multisamples = AASamples[currIndex]; + // m_sharedData.multisamples = AASamples[currIndex]; aaLabel.getComponent().setString(AAStrings[currIndex]); centreText(aaLabel); @@ -1743,28 +1743,28 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit entity.getComponent().callbacks[cro::UIInput::ButtonDown] = uiSystem.addCallback( [&, fovLabel](cro::Entity e, cro::ButtonEvent evt) mutable - { - if (activated(evt)) { - auto fov = m_sharedData.fov; - fov = std::max(MinFOV, fov - 5.f); - m_audioEnts[AudioID::Accept].getComponent().play(); - - if (fov < m_sharedData.fov) + if (activated(evt)) { - m_sharedData.fov = fov; + auto fov = m_sharedData.fov; + fov = std::max(MinFOV, fov - 5.f); + m_audioEnts[AudioID::Accept].getComponent().play(); + + if (fov < m_sharedData.fov) + { + m_sharedData.fov = fov; - //raise a window resize message to trigger callbacks - auto size = cro::App::getWindow().getSize(); - auto* msg = cro::App::getInstance().getMessageBus().post(cro::Message::WindowMessage); - msg->data0 = size.x; - msg->data1 = size.y; - msg->event = SDL_WINDOWEVENT_SIZE_CHANGED; + //raise a window resize message to trigger callbacks + auto size = cro::App::getWindow().getSize(); + auto* msg = cro::App::getInstance().getMessageBus().post(cro::Message::WindowMessage); + msg->data0 = size.x; + msg->data1 = size.y; + msg->event = SDL_WINDOWEVENT_SIZE_CHANGED; - fovLabel.getComponent().setString("FOV: " + std::to_string(static_cast(m_sharedData.fov))); + fovLabel.getComponent().setString("FOV: " + std::to_string(static_cast(m_sharedData.fov))); + } } - } - }); + }); //FOV up entity = createHighlight(glm::vec2((bgBounds.width / 2.f) - 14.f, 106.f)); @@ -1774,28 +1774,28 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit entity.getComponent().callbacks[cro::UIInput::ButtonDown] = uiSystem.addCallback( [&, fovLabel](cro::Entity e, cro::ButtonEvent evt) mutable - { - if (activated(evt)) { - auto fov = m_sharedData.fov; - fov = std::min(MaxFOV, fov + 5.f); - m_audioEnts[AudioID::Back].getComponent().play(); - - if (fov > m_sharedData.fov) + if (activated(evt)) { - m_sharedData.fov = fov; + auto fov = m_sharedData.fov; + fov = std::min(MaxFOV, fov + 5.f); + m_audioEnts[AudioID::Back].getComponent().play(); - //raise a window resize message to trigger callbacks - auto size = cro::App::getWindow().getSize(); - auto* msg = cro::App::getInstance().getMessageBus().post(cro::Message::WindowMessage); - msg->data0 = size.x; - msg->data1 = size.y; - msg->event = SDL_WINDOWEVENT_SIZE_CHANGED; + if (fov > m_sharedData.fov) + { + m_sharedData.fov = fov; - fovLabel.getComponent().setString("FOV: " + std::to_string(static_cast(m_sharedData.fov))); + //raise a window resize message to trigger callbacks + auto size = cro::App::getWindow().getSize(); + auto* msg = cro::App::getInstance().getMessageBus().post(cro::Message::WindowMessage); + msg->data0 = size.x; + msg->data1 = size.y; + msg->event = SDL_WINDOWEVENT_SIZE_CHANGED; + + fovLabel.getComponent().setString("FOV: " + std::to_string(static_cast(m_sharedData.fov))); + } } - } - }); + }); //res down @@ -1806,15 +1806,15 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit entity.getComponent().callbacks[cro::UIInput::ButtonDown] = uiSystem.addCallback( [&, resLabel](cro::Entity e, cro::ButtonEvent evt) mutable - { - if (activated(evt)) { - m_videoSettings.resolutionIndex = (m_videoSettings.resolutionIndex + (m_sharedData.resolutions.size() - 1)) % m_sharedData.resolutions.size(); - resLabel.getComponent().setString(m_sharedData.resolutionStrings[m_videoSettings.resolutionIndex]); - centreText(resLabel); - m_audioEnts[AudioID::Accept].getComponent().play(); - } - }); + if (activated(evt)) + { + m_videoSettings.resolutionIndex = (m_videoSettings.resolutionIndex + (m_sharedData.resolutions.size() - 1)) % m_sharedData.resolutions.size(); + resLabel.getComponent().setString(m_sharedData.resolutionStrings[m_videoSettings.resolutionIndex]); + centreText(resLabel); + m_audioEnts[AudioID::Accept].getComponent().play(); + } + }); //res up entity = createHighlight(glm::vec2((bgBounds.width / 2.f) - 14.f, 90.f)); @@ -1866,10 +1866,10 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit entity.addComponent().active = true; entity.getComponent().function = [&](cro::Entity e, float) - { - float scale = m_sharedData.pixelScale ? 1.f : 0.f; - e.getComponent().setScale(glm::vec2(scale)); - }; + { + float scale = m_sharedData.pixelScale ? 1.f : 0.f; + e.getComponent().setScale(glm::vec2(scale)); + }; parent.getComponent().addChild(entity.getComponent()); //vertex snap checkbox @@ -1901,10 +1901,10 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit entity.addComponent().active = true; entity.getComponent().function = [&](cro::Entity e, float) - { - float scale = m_sharedData.vertexSnap ? 1.f : 0.f; - e.getComponent().setScale(glm::vec2(scale)); - }; + { + float scale = m_sharedData.vertexSnap ? 1.f : 0.f; + e.getComponent().setScale(glm::vec2(scale)); + }; parent.getComponent().addChild(entity.getComponent()); @@ -1939,15 +1939,19 @@ void OptionsState::buildAVMenu(cro::Entity parent, const cro::SpriteSheet& sprit entity.addComponent().active = true; entity.getComponent().function = [&](cro::Entity e, float) - { - float scale = m_videoSettings.fullScreen ? 1.f : 0.f; - e.getComponent().setScale(glm::vec2(scale)); - }; + { + float scale = m_videoSettings.fullScreen ? 1.f : 0.f; + e.getComponent().setScale(glm::vec2(scale)); + }; parent.getComponent().addChild(entity.getComponent()); //vsync checkbox entity = createHighlight(glm::vec2(81.f, 26.f)); + if (Social::isSteamdeck()) + { + entity.setLabel("Requires Disable Frame Limit set on Steam Deck.\nHigher frame rates may reduce battery life."); + } entity.getComponent().setSelectionIndex(AVVSync); entity.getComponent().setNextIndex(AVShadowL, AVBeacon); entity.getComponent().setPrevIndex(AVShadowR, AVFullScreen); diff --git a/samples/golf/src/golf/Weather.cpp b/samples/golf/src/golf/Weather.cpp index f06153f99..8a2c1a2cb 100644 --- a/samples/golf/src/golf/Weather.cpp +++ b/samples/golf/src/golf/Weather.cpp @@ -220,7 +220,7 @@ void GolfState::createWeather(std::int32_t weatherType) else { m_resources.shaders.loadFromString(ShaderID::Weather, WeatherVertex, RainFragment); - weatherColour = cro::Colour(0.86f, 0.87f, 0.873f, 0.6f); + weatherColour = cro::Colour(0.8f, 0.81f, 0.873f, 0.6f); //blendMode = cro::Material::BlendMode::Custom; //create audio entity diff --git a/samples/golf/src/golf/WeatherAnimationSystem.cpp b/samples/golf/src/golf/WeatherAnimationSystem.cpp index 69e546ff0..67b82b69e 100644 --- a/samples/golf/src/golf/WeatherAnimationSystem.cpp +++ b/samples/golf/src/golf/WeatherAnimationSystem.cpp @@ -118,5 +118,5 @@ void WeatherAnimationSystem::setMaterialData(const cro::Shader& shader, cro::Col void WeatherAnimationSystem::updateShader() { glUseProgram(m_shaderID); - glUniform4f(m_uniformID, m_colour.getRed(), m_colour.getGreen(), m_colour.getBlue(), m_opacity); + glUniform4f(m_uniformID, m_colour.getRed(), m_colour.getGreen(), m_colour.getBlue(), m_colour.getAlpha() * m_opacity); } \ No newline at end of file diff --git a/samples/golf/src/golf/shaders/TerrainShader.inl b/samples/golf/src/golf/shaders/TerrainShader.inl index b47edc264..d90a81b63 100644 --- a/samples/golf/src/golf/shaders/TerrainShader.inl +++ b/samples/golf/src/golf/shaders/TerrainShader.inl @@ -165,7 +165,7 @@ R"( VARYING_IN vec2 v_heightData; const vec3 DotColour = vec3(1.0, 0.85, 0.6); - const vec3 BaseColour = vec3(0.627, 0.699, 0.94); //stored as HSV to save on a conversion + const vec3 BaseColour = vec3(0.627, 0.699, 0.58); //0.94 stored as HSV to save on a conversion #include HSV