/* * Game.h * * Copyright (C) 2009 Matthias Schiffer * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by the * Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along * with this program. If not, see . */ #ifndef ZOOM_GAME_H_ #define ZOOM_GAME_H_ #include "Renderer.h" #include #include namespace Zoom { class Level; class Triangle; class Game { public: enum Input { FORWARD = (1 << 0), BACKWARD = (1 << 1), LEFT = (1 << 2), RIGHT = (1 << 3) }; Game(); bool loadLevel(const std::string &name); void resize(int width, int height); void setInput(unsigned input) { this->input = input; } bool doesCollide(const vmml::vec3f &move) const; void turn(float x, float y); void run(int delta); void render(); private: static const float PLAYER_SPEED; static const float PLAYER_RADIUS; Renderer renderer; boost::shared_ptr level; std::vector triangles; vmml::vec3f playerPos; vmml::mat4f playerRotY; float playerRotX; unsigned input; float lightPos; }; } #endif /* ZOOM_GAME_H_ */