#include "signal.h" #include "display33.h" #include "clock33.h" #include "logger33.h" #include "system33.h" #include "strings33.h" #include "input33.h" #include "ui33.h" #include "scene33.h" static void _term_sighandler( int sig ); int main(int argc, char *argv[]) { Size fps, FPS; long timeOld, time; if( e33_set_signal( SIGHUP, _term_sighandler ) == -1 ) { LOGW( "SIGHUP not handled"); } if( e33_set_signal( SIGINT, _term_sighandler ) == -1 ) { LOGW( "SIGINT not handled"); } if( e33_set_signal( SIGTERM, _term_sighandler ) == -1 ) { LOGW( "SIGTERM not handled"); } timeOld = clock33_get_us(); time = 0; fps = 0; FPS = 0; if( logger33_init() ) { return EXIT_FAILURE; } if( input33_init() ) { return EXIT_FAILURE; } if( display33_init() ) { return EXIT_FAILURE; } if( scene33_init() ) { return EXIT_FAILURE; } if( graphics33_init() ) { return EXIT_FAILURE; } while(1) { display33_vtswitcher_poll(1); if( __display.active ) { input33_poll(); if( KEYDOWN(KEY_Q) ) { break; } if( KEYDOWN(KEY_W) ) { __scene.camera.t[2] += 0.1; } else if( KEYDOWN(KEY_S) ) { __scene.camera.t[2] -= 0.1; } if( KEYDOWN(KEY_A) ) { __scene.camera.t[0] -= 0.1; } else if( KEYDOWN(KEY_D) ) { __scene.camera.t[0] += 0.1; } if( KEYDOWN(KEY_SPACE) ) { __scene.camera.t[1] -= 0.1; } else if( KEYDOWN(KEY_LEFTCTRL) ) { __scene.camera.t[1] += 0.1; } if( KEYDOWN(KEY_LEFT) ) { __scene.cube.r[1] -= 0.04; } else if( KEYDOWN(KEY_RIGHT) ) { __scene.cube.r[1] += 0.04; } if( KEYDOWN(KEY_UP) ) { __scene.cube.r[0] -= 0.04; } else if( KEYDOWN(KEY_DOWN) ) { __scene.cube.r[0] += 0.04; } if( MOUSEX ) { __mouse.x += MOUSEX; } if( MOUSEY ) { __mouse.y += MOUSEY; } if( __mouse.x < 0 ) __mouse.x = 0; if( __mouse.y < 0 ) __mouse.y = 0; if( __mouse.x >= __display.surface.w ) __mouse.x = __display.surface.w-1; if( __mouse.y >= __display.surface.h ) __mouse.y = __display.surface.h-1; graphics33_update(); graphics33_decompose_scene(); QPRINTF( 5, 5, "fps: %d", FPS-1 ); QPRINTF( 100, 5, "M: x(%d), y(%d)", __mouse.x, __mouse.y ); ui33_draw_mouse(); ui33_draw_messages(); display33_flip(); } time += clock33_get_us() - timeOld; timeOld = clock33_get_us(); if(time >= 1000000) { FPS = fps; time = 0; fps = 0; } ++fps; } display33_term(); logger33_term(); input33_term(); graphics33_term(); scene33_term(); return EXIT_SUCCESS; } static void _term_sighandler( int sig ) { display33_term(); logger33_term(); exit(0); }