#ifndef CLIENTOBALS_HH #define CLIENTOBALS_HH 1 #pragma once #include "shared/globals.hh" class Config; class ConfigKeyBind; class ConfigGamepadAxis; class ConfigGamepadButton; struct GLFWwindow; struct ImFont; class Dimension; namespace globals { extern Config client_config; extern GLFWwindow *window; // Some gamesystems that aren't really // gameplay-oriented might still use client // framerate to interpolate discrete things // so it's still a good idea to keep these available extern float window_frametime; extern float window_frametime_avg; extern std::uint64_t window_frametime_us; extern std::uint64_t window_framecount; // https://gafferongames.com/post/fix_your_timestep/ extern std::uint64_t fixed_accumulator; extern int width; extern int height; extern float aspect; extern GLuint world_fbo; extern GLuint world_fbo_color; extern GLuint world_fbo_depth; extern std::size_t num_drawcalls; extern std::size_t num_triangles; extern ENetHost *client_host; extern Dimension *dimension; extern entt::entity player; extern ImFont *font_debug; extern ImFont *font_default; extern ImFont *font_chat; extern ConfigKeyBind *gui_keybind_ptr; extern ConfigGamepadAxis *gui_gamepad_axis_ptr; extern ConfigGamepadButton *gui_gamepad_button_ptr; extern unsigned int gui_scale; extern unsigned int gui_screen; extern ALCdevice *sound_dev; extern ALCcontext *sound_ctx; } // namespace globals #endif /* CLIENTOBALS_HH */