Skip to content

Commit

Permalink
support for set_filereader passthrough
Browse files Browse the repository at this point in the history
  • Loading branch information
Jamiras committed Jul 25, 2024
1 parent 411a6bd commit 377222d
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/rcheevos.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@
<ClCompile Include="..\rcheevos\src\rc_compat.c" />
<ClCompile Include="..\rcheevos\src\rc_util.c" />
<ClCompile Include="..\rcheevos\src\rhash\aes.c" />
<ClCompile Include="..\rcheevos\src\rhash\cdreader.c" />
<ClCompile Include="..\rcheevos\src\rhash\hash.c">
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
Expand Down
3 changes: 3 additions & 0 deletions src/rcheevos.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,9 @@
<ClCompile Include="..\rcheevos\src\rhash\aes.c">
<Filter>rhash</Filter>
</ClCompile>
<ClCompile Include="..\rcheevos\src\rhash\cdreader.c">
<Filter>rhash</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="lua">
Expand Down
22 changes: 22 additions & 0 deletions src/services/AchievementRuntimeExports.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,18 @@ class AchievementRuntimeExports : private AchievementRuntime
return rc_client_get_spectator_mode_enabled(pClient.GetClient());
}

static void set_filereader(const struct rc_hash_filereader* pFileReader, const struct rc_hash_cdreader* pCdReader)
{
auto& pClient = ra::services::ServiceLocator::GetMutable<ra::services::AchievementRuntime>();
rc_client_set_filereader(pClient.GetClient(), pFileReader, pCdReader);
}

static void get_default_cdreader(struct rc_hash_cdreader* pCdReader)
{
auto& pClient = ra::services::ServiceLocator::GetMutable<ra::services::AchievementRuntime>();
rc_client_get_default_cdreader(pClient.GetClient(), pCdReader);
}

static void abort_async(rc_client_async_handle_t* handle)
{
const auto& pClient = ra::services::ServiceLocator::Get<ra::services::AchievementRuntime>();
Expand Down Expand Up @@ -973,6 +985,12 @@ static void GetExternalClientV1(rc_client_external_t* pClientExternal) noexcept
pClientExternal->deserialize_progress = ra::services::AchievementRuntimeExports::deserialize_progress;
}

static void GetExternalClientV2(rc_client_external_t* pClientExternal) noexcept
{
pClientExternal->set_filereader = ra::services::AchievementRuntimeExports::set_filereader;
pClientExternal->get_default_cdreader = ra::services::AchievementRuntimeExports::get_default_cdreader;
}

#ifdef __cplusplus
extern "C" {
#endif
Expand All @@ -985,6 +1003,10 @@ API int CCONV _Rcheevos_GetExternalClient(rc_client_external_t* pClientExternal,
RA_LOG_WARN("Unknown rc_client_external interface version: %s", nVersion);
__fallthrough;

case 2:
GetExternalClientV2(pClientExternal);
__fallthrough;

case 1:
GetExternalClientV1(pClientExternal);
break;
Expand Down

0 comments on commit 377222d

Please sign in to comment.