mirror of
https://github.com/zhenyan121/Cubed.git
synced 2026-08-09 02:07:04 +08:00
89 lines
2.8 KiB
C++
89 lines
2.8 KiB
C++
#pragma once
|
|
#include "Cubed/audio/audio_engine.hpp"
|
|
#include "Cubed/gameplay/client_world.hpp"
|
|
#include "Cubed/gameplay/network_server.hpp"
|
|
#include "Cubed/gameplay/server_world.hpp"
|
|
#define GLFW_INCLUDE_NONE
|
|
#include "Cubed/camera.hpp"
|
|
#include "Cubed/dev_panel.hpp"
|
|
#include "Cubed/render/renderer.hpp"
|
|
#include "Cubed/texture_manager.hpp"
|
|
#include "Cubed/window.hpp"
|
|
namespace Cubed {
|
|
|
|
class App {
|
|
public:
|
|
struct Argument {
|
|
bool is_client = false;
|
|
int port = 25530;
|
|
std::string ip{"127.0.0.1"};
|
|
std::string player{"Unknown"};
|
|
bool debug_on = true;
|
|
};
|
|
|
|
App();
|
|
~App();
|
|
static void cursor_position_callback(GLFWwindow* window, double xpos,
|
|
double ypos);
|
|
static void key_callback(GLFWwindow* window, int key, int scancode,
|
|
int action, int mods);
|
|
static void mouse_button_callback(GLFWwindow* window, int button,
|
|
int action, int mods);
|
|
static void window_focus_callback(GLFWwindow* window, int focused);
|
|
static void window_reshape_callback(GLFWwindow* window, int new_width,
|
|
int new_height);
|
|
static void mouse_scroll_callback(GLFWwindow* window, double xoffset,
|
|
double yoffset);
|
|
static void cursor_enter_callback(GLFWwindow* window, int entered);
|
|
static void char_callback(GLFWwindow* window, unsigned int ch);
|
|
static int start_cubed_application(int argc, char** argv);
|
|
|
|
static unsigned int seed();
|
|
static float delta_time();
|
|
static float get_fps();
|
|
|
|
Camera& camera();
|
|
DevPanel& dev_panel();
|
|
Renderer& renderer();
|
|
TextureManager& texture_manager();
|
|
Window& window();
|
|
ClientWorld& client_world();
|
|
ServerWorld& server_world();
|
|
const Argument& argument() const;
|
|
AudioEngine& audio();
|
|
|
|
private:
|
|
Camera m_camera;
|
|
TextureManager m_texture_manager;
|
|
NetworkServer m_server;
|
|
std::shared_ptr<NetworkClient> m_client;
|
|
ClientWorld m_client_world;
|
|
|
|
DevPanel m_dev_panel{*this};
|
|
Renderer m_renderer{m_camera, m_client_world, m_texture_manager,
|
|
m_dev_panel};
|
|
|
|
Window m_window{m_renderer};
|
|
|
|
AudioEngine m_audio;
|
|
|
|
inline static double last_time = glfwGetTime();
|
|
inline static double current_time = glfwGetTime();
|
|
inline static double dt = 0.0f;
|
|
inline static double fps_time_count = 0.0f;
|
|
inline static int frame_count = 0;
|
|
inline static int fps = 0;
|
|
Argument m_argument;
|
|
void init(int argc, char** argv);
|
|
void handle_argument(int argc, char** argv);
|
|
void handle_toml();
|
|
auto init_camera();
|
|
auto init_texture();
|
|
auto init_world();
|
|
|
|
void render();
|
|
void run();
|
|
void update();
|
|
};
|
|
|
|
} // namespace Cubed
|