|
@@ -8,8 +8,6 @@
|
|
|
#include "gaming-core/rendering/WindowOptions.h"
|
|
|
#include "gaming-core/utils/Clock.h"
|
|
|
#include "gaming-core/wrapper/GL.h"
|
|
|
-#include "gaming-core/wrapper/GLEW.h"
|
|
|
-#include "gaming-core/wrapper/GLFW.h"
|
|
|
#include "rendering/Renderer.h"
|
|
|
|
|
|
bool parseArgs(int argAmount, char* const* args, WindowOptions& options) {
|
|
@@ -26,13 +24,14 @@ bool parseArgs(int argAmount, char* const* args, WindowOptions& options) {
|
|
|
int main(int argAmount, char* const* args) {
|
|
|
Size size(800, 480);
|
|
|
WindowOptions options(3, 0, size, true, "Pigine");
|
|
|
- if(parseArgs(argAmount, args, options) || GLFW::init()) {
|
|
|
+ if(parseArgs(argAmount, args, options)) {
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
TextInput* input = nullptr;
|
|
|
- Window window(input, options);
|
|
|
- if(window.hasError() || GLEW::init()) {
|
|
|
+ Window w(input, options);
|
|
|
+ if(w.getError().has()) {
|
|
|
+ std::cout << w.getError().message << '\n';
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -41,43 +40,42 @@ int main(int argAmount, char* const* args) {
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- Renderer renderer(shader);
|
|
|
+ Controller controller(w.getButtons());
|
|
|
+ static Game game(controller, w.getFrameClock(), w.getTickClock(), size);
|
|
|
|
|
|
- Clock fps;
|
|
|
- Clock tps;
|
|
|
+ struct GameBase {
|
|
|
+ Window& window;
|
|
|
+ Game& game;
|
|
|
+ Shader& shader;
|
|
|
+ Renderer renderer;
|
|
|
|
|
|
- Buttons buttons(window);
|
|
|
- Controller controller(buttons);
|
|
|
- static Game game(controller, fps, tps, size);
|
|
|
-
|
|
|
- window.show();
|
|
|
-
|
|
|
- const Clock::Nanos nanosPerTick = 10'000'000;
|
|
|
- Clock::Nanos lag = 0;
|
|
|
- while(!window.shouldClose() && game.isRunning()) {
|
|
|
- GL::printError("GL-Error");
|
|
|
+ GameBase(Window& w, Game& g, Shader& s)
|
|
|
+ : window(w), game(g), shader(s), renderer(s) {
|
|
|
+ }
|
|
|
|
|
|
- lag += fps.update();
|
|
|
- while(lag >= nanosPerTick) {
|
|
|
- lag -= nanosPerTick;
|
|
|
- tps.update();
|
|
|
- buttons.tick();
|
|
|
+ void tick() {
|
|
|
game.tick();
|
|
|
}
|
|
|
|
|
|
- size = window.getSize();
|
|
|
- GL::setViewport(size.width, size.height);
|
|
|
+ void render(float lag) {
|
|
|
+ GL::clear();
|
|
|
+ const Size& size = window.getSize();
|
|
|
+ GL::setViewport(size.width, size.height);
|
|
|
|
|
|
- Matrix view;
|
|
|
- view.scale(Vector3(2.0f / size.width, -2.0f / size.height, 1.0f));
|
|
|
- view.translate(Vector3(-1.0f, 1.0f, 0.0f));
|
|
|
- shader.setMatrix("view", view.getValues());
|
|
|
+ Matrix view;
|
|
|
+ view.scale(Vector3(2.0f / size.width, -2.0f / size.height, 1.0f));
|
|
|
+ view.translate(Vector3(-1.0f, 1.0f, 0.0f));
|
|
|
+ shader.setMatrix("view", view.getValues());
|
|
|
|
|
|
- game.render(static_cast<float>(lag) / nanosPerTick, renderer);
|
|
|
- window.swapBuffers();
|
|
|
- GL::clear();
|
|
|
+ game.render(lag, renderer);
|
|
|
+ GL::printError("GL-Error");
|
|
|
+ }
|
|
|
|
|
|
- glfwPollEvents();
|
|
|
- }
|
|
|
+ bool isRunning() const {
|
|
|
+ return game.isRunning();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ GameBase base(w, game, shader);
|
|
|
+ w.run(base, 10'000'000);
|
|
|
return 0;
|
|
|
}
|