rc_client_external.h (8357B)
1 #ifndef RC_CLIENT_EXTERNAL_H 2 #define RC_CLIENT_EXTERNAL_H 3 4 #include "rc_client.h" 5 6 RC_BEGIN_C_DECLS 7 8 /* NOTE: any function that is passed a callback also needs to be passed a client instance to pass 9 * to the callback, and the external interface has to capture both. */ 10 11 typedef void (RC_CCONV *rc_client_external_enable_logging_func_t)(rc_client_t* client, int level, rc_client_message_callback_t callback); 12 typedef void (RC_CCONV *rc_client_external_set_event_handler_func_t)(rc_client_t* client, rc_client_event_handler_t handler); 13 typedef void (RC_CCONV *rc_client_external_set_read_memory_func_t)(rc_client_t* client, rc_client_read_memory_func_t handler); 14 typedef void (RC_CCONV *rc_client_external_set_get_time_millisecs_func_t)(rc_client_t* client, rc_get_time_millisecs_func_t handler); 15 typedef int (RC_CCONV *rc_client_external_can_pause_func_t)(uint32_t* frames_remaining); 16 17 typedef void (RC_CCONV *rc_client_external_set_int_func_t)(int value); 18 typedef int (RC_CCONV *rc_client_external_get_int_func_t)(void); 19 typedef void (RC_CCONV *rc_client_external_set_string_func_t)(const char* value); 20 typedef size_t (RC_CCONV *rc_client_external_copy_string_func_t)(char buffer[], size_t buffer_size); 21 typedef void (RC_CCONV *rc_client_external_action_func_t)(void); 22 23 typedef void (RC_CCONV *rc_client_external_async_handle_func_t)(rc_client_async_handle_t* handle); 24 25 typedef rc_client_async_handle_t* (RC_CCONV *rc_client_external_begin_login_func_t)(rc_client_t* client, 26 const char* username, const char* pass_token, rc_client_callback_t callback, void* callback_userdata); 27 typedef const rc_client_user_t* (RC_CCONV *rc_client_external_get_user_info_func_t)(void); 28 29 typedef rc_client_async_handle_t* (RC_CCONV *rc_client_external_begin_identify_and_load_game_func_t)( 30 rc_client_t* client, uint32_t console_id, const char* file_path, 31 const uint8_t* data, size_t data_size, rc_client_callback_t callback, void* callback_userdata); 32 typedef rc_client_async_handle_t* (RC_CCONV *rc_client_external_begin_load_game_func_t)(rc_client_t* client, 33 const char* hash, rc_client_callback_t callback, void* callback_userdata); 34 typedef rc_client_async_handle_t* (RC_CCONV *rc_client_external_begin_load_subset_t)(rc_client_t* client, 35 uint32_t subset_id, rc_client_callback_t callback, void* callback_userdata); 36 typedef const rc_client_game_t* (RC_CCONV *rc_client_external_get_game_info_func_t)(void); 37 typedef const rc_client_subset_t* (RC_CCONV *rc_client_external_get_subset_info_func_t)(uint32_t subset_id); 38 typedef void (RC_CCONV *rc_client_external_get_user_game_summary_func_t)(rc_client_user_game_summary_t* summary); 39 typedef rc_client_async_handle_t* (RC_CCONV *rc_client_external_begin_change_media_func_t)(rc_client_t* client, const char* file_path, 40 const uint8_t* data, size_t data_size, rc_client_callback_t callback, void* callback_userdata); 41 typedef void (RC_CCONV* rc_client_external_add_game_hash_func_t)(const char* hash, uint32_t game_id); 42 43 /* NOTE: rc_client_external_create_achievement_list_func_t returns an internal wrapper structure which contains the public list 44 * and a destructor function. */ 45 struct rc_client_achievement_list_info_t; 46 typedef struct rc_client_achievement_list_info_t* (RC_CCONV *rc_client_external_create_achievement_list_func_t)(int category, int grouping); 47 typedef const rc_client_achievement_t* (RC_CCONV *rc_client_external_get_achievement_info_func_t)(uint32_t id); 48 49 /* NOTE: rc_client_external_create_leaderboard_list_func_t returns an internal wrapper structure which contains the public list 50 * and a destructor function. */ 51 struct rc_client_leaderboard_list_info_t; 52 typedef struct rc_client_leaderboard_list_info_t* (RC_CCONV *rc_client_external_create_leaderboard_list_func_t)(int grouping); 53 typedef const rc_client_leaderboard_t* (RC_CCONV *rc_client_external_get_leaderboard_info_func_t)(uint32_t id); 54 55 /* NOTE: rc_client_external_begin_fetch_leaderboard_entries_func_t and rc_client_external_begin_fetch_leaderboard_entries_around_user_func_t 56 * pass an internal wrapper structure around the list, which contains the public list and a destructor function. */ 57 typedef rc_client_async_handle_t* (RC_CCONV *rc_client_external_begin_fetch_leaderboard_entries_func_t)(rc_client_t* client, 58 uint32_t leaderboard_id, uint32_t first_entry, uint32_t count, 59 rc_client_fetch_leaderboard_entries_callback_t callback, void* callback_userdata); 60 typedef rc_client_async_handle_t* (RC_CCONV *rc_client_external_begin_fetch_leaderboard_entries_around_user_func_t)(rc_client_t* client, 61 uint32_t leaderboard_id, uint32_t count, rc_client_fetch_leaderboard_entries_callback_t callback, void* callback_userdata); 62 63 64 typedef size_t (RC_CCONV *rc_client_external_progress_size_func_t)(void); 65 typedef int (RC_CCONV *rc_client_external_serialize_progress_func_t)(uint8_t* buffer, size_t buffer_size); 66 typedef int (RC_CCONV *rc_client_external_deserialize_progress_func_t)(const uint8_t* buffer, size_t buffer_size); 67 68 typedef struct rc_client_external_t 69 { 70 rc_client_external_action_func_t destroy; 71 72 rc_client_external_enable_logging_func_t enable_logging; 73 rc_client_external_set_event_handler_func_t set_event_handler; 74 rc_client_external_set_read_memory_func_t set_read_memory; 75 rc_client_external_set_get_time_millisecs_func_t set_get_time_millisecs; 76 rc_client_external_set_string_func_t set_host; 77 rc_client_external_copy_string_func_t get_user_agent_clause; 78 79 rc_client_external_set_int_func_t set_hardcore_enabled; 80 rc_client_external_get_int_func_t get_hardcore_enabled; 81 rc_client_external_set_int_func_t set_unofficial_enabled; 82 rc_client_external_get_int_func_t get_unofficial_enabled; 83 rc_client_external_set_int_func_t set_encore_mode_enabled; 84 rc_client_external_get_int_func_t get_encore_mode_enabled; 85 rc_client_external_set_int_func_t set_spectator_mode_enabled; 86 rc_client_external_get_int_func_t get_spectator_mode_enabled; 87 88 rc_client_external_async_handle_func_t abort_async; 89 90 rc_client_external_begin_login_func_t begin_login_with_password; 91 rc_client_external_begin_login_func_t begin_login_with_token; 92 rc_client_external_action_func_t logout; 93 rc_client_external_get_user_info_func_t get_user_info; 94 95 rc_client_external_begin_identify_and_load_game_func_t begin_identify_and_load_game; 96 rc_client_external_begin_load_game_func_t begin_load_game; 97 rc_client_external_get_game_info_func_t get_game_info; 98 rc_client_external_begin_load_subset_t begin_load_subset; 99 rc_client_external_get_subset_info_func_t get_subset_info; 100 rc_client_external_action_func_t unload_game; 101 rc_client_external_get_user_game_summary_func_t get_user_game_summary; 102 rc_client_external_begin_change_media_func_t begin_change_media; 103 rc_client_external_begin_load_game_func_t begin_change_media_from_hash; 104 105 rc_client_external_create_achievement_list_func_t create_achievement_list; 106 rc_client_external_get_int_func_t has_achievements; 107 rc_client_external_get_achievement_info_func_t get_achievement_info; 108 109 rc_client_external_create_leaderboard_list_func_t create_leaderboard_list; 110 rc_client_external_get_int_func_t has_leaderboards; 111 rc_client_external_get_leaderboard_info_func_t get_leaderboard_info; 112 rc_client_external_begin_fetch_leaderboard_entries_func_t begin_fetch_leaderboard_entries; 113 rc_client_external_begin_fetch_leaderboard_entries_around_user_func_t begin_fetch_leaderboard_entries_around_user; 114 115 rc_client_external_copy_string_func_t get_rich_presence_message; 116 rc_client_external_get_int_func_t has_rich_presence; 117 118 rc_client_external_action_func_t do_frame; 119 rc_client_external_action_func_t idle; 120 rc_client_external_get_int_func_t is_processing_required; 121 rc_client_external_can_pause_func_t can_pause; 122 rc_client_external_action_func_t reset; 123 124 rc_client_external_progress_size_func_t progress_size; 125 rc_client_external_serialize_progress_func_t serialize_progress; 126 rc_client_external_deserialize_progress_func_t deserialize_progress; 127 128 /* VERSION 2 */ 129 rc_client_external_add_game_hash_func_t add_game_hash; 130 rc_client_external_set_string_func_t load_unknown_game; 131 132 } rc_client_external_t; 133 134 #define RC_CLIENT_EXTERNAL_VERSION 2 135 136 void rc_client_add_game_hash(rc_client_t* client, const char* hash, uint32_t game_id); 137 void rc_client_load_unknown_game(rc_client_t* client, const char* hash); 138 139 RC_END_C_DECLS 140 141 #endif /* RC_CLIENT_EXTERNAL_H */