duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

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 */