From ef28f8b94553413b0e6686adb9b4bf33b18e714c Mon Sep 17 00:00:00 2001 From: dofes <91889957+dofes@users.noreply.github.com> Date: Thu, 1 Feb 2024 14:37:32 +0800 Subject: [PATCH] feat: add some struct for ScriptAPI --- src/mc/deps/core/threading/Scheduler.h | 21 +++++++++++++ src/mc/external/scripting/ScriptSettings.h | 8 +++++ src/mc/external/scripting/WatchdogSettings.h | 13 ++++---- src/mc/scripting/ScriptFormPromiseTracker.h | 11 ++++++- src/mc/scripting/ScriptPackConfiguration.h | 8 +++++ .../ScriptPackConfigurationManager.h | 8 +++++ src/mc/scripting/ScriptPackPermissions.h | 11 +++++++ src/mc/scripting/ServerScriptManager.h | 30 +++++++++++++++++++ 8 files changed, 104 insertions(+), 6 deletions(-) diff --git a/src/mc/deps/core/threading/Scheduler.h b/src/mc/deps/core/threading/Scheduler.h index 1311096db9..a4545f6f89 100644 --- a/src/mc/deps/core/threading/Scheduler.h +++ b/src/mc/deps/core/threading/Scheduler.h @@ -1,6 +1,12 @@ #pragma once +#include "ll/api/base/StdInt.h" #include "mc/_HeaderOutputPredefine.h" +#include "mc/deps/core/threading/WorkerPool.h" +#include +#include +#include +#include // auto generated inclusion list #include "mc/deps/core/common/bedrock/EnableNonOwnerReferences.h" @@ -11,6 +17,21 @@ namespace Bedrock { class EnableNonOwnerReferences; } // clang-format on class Scheduler : public ::Bedrock::EnableNonOwnerReferences { +public: + int mTotalFrames; + int mStarvedFrames; + int mPromotionFrames; + int mTargetFPS; + int mEffectiveFPS; + int mFramesOverBound; + double mAverageCallbackDuration; + double mTotalCoroutineDuration; + uint64 mTotalRunCoroutines; + double mCoroutineTimeLimit; + std::unique_ptr mCoroutinePool; + std::chrono::time_point mNextStarveCheckTime; + std::thread::id mThreadID; + public: // prevent constructor by default Scheduler& operator=(Scheduler const&); diff --git a/src/mc/external/scripting/ScriptSettings.h b/src/mc/external/scripting/ScriptSettings.h index 5b0fbdb8e9..5a791bee28 100644 --- a/src/mc/external/scripting/ScriptSettings.h +++ b/src/mc/external/scripting/ScriptSettings.h @@ -1,8 +1,16 @@ #pragma once +#include "ll/api/base/StdInt.h" #include "mc/_HeaderOutputPredefine.h" +#include "mc/external/scripting/WatchdogSettings.h" +#include "mc/scripting/ScriptPackConfigurationManager.h" +#include + struct ScriptSettings { +public: + char padding[592]; + public: // prevent constructor by default ScriptSettings& operator=(ScriptSettings const&); diff --git a/src/mc/external/scripting/WatchdogSettings.h b/src/mc/external/scripting/WatchdogSettings.h index 6cc6b3ab11..85499f1e27 100644 --- a/src/mc/external/scripting/WatchdogSettings.h +++ b/src/mc/external/scripting/WatchdogSettings.h @@ -5,11 +5,14 @@ namespace Scripting { struct WatchdogSettings { -public: - // prevent constructor by default - WatchdogSettings& operator=(WatchdogSettings const&); - WatchdogSettings(WatchdogSettings const&); - WatchdogSettings(); + int mHangThresholdMs; + int mSpikeThresholdMs; + int mSlowThresholdMs; + bool mHangException; + bool mEnableExceptionHandling; + bool mEnableShutdown; + int mMemoryWarningMB; + int mMemoryLimitMB; }; }; // namespace Scripting diff --git a/src/mc/scripting/ScriptFormPromiseTracker.h b/src/mc/scripting/ScriptFormPromiseTracker.h index 04b98158d2..2b9182bec9 100644 --- a/src/mc/scripting/ScriptFormPromiseTracker.h +++ b/src/mc/scripting/ScriptFormPromiseTracker.h @@ -1,6 +1,10 @@ #pragma once +#include "ll/api/base/StdInt.h" #include "mc/_HeaderOutputPredefine.h" +#include "mc/deps/core/common/bedrock/EnableNonOwnerReferences.h" +#include + // auto generated inclusion list #include "mc/world/events/EventResult.h" @@ -10,7 +14,7 @@ namespace Json { class Value; } // clang-format on -class ScriptFormPromiseTracker { +class ScriptFormPromiseTracker : public Bedrock::EnableNonOwnerReferences { public: // ScriptFormPromiseTracker inner types declare // clang-format off @@ -33,6 +37,11 @@ class ScriptFormPromiseTracker { // NOLINTEND }; +public: + char padding[0x8]; // parent class EventListenerDispatcher + int mLastRequestId; + std::unordered_map mFormRequests; + public: // prevent constructor by default ScriptFormPromiseTracker& operator=(ScriptFormPromiseTracker const&); diff --git a/src/mc/scripting/ScriptPackConfiguration.h b/src/mc/scripting/ScriptPackConfiguration.h index 6b4ac88d30..14bc1ec4bf 100644 --- a/src/mc/scripting/ScriptPackConfiguration.h +++ b/src/mc/scripting/ScriptPackConfiguration.h @@ -1,6 +1,9 @@ #pragma once #include "mc/_HeaderOutputPredefine.h" +#include "mc/scripting/ScriptPackPermissions.h" +#include +#include // auto generated forward declare list // clang-format off @@ -8,6 +11,11 @@ namespace Json { class Value; } // clang-format on class ScriptPackConfiguration { +public: + std::unordered_map mPackVariables; + std::unordered_map mPackSecrets; + ScriptPackPermissions mPackPermisions; + public: // prevent constructor by default ScriptPackConfiguration& operator=(ScriptPackConfiguration const&); diff --git a/src/mc/scripting/ScriptPackConfigurationManager.h b/src/mc/scripting/ScriptPackConfigurationManager.h index f6a25f8293..8648eba1c9 100644 --- a/src/mc/scripting/ScriptPackConfigurationManager.h +++ b/src/mc/scripting/ScriptPackConfigurationManager.h @@ -1,6 +1,10 @@ #pragma once #include "mc/_HeaderOutputPredefine.h" +#include "mc/scripting/ScriptPackConfiguration.h" +#include +#include + // auto generated inclusion list #include "mc/deps/core/PathBuffer.h" @@ -12,6 +16,10 @@ namespace Bedrock { class EnableNonOwnerReferences; } // clang-format on class ScriptPackConfigurationManager : public ::Bedrock::EnableNonOwnerReferences { +public: + std::unordered_map mPackConfigurations; + ScriptPackConfiguration mDefaultPackConfiguration; + public: // prevent constructor by default ScriptPackConfigurationManager& operator=(ScriptPackConfigurationManager const&); diff --git a/src/mc/scripting/ScriptPackPermissions.h b/src/mc/scripting/ScriptPackPermissions.h index eef54bf041..b350f224ce 100644 --- a/src/mc/scripting/ScriptPackPermissions.h +++ b/src/mc/scripting/ScriptPackPermissions.h @@ -1,8 +1,19 @@ #pragma once #include "mc/_HeaderOutputPredefine.h" +#include "mc/deps/json/Value.h" +#include "mc/server/commands/CommandPermissionLevel.h" +#include +#include +#include +#include class ScriptPackPermissions { +public: + std::unordered_map> mModulePermissions; + std::vector mAllowedModules; + std::optional mCommandsPermissionLevel; + public: // prevent constructor by default ScriptPackPermissions& operator=(ScriptPackPermissions const&); diff --git a/src/mc/scripting/ServerScriptManager.h b/src/mc/scripting/ServerScriptManager.h index c52cb1df01..ba8a0fed76 100644 --- a/src/mc/scripting/ServerScriptManager.h +++ b/src/mc/scripting/ServerScriptManager.h @@ -1,10 +1,24 @@ #pragma once #include "mc/_HeaderOutputPredefine.h" +#include "mc/deps/core/threading/Scheduler.h" +#include "mc/external/scripting/DependencyLocator.h" +#include "mc/external/scripting/ScriptSettings.h" +#include "mc/scripting/ScriptFormPromiseTracker.h" +#include "mc/scripting/ScriptPluginManager.h" +#include "mc/scripting/ScriptPluginResult.h" +#include "mc/scripting/ScriptPrintLogger.h" +#include "mc/scripting/ScriptTickListener.h" +#include "mc/scripting/debugger/ScriptDebugger.h" +#include "mc/scripting/debugger/ScriptDebuggerWatchdog.h" + // auto generated inclusion list #include "mc/deps/core/common/bedrock/NonOwnerPointer.h" #include "mc/world/events/EventResult.h" +#include +#include +#include // auto generated forward declare list // clang-format off @@ -14,6 +28,22 @@ namespace Scripting { struct ModuleDescriptor; } // clang-format on class ServerScriptManager { +public: + Bedrock::NonOwnerPointer mServerScheduler; + ScriptSettings mScriptSettings; + std::unique_ptr mPrintLogger; + std::unique_ptr mFormPromiseTracker; + std::unique_ptr mDependencyLocator; + std::unique_ptr mScriptEngine; + std::unique_ptr mScriptDebuggerWatchdog; + std::unique_ptr mScriptPluginManager; + std::unique_ptr mScriptDebugger; + std::unique_ptr mScriptTickListener; + std::vector> + mModuleFilters; + bool mInitializeEditorModules; + public: // prevent constructor by default ServerScriptManager& operator=(ServerScriptManager const&);