nuclear@3: #include nuclear@0: #include "opengl.h" nuclear@0: #include "game_part.h" nuclear@0: #include "level.h" nuclear@0: nuclear@4: Game::Game() nuclear@4: { nuclear@4: cam_theta = 0; nuclear@4: cam_phi = 45; nuclear@4: cam_dist = 5; nuclear@4: } nuclear@4: nuclear@0: Game::~Game() {} nuclear@0: nuclear@2: bool Game::init() nuclear@2: { nuclear@2: if(!level.load("data/test.level")) { nuclear@2: return false; nuclear@2: } nuclear@2: return true; nuclear@2: } nuclear@2: nuclear@3: void Game::start() nuclear@3: { nuclear@3: Part::start(); nuclear@3: nuclear@3: glEnable(GL_DEPTH_TEST); nuclear@3: } nuclear@3: nuclear@0: void Game::draw() const nuclear@0: { nuclear@3: glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); nuclear@0: nuclear@0: glMatrixMode(GL_MODELVIEW); nuclear@0: glLoadIdentity(); nuclear@4: glTranslatef(0, 0, -cam_dist); nuclear@4: glRotatef(cam_phi, 1, 0, 0); nuclear@4: glRotatef(cam_theta, 0, 1, 0); nuclear@0: nuclear@3: level.draw(); nuclear@3: } nuclear@3: nuclear@3: void Game::reshape(int x, int y) nuclear@3: { nuclear@3: glMatrixMode(GL_PROJECTION); nuclear@3: glLoadIdentity(); nuclear@3: gluPerspective(45.0, (float)x / (float)y, 0.5, 500); nuclear@0: } nuclear@0: nuclear@0: void Game::key(int key, bool pressed) nuclear@0: { nuclear@0: switch(key) { nuclear@0: case 27: nuclear@3: exit(0); nuclear@3: //cur_part = menu_part; nuclear@0: break; nuclear@0: nuclear@0: default: nuclear@0: break; nuclear@0: } nuclear@0: } nuclear@4: nuclear@4: static bool bnstate[32]; nuclear@4: static int prev_x, prev_y; nuclear@4: nuclear@4: void Game::mouse_button(int bn, bool pressed) nuclear@4: { nuclear@4: bnstate[bn] = pressed; nuclear@4: nuclear@4: if(pressed) { nuclear@4: if(bn == 3) { nuclear@4: cam_dist -= 0.2; nuclear@4: if(cam_dist < 0) { nuclear@4: cam_dist = 0; nuclear@4: } nuclear@4: } nuclear@4: if(bn == 4) { nuclear@4: cam_dist += 0.2; nuclear@4: } nuclear@4: } nuclear@4: } nuclear@4: nuclear@4: void Game::mouse_motion(int x, int y) nuclear@4: { nuclear@4: int dx = x - prev_x; nuclear@4: int dy = y - prev_y; nuclear@4: prev_x = x; nuclear@4: prev_y = y; nuclear@4: nuclear@4: if(bnstate[2]) { nuclear@4: cam_theta += dx * 0.5; nuclear@4: cam_phi += dy * 0.5; nuclear@4: nuclear@4: if(cam_phi < 0) cam_phi = 0; nuclear@4: if(cam_phi > 90) cam_phi = 90; nuclear@4: } nuclear@4: }