Clean up code for portability and server initialization

* Practically move all non-commented code from main.cpp
* Create Client.cpp/h class and move logic out of main.cpp
* Create default constructor for Renderer
* Fix definition of default:stone
* Change GameInstance:update() to use a double instead of a GLfloat
master
aurailus 2019-01-06 23:31:13 -08:00
parent edbe03d76c
commit a40c85905a
10 changed files with 159 additions and 44 deletions

View File

@ -6,5 +6,6 @@
<option name="processLiterals" value="true" />
<option name="processComments" value="true" />
</inspection_tool>
<inspection_tool class="UnusedIncludeDirective" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>

View File

@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 3.12)
project(zeus)
set(CMAKE_CXX_STANDARD 14)
#set(CMAKE_CXX_FLAGS "-s -O3")
include_directories(lib/glew/include/GL)
include_directories(lib/glfw_linux/include)
@ -10,11 +9,10 @@ include_directories(lib/glm)
include_directories(lib/stb_image)
include_directories(lib/cute)
include_directories(lib/sol)
#include_directories(Libraries/boost_1_68_0)
include_directories(lib/asio-1.12.2/include)
find_package(OpenGL REQUIRED)
find_package(glfw3 REQUIRED)
#find_package(Boost COMPONENTS system thread)
link_directories(lib/glew/lib)
@ -70,6 +68,16 @@ add_executable(zeus
zeus/engine/graphics/TextBuilder.h
zeus/engine/graphics/TextBuilder.cpp
zeus/engine/graphics/HudText.cpp
zeus/engine/graphics/HudText.h zeus/game/gui/DebugGui.cpp zeus/game/gui/DebugGui.h zeus/game/world/Player.cpp zeus/game/world/Player.h zeus/engine/Ray.cpp zeus/engine/Ray.h zeus/lua_api/l_register_blockmodel.cpp zeus/lua_api/l_register_blockmodel.h zeus/lua_api/LuaApi.cpp zeus/lua_api/LuaApi.h)
zeus/engine/graphics/HudText.h
zeus/game/gui/DebugGui.cpp
zeus/game/gui/DebugGui.h
zeus/game/world/Player.cpp
zeus/game/world/Player.h
zeus/engine/Ray.cpp
zeus/engine/Ray.h
zeus/lua_api/l_register_blockmodel.cpp
zeus/lua_api/l_register_blockmodel.h
zeus/lua_api/LuaApi.cpp
zeus/lua_api/LuaApi.h zeus/client/Client.cpp zeus/client/Client.h)
target_link_libraries(zeus ${OPENGL_gl_LIBRARY} glfw libGLEW.so pthread lua dl)
target_link_libraries(zeus ${OPENGL_gl_LIBRARY} glfw libGLEW.so pthread lua dl)

View File

