From 10c144cd6343d25e7e3870f526484fab6d2119e0 Mon Sep 17 00:00:00 2001 From: fallahn Date: Sat, 8 Jul 2023 14:09:53 +0100 Subject: [PATCH] tidy up driving range UI auto select correct leaderboards based on current options when opening leaderboard browser on driving range --- samples/golf/buildnumber.h | 4 +- samples/golf/src/golf/DrivingState.cpp | 12 +++- samples/golf/src/golf/DrivingStateUI.cpp | 77 ++++++++++++++---------- 3 files changed, 56 insertions(+), 37 deletions(-) diff --git a/samples/golf/buildnumber.h b/samples/golf/buildnumber.h index f0fe7ba68..7015e27f3 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 646 -#define BUILDNUMBER_STR "646" +#define BUILDNUMBER 648 +#define BUILDNUMBER_STR "648" #endif /* BUILD_NUMBER_H_ */ diff --git a/samples/golf/src/golf/DrivingState.cpp b/samples/golf/src/golf/DrivingState.cpp index a49eafe3f..e9ad883af 100644 --- a/samples/golf/src/golf/DrivingState.cpp +++ b/samples/golf/src/golf/DrivingState.cpp @@ -494,10 +494,16 @@ bool DrivingState::handleEvent(const cro::Event& evt) } else if (evt.type == SDL_MOUSEBUTTONUP) { - if (evt.button.button == SDL_BUTTON_RIGHT && - m_gameScene.getDirector()->roundEnded()) + if (evt.button.button == SDL_BUTTON_RIGHT) { - pauseGame(); +#ifdef USE_GNS + closeLeaderboard(); +#else + if(m_gameScene.getDirector()->roundEnded()) + { + pauseGame(); + } +#endif } } else if (evt.type == SDL_CONTROLLERDEVICEREMOVED) diff --git a/samples/golf/src/golf/DrivingStateUI.cpp b/samples/golf/src/golf/DrivingStateUI.cpp index 5d3dd39e6..b3b7c7edf 100644 --- a/samples/golf/src/golf/DrivingStateUI.cpp +++ b/samples/golf/src/golf/DrivingStateUI.cpp @@ -925,9 +925,8 @@ void DrivingState::createGameOptions() cro::SpriteSheet spriteSheet; spriteSheet.loadFromFile("assets/golf/sprites/scoreboard.spt", m_resources.textures); m_sprites[SpriteID::Stars] = spriteSheet.getSprite("orbs"); - //auto bgSprite = spriteSheet.getSprite("border"); - auto bounds = cro::FloatRect(glm::vec2(0.f), glm::vec2(tex.getSize()));// bgSprite.getTextureBounds(); + auto bounds = cro::FloatRect(glm::vec2(0.f), glm::vec2(tex.getSize())); auto size = glm::vec2(GolfGame::getActiveTarget()->getSize()); auto position = glm::vec3(size.x / 2.f, size.y / 2.f, 1.5f); @@ -1118,6 +1117,8 @@ score based on your overall accuracy. Good Luck! numberEnt.getComponent().setString(std::to_string(m_strokeCounts[m_strokeCountIndex])); centreText(numberEnt); + leaderboardTryCount = m_strokeCountIndex; + if (m_topScores[m_strokeCountIndex] > 0) { std::stringstream s; @@ -1156,6 +1157,8 @@ score based on your overall accuracy. Good Luck! numberEnt.getComponent().setString(std::to_string(m_strokeCounts[m_strokeCountIndex])); centreText(numberEnt); + leaderboardTryCount = m_strokeCountIndex; + if (m_topScores[m_strokeCountIndex] > 0) { std::stringstream s; @@ -1314,6 +1317,8 @@ score based on your overall accuracy. Good Luck! numberEnt.getComponent().setString(str); centreText(numberEnt); + leaderboardHoleIndex = m_targetIndex; + m_summaryScreen.audioEnt.getComponent().play(); } }); @@ -1331,6 +1336,8 @@ score based on your overall accuracy. Good Luck! numberEnt.getComponent().setString(str); centreText(numberEnt); + leaderboardHoleIndex = m_targetIndex; + m_summaryScreen.audioEnt.getComponent().play(); } }); @@ -1442,35 +1449,7 @@ score based on your overall accuracy. Good Luck! entity.getComponent().setOrigin({ b.width / 2.f, b.height / 2.f }); entity.getComponent().move({ std::floor(bgBounds.width / 2.f), b.height / 2.f }); entity.addComponent().setUserData(); - entity.getComponent().function = - [&](cro::Entity e, float dt) - { - const float Speed = dt * 4.f; - auto& [progress, direction] = e.getComponent().getUserData(); - if (direction == 0) - { - //grow - progress = std::min(1.f, progress + Speed); - if (progress == 1) - { - direction = 1; - e.getComponent().active = false; - m_uiScene.getSystem()->setActiveGroup(MenuID::Leaderboard); - } - } - else - { - //shrink - progress = std::max(0.f, progress - Speed); - if (progress == 0) - { - direction = 0; - e.getComponent().active = false; - m_uiScene.getSystem()->setActiveGroup(MenuID::Options); - } - } - e.getComponent().setScale({ cro::Util::Easing::easeOutQuad(progress), 1.f }); - }; + //callback is added below so we can captch upDisplay lambda bgEntity.getComponent().addChild(entity.getComponent()); auto lbEntity = entity; @@ -1623,6 +1602,40 @@ score based on your overall accuracy. Good Luck! }; + lbEntity.getComponent().function = + [&, updateDisplay](cro::Entity e, float dt) mutable + { + const float Speed = dt * 4.f; + auto& [progress, direction] = e.getComponent().getUserData(); + if (direction == 0) + { + //grow + progress = std::min(1.f, progress + Speed); + if (progress == 1) + { + direction = 1; + e.getComponent().active = false; + m_uiScene.getSystem()->setActiveGroup(MenuID::Leaderboard); + + updateDisplay(); + } + } + else + { + //shrink + progress = std::max(0.f, progress - Speed); + if (progress == 0) + { + direction = 0; + e.getComponent().active = false; + m_uiScene.getSystem()->setActiveGroup(MenuID::Options); + } + } + e.getComponent().setScale({ cro::Util::Easing::easeOutQuad(progress), 1.f }); + }; + + + //browse leaderboards textEnt4 = m_uiScene.createEntity(); textEnt4.addComponent().setPosition({ (bounds.width / 5.f) * 4.f, 100.f, 0.02f }); @@ -1901,7 +1914,7 @@ void DrivingState::createSummary() //background cro::SpriteSheet spriteSheet; spriteSheet.loadFromFile("assets/golf/sprites/scoreboard.spt", m_resources.textures); - auto bgSprite = spriteSheet.getSprite("border"); + auto bgSprite = cro::Sprite(m_resources.textures.get("assets/golf/images/driving_range_menu.png")); auto bounds = bgSprite.getTextureBounds(); auto size = glm::vec2(GolfGame::getActiveTarget()->getSize());