rendered paste body#include <SDL/SDL_main.h>#include <SDL/SDL.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include "BilliardZ.h"/* Evil global. */ImageLoader *imageLoader;static bool closeSplash = false;static SDL_Surface *setupSDL(){ SDL_Surface *screen; imageLoader = new ImageLoader(); /* Initialize SDL */ if (SDL_Init(SDL_INIT_VIDEO | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_INIT_TIMER) < 0) { printf("Unable to init SDL: %s\n", SDL_GetError()); exit(1); } atexit(SDL_Quit); /* Set the video mode. */ screen = SDL_SetVideoMode(WIDTH, HEIGHT, 16, 0); if (screen == NULL) { printf("Unable to set video mode to 240x320: %s\n", SDL_GetError()); exit(1); } SDL_WM_SetCaption("BilliardZ", "BilliardZ"); return screen;}static Uint32cancelSplashScreen(Uint32 interval, void *){ printf("Splash canceled\n"); closeSplash = true; return interval;}#ifdef __cplusplusextern "C" {#endifintmain(int, char **){ PoolGame *game; SDL_Surface *screen; SDL_TimerID timerId; SDL_Event event; SplashScreen *splash;#if 0 printf("%u\n", 12); printf("%u\n", F_FROMINT(12)); printf("%lu\n", F_FRACT(12)); printf("%u\n", F_INT(F_FROMINT(12))); return 0;#endif screen = setupSDL(); /* Create the splash screen. */ splash = new SplashScreen(screen); splash->render(); timerId = SDL_AddTimer(3000, cancelSplashScreen, NULL); /* Create the pool game */ game = new PoolGame(screen); /* Let the user cancel it. */ while (!closeSplash) { while (SDL_PollEvent(&event)) { if (event.type == SDL_KEYDOWN || event.type == SDL_MOUSEBUTTONDOWN) { closeSplash = true; } } } /* Now remove that timer. */ SDL_RemoveTimer(timerId); /* Nuke the splash screen. */ delete splash; /* Start the game. */ game->start(); /* Clean up! */ delete game; delete imageLoader; return 0;}#ifdef __cplusplus}#endif