rc_client_raintegration.h (4250B)
1 #ifndef RC_CLIENT_RAINTEGRATION_H 2 #define RC_CLIENT_RAINTEGRATION_H 3 4 #ifndef _WIN32 5 #undef RC_CLIENT_SUPPORTS_RAINTEGRATION /* Windows required for RAIntegration */ 6 #endif 7 8 #include <stdint.h> 9 10 #include "rc_export.h" 11 12 RC_BEGIN_C_DECLS 13 14 typedef struct rc_client_t rc_client_t; /* forward reference; in rc_client.h */ 15 16 /* types needed to implement raintegration */ 17 18 typedef struct rc_client_raintegration_menu_item_t { 19 const char* label; 20 uint32_t id; 21 uint8_t checked; 22 uint8_t enabled; 23 } rc_client_raintegration_menu_item_t; 24 25 typedef struct rc_client_raintegration_menu_t { 26 rc_client_raintegration_menu_item_t* items; 27 uint32_t num_items; 28 } rc_client_raintegration_menu_t; 29 30 enum { 31 RC_CLIENT_RAINTEGRATION_ACHIEVEMENT_STATE_NONE = 0, 32 RC_CLIENT_RAINTEGRATION_ACHIEVEMENT_STATE_PUBLISHED = 1, 33 RC_CLIENT_RAINTEGRATION_ACHIEVEMENT_STATE_LOCAL = 2, 34 RC_CLIENT_RAINTEGRATION_ACHIEVEMENT_STATE_MODIFIED = 3, 35 RC_CLIENT_RAINTEGRATION_ACHIEVEMENT_STATE_INSECURE = 4, 36 }; 37 38 enum { 39 RC_CLIENT_RAINTEGRATION_EVENT_TYPE_NONE = 0, 40 RC_CLIENT_RAINTEGRATION_EVENT_MENUITEM_CHECKED_CHANGED = 1, /* [menu_item] checked changed */ 41 RC_CLIENT_RAINTEGRATION_EVENT_HARDCORE_CHANGED = 2, /* hardcore was enabled or disabled */ 42 RC_CLIENT_RAINTEGRATION_EVENT_PAUSE = 3, /* emulated system should be paused */ 43 RC_CLIENT_RAINTEGRATION_EVENT_MENU_CHANGED = 4 /* one or more items were added/removed from the menu and it should be rebuilt */ 44 }; 45 46 typedef struct rc_client_raintegration_event_t { 47 uint32_t type; 48 49 const rc_client_raintegration_menu_item_t* menu_item; 50 } rc_client_raintegration_event_t; 51 52 typedef void (RC_CCONV *rc_client_raintegration_event_handler_t)(const rc_client_raintegration_event_t* event, 53 rc_client_t* client); 54 55 typedef void (RC_CCONV *rc_client_raintegration_write_memory_func_t)(uint32_t address, uint8_t* buffer, 56 uint32_t num_bytes, rc_client_t* client); 57 58 typedef void (RC_CCONV* rc_client_raintegration_get_game_name_func_t)(char* buffer, uint32_t buffer_size, rc_client_t* client); 59 60 /* types needed to integrate raintegration */ 61 62 #ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION 63 64 #ifndef RC_CLIENT_SUPPORTS_EXTERNAL 65 #define RC_CLIENT_SUPPORTS_EXTERNAL /* external rc_client required for RAIntegration */ 66 #endif 67 68 #include <wtypes.h> /* HWND */ 69 70 #include "rc_client.h" 71 72 RC_EXPORT rc_client_async_handle_t* RC_CCONV rc_client_begin_load_raintegration(rc_client_t* client, 73 const wchar_t* search_directory, HWND main_window_handle, 74 const char* client_name, const char* client_version, 75 rc_client_callback_t callback, void* callback_userdata); 76 77 RC_EXPORT void RC_CCONV rc_client_unload_raintegration(rc_client_t* client); 78 79 RC_EXPORT void RC_CCONV rc_client_raintegration_update_main_window_handle(rc_client_t* client, HWND main_window_handle); 80 81 RC_EXPORT const rc_client_raintegration_menu_t* RC_CCONV rc_client_raintegration_get_menu(const rc_client_t* client); 82 83 RC_EXPORT void RC_CCONV rc_client_raintegration_rebuild_submenu(rc_client_t* client, HMENU hMenu); 84 RC_EXPORT void RC_CCONV rc_client_raintegration_update_menu_item(const rc_client_t* client, const rc_client_raintegration_menu_item_t* menu_item); 85 RC_EXPORT int RC_CCONV rc_client_raintegration_activate_menu_item(const rc_client_t* client, uint32_t menu_item_id); 86 87 RC_EXPORT void RC_CCONV rc_client_raintegration_set_write_memory_function(rc_client_t* client, rc_client_raintegration_write_memory_func_t handler); 88 RC_EXPORT void RC_CCONV rc_client_raintegration_set_get_game_name_function(rc_client_t* client, rc_client_raintegration_get_game_name_func_t handler); 89 RC_EXPORT void RC_CCONV rc_client_raintegration_set_console_id(rc_client_t* client, uint32_t console_id); 90 RC_EXPORT int RC_CCONV rc_client_raintegration_has_modifications(const rc_client_t* client); 91 92 RC_EXPORT void RC_CCONV rc_client_raintegration_set_event_handler(rc_client_t* client, 93 rc_client_raintegration_event_handler_t handler); 94 95 RC_EXPORT int RC_CCONV rc_client_raintegration_get_achievement_state(const rc_client_t* client, uint32_t achievement_id); 96 97 #endif /* RC_CLIENT_SUPPORTS_RAINTEGRATION */ 98 99 RC_END_C_DECLS 100 101 #endif /* RC_CLIENT_RAINTEGRATION_H */