nuclear@0: #ifdef USE_GLUT nuclear@0: nuclear@0: #include nuclear@0: nuclear@0: #ifdef __APPLE__ nuclear@0: #include nuclear@0: #else nuclear@0: #include nuclear@0: #endif nuclear@0: nuclear@0: #include "game.h" nuclear@0: nuclear@0: static void display(); nuclear@0: static void idle(); nuclear@0: static void reshape(int x, int y); nuclear@0: static void key_press(unsigned char key, int x, int y); nuclear@0: static void key_release(unsigned char key, int x, int y); nuclear@0: static void mouse(int bn, int st, int x, int y); nuclear@0: static void motion(int x, int y); nuclear@0: nuclear@0: static bool state_fullscreen; nuclear@0: static int prev_width, prev_height; nuclear@0: static int win_width, win_height; nuclear@0: nuclear@0: int main(int argc, char **argv) nuclear@0: { nuclear@0: glutInit(&argc, argv); nuclear@0: glutInitWindowSize(800, 600); nuclear@0: glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); nuclear@0: glutCreateWindow("GLUT"); nuclear@0: nuclear@0: glutDisplayFunc(display); nuclear@0: glutIdleFunc(idle); nuclear@0: glutReshapeFunc(reshape); nuclear@0: glutKeyboardFunc(key_press); nuclear@0: glutKeyboardUpFunc(key_release); nuclear@0: glutMouseFunc(mouse); nuclear@0: glutMotionFunc(motion); nuclear@0: nuclear@0: if(!game_init(argc, argv)) { nuclear@0: return 1; nuclear@0: } nuclear@0: atexit(game_shutdown); nuclear@0: nuclear@0: glutMainLoop(); nuclear@0: return 0; nuclear@0: } nuclear@0: nuclear@0: void quit() nuclear@0: { nuclear@0: exit(0); nuclear@0: } nuclear@0: nuclear@0: void swap_buffers() nuclear@0: { nuclear@0: glutSwapBuffers(); nuclear@0: } nuclear@0: nuclear@0: void redisplay() nuclear@0: { nuclear@0: glutPostRedisplay(); nuclear@0: } nuclear@0: nuclear@0: void idle() nuclear@0: { nuclear@0: glutPostRedisplay(); nuclear@0: } nuclear@0: nuclear@0: void fullscreen() nuclear@0: { nuclear@0: if(!state_fullscreen) { nuclear@0: prev_width = win_width; nuclear@0: prev_height = win_height; nuclear@0: nuclear@0: glutFullScreen(); nuclear@0: state_fullscreen = true; nuclear@0: } nuclear@0: } nuclear@0: nuclear@0: void windowed() nuclear@0: { nuclear@0: if(state_fullscreen) { nuclear@0: glutReshapeWindow(prev_width, prev_height); nuclear@0: state_fullscreen = false; nuclear@0: } nuclear@0: } nuclear@0: nuclear@0: void move_window(int x, int y) nuclear@0: { nuclear@0: if(!state_fullscreen) { nuclear@0: glutPositionWindow(x, y); nuclear@0: } nuclear@0: } nuclear@0: nuclear@0: void window_position(int *xout, int *yout) nuclear@0: { nuclear@0: *xout = glutGet(GLUT_WINDOW_X); nuclear@0: *yout = glutGet(GLUT_WINDOW_Y); nuclear@0: } nuclear@0: nuclear@0: void resize_window(int x, int y) nuclear@0: { nuclear@0: if(!state_fullscreen) { nuclear@0: glutReshapeWindow(x, y); nuclear@0: } nuclear@0: } nuclear@0: nuclear@0: void window_size(int *xout, int *yout) nuclear@0: { nuclear@0: *xout = win_width; nuclear@0: *yout = win_height; nuclear@0: } nuclear@0: nuclear@0: nuclear@0: static void display() nuclear@0: { nuclear@0: game_draw(); nuclear@0: } nuclear@0: nuclear@0: static void reshape(int x, int y) nuclear@0: { nuclear@0: win_width = x; nuclear@0: win_height = y; nuclear@0: game_reshape(x, y); nuclear@0: } nuclear@0: nuclear@0: static void key_press(unsigned char key, int x, int y) nuclear@0: { nuclear@0: game_keyboard(key, true); nuclear@0: } nuclear@0: nuclear@0: static void key_release(unsigned char key, int x, int y) nuclear@0: { nuclear@0: game_keyboard(key, false); nuclear@0: } nuclear@0: nuclear@0: static void mouse(int bn, int st, int x, int y) nuclear@0: { nuclear@0: game_mbutton(bn - GLUT_LEFT_BUTTON, st == GLUT_DOWN, x, y); nuclear@0: } nuclear@0: nuclear@0: static void motion(int x, int y) nuclear@0: { nuclear@0: game_mmotion(x, y); nuclear@0: } nuclear@0: nuclear@0: int using_glut; nuclear@0: #else nuclear@0: int not_using_glut; nuclear@0: #endif