#include "Client.h" #include "../engine/Mouse.h" #include "../math/Matrix3D.h" #include "../math/Matrix3DStack.h" #include "../engine/Key.h" Mesh Client::mesh; TextureMesh Client::tmesh; Vector3D Client::position; Texture Client::texture; Texture Client::texture2; float Client::lengthAngle = 0; float Client::widthAngle = 0; Client::Client() { } void Client::init() { if(texture.load("resources/textures.png")) { cout << "texture success" << endl; } else { cout << "texture fail" << endl; } if(texture2.load("resources/font8x8.png")) { cout << "texture2 success" << endl; } else { cout << "texture2 fail" << endl; } cout << "init" << endl; mesh.init(); // bottom mesh.addPoint(0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f); mesh.addPoint(1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f); mesh.addPoint(0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f); mesh.addPoint(1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f); mesh.addPoint(1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f); mesh.addPoint(0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f); // top mesh.addPoint(0.0f, 1.0f, 0.0f, 0.5f, 0.0f, 0.0f, 1.0f); mesh.addPoint(0.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 1.0f); mesh.addPoint(1.0f, 1.0f, 0.0f, 0.5f, 0.0f, 0.0f, 1.0f); mesh.addPoint(1.0f, 1.0f, 0.0f, 0.5f, 0.0f, 0.0f, 1.0f); mesh.addPoint(0.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 1.0f); mesh.addPoint(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 1.0f); // right mesh.addPoint(1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f); mesh.addPoint(1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f); mesh.addPoint(1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f); mesh.addPoint(1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f); mesh.addPoint(1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f); mesh.addPoint(1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f); // left mesh.addPoint(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 1.0f); mesh.addPoint(0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.5f, 1.0f); mesh.addPoint(0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.5f, 1.0f); mesh.addPoint(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 1.0f); mesh.addPoint(0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.5f, 1.0f); mesh.addPoint(0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.5f, 1.0f); // back mesh.addPoint(0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f); mesh.addPoint(1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f); mesh.addPoint(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f); mesh.addPoint(0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f); mesh.addPoint(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f); mesh.addPoint(0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f); // front mesh.addPoint(0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, 1.0f); mesh.addPoint(1.0f, 1.0f, 0.0f, 0.0f, 0.5f, 0.0f, 1.0f); mesh.addPoint(1.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, 1.0f); mesh.addPoint(0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, 1.0f); mesh.addPoint(0.0f, 1.0f, 0.0f, 0.0f, 0.5f, 0.0f, 1.0f); mesh.addPoint(1.0f, 1.0f, 0.0f, 0.0f, 0.5f, 0.0f, 1.0f); mesh.build(); tmesh.init(); // bottom tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.125f, 0.0f); tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0f); tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.125f, 0.0625f); tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0f); tmesh.addPoint(1.0f, 0.0f, 1.0f, 0.1875f, 0.0625f); tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.125f, 0.0625f); // top tmesh.addPoint(0.0f, 1.0f, 0.0f, 0.25f, 0.0f); tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0625f); tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.3125f, 0.0f); tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.3125f, 0.0f); tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0625f); tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.3125f, 0.0625f); // right tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0625f); tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f); tmesh.addPoint(1.0f, 0.0f, 1.0f, 0.25f, 0.0625f); tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0625f); tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.1875f, 0.0f); tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f); // left tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f); tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.25f, 0.0625f); tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0f); tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f); tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0f); tmesh.addPoint(0.0f, 1.0f, 0.0f, 0.1875f, 0.0f); // back tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.1875f, 0.0625f); tmesh.addPoint(1.0f, 0.0f, 1.0f, 0.25f, 0.0625f); tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f); tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.1875f, 0.0625f); tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f); tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.1875f, 0.0f); // front tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f); tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.25f, 0.0f); tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.25f, 0.0625f); tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f); tmesh.addPoint(0.0f, 1.0f, 0.0f, 0.1875f, 0.0f); tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.25f, 0.0f); tmesh.build(); position.set(0, 0, -2); GameEngine::getCamera().setPosition(position.getX(), position.getY(), position.getZ()); GameEngine::getCamera().storePosition(); Key::map(KEY_LEFT, GLFW_KEY_A); Key::map(KEY_RIGHT, GLFW_KEY_D); Key::map(KEY_UP, GLFW_KEY_W); Key::map(KEY_DOWN, GLFW_KEY_S); Key::map(KEY_JUMP, GLFW_KEY_SPACE); Key::map(KEY_SNEAK, GLFW_KEY_LEFT_SHIFT); Key::map(KEY_CAM_LEFT, GLFW_KEY_H); Key::map(KEY_CAM_RIGHT, GLFW_KEY_K); Key::map(KEY_CAM_UP, GLFW_KEY_U); Key::map(KEY_CAM_DOWN, GLFW_KEY_J); } void Client::tick() { /*Camera& c = GameEngine::getCamera(); c.storePosition(); c.storeAngles(); 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.setPosition(position.getX(), position.getY(), position.getZ()); c.setAngles(lengthAngle, widthAngle);*/ } void Client::renderTick(float lag) { //GameEngine::getCamera().updateView(lag); //texture.bind(); /*GameEngine::setTextureEnabled(false); GameEngine::setColorEnabled(true); GameEngine::getDirectRenderer().prepare(); GameEngine::getDirectRenderer().drawRectangle(0, 0, 200, 300, 0, 0, 1, 1, Color::getColor(255, 0, 0)); GameEngine::getDirectRenderer().drawRectangle(200, 0, 400, 300, 0, 0, 1, 1, Color::getColor(0, 255, 0)); GameEngine::getDirectRenderer().drawRectangle(400, 0, 600, 300, 0, 0, 1, 1, Color::getColor(0, 0, 255)); GameEngine::setTextureEnabled(true); GameEngine::setColorEnabled(true); string wusi; GameEngine::setUseBlending(true); float y = 30; y = GameEngine::getDirectRenderer().drawString(30, y, true, wusi); wusi = "FPS: " + to_string(GameEngine::getFramesPerSecond()); y = GameEngine::getDirectRenderer().drawString(30, y, true, wusi); wusi = "TPS: " + to_string(GameEngine::getTicksPerSecond()); y = GameEngine::getDirectRenderer().drawString(30, y, true, wusi);*/ GameEngine::setTextureEnabled(true); GameEngine::setColorEnabled(true); GameEngine::setUseBlending(true); GameEngine::getDirectRenderer().prepare(); string fps = "FPS: " + to_string(GameEngine::getFramesPerSecond()); GameEngine::getDirectRenderer().drawString(30, 30, true, fps); //tmesh.draw(); //cout << "renderTick" << endl; } void Client::start() { GameEngine::start(1024, 620, "Test Game", init, tick, renderTick); for(char c = 'a'; c <= 'z'; c++) { cout << "&" << c << "O"; } }