Path: blob/master/dep/rcheevos/include/rc_client_raintegration.h
4246 views
#ifndef RC_CLIENT_RAINTEGRATION_H1#define RC_CLIENT_RAINTEGRATION_H23#ifndef _WIN324#undef RC_CLIENT_SUPPORTS_RAINTEGRATION /* Windows required for RAIntegration */5#endif67#include <stdint.h>89#include "rc_export.h"1011RC_BEGIN_C_DECLS1213typedef struct rc_client_t rc_client_t; /* forward reference; in rc_client.h */1415/* types needed to implement raintegration */1617typedef struct rc_client_raintegration_menu_item_t {18const char* label;19uint32_t id;20uint8_t checked;21uint8_t enabled;22} rc_client_raintegration_menu_item_t;2324typedef struct rc_client_raintegration_menu_t {25rc_client_raintegration_menu_item_t* items;26uint32_t num_items;27} rc_client_raintegration_menu_t;2829enum {30RC_CLIENT_RAINTEGRATION_ACHIEVEMENT_STATE_NONE = 0,31RC_CLIENT_RAINTEGRATION_ACHIEVEMENT_STATE_PUBLISHED = 1,32RC_CLIENT_RAINTEGRATION_ACHIEVEMENT_STATE_LOCAL = 2,33RC_CLIENT_RAINTEGRATION_ACHIEVEMENT_STATE_MODIFIED = 3,34RC_CLIENT_RAINTEGRATION_ACHIEVEMENT_STATE_INSECURE = 4,35};3637enum {38RC_CLIENT_RAINTEGRATION_EVENT_TYPE_NONE = 0,39RC_CLIENT_RAINTEGRATION_EVENT_MENUITEM_CHECKED_CHANGED = 1, /* [menu_item] checked changed */40RC_CLIENT_RAINTEGRATION_EVENT_HARDCORE_CHANGED = 2, /* hardcore was enabled or disabled */41RC_CLIENT_RAINTEGRATION_EVENT_PAUSE = 3, /* emulated system should be paused */42RC_CLIENT_RAINTEGRATION_EVENT_MENU_CHANGED = 4 /* one or more items were added/removed from the menu and it should be rebuilt */43};4445typedef struct rc_client_raintegration_event_t {46uint32_t type;4748const rc_client_raintegration_menu_item_t* menu_item;49} rc_client_raintegration_event_t;5051typedef void (RC_CCONV *rc_client_raintegration_event_handler_t)(const rc_client_raintegration_event_t* event,52rc_client_t* client);5354typedef void (RC_CCONV *rc_client_raintegration_write_memory_func_t)(uint32_t address, uint8_t* buffer,55uint32_t num_bytes, rc_client_t* client);5657typedef void (RC_CCONV* rc_client_raintegration_get_game_name_func_t)(char* buffer, uint32_t buffer_size, rc_client_t* client);5859/* types needed to integrate raintegration */6061#ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION6263#ifndef RC_CLIENT_SUPPORTS_EXTERNAL64#define RC_CLIENT_SUPPORTS_EXTERNAL /* external rc_client required for RAIntegration */65#endif6667#include <wtypes.h> /* HWND */6869#include "rc_client.h"7071RC_EXPORT rc_client_async_handle_t* RC_CCONV rc_client_begin_load_raintegration(rc_client_t* client,72const wchar_t* search_directory, HWND main_window_handle,73const char* client_name, const char* client_version,74rc_client_callback_t callback, void* callback_userdata);7576RC_EXPORT rc_client_async_handle_t* RC_CCONV rc_client_begin_load_raintegration_deferred(rc_client_t* client,77const wchar_t* search_directory, rc_client_callback_t callback, void* callback_userdata);7879RC_EXPORT int RC_CCONV rc_client_finish_load_raintegration(rc_client_t* client,80HWND main_window_handle, const char* client_name, const char* client_version, const char** error_message);8182RC_EXPORT void RC_CCONV rc_client_unload_raintegration(rc_client_t* client);8384RC_EXPORT void RC_CCONV rc_client_raintegration_update_main_window_handle(rc_client_t* client, HWND main_window_handle);8586RC_EXPORT const rc_client_raintegration_menu_t* RC_CCONV rc_client_raintegration_get_menu(const rc_client_t* client);8788RC_EXPORT void RC_CCONV rc_client_raintegration_rebuild_submenu(rc_client_t* client, HMENU hMenu);89RC_EXPORT void RC_CCONV rc_client_raintegration_update_menu_item(const rc_client_t* client, const rc_client_raintegration_menu_item_t* menu_item);90RC_EXPORT int RC_CCONV rc_client_raintegration_activate_menu_item(const rc_client_t* client, uint32_t menu_item_id);9192RC_EXPORT void RC_CCONV rc_client_raintegration_set_write_memory_function(rc_client_t* client, rc_client_raintegration_write_memory_func_t handler);93RC_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);94RC_EXPORT void RC_CCONV rc_client_raintegration_set_console_id(rc_client_t* client, uint32_t console_id);95RC_EXPORT int RC_CCONV rc_client_raintegration_has_modifications(const rc_client_t* client);9697RC_EXPORT void RC_CCONV rc_client_raintegration_set_event_handler(rc_client_t* client,98rc_client_raintegration_event_handler_t handler);99100RC_EXPORT int RC_CCONV rc_client_raintegration_get_achievement_state(const rc_client_t* client, uint32_t achievement_id);101102#endif /* RC_CLIENT_SUPPORTS_RAINTEGRATION */103104RC_END_C_DECLS105106#endif /* RC_CLIENT_RAINTEGRATION_H */107108109