#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 coreOpenWindow(const CoreWindowOptions* options); void coreCloseWindow(void); void coreShowWindow(void); void coreTrapWindowCursor(void); void coreFreeWindowCursor(void); bool coreIsWindowCursorTrapped(void); const CoreIntVector2* coreGetWindowSize(void); bool coreHasWindowSizeChanged(void); bool coreShouldWindowClose(void); void coreSetWindowRunHandler(CoreWindowRunHandler wr, void* data); void coreSetWindowTickHandler(CoreWindowTickHandler t, void* data); void coreSetWindowRenderHandler(CoreWindowRenderHandler r, void* data); void coreSetWindowNanosPerTick(i64 nanos); void coreRunWindow(void); float coreGetWindowTicksPerSecond(void); float coreGetWindowFramesPerSecond(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 coreAddButton(const char* name); void coreBindKeyToButton(CoreButton b, int key); void coreBindGamepadToButton(CoreButton b, int gamepadButton); void coreBindMouseToButton(CoreButton b, int mouseButton); CoreVector2 coreGetLastMousePosition(void); CoreVector2 coreGetMousePosition(void); CoreVector2 coreGetLeftGamepadAxis(void); CoreVector2 coreGetRightGamepadAxis(void); float coreGetLeftGamepadTrigger(void); float coreGetRightGamepadTrigger(void); bool coreIsButtonDown(CoreButton b); int coreGetButtonDownTime(CoreButton b); bool coreWasButtonReleased(CoreButton b); const char* coreGetButtonName(CoreButton b); #ifdef IMPORT_CORE #define WindowRunHandler CoreWindowRunHandler #define WindowTickHandler CoreWindowTickHandler #define WindowRenderHandler CoreWindowRenderHandler #define WindowOptions CoreWindowOptions #define openWindow coreOpenWindow #define closeWindow coreCloseWindow #define showWindow coreShowWindow #define trapWindowCursor coreTrapWindowCursor #define freeWindowCursor coreFreeWindowCursor #define isWindowCursorTrapped coreIsWindowCursorTrapped #define getWindowSize coreGetWindowSize #define hasWindowSizeChanged coreHasWindowSizeChanged #define shouldWindowClose coreShouldWindowClose #define setWindowRunHandler coreSetWindowRunHandler #define setWindowTickHandler coreSetWindowTickHandler #define setWindowRenderHandler coreSetWindowRenderHandler #define setWindowNanosPerTick coreSetWindowNanosPerTick #define runWindow coreRunWindow #define getWindowTicksPerSecond coreGetWindowTicksPerSecond #define getWindowFramesPerSecond coreGetWindowFramesPerSecond #define Button CoreButton #define addButton coreAddButton #define bindKeyToButton coreBindKeyToButton #define bindGamepadToButton coreBindGamepadToButton #define bindMouseToButton coreBindMouseToButton #define getLastMousePosition coreGetLastMousePosition #define getMousePosition coreGetMousePosition #define getLeftGamepadAxis coreGetLeftGamepadAxis #define getRightGamepadAxis coreGetRightGamepadAxis #define getLeftGamepadTrigger coreGetLeftGamepadTrigger #define getRightGamepadTrigger coreGetRightGamepadTrigger #define isButtonDown coreIsButtonDown #define getButtonDownTime coreGetButtonDownTime #define wasButtonReleased coreWasButtonReleased #define getButtonName coreGetButtonName #endif #endif