|
@@ -1,263 +1,138 @@
|
|
|
#include "Client.h"
|
|
|
-#include "../engine/Mouse.h"
|
|
|
-#include "../math/Matrix3D.h"
|
|
|
-#include "../math/Matrix3DStack.h"
|
|
|
-#include "../engine/Key.h"
|
|
|
+#include "../engine/GameEngine.h"
|
|
|
+#include <cmath>
|
|
|
|
|
|
-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::instance;
|
|
|
|
|
|
-Client::Client()
|
|
|
-{
|
|
|
-}
|
|
|
-
|
|
|
-void Client::init()
|
|
|
+void Client::start()
|
|
|
{
|
|
|
- if(texture.load("resources/textures.png"))
|
|
|
+ GameEngine::start(1024, 620, "Test Game", []()
|
|
|
{
|
|
|
- cout << "texture success" << endl;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- cout << "texture fail" << endl;
|
|
|
- }
|
|
|
- if(texture2.load("resources/font8x8.png"))
|
|
|
+ Client::instance = new Client();
|
|
|
+ }, []()
|
|
|
{
|
|
|
- cout << "texture2 success" << endl;
|
|
|
- }
|
|
|
- else
|
|
|
+ Client::instance->tick();
|
|
|
+ }, [](float lag)
|
|
|
{
|
|
|
- cout << "texture2 fail" << endl;
|
|
|
- }
|
|
|
-
|
|
|
- cout << "init" << endl;
|
|
|
- mesh.init();
|
|
|
-
|
|
|
-
|
|
|
- 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);
|
|
|
-
|
|
|
-
|
|
|
- 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);
|
|
|
-
|
|
|
-
|
|
|
- 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);
|
|
|
-
|
|
|
-
|
|
|
- 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);
|
|
|
-
|
|
|
-
|
|
|
- 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);
|
|
|
-
|
|
|
-
|
|
|
- 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();
|
|
|
-
|
|
|
-
|
|
|
- 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);
|
|
|
-
|
|
|
-
|
|
|
- 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);
|
|
|
-
|
|
|
-
|
|
|
- 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);
|
|
|
-
|
|
|
-
|
|
|
- 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);
|
|
|
-
|
|
|
-
|
|
|
- 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);
|
|
|
-
|
|
|
-
|
|
|
- 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();
|
|
|
+ Client::instance->renderTick(lag);
|
|
|
+ });
|
|
|
+ delete instance;
|
|
|
+}
|
|
|
+
|
|
|
+void Client::stop()
|
|
|
+{
|
|
|
+ GameEngine::stop();
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+Client::Client() : chunk(0, 0), texture("resources/textures.png")
|
|
|
+{
|
|
|
+
|
|
|
|
|
|
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);
|
|
|
+ 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;
|
|
|
+ }
|
|
|
|
|
|
- c.storePosition();
|
|
|
- c.storeAngles();
|
|
|
+ Shader& c = GameEngine::get()->getShader();
|
|
|
+ c.storeCamera();
|
|
|
+
|
|
|
+ KeyManager& key = GameEngine::get()->getKeyManager();
|
|
|
|
|
|
float factor = 0.125f;
|
|
|
- if(Key::isDown(KEY_LEFT))
|
|
|
+ if(key.isDown(KEY_LEFT))
|
|
|
{
|
|
|
position.addMul(c.getLeft(), factor);
|
|
|
}
|
|
|
- if(Key::isDown(KEY_RIGHT))
|
|
|
+ if(key.isDown(KEY_RIGHT))
|
|
|
{
|
|
|
position.addMul(c.getRight(), factor);
|
|
|
}
|
|
|
- if(Key::isDown(KEY_UP))
|
|
|
+ if(key.isDown(KEY_UP))
|
|
|
{
|
|
|
position.addMul(c.getFront(), factor);
|
|
|
}
|
|
|
- if(Key::isDown(KEY_DOWN))
|
|
|
+ if(key.isDown(KEY_DOWN))
|
|
|
{
|
|
|
position.addMul(c.getBack(), factor);
|
|
|
}
|
|
|
- if(Key::isDown(KEY_JUMP))
|
|
|
+ if(key.isDown(KEY_JUMP))
|
|
|
{
|
|
|
position.addMul(c.getUp(), factor);
|
|
|
}
|
|
|
- if(Key::isDown(KEY_SNEAK))
|
|
|
+ if(key.isDown(KEY_SNEAK))
|
|
|
{
|
|
|
position.addMul(c.getDown(), factor);
|
|
|
}
|
|
|
|
|
|
- if(Key::isDown(KEY_CAM_LEFT))
|
|
|
+ if(key.isDown(KEY_CAM_LEFT))
|
|
|
{
|
|
|
lengthAngle += 2;
|
|
|
}
|
|
|
- if(Key::isDown(KEY_CAM_RIGHT))
|
|
|
+ if(key.isDown(KEY_CAM_RIGHT))
|
|
|
{
|
|
|
lengthAngle -= 2;
|
|
|
}
|
|
|
- if(Key::isDown(KEY_CAM_UP))
|
|
|
+ if(key.isDown(KEY_CAM_UP))
|
|
|
{
|
|
|
widthAngle += 2;
|
|
|
}
|
|
|
- if(Key::isDown(KEY_CAM_DOWN))
|
|
|
+ if(key.isDown(KEY_CAM_DOWN))
|
|
|
{
|
|
|
widthAngle -= 2;
|
|
|
}
|
|
|
|
|
|
- c.setPosition(position.getX(), position.getY(), position.getZ());
|
|
|
- c.setAngles(lengthAngle, widthAngle);*/
|
|
|
+ c.setCamera(position.getX(), position.getY(), position.getZ(), lengthAngle, widthAngle);
|
|
|
}
|
|
|
|
|
|
void Client::renderTick(float lag)
|
|
|
{
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- 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));
|
|
|
-
|
|
|
+
|
|
|
+ texture.bind();
|
|
|
+ GameEngine::setColorEnabled(false);
|
|
|
+ GameEngine::setUseBlending(false);
|
|
|
GameEngine::setTextureEnabled(true);
|
|
|
- GameEngine::setColorEnabled(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;
|
|
|
- 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);
|
|
|
-
|
|
|
-
|
|
|
+ wusi = "FPS: " + to_string(GameEngine::get()->getFramesPerSecond());
|
|
|
+ y = GameEngine::get()->getDirectRenderer().drawString(30, y, true, wusi);
|
|
|
}
|
|
|
|
|
|
-void Client::start()
|
|
|
-{
|
|
|
- GameEngine::start(1024, 620, "Test Game", init, tick, renderTick);
|
|
|
-
|
|
|
- for(char c = 'a'; c <= 'z'; c++)
|
|
|
- {
|
|
|
- cout << "&" << c << "O";
|
|
|
- }
|
|
|
-}
|
|
|
+
|
|
|
|