diff --git a/client/client_application.cpp b/client/client_application.cpp index 9819436..d2e6a61 100644 --- a/client/client_application.cpp +++ b/client/client_application.cpp @@ -51,7 +51,10 @@ void ClientApplication::Init(int argc, char* argv[]) { //get the config values int w = config.Int("client.screen.w"); int h = config.Int("client.screen.h"); - int f = config.Int("client.screen.f") ? SDL_WINDOW_FULLSCREEN : 0; + int f = config.Boolean("client.screen.f") ? SDL_WINDOW_FULLSCREEN : 0; + + //BUG: fullscreen is disabled + f = 0; //default sizes w = w ? w : 800; @@ -322,7 +325,7 @@ void ClientApplication::ProcessSceneSignal(SceneSignal signal) { //add scene creation calls here case SceneSignal::FIRST: case SceneSignal::SPLASHSCREEN: - activeScene = new SplashScreen(); + activeScene = new SplashScreen(window); break; case SceneSignal::MAINMENU: activeScene = new MainMenu(); diff --git a/client/menu_scenes/splash_screen.cpp b/client/menu_scenes/splash_screen.cpp index 5ba3f26..48f08aa 100644 --- a/client/menu_scenes/splash_screen.cpp +++ b/client/menu_scenes/splash_screen.cpp @@ -27,14 +27,23 @@ //Public access members //------------------------- -SplashScreen::SplashScreen() { - //TODO: I need a logo that isn't partially invisible +SplashScreen::SplashScreen(SDL_Window* w) { + //fit the screen to the logo + //TODO: refactor the code for this window trick + window = w; + SDL_GetWindowSize(window, &windowWidth, &windowHeight); + logo.Load(GetRenderer(), ConfigUtility::GetSingleton()["dir.logos"] + "krstudios.png"); + + SDL_SetWindowSize(window, logo.GetClipW(), logo.GetClipH()); + SDL_RenderSetLogicalSize(GetRenderer(), logo.GetClipW(), logo.GetClipH()); + startTick = std::chrono::steady_clock::now(); } SplashScreen::~SplashScreen() { - // + SDL_SetWindowSize(window, windowWidth, windowHeight); + SDL_RenderSetLogicalSize(GetRenderer(), windowWidth, windowHeight); } //------------------------- @@ -42,7 +51,7 @@ SplashScreen::~SplashScreen() { //------------------------- void SplashScreen::FrameStart() { - if (std::chrono::steady_clock::now() - startTick > std::chrono::duration(1)) { + if (std::chrono::steady_clock::now() - startTick > std::chrono::duration(3)) { SetSceneSignal(SceneSignal::MAINMENU); } } @@ -51,5 +60,5 @@ void SplashScreen::RenderFrame(SDL_Renderer* renderer) { int w = 0, h = 0; SDL_RenderGetLogicalSize(renderer, &w, &h); //TODO: fix logo position - logo.DrawTo(renderer, (w - logo.GetClipW() / 4) / 2, (h - logo.GetClipH() / 4) / 2, .25, .25); + logo.DrawTo(renderer, (w - logo.GetClipW()) / 2, (h - logo.GetClipH()) / 2); } diff --git a/client/menu_scenes/splash_screen.hpp b/client/menu_scenes/splash_screen.hpp index 469c647..91cde11 100644 --- a/client/menu_scenes/splash_screen.hpp +++ b/client/menu_scenes/splash_screen.hpp @@ -29,7 +29,7 @@ class SplashScreen : public BaseScene { public: //Public access members - SplashScreen(); + SplashScreen(SDL_Window*); ~SplashScreen(); void RenderFrame(SDL_Renderer* renderer) override; @@ -41,4 +41,8 @@ private: //members std::chrono::steady_clock::time_point startTick; Image logo; + + //screws with the window + SDL_Window* window = nullptr; + int windowWidth, windowHeight; }; diff --git a/rsc/graphics/logos/krstudios.png b/rsc/graphics/logos/krstudios.png index 9a411c1..0a4df7e 100644 Binary files a/rsc/graphics/logos/krstudios.png and b/rsc/graphics/logos/krstudios.png differ