From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- .../Xbox/Sentient/Include/SenClientCore.h | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientCore.h (limited to 'Minecraft.Client/Xbox/Sentient/Include/SenClientCore.h') diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientCore.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientCore.h new file mode 100644 index 00000000..f86eb92a --- /dev/null +++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientCore.h @@ -0,0 +1,74 @@ +/******************************************************** +* * +* Copyright (C) Microsoft. All rights reserved. * +* * +********************************************************/ + +// Sentient Client Core API +// +// Include this to get access to ALL core Sentient features. + +#pragma once + +#include "SenClientConfig.h" +#include "SenClientCulture.h" +#include "SenClientFile.h" +#include "SenClientMain.h" +#include "SenClientPackage.h" +#include "SenClientRawData.h" +#include "SenClientResource.h" +#include "SenClientStats.h" +#include "SenClientSys.h" +#include "SenClientUtil.h" +#include "SenClientXML.h" +#include "SenClientUser.h" + + +// REVIEW: is this block of text still relevant? + +/* API Design considerations + + 1. All functions will return S_OK if they succeed or either E_FAIL or an HRESULT error code + if they fail. Callers should use the standard SUCCEEDED(hr) or FAILED(hr) macros to + test the results, as it eliminates errors due to misconceptions about what exactly is + an HRESULT error vs. success/status. + + PLEASE NOTE: S_FALSE is for successfully returning a false, and does *not* qualify as an + error code. It should not be used for fail cases. Use only codes like E_FAIL, + E_OUTOFMEMORY, E_INVALIDARG, E_POINTER, etc. for failures. Most error codes contain "E_" + at or near the start of the name, but you can always tell by whether the top bit is set. + + 2. The API is not thread safe at this time, so all calls must be made from the same thread. + + 3. Many functions are designed for asynchronous use, and will internally create a task that + will only finish after feedback from the server. + a. These functions can be either blocking or asynchronous. If the callback pointer is NULL + then it is a blocking call. + b. If the call is asynchronous, then it will always return instantly, and will return S_OK + if a task has been created. + 1. If the task is created then at some point the callback will be called once the task + finishes, regardless of whether the task succeeds or fails. The task result is then + passed into the callback + 2. However, if the call fails to create a task (due to bad parameters or something else) + and returns something other than S_OK, it will *not* call the callback. + c. If the call is blocking, the return value will be the task result value. + d. The recommended usage is to use async calls, but if a game run all Sentient calls from a + worker thread then using blocking calls could work. + + 4. The order in which async calls complete is not guaranteed. + a. Similarly, if one or more async calls are started, and a blocking call is performed, the + async calls may or may not finish before the blocking call returns ( as the blocking call + just calls SentientUpdate() until it completes ). + + 5. All async functions that take pointers will assume that the pointers point valid memory for the + duration of the task, and that the game does not free or overwrite the memory until the task + is completed. + + 6. All output variables (but not output buffers) are cleared even if the function call fails. + + 7. Functions that return buffers of data, will have to have the buffer allocated before being called. + NOTE: This is changed from the first release (october 2010) + + 8. There are multiple sets of functionality that relies on "blobs" - a blob is a custom (usually + game-specific) chunk of binary data that the Sentient does not know anything about. +*/ -- cgit v1.2.3