From 6d4e1eae16b84918009625a866104ec26a234277 Mon Sep 17 00:00:00 2001 From: oroborus Date: Fri, 1 Feb 2008 22:59:06 +0000 Subject: nahranie tarballu tuxanci-ng na SVN server Dusan Durech ( Oroborus ) git-svn-id: http://opensvn.csie.org/tuxanci_ng@1 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- src/interface.c | 200 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100755 src/interface.c (limited to 'src/interface.c') diff --git a/src/interface.c b/src/interface.c new file mode 100755 index 0000000..f47c2dd --- /dev/null +++ b/src/interface.c @@ -0,0 +1,200 @@ + +#include "main.h" +#include "interface.h" +#include "screen.h" + +//povrch okna +static SDL_Surface *screen; + +//casovac +static SDL_TimerID timer; + +//priznaky okna +static Uint32 g_win_flags = SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_ANYFORMAT; + +static bool_t isInterfaceInit = FALSE; + +bool_t isInterfaceInicialized() +{ + return isInterfaceInit; +} + +static Uint32 TimerCallback(Uint32 interval, void *param) +{ + SDL_Event event; + event.type = SDL_USEREVENT; + event.user.code = USR_EVT_TIMER; + event.user.data1 = NULL; + event.user.data2 = NULL; + + SDL_PushEvent(&event); + + return interval; +} + +int initSDL() +{ + printf("init SDL..\n"); + + //inicializujem SDL + if( SDL_Init(SDL_SUBSYSTEMS) == -1 ) + { + fprintf(stderr, "%s\n", SDL_GetError()); + SDL_Quit(); + return -1; + } + + //inicializujem okno + //screen = SDL_SetVideoMode(WINDOW_SIZE_X, WINDOW_SIZE_Y, 0, g_win_flags); + screen = SDL_SetVideoMode(WINDOW_SIZE_X, WINDOW_SIZE_Y, 0, g_win_flags); + + if (screen == NULL ) + { + fprintf(stderr, "%s\n", SDL_GetError()); + SDL_Quit(); + return -1; + } + + SDL_WM_SetCaption(WINDOW_TITLE, NULL); + //SDL_ShowCursor(0); + //SDL_EnableKeyRepeat(1,1); + timer = SDL_AddTimer(INTERVAL, TimerCallback, NULL); + + srand((unsigned)time(NULL)); + isInterfaceInit = TRUE; + + return 0; +} + +SDL_Surface* getSDL_Screen() +{ + return screen; +} + +int toggleFullscreen() +{ + if(g_win_flags & SDL_FULLSCREEN) + g_win_flags &= ~SDL_FULLSCREEN; + else + g_win_flags |= SDL_FULLSCREEN; + + if(SDL_WM_ToggleFullScreen(screen) == 0) + { + fprintf(stderr, "Nemozem prepnut do fullscreenu!\n"); + + SDL_FreeSurface(screen); + screen = SDL_SetVideoMode(WINDOW_SIZE_X, WINDOW_SIZE_Y, WIN_BPP, g_win_flags); + + if(screen == NULL) + { + fprintf(stderr, "Nemozem premnut do okna:%s\n", SDL_GetError()); + return 0; + } + } + + return 1; +} + +void getMousePosition(int *x, int *y) +{ + SDL_GetMouseState(x, y); +} + +int isMouseClicked() +{ + return SDL_GetMouseState(NULL,NULL) & SDL_BUTTON(SDL_BUTTON_LEFT); +} + +/* +static void action_esc() +{ + if( strcmp(getScreen(), "world") == 0 ) + { + setScreen("analyze"); + } + + if( strcmp(getScreen(), "mainMenu") == 0 ) + { + quit(); + } + +} +*/ + +int eventAction() +{ + SDL_Event event; + + while(SDL_WaitEvent(&event)) + { + switch(event.type) + { + case SDL_KEYDOWN: + switch(event.key.keysym.sym) + { +/* + case SDLK_ESCAPE: + action_esc(); + return 0; + break; +*/ + case SDLK_F1: + if(!toggleFullscreen())return 0; + break; + + default: + break; + } + break; + + case SDL_USEREVENT: + switch(event.user.code) + { + case USR_EVT_TIMER: + drawScreen(); + eventScreen(); + break; + + default: + break; + } + break; + + // Zmena velikosti okna + case SDL_VIDEORESIZE: + screen = SDL_SetVideoMode(event.resize.w,event.resize.h, WIN_BPP, g_win_flags); + + if(screen == NULL) + { + fprintf(stderr, "Nemozem zmenit rozlisene okna: %s\n",SDL_GetError()); + return 0; + } + break; + + // Pozadavek na ukonceni + case SDL_QUIT: + return -1; + break; + + default: + break; + } + } + + return 0; +} + +void eventSDL() +{ + while(1) + { + if ( eventAction() == -1 )return; + } +} + +void quitSDL() +{ + printf("quit SDL..\n"); + SDL_Quit(); + isInterfaceInit = FALSE; +} -- cgit v1.2.3