@ -374,7 +374,7 @@ zeus.register_block('default:dirt', {
})
-- Stone
zeus.register_block('default:desert_cobblestone', {
zeus.register_block('default:stone', {
name = "Stone",
model = "default:block",
textures = {"default_stone_dark"}

View File

@ -1,47 +1,74 @@
#pragma clang diagnostic push
#pragma ide diagnostic ignored "OCUnusedMacroInspection"
#define STB_IMAGE_IMPLEMENTATION
#pragma clang diagnostic pop
#include <iostream>
#include "client/Client.h"
#include "engine/Window.h"
#include "engine/Camera.h"
//std::string make_daytime_string() {
// std::time_t now = std::time(nullptr);
// return "HIfhjdsfjhglfgkhkdfjhbhnjgdsk,jfgbhdksijfghgjfkwaslodfjgbhfdsklofjghnbgkmdsk,lfkgbna";
//// return std::ctime(&now);
//}
#include "engine/Timer.h"
#include "game/GameInstance.h"
#include "engine/graphics/Renderer.h"
GLfloat deltaTime = 0.0f;
GLfloat lastTime = 0.0f;
double fps = 0.0;
//void server() {
// try {
// asio::io_context io_context;
// udp::socket socket(io_context, udp::endpoint(udp::v4(), 12345));
//
// for (;;) {
// char recv_buf[128];
// udp::endpoint remote_endpoint; //Populated by the next line
//
// Timer t("owo");
// socket.receive_from(asio::buffer(recv_buf), remote_endpoint);
// t.printElapsedSeconds();
// std::cout << recv_buf << std::endl;
//
// std::string message = make_daytime_string();
//
// asio::error_code ignored_error;
// socket.send_to(asio::buffer(message), remote_endpoint, 0, ignored_error);
//
// //Socket is garbage collected here, so like, don't do that?
// }
// }
// catch (std::exception& e) {
// std::cerr << e.what() << std::endl;
// }
//}
int main(int argc, char* argv[]) {
Timer boot("Initialization");
// auto serverThread = new std::thread(server);
// this_thread::sleep_for(0.2s);
//
// try {
// asio::io_context io_context;
// udp::resolver resolver(io_context);
// udp::endpoint receiver_endpoint = *resolver.resolve(udp::v4(), "127.0.0.1", "12345").begin();
//
// udp::socket socket(io_context);
// socket.open(udp::v4());
//
// char send_buf[3] = {'a', 'b', 'c'};
// socket.send_to(asio::buffer(send_buf), receiver_endpoint);
//
// char recv_buf[20];
//
// udp::endpoint sender_endpoint; //Populated by the next line
// size_t len = socket.receive_from(asio::buffer(recv_buf), sender_endpoint);
//
// sender_endpoint.
//
// std::cout.write(recv_buf, len);
//// std::cout << "Done " << len << std::endl;
// }
// catch (std::exception& e) {
// std::cout << e.what() << std::endl;
// }
auto renderer = new Renderer(1366, 768);
auto game = new GameInstance();
game->initialize(renderer);
boot.printElapsedSeconds();
//Game Loop
while (!renderer->getWindow()->getShouldClose()) {
Timer t("Game Loop");
auto now = (GLfloat)glfwGetTime();
deltaTime = now - lastTime;
lastTime = now;
//Get & Handle Input
glfwPollEvents();
//Update game instance
game->update(deltaTime, fps);
game->draw();
fps = 1000 / (t.elapsedNs() / 1000000.0);
}
return 0;
Client c(1366, 768);
c.start();
return 0;
}

42
zeus/client/Client.cpp Normal file
View File

@ -0,0 +1,42 @@
//
// Created by aurailus on 06/01/19.
//
#include "Client.h"
Client::Client() = default;
Client::Client(int width, int height) {
renderer = new Renderer(width, height);
}
void Client::start() {
scene = new GameInstance();
scene->initialize(renderer);
while (!renderer->getWindow()->getShouldClose()) loop();
}
void Client::loop() {
Timer t("Game Loop");
double now = glfwGetTime();
double delta = now - timeElapsed;
timeElapsed = now;
glfwPollEvents();
scene->update(delta, fps);
scene->draw();
fps = 1000 / (t.elapsedNs() / 1000000.0);
}
void Client::cleanup() {
delete scene;
delete renderer;
}
Client::~Client() {
cleanup();
}

34
zeus/client/Client.h Normal file
View File

@ -0,0 +1,34 @@
//
// Created by aurailus on 06/01/19.
//
#ifndef ZEUS_CLIENT_H
#define ZEUS_CLIENT_H
#include "../game/GameInstance.h"
#include "../engine/graphics/Renderer.h"
class Client {
public:
Client();
Client(int width, int height);
void start();
~Client();
private:
Renderer* renderer;
GameInstance* scene;
double fps = 0.0;
void loop();
void cleanup();
double timeElapsed = 0.0f;
};
#endif //ZEUS_CLIENT_H

View File

@ -4,6 +4,8 @@
#include "Renderer.h"
Renderer::Renderer() : Renderer(1366, 768) {};
Renderer::Renderer(GLint winWidth, GLint winHeight) {
window = new Window(winWidth, winHeight);

View File

@ -13,6 +13,7 @@
class Renderer {
public:
Renderer();
Renderer(GLint winWidth, GLint winHeight);
void update();

View File

@ -75,7 +75,7 @@ void GameInstance::initialize(Renderer* renderer) {
guiEntities.push_back(crosshair);
}
void GameInstance::update(GLfloat deltaTime, double fps) {
void GameInstance::update(double deltaTime, double fps) {
renderer->update();
auto camera = renderer->getCamera();

View File

@ -24,7 +24,7 @@ public:
void initialize(Renderer* renderer);
void update(GLfloat deltaTime, double fps);
void update(double deltaTime, double fps);
void draw();
public: