TitleState.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #include "TitleState.hpp"
  2. #include <TweenEngine/Tween.h>
  3. #include <cpp3ds/Window/Window.hpp>
  4. #include <cpp3ds/System/I18n.hpp>
  5. #include <cpp3ds/System/Service.hpp>
  6. #include <cpp3ds/System/Sleep.hpp>
  7. #include <cpp3ds/System/FileSystem.hpp>
  8. #include "../Config.hpp"
  9. #include "../Notification.hpp"
  10. #include "../Theme.hpp"
  11. #include "../Util.hpp"
  12. #ifndef EMULATION
  13. #include "../MCU/Mcu.hpp"
  14. #endif
  15. using namespace TweenEngine;
  16. using namespace util3ds;
  17. namespace FreeShop {
  18. TitleState::TitleState(StateStack& stack, Context& context, StateCallback callback)
  19. : State(stack, context, callback)
  20. {
  21. std::string path = cpp3ds::FileSystem::getFilePath(FREESHOP_DIR "/theme/texts.json");
  22. if (pathExists(path.c_str(), false)) {
  23. if (Theme::loadFromFile()) {
  24. Theme::isTextThemed = true;
  25. //Load differents colors
  26. std::string freTextValue = Theme::get("freText").GetString();
  27. std::string versionTextValue = Theme::get("versionText").GetString();
  28. //Set the colors
  29. int R, G, B;
  30. hexToRGB(freTextValue, &R, &G, &B);
  31. Theme::freText = cpp3ds::Color(R, G, B);
  32. hexToRGB(versionTextValue, &R, &G, &B);
  33. Theme::versionText = cpp3ds::Color(R, G, B);
  34. }
  35. }
  36. m_textVersion.setString(FREESHOP_VERSION);
  37. m_textVersion.setCharacterSize(12);
  38. if (Theme::isTextThemed)
  39. m_textVersion.setFillColor(Theme::versionText);
  40. else
  41. m_textVersion.setFillColor(cpp3ds::Color::White);
  42. m_textVersion.setOutlineColor(cpp3ds::Color(0, 0, 0, 100));
  43. m_textVersion.setOutlineThickness(1.f);
  44. m_textVersion.setPosition(318.f - m_textVersion.getLocalBounds().width, 222.f);
  45. m_textFree.setString("fre");
  46. if (Theme::isTextThemed)
  47. m_textFree.setFillColor(cpp3ds::Color(Theme::freText.r, Theme::freText.g, Theme::freText.b, 0));
  48. else
  49. m_textFree.setFillColor(cpp3ds::Color(255, 255, 255, 0));
  50. m_textFree.setCharacterSize(75);
  51. m_textFree.setPosition(23, 64);
  52. m_textFree.setStyle(cpp3ds::Text::Bold);
  53. if (fopen(FREESHOP_DIR "/theme/images/eshop.png", "rb"))
  54. m_textureEshop.loadFromFile(FREESHOP_DIR "/theme/images/eshop.png");
  55. else
  56. m_textureEshop.loadFromFile("images/eshop.png");
  57. m_spriteEshop.setTexture(m_textureEshop, true);
  58. m_spriteEshop.setColor(cpp3ds::Color(0xf4, 0x6c, 0x26, 0x00));
  59. m_spriteEshop.setPosition(390.f - m_spriteEshop.getLocalBounds().width, 40.f);
  60. if (fopen(FREESHOP_DIR "/theme/images/bag.png", "rb"))
  61. m_textureBag.loadFromFile(FREESHOP_DIR "/theme/images/bag.png");
  62. else
  63. m_textureBag.loadFromFile("images/bag.png");
  64. m_spriteBag.setTexture(m_textureBag, true);
  65. m_spriteBag.setColor(cpp3ds::Color(0xf4, 0x6c, 0x26, 0x00));
  66. m_spriteBag.setPosition(50.f, 50.f);
  67. m_spriteBag.setScale(0.4f, 0.4f);
  68. // Tween the bag
  69. Tween::to(m_spriteBag, TweenSprite::COLOR_ALPHA, 0.5f)
  70. .target(255.f)
  71. .delay(1.f)
  72. .start(m_manager);
  73. Tween::to(m_spriteBag, TweenSprite::POSITION_XY, 0.5f)
  74. .target(10.f, 30.f)
  75. .delay(1.f)
  76. .start(m_manager);
  77. Tween::to(m_spriteBag, TweenSprite::SCALE_XY, 0.5f)
  78. .target(1.f, 1.f)
  79. .delay(1.f)
  80. .start(m_manager);
  81. Tween::to(m_spriteBag, TweenSprite::COLOR_RGB, 1.f)
  82. .target(0, 0, 0)
  83. .delay(3.5f)
  84. .start(m_manager);
  85. // Tween the "fre" text
  86. Tween::to(m_textFree, TweenSprite::COLOR_ALPHA, 1.f)
  87. .target(255.f)
  88. .delay(3.5f)
  89. .start(m_manager);
  90. // Tween the logo after the bag
  91. Tween::to(m_spriteEshop, TweenSprite::POSITION_Y, 1.f)
  92. .targetRelative(30.f)
  93. .delay(1.5f)
  94. .start(m_manager);
  95. Tween::to(m_spriteEshop, TweenSprite::COLOR_ALPHA, 1.f)
  96. .target(255)
  97. .delay(1.5f)
  98. .start(m_manager);
  99. Tween::to(m_spriteEshop, TweenSprite::COLOR_RGB, 1.f)
  100. .target(0, 0, 0)
  101. .delay(3.5f)
  102. .start(m_manager);
  103. }
  104. TitleState::~TitleState()
  105. {
  106. }
  107. void TitleState::renderTopScreen(cpp3ds::Window& window)
  108. {
  109. window.draw(m_spriteEshop);
  110. window.draw(m_spriteBag);
  111. window.draw(m_textFree);
  112. }
  113. void TitleState::renderBottomScreen(cpp3ds::Window& window)
  114. {
  115. window.draw(m_textVersion);
  116. }
  117. bool TitleState::update(float delta)
  118. {
  119. m_manager.update(delta);
  120. return true;
  121. }
  122. bool TitleState::processEvent(const cpp3ds::Event& event)
  123. {
  124. return true;
  125. }
  126. } // namespace FreeShop