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