mirror of
https://github.com/EricPlayZ/EGameTools.git
synced 2025-07-18 17:37:53 +08:00
backup for the working code, i hate c++ and its vague errors
This commit is contained in:
@ -59,6 +59,13 @@ namespace EGSDK::GamePH {
|
||||
|
||||
class EGameSDK_API PlayerVarVector {
|
||||
public:
|
||||
PlayerVarVector() = default;
|
||||
PlayerVarVector(const PlayerVarVector&) = delete; // Prevent copying
|
||||
PlayerVarVector& operator=(const PlayerVarVector&) = delete; // Prevent assignment
|
||||
|
||||
PlayerVarVector(PlayerVarVector&&) = default; // Allow moving
|
||||
PlayerVarVector& operator=(PlayerVarVector&&) = default; // Allow move assignment
|
||||
|
||||
std::unique_ptr<PlayerVariable>& emplace_back(std::unique_ptr<PlayerVariable> playerVar) {
|
||||
_playerVars.emplace_back(std::move(playerVar));
|
||||
return _playerVars.back();
|
||||
|
@ -94,7 +94,7 @@ namespace EGSDK::GamePH {
|
||||
auto floatPlayerVar = reinterpret_cast<FloatPlayerVariable*>(playerVar);
|
||||
floatPlayerVar->SetValues(value);
|
||||
} else if constexpr (std::is_same_v<T, bool>) {
|
||||
auto boolPlayerVar = dynamic_cast<BoolPlayerVariable*>(playerVar);
|
||||
auto boolPlayerVar = reinterpret_cast<BoolPlayerVariable*>(playerVar);
|
||||
boolPlayerVar->SetValues(value);
|
||||
}
|
||||
}
|
||||
@ -165,6 +165,13 @@ namespace EGSDK::GamePH {
|
||||
}
|
||||
}
|
||||
}
|
||||
static void processPlayerVarSafe(DWORD64*(*playerVarsGetter)(), std::unique_ptr<PlayerVariable>& playerVarPtr) {
|
||||
__try {
|
||||
processPlayerVar(playerVarsGetter, playerVarPtr);
|
||||
} __except (EXCEPTION_EXECUTE_HANDLER) {
|
||||
SPDLOG_ERROR("Failed to process player variable: {}", playerVarPtr->GetName());
|
||||
}
|
||||
}
|
||||
|
||||
void PlayerVariables::GetPlayerVars() {
|
||||
if (gotPlayerVars)
|
||||
@ -174,13 +181,8 @@ namespace EGSDK::GamePH {
|
||||
if (!Get())
|
||||
return;
|
||||
|
||||
for (auto& playerVarPtr : playerVars) {
|
||||
__try {
|
||||
processPlayerVar(reinterpret_cast<DWORD64*(*)()>(&Get), playerVarPtr);
|
||||
} __except (EXCEPTION_EXECUTE_HANDLER) {
|
||||
SPDLOG_ERROR("Failed to process player variable: {}", playerVarPtr->GetName());
|
||||
}
|
||||
}
|
||||
for (auto& playerVarPtr : playerVars)
|
||||
processPlayerVarSafe(reinterpret_cast<DWORD64*(*)()>(&Get), playerVarPtr);
|
||||
|
||||
gotPlayerVars = true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user