diff --git a/desktop_version/src/Graphics.cpp b/desktop_version/src/Graphics.cpp index a41e5421..dc86a664 100644 --- a/desktop_version/src/Graphics.cpp +++ b/desktop_version/src/Graphics.cpp @@ -170,6 +170,57 @@ void Graphics::destroy() #undef CLEAR_ARRAY } +void Graphics::create_buffers(const SDL_PixelFormat* fmt) +{ + #define CREATE_SURFACE(w, h) \ + SDL_CreateRGBSurface( \ + SDL_SWSURFACE, \ + w, h, \ + fmt->BitsPerPixel, \ + fmt->Rmask, fmt->Gmask, fmt->Bmask, fmt->Amask \ + ) + backBuffer = CREATE_SURFACE(320, 240); + SDL_SetSurfaceBlendMode(backBuffer, SDL_BLENDMODE_NONE); + + footerbuffer = CREATE_SURFACE(320, 10); + SDL_SetSurfaceBlendMode(footerbuffer, SDL_BLENDMODE_BLEND); + SDL_SetSurfaceAlphaMod(footerbuffer, 127); + FillRect(footerbuffer, SDL_MapRGB(fmt, 0, 0, 0)); + + ghostbuffer = CREATE_SURFACE(320, 240); + SDL_SetSurfaceBlendMode(ghostbuffer, SDL_BLENDMODE_BLEND); + SDL_SetSurfaceAlphaMod(ghostbuffer, 127); + + foregroundBuffer = CREATE_SURFACE(320, 240); + SDL_SetSurfaceBlendMode(foregroundBuffer, SDL_BLENDMODE_BLEND); + + menubuffer = CREATE_SURFACE(320, 240); + SDL_SetSurfaceBlendMode(menubuffer, SDL_BLENDMODE_NONE); + + warpbuffer = CREATE_SURFACE(320 + 16, 240 + 16); + SDL_SetSurfaceBlendMode(warpbuffer, SDL_BLENDMODE_NONE); + + warpbuffer_lerp = CREATE_SURFACE(320 + 16, 240 + 16); + SDL_SetSurfaceBlendMode(warpbuffer_lerp, SDL_BLENDMODE_NONE); + + towerbg.buffer = CREATE_SURFACE(320 + 16, 240 + 16); + SDL_SetSurfaceBlendMode(towerbg.buffer, SDL_BLENDMODE_NONE); + + towerbg.buffer_lerp = CREATE_SURFACE(320 + 16, 240 + 16); + SDL_SetSurfaceBlendMode(towerbg.buffer_lerp, SDL_BLENDMODE_NONE); + + titlebg.buffer = CREATE_SURFACE(320 + 16, 240 + 16); + SDL_SetSurfaceBlendMode(titlebg.buffer, SDL_BLENDMODE_NONE); + + titlebg.buffer_lerp = CREATE_SURFACE(320 + 16, 240 + 16); + SDL_SetSurfaceBlendMode(titlebg.buffer_lerp, SDL_BLENDMODE_NONE); + + tempBuffer = CREATE_SURFACE(320, 240); + SDL_SetSurfaceBlendMode(tempBuffer, SDL_BLENDMODE_NONE); + + #undef CREATE_SURFACE +} + void Graphics::destroy_buffers() { #define FREE_SURFACE(SURFACE) \ diff --git a/desktop_version/src/Graphics.h b/desktop_version/src/Graphics.h index 1d574a69..002c3eb2 100644 --- a/desktop_version/src/Graphics.h +++ b/desktop_version/src/Graphics.h @@ -19,6 +19,7 @@ public: void init(); void destroy(); + void create_buffers(const SDL_PixelFormat* fmt); void destroy_buffers(); GraphicsResources grphx; diff --git a/desktop_version/src/main.cpp b/desktop_version/src/main.cpp index 2695b627..a2e046be 100644 --- a/desktop_version/src/main.cpp +++ b/desktop_version/src/main.cpp @@ -245,54 +245,7 @@ int main(int argc, char *argv[]) } graphics.screenbuffer = &gameScreen; - const SDL_PixelFormat* fmt = gameScreen.GetFormat(); - #define CREATE_SURFACE(w, h) \ - SDL_CreateRGBSurface( \ - SDL_SWSURFACE, \ - w, h, \ - fmt->BitsPerPixel, \ - fmt->Rmask, fmt->Gmask, fmt->Bmask, fmt->Amask \ - ) - graphics.backBuffer = CREATE_SURFACE(320, 240); - SDL_SetSurfaceBlendMode(graphics.backBuffer, SDL_BLENDMODE_NONE); - - graphics.footerbuffer = CREATE_SURFACE(320, 10); - SDL_SetSurfaceBlendMode(graphics.footerbuffer, SDL_BLENDMODE_BLEND); - SDL_SetSurfaceAlphaMod(graphics.footerbuffer, 127); - FillRect(graphics.footerbuffer, SDL_MapRGB(fmt, 0, 0, 0)); - - graphics.ghostbuffer = CREATE_SURFACE(320, 240); - SDL_SetSurfaceBlendMode(graphics.ghostbuffer, SDL_BLENDMODE_BLEND); - SDL_SetSurfaceAlphaMod(graphics.ghostbuffer, 127); - - graphics.foregroundBuffer = CREATE_SURFACE(320, 240); - SDL_SetSurfaceBlendMode(graphics.foregroundBuffer, SDL_BLENDMODE_BLEND); - - graphics.menubuffer = CREATE_SURFACE(320, 240); - SDL_SetSurfaceBlendMode(graphics.menubuffer, SDL_BLENDMODE_NONE); - - graphics.warpbuffer = CREATE_SURFACE(320 + 16, 240 + 16); - SDL_SetSurfaceBlendMode(graphics.warpbuffer, SDL_BLENDMODE_NONE); - - graphics.warpbuffer_lerp = CREATE_SURFACE(320 + 16, 240 + 16); - SDL_SetSurfaceBlendMode(graphics.warpbuffer_lerp, SDL_BLENDMODE_NONE); - - graphics.towerbg.buffer = CREATE_SURFACE(320 + 16, 240 + 16); - SDL_SetSurfaceBlendMode(graphics.towerbg.buffer, SDL_BLENDMODE_NONE); - - graphics.towerbg.buffer_lerp = CREATE_SURFACE(320 + 16, 240 + 16); - SDL_SetSurfaceBlendMode(graphics.towerbg.buffer_lerp, SDL_BLENDMODE_NONE); - - graphics.titlebg.buffer = CREATE_SURFACE(320 + 16, 240 + 16); - SDL_SetSurfaceBlendMode(graphics.titlebg.buffer, SDL_BLENDMODE_NONE); - - graphics.titlebg.buffer_lerp = CREATE_SURFACE(320 + 16, 240 + 16); - SDL_SetSurfaceBlendMode(graphics.titlebg.buffer_lerp, SDL_BLENDMODE_NONE); - - graphics.tempBuffer = CREATE_SURFACE(320, 240); - SDL_SetSurfaceBlendMode(graphics.tempBuffer, SDL_BLENDMODE_NONE); - - #undef CREATE_SURFACE + graphics.create_buffers(gameScreen.GetFormat()); if (game.skipfakeload) game.gamestate = TITLEMODE;