#include "Client.h" #include using namespace std; Client::Client() { position.set(0, 0, -2); shader.setCamera(position.getX(), position.getY(), position.getZ(), 0, 0); shader.storeCamera(); keyManager.map(KEY_LEFT, GLFW_KEY_A); keyManager.map(KEY_RIGHT, GLFW_KEY_D); keyManager.map(KEY_UP, GLFW_KEY_W); keyManager.map(KEY_DOWN, GLFW_KEY_S); keyManager.map(KEY_JUMP, GLFW_KEY_SPACE); keyManager.map(KEY_SNEAK, GLFW_KEY_LEFT_SHIFT); keyManager.map(KEY_CAM_LEFT, GLFW_KEY_H); keyManager.map(KEY_CAM_RIGHT, GLFW_KEY_K); keyManager.map(KEY_CAM_UP, GLFW_KEY_U); keyManager.map(KEY_CAM_DOWN, GLFW_KEY_J); mouseManager.map(MOUSE_LEFT, GLFW_MOUSE_BUTTON_1); } Client::~Client() { } float oldTicker = 0; float ticker = 0; void Client::tick() { tps.update(); if(mouseManager.isDown(MOUSE_LEFT)) { cout << mouseManager.getDownTime(MOUSE_LEFT) << endl; } oldTicker = ticker; ticker += 1; if(ticker >= 360) { oldTicker = 0; ticker = 0; } shader.storeCamera(); float factor = 0.125f; if(keyManager.isDown(KEY_LEFT)) { position.addMul(shader.getLeft(), factor); } if(keyManager.isDown(KEY_RIGHT)) { position.addMul(shader.getRight(), factor); } if(keyManager.isDown(KEY_UP)) { position.addMul(shader.getFront(), factor); } if(keyManager.isDown(KEY_DOWN)) { position.addMul(shader.getBack(), factor); } if(keyManager.isDown(KEY_JUMP)) { position.addMul(shader.getUp(), factor); } if(keyManager.isDown(KEY_SNEAK)) { position.addMul(shader.getDown(), factor); } if(keyManager.isDown(KEY_CAM_LEFT)) { lengthAngle += 2; } if(keyManager.isDown(KEY_CAM_RIGHT)) { lengthAngle -= 2; } if(keyManager.isDown(KEY_CAM_UP)) { widthAngle += 2; } if(keyManager.isDown(KEY_CAM_DOWN)) { widthAngle -= 2; } shader.setCamera(position.getX(), position.getY(), position.getZ(), lengthAngle, widthAngle); mouseManager.tick(); keyManager.tick(); } void Client::renderTick(float lag) { fps.update(); shader.set2DMode(); shader.setToIdentity(); shader.translateTo(200, 200, 0); shader.rotateZ(interpolate(lag, oldTicker, ticker)); shader.updateModelMatrix(); shader.setTextMode(); string wusi; float y = 30; wusi = "FPS: " + to_string(fps.getUpdatesPerSecond()); y = directRenderer.drawString(30, y, true, wusi); } void Client::onKeyEvent(int key, int scancode, int action, int mods) { if(action == GLFW_PRESS) { keyManager.press(key); } else if(action == GLFW_RELEASE) { keyManager.release(key); } } void Client::onMouseClick(int button, int action, int mods) { if(action == GLFW_PRESS) { mouseManager.press(button); } else if(action == GLFW_RELEASE) { mouseManager.release(button); } }