#include "Client.h" #include "../engine/GameEngine.h" #include Client* Client::instance; void Client::start() { GameEngine::start(1024, 620, "Test Game", []() { Client::instance = new Client(); }, []() { Client::instance->tick(); }, [](float lag) { Client::instance->renderTick(lag); }); delete instance; } void Client::stop() { GameEngine::stop(); } Client::Client() : chunk(0, 0), texture("resources/textures.png") { //chunk.init(); position.set(0, 0, -2); GameEngine::get()->getShader().setCamera(position.getX(), position.getY(), position.getZ(), 0, 0); GameEngine::get()->getShader().storeCamera(); GameEngine::get()->getKeyManager().map(KEY_LEFT, GLFW_KEY_A); GameEngine::get()->getKeyManager().map(KEY_RIGHT, GLFW_KEY_D); GameEngine::get()->getKeyManager().map(KEY_UP, GLFW_KEY_W); GameEngine::get()->getKeyManager().map(KEY_DOWN, GLFW_KEY_S); GameEngine::get()->getKeyManager().map(KEY_JUMP, GLFW_KEY_SPACE); GameEngine::get()->getKeyManager().map(KEY_SNEAK, GLFW_KEY_LEFT_SHIFT); GameEngine::get()->getKeyManager().map(KEY_CAM_LEFT, GLFW_KEY_H); GameEngine::get()->getKeyManager().map(KEY_CAM_RIGHT, GLFW_KEY_K); GameEngine::get()->getKeyManager().map(KEY_CAM_UP, GLFW_KEY_U); GameEngine::get()->getKeyManager().map(KEY_CAM_DOWN, GLFW_KEY_J); } Client::~Client() { } float oldTicker = 0; float ticker = 0; void Client::tick() { oldTicker = ticker; ticker += 1; if(ticker >= 360) { oldTicker = 0; ticker = 0; } Shader& c = GameEngine::get()->getShader(); c.storeCamera(); KeyManager& key = GameEngine::get()->getKeyManager(); float factor = 0.125f; if(key.isDown(KEY_LEFT)) { position.addMul(c.getLeft(), factor); } if(key.isDown(KEY_RIGHT)) { position.addMul(c.getRight(), factor); } if(key.isDown(KEY_UP)) { position.addMul(c.getFront(), factor); } if(key.isDown(KEY_DOWN)) { position.addMul(c.getBack(), factor); } if(key.isDown(KEY_JUMP)) { position.addMul(c.getUp(), factor); } if(key.isDown(KEY_SNEAK)) { position.addMul(c.getDown(), factor); } if(key.isDown(KEY_CAM_LEFT)) { lengthAngle += 2; } if(key.isDown(KEY_CAM_RIGHT)) { lengthAngle -= 2; } if(key.isDown(KEY_CAM_UP)) { widthAngle += 2; } if(key.isDown(KEY_CAM_DOWN)) { widthAngle -= 2; } c.setCamera(position.getX(), position.getY(), position.getZ(), lengthAngle, widthAngle); } void Client::renderTick(float lag) { /*GameEngine::getCamera().updateView(lag); texture.bind(); GameEngine::setColorEnabled(false); GameEngine::setUseBlending(false); GameEngine::setTextureEnabled(true); chunk.renderTick(lag);*/ GameEngine::get()->getShader().set2DMode(); GameEngine::get()->getShader().setToIdentity(); GameEngine::get()->getShader().translateTo(200, 200, 0); GameEngine::get()->getShader().rotateZ(interpolate(lag, oldTicker, ticker)); GameEngine::get()->getShader().updateModelMatrix(); GameEngine::get()->getShader().setTextMode(); string wusi; float y = 30; wusi = "FPS: " + to_string(GameEngine::get()->getFramesPerSecond()); y = GameEngine::get()->getDirectRenderer().drawString(30, y, true, wusi); }