#ifndef CORE_WINDOW_H #define CORE_WINDOW_H #include typedef bool (*CoreWindowRunHandler)(void* data); typedef void (*CoreWindowTickHandler)(void* data); typedef void (*CoreWindowRenderHandler)(void* data, float lag); typedef struct { CoreIntVector2 size; bool fullscreen; const char* name; } CoreWindowOptions; bool coreWindowOpen(const CoreWindowOptions* options); void coreWindowClose(void); void coreWindowShow(void); void coreWindowTrapCursor(void); void coreWindowFreeCursor(void); bool coreWindowIsCursorTrapped(void); const CoreIntVector2* coreWindowGetSize(void); bool CoreWindowSizeChanged(void); bool coreWindowShouldClose(void); void coreWindowRunHandler(CoreWindowRunHandler wr, void* data); void coreWindowTickHandler(CoreWindowTickHandler t, void* data); void coreWindowRenderHandler(CoreWindowRenderHandler r, void* data); void coreWindowNanosPerTick(i64 nanos); void coreWindowRun(void); float coreWindowTicksPerSecond(void); float coreWindowFramesPerSecond(void); // namespace Input { // void setLimit(int limit); // void reset(); // void enable(); // void disable(); // bool isEnabled(); // void fill(const char* s); // int getCursor(); // void setCursor(int index); // const List& getUnicode(); // // template // void toString(StringBuffer& s) { // for(uint32 c : getUnicode()) { // s.appendUnicode(c); // } // } // } typedef size_t CoreButton; CoreButton coreControlsAdd(const char* name); void coreControlsBindKey(CoreButton b, int key); void coreControlsBindGamepad(CoreButton b, int gamepadButton); void coreControlsBindMouse(CoreButton b, int mouseButton); CoreVector2 coreControlsLastMousePosition(void); CoreVector2 coreControlsMousePosition(void); CoreVector2 coreControlsLeftGamepadAxis(void); CoreVector2 coreControlsRightGamepadAxis(void); float coreControlsLeftGamepadTrigger(void); float coreControlsRightGamepadTrigger(void); bool coreControlsDown(CoreButton b); int coreControlsDownTime(CoreButton b); bool coreControlsReleased(CoreButton b); const char* coreControlsName(CoreButton b); #endif