diff --git a/src/saland.cpp b/src/saland.cpp index 57aa8b0..d715163 100644 --- a/src/saland.cpp +++ b/src/saland.cpp @@ -173,7 +173,7 @@ void startWorld() { void ResetFullscreen(SDL_Window* sdlWindow, sago::SagoDataHolder& dataHolder) { Mix_HaltMusic(); //We need to reload all data in case the screen type changes. Music must be stopped before unload. - if (false) { + if (true) { SDL_SetWindowFullscreen(sdlWindow, SDL_WINDOW_FULLSCREEN_DESKTOP); } else { @@ -182,6 +182,10 @@ void ResetFullscreen(SDL_Window* sdlWindow, sago::SagoDataHolder& dataHolder) { dataHolder.invalidateAll(globalData.screen); globalData.spriteHolder.reset(new sago::SagoSpriteHolder( dataHolder ) ); SDL_ShowCursor(SDL_ENABLE); + SDL_DisplayMode DM; + SDL_GetCurrentDisplayMode(0, &DM); + globalData.xsize = DM.w; + globalData.ysize = DM.h; } void runGame() { @@ -193,7 +197,7 @@ void runGame() { SDL_Window* win = SDL_CreateWindow("Saland Adventures", posX, posY, width, height, 0); globalData.screen = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED); - SDL_RenderSetLogicalSize(globalData.screen, 1024, 768); + //SDL_RenderSetLogicalSize(globalData.screen, 1024, 768); sago::SagoDataHolder holder(globalData.screen); globalData.spriteHolder.reset(new sago::SagoSpriteHolder(holder)); globalData.dataHolder = &holder; diff --git a/src/saland/Game.cpp b/src/saland/Game.cpp index bac51d7..6f90f7c 100644 --- a/src/saland/Game.cpp +++ b/src/saland/Game.cpp @@ -157,8 +157,8 @@ static std::string GetLayerInfoForTile(const World& w, int x, int y) { } void Game::Draw(SDL_Renderer* target) { - double screen_width = 1024.0; - double screen_height = 768.0; + double screen_width = globalData.xsize; + double screen_height = globalData.ysize; int screen_boarder = 16; data->topx = std::round(data->center_x - screen_width / 2.0); data->topy = std::round(data->center_y - screen_height / 2.0); diff --git a/src/saland/GameDraw.cpp b/src/saland/GameDraw.cpp index 6840d47..877b904 100644 --- a/src/saland/GameDraw.cpp +++ b/src/saland/GameDraw.cpp @@ -55,8 +55,8 @@ void DrawOuterBorder(SDL_Renderer* renderer, SDL_Texture* texture, const sago::t } void DrawLayer(SDL_Renderer* renderer, sago::SagoSpriteHolder* sHolder, const sago::tiled::TileMap& tm, size_t layer, int topx, int topy) { - for (int i = 0; i < tm.height; ++i) { - for (int j = 0; j < tm.width; ++j) { + for (int i = topx/32; i < tm.width && i < (topx+globalData.xsize)/32+1; ++i) { + for (int j = topy/32; j < tm.height && j < (topy+globalData.ysize)/32+1; ++j) { uint32_t gid = sago::tiled::getTileFromLayer(tm, tm.layers.at(layer), i, j); if (gid == 0) { continue; diff --git a/src/saland/globals.hpp b/src/saland/globals.hpp index 6b68f96..fe13f4c 100644 --- a/src/saland/globals.hpp +++ b/src/saland/globals.hpp @@ -36,6 +36,7 @@ struct GlobalData { int mousex = 0; int mousey = 0; int xsize = 1024; + int ysize = 768; }; extern GlobalData globalData;