intravenous

annotate src/main.cc @ 1:3ea290d35984

it's never going to finish but wth :)
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 21 Apr 2012 22:42:43 +0300
parents 2b30f261f641
children 472c28b8b875
rev   line source
nuclear@0 1 #include <stdio.h>
nuclear@0 2 #include <assert.h>
nuclear@0 3 #include "opengl.h"
nuclear@0 4 #include "game.h"
nuclear@0 5
nuclear@0 6 #define FOV_DEG 50.0
nuclear@0 7
nuclear@0 8 void disp();
nuclear@0 9 void idle();
nuclear@0 10 void reshape(int x, int y);
nuclear@0 11 void key_press(unsigned char key, int x, int y);
nuclear@0 12 void key_release(unsigned char key, int x, int y);
nuclear@1 13 void mouse(int bn, int state, int x, int y);
nuclear@1 14 void motion(int x, int y);
nuclear@0 15
nuclear@0 16 int win_xsz, win_ysz;
nuclear@0 17
nuclear@0 18 int main(int argc, char **argv)
nuclear@0 19 {
nuclear@0 20 glutInitWindowSize(800, 450);
nuclear@0 21 glutInit(&argc, argv);
nuclear@0 22 glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
nuclear@0 23 glutCreateWindow("intravenous interventor");
nuclear@0 24
nuclear@0 25 glutDisplayFunc(disp);
nuclear@0 26 glutIdleFunc(idle);
nuclear@0 27 glutReshapeFunc(reshape);
nuclear@0 28 glutKeyboardFunc(key_press);
nuclear@0 29 glutKeyboardUpFunc(key_release);
nuclear@1 30 glutMouseFunc(mouse);
nuclear@1 31 glutMotionFunc(motion);
nuclear@0 32
nuclear@0 33 if(!game_init()) {
nuclear@0 34 return 1;
nuclear@0 35 }
nuclear@0 36
nuclear@0 37 glutMainLoop();
nuclear@0 38 return 0;
nuclear@0 39 }
nuclear@0 40
nuclear@0 41 void idle()
nuclear@0 42 {
nuclear@0 43 glutPostRedisplay();
nuclear@0 44 }
nuclear@0 45
nuclear@0 46 void disp()
nuclear@0 47 {
nuclear@0 48 unsigned long msec = glutGet(GLUT_ELAPSED_TIME);
nuclear@0 49 // update any game logic
nuclear@0 50 game_update(msec);
nuclear@0 51
nuclear@1 52 glClearColor(0.05, 0.05, 0.05, 1.0);
nuclear@0 53 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
nuclear@0 54
nuclear@0 55 // render stuff
nuclear@0 56 game_draw();
nuclear@0 57
nuclear@0 58 glutSwapBuffers();
nuclear@0 59 assert(glGetError() == GL_NO_ERROR);
nuclear@0 60 }
nuclear@0 61
nuclear@0 62 void reshape(int x, int y)
nuclear@0 63 {
nuclear@0 64 glViewport(0, 0, x, y);
nuclear@0 65
nuclear@0 66 glMatrixMode(GL_PROJECTION);
nuclear@0 67 glLoadIdentity();
nuclear@0 68 gluPerspective(FOV_DEG, (float)x / (float)y, 1.0, 1000.0);
nuclear@0 69
nuclear@0 70 win_xsz = x;
nuclear@0 71 win_ysz = y;
nuclear@0 72 }
nuclear@0 73
nuclear@0 74 void key_press(unsigned char key, int x, int y)
nuclear@0 75 {
nuclear@0 76 game_input_keyb(key, 1);
nuclear@0 77 }
nuclear@0 78
nuclear@0 79 void key_release(unsigned char key, int x, int y)
nuclear@0 80 {
nuclear@0 81 game_input_keyb(key, 0);
nuclear@0 82 }
nuclear@1 83
nuclear@1 84 void mouse(int bn, int state, int x, int y)
nuclear@1 85 {
nuclear@1 86 game_input_mbutton(bn - GLUT_LEFT_BUTTON, state == GLUT_DOWN, x, y);
nuclear@1 87 }
nuclear@1 88
nuclear@1 89 void motion(int x, int y)
nuclear@1 90 {
nuclear@1 91 game_input_mmotion(x, y);
nuclear@1 92 }