#ifndef _SYSTEMCLASS_H_ #define _SYSTEMCLASS_H_ #define WIN32_LEAN_AND_MEAN static bool DEBUG_MODE = true; #include "Logger.h" #include "input_class.h" #include "application_class.h" #include "imguiManager.h" #include #include #include #include "../resources.h" #include class system_class { public: system_class(); system_class(const system_class&); ~system_class(); bool initialize(); void shutdown(); void run(); LRESULT CALLBACK message_handler(HWND, UINT, WPARAM, LPARAM); void send_path(wchar_t* path, std::filesystem::path w_folder); std::shared_ptr get_application_class() const { return application_; } void set_application_class(std::shared_ptr application) { application_ = std::move(application); } std::shared_ptr get_input_class() const { return input_; } void set_input(std::shared_ptr input) { input_ = std::move(input); } HWND get_hwnd() const { return hwnd_; } void set_d_3D_mock(d_3d_class* mock) {application_->set_direct_3d(mock);} protected: bool frame(); void initialize_windows(int&, int&); void shutdown_windows(); private: LPCWSTR application_name_; HINSTANCE hinstance_; HWND hwnd_; std::shared_ptr input_; std::shared_ptr application_; std::shared_ptr imgui_manager_; int initial_window_width_; int initial_window_height_; bool is_direct_3d_initialized_; bool is_resizing_ = false; bool is_debug_key_pressed_ = false; std::mutex render_mutex_; }; ///////////////////////// // FUNCTION PROTOTYPES // ///////////////////////// static LRESULT CALLBACK wnd_proc(HWND, UINT, WPARAM, LPARAM); ///////////// // GLOBALS // ///////////// static system_class* application_handle = 0; #endif