diff --git a/mini.cpp b/mini.cpp index b7881aa..d179910 100644 --- a/mini.cpp +++ b/mini.cpp @@ -18,6 +18,7 @@ char window_title[256]; uint16_t screen_width = 160; uint16_t screen_height = 120; uint8_t screen_zoom = 4; +bool screen_fullscreen = false; uint8_t show_cursor = SDL_ENABLE; surface_t surfaces[10]; @@ -184,6 +185,21 @@ void setmap(uint8_t surface) { map_surface = &surfaces[surface]; } +void createDisplay() { + mini_win = SDL_CreateWindow(window_title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, screen_width*screen_zoom, screen_height*screen_zoom, screen_fullscreen?SDL_WINDOW_FULLSCREEN_DESKTOP:SDL_WINDOW_SHOWN); + mini_ren = SDL_CreateRenderer(mini_win, -1, 0); + //SDL_CreateWindowAndRenderer(512,512,0,&mini_win,&mini_ren); + SDL_RenderSetLogicalSize(mini_ren, screen_width, screen_height); + SDL_ShowCursor(show_cursor); + mini_bak = SDL_CreateTexture(mini_ren, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, screen_width, screen_height); +} + +void destroyDisplay() { + SDL_DestroyTexture(mini_bak); + SDL_DestroyRenderer(mini_ren); + SDL_DestroyWindow(mini_win); +} + int main(int argc,char*argv[]){ while (!should_quit) { @@ -201,12 +217,7 @@ int main(int argc,char*argv[]){ setdest(newsurf(screen_width, screen_height)); SDL_Init(SDL_INIT_EVERYTHING); - mini_win = SDL_CreateWindow(window_title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, screen_width*screen_zoom, screen_height*screen_zoom, SDL_WINDOW_SHOWN); - mini_ren = SDL_CreateRenderer(mini_win, -1, 0); - //SDL_CreateWindowAndRenderer(512,512,0,&mini_win,&mini_ren); - SDL_RenderSetLogicalSize(mini_ren, screen_width, screen_height); - SDL_ShowCursor(show_cursor); - mini_bak = SDL_CreateTexture(mini_ren, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, screen_width, screen_height); + createDisplay(); Mix_Init(MIX_INIT_OGG); @@ -227,6 +238,15 @@ int main(int argc,char*argv[]){ while(SDL_PollEvent(&mini_eve)) { if (mini_eve.type == SDL_QUIT) { should_exit=true; should_quit=true; break; } if (mini_eve.type == SDL_KEYDOWN) { + if (mini_eve.key.keysym.scancode == SDL_SCANCODE_F2) { + screen_zoom+=2; if (screen_zoom>=10) screen_zoom=2; + destroyDisplay(); + createDisplay(); + } else if (mini_eve.key.keysym.scancode == SDL_SCANCODE_F3) { + screen_fullscreen = !screen_fullscreen; + destroyDisplay(); + createDisplay(); + } #ifdef DEBUG if (mini_eve.key.keysym.scancode == SDL_SCANCODE_F1) { if (lua_is_playing()) { @@ -274,9 +294,7 @@ int main(int argc,char*argv[]){ Mix_Quit(); for (int i=0;i<10;++i) freesurf(i); - SDL_DestroyTexture(mini_bak); - SDL_DestroyRenderer(mini_ren); - SDL_DestroyWindow(mini_win); + destroyDisplay(); SDL_Quit(); }