Skip to content

Commit dc14ef2

Browse files
committed
refactor: change endtag color
1 parent 94ff1d5 commit dc14ef2

18 files changed

+110
-111
lines changed

src/ll/api/event/server/ServerStartedEvent.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
namespace ll::event::inline server {
77

8-
LL_AUTO_TYPED_INSTANCE_HOOK(
8+
LL_TYPED_INSTANCE_HOOK(
99
ServerStartedEventHook,
1010
ll::memory::HookPriority::Normal,
1111
ServerInstanceEventCoordinator,

src/ll/api/event/server/ServerStoppedEvent.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace ll::event::inline server {
66

7-
LL_AUTO_INSTANCE_HOOK(ServerStoppedEventHook, HookPriority::Normal, "??1DedicatedServer@@UEAA@XZ", void) {
7+
LL_INSTANCE_HOOK(ServerStoppedEventHook, HookPriority::Normal, "??1DedicatedServer@@UEAA@XZ", void) {
88
EventBus::getInstance().publish(ServerStoppedEvent());
99
origin();
1010
}

src/ll/api/io/FileUtils.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ LLNDAPI std::filesystem::path u8path(std::string_view src);
1515

1616
LLNDAPI std::optional<std::string> readFile(std::filesystem::path const& filePath, bool isBinary = false);
1717

18-
LLAPI bool writeAllFile(std::filesystem::path const& filePath, std::string_view content, bool isBinary = false);
18+
LLAPI bool writeFile(std::filesystem::path const& filePath, std::string_view content, bool isBinary = false);
1919

2020
LLNDAPI Version getVersion(std::filesystem::path const& filePath);
2121
} // namespace ll::inline utils::file_utils

src/ll/api/memory/Hook.cpp

+6-8
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,19 @@
1010
namespace ll::memory {
1111

1212
int hook(FuncPtr target, FuncPtr detour, FuncPtr* originalFunc, HookPriority priority) {
13+
std::unique_ptr<thread::GlobalThreadPauser> pauser;
1314
if (getServerStatus() != ServerStatus::Default) {
14-
auto pause = ll::thread::GlobalThreadPauser{};
15-
return pl::hook::pl_hook(target, detour, originalFunc, static_cast<pl::hook::Priority>(priority));
16-
} else {
17-
return pl::hook::pl_hook(target, detour, originalFunc, static_cast<pl::hook::Priority>(priority));
15+
pauser = std::make_unique<thread::GlobalThreadPauser>();
1816
}
17+
return pl::hook::pl_hook(target, detour, originalFunc, static_cast<pl::hook::Priority>(priority));
1918
}
2019

2120
bool unhook(FuncPtr target, FuncPtr detour) {
21+
std::unique_ptr<thread::GlobalThreadPauser> pauser;
2222
if (getServerStatus() != ServerStatus::Default) {
23-
auto pause = ll::thread::GlobalThreadPauser{};
24-
return pl::hook::pl_unhook(target, detour);
25-
} else {
26-
return pl::hook::pl_unhook(target, detour);
23+
pauser = std::make_unique<thread::GlobalThreadPauser>();
2724
}
25+
return pl::hook::pl_unhook(target, detour);
2826
}
2927

3028
FuncPtr resolveIdentifier(std::string_view identifier, bool disableErrorOutput) {

src/ll/api/memory/Memory.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
#include "pl/SymbolProvider.h"
88

9+
#include "ll/api/ServerInfo.h"
10+
#include "ll/api/thread/GlobalThreadPauser.h"
911
#include "ll/api/utils/StringUtils.h"
1012
#include "ll/api/utils/WinUtils.h"
1113

@@ -79,6 +81,10 @@ std::vector<std::string> lookupSymbol(FuncPtr func) {
7981
}
8082

8183
void modify(void* ptr, size_t len, const std::function<void()>& callback) {
84+
std::unique_ptr<thread::GlobalThreadPauser> pauser;
85+
if (getServerStatus() != ServerStatus::Default) {
86+
pauser = std::make_unique<thread::GlobalThreadPauser>();
87+
}
8288
DWORD oldProtect;
8389
VirtualProtect(ptr, len, PAGE_EXECUTE_READWRITE, &oldProtect);
8490
callback();

src/ll/api/service/GlobalService.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ void ll::GlobalService<T>::init(T* ptr) {
3434
#endif
3535
}
3636

37-
namespace {
37+
namespace ll {
3838

39-
using namespace ll::memory;
39+
using namespace memory;
4040

4141
// AllowListFile
4242

@@ -208,4 +208,4 @@ LL_AUTO_INSTANCE_HOOK(CommandRegistryDestructor, HookPriority::High, "??1Command
208208
ll::Global<CommandRegistry>.init(nullptr);
209209
origin();
210210
}
211-
} // namespace
211+
} // namespace ll

src/ll/api/thread/TickSyncSleep.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ std::vector<std::variant<
1010
std::reference_wrapper<TickSyncSleep<chrono::ServerClock>>,
1111
std::reference_wrapper<TickSyncSleep<chrono::GameTimeClock>>>>
1212
tickList;
13-
LL_AUTO_TYPED_INSTANCE_HOOK(
13+
LL_TYPED_INSTANCE_HOOK(
1414
TickSyncSleepInterrruptHook,
1515
HookPriority::Normal,
1616
ServerLevel,

src/ll/api/utils/StringUtils.h

+10
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,16 @@ replaceAll(std::string const& str, std::string_view oldValue, std::string_view n
5252
return ret;
5353
}
5454

55+
constexpr bool
56+
replaceContent(std::string& str, std::string_view before, std::string_view after, std::string_view relplaceWith) {
57+
auto startOffset = str.find(before);
58+
if (startOffset == std::string::npos) return false;
59+
startOffset += before.size();
60+
auto endOffset = after.empty() ? std::string::npos : str.find(after, startOffset);
61+
str.replace(startOffset, endOffset - startOffset, relplaceWith);
62+
return true;
63+
}
64+
5565
/**
5666
* @brief Integer to hex string.
5767
*

src/ll/core/LeviLamina.cpp

+29-31
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,18 @@
2525
#include "psapi.h"
2626
#include "tlhelp32.h"
2727

28-
using namespace ll::hash;
29-
using namespace ll::hash_literals;
30-
using namespace ll::i18n_literals;
31-
using namespace ll;
28+
namespace ll {
29+
30+
using namespace hash;
31+
using namespace hash_literals;
32+
using namespace i18n_literals;
3233

3334
namespace fs = std::filesystem;
3435

35-
ll::Logger ll::logger("LeviLamina");
36-
std::chrono::steady_clock::time_point ll::severStartBeginTime;
37-
std::chrono::steady_clock::time_point ll::severStartEndTime;
36+
Logger logger("LeviLamina");
37+
std::chrono::steady_clock::time_point severStartBeginTime;
38+
std::chrono::steady_clock::time_point severStartEndTime;
3839

39-
namespace {
4040
void fixCurrentDirectory() {
4141
std::wstring path(32767, '\0');
4242
GetModuleFileName(nullptr, path.data(), 32767);
@@ -105,7 +105,7 @@ void checkOtherBdsInstance() {
105105
}
106106

107107
void printWelcomeMsg() {
108-
auto lock = ll::Logger::lock();
108+
auto lock = Logger::lock();
109109
logger.info(R"( )");
110110
logger.info(R"( _ _ _ _ )");
111111
logger.info(R"( | | _____ _(_) | __ _ _ __ ___ (_)_ __ __ _ )");
@@ -125,13 +125,12 @@ void printWelcomeMsg() {
125125
}
126126

127127
void checkProtocolVersion() {
128-
auto currentProtocol = ll::getServerProtocolVersion();
128+
auto currentProtocol = getServerProtocolVersion();
129129
if (TARGET_BDS_PROTOCOL_VERSION != currentProtocol) {
130130
logger.warn("ll.main.warning.protocolVersionNotMatch.1"_tr, TARGET_BDS_PROTOCOL_VERSION, currentProtocol);
131131
logger.warn("ll.main.warning.protocolVersionNotMatch.2"_tr);
132132
}
133133
}
134-
} // namespace
135134

136135
BOOL WINAPI ConsoleExitHandler(DWORD CEvent) {
137136
switch (CEvent) {
@@ -165,36 +164,34 @@ void unixSignalHandler(int signum) {
165164
}
166165

167166
// extern
168-
namespace ll {
169167
extern void registerLeviCommands();
170168
extern void setupSimpleServerLogger();
171-
} // namespace ll
172169

173170
namespace bstats {
174171
extern void registerBStats();
175172
}
176173

177-
namespace ll::i18n {
174+
namespace i18n {
178175
extern std::string globalDefaultLocaleName;
179176
}
180177

181178
// bugfix
182-
namespace ll::bugfix {
179+
namespace bugfix {
183180
extern void enableArrayTagBugFix();
184-
} // namespace ll::bugfix
181+
} // namespace bugfix
185182
void setupBugFixes() {
186-
auto& bugfixSettings = ll::globalConfig.modules.tweak.bugfixes;
187-
using namespace ll::bugfix;
183+
auto& bugfixSettings = globalConfig.modules.tweak.bugfixes;
184+
using namespace bugfix;
188185
if (bugfixSettings.fixArrayTagCompareBug) {
189186
enableArrayTagBugFix();
190187
}
191188
}
192189

193190
void startCrashLogger() {
194191
#if !LL_BUILTIN_CRASHLOGGER
195-
ll::CrashLogger::initCrashLogger(ll::globalConfig.modules.crashLogger.enabled);
192+
CrashLogger::initCrashLogger(globalConfig.modules.crashLogger.enabled);
196193
#else
197-
static ll::CrashLoggerNew crashLogger{};
194+
static CrashLoggerNew crashLogger{};
198195
#endif
199196
}
200197

@@ -211,13 +208,13 @@ void leviLaminaMain() {
211208
std::error_code ec;
212209
fs::create_directories("plugins", ec);
213210

214-
ll::i18n::load("plugins/LeviLamina/LangPack");
211+
i18n::load("plugins/LeviLamina/LangPack");
215212

216-
ll::loadLeviConfig();
213+
loadLeviConfig();
217214

218215
// Update default language
219-
if (ll::globalConfig.language != "system") {
220-
i18n::globalDefaultLocaleName = ll::globalConfig.language;
216+
if (globalConfig.language != "system") {
217+
i18n::globalDefaultLocaleName = globalConfig.language;
221218
}
222219

223220
checkProtocolVersion();
@@ -226,9 +223,9 @@ void leviLaminaMain() {
226223
setupBugFixes();
227224
fixCurrentDirectory();
228225

229-
if (ll::globalConfig.modules.checkRunningBDS) checkOtherBdsInstance();
226+
if (globalConfig.modules.checkRunningBDS) checkOtherBdsInstance();
230227

231-
if (ll::globalConfig.modules.crashLogger.enabled) {
228+
if (globalConfig.modules.crashLogger.enabled) {
232229
startCrashLogger();
233230
}
234231

@@ -243,9 +240,9 @@ void leviLaminaMain() {
243240
logger.warn("ll.main.warning.inDebugMode"_tr);
244241
#endif
245242

246-
// if (ll::globalConfig.enableAddonsHelper) InitAddonsHelper();
243+
// if (globalConfig.enableAddonsHelper) InitAddonsHelper();
247244

248-
ll::plugin::PluginManager::getInstance().loadAllPlugins();
245+
plugin::PluginManager::getInstance().loadAllPlugins();
249246

250247
registerLeviCommands();
251248

@@ -263,14 +260,14 @@ LL_AUTO_STATIC_HOOK(LeviLaminaMainHook, HookPriority::Normal, "main", int, int a
263260
for (int i = 0; i < argc; ++i) {
264261
switch (do_hash(argv[i])) {
265262
case "--noColor"_h:
266-
ll::globalConfig.logger.colorLog = false;
263+
globalConfig.logger.colorLog = false;
267264
break;
268265
case "-v"_h:
269266
case "--version"_h:
270-
fmt::print("{}", ll::getBdsVersion().to_string());
267+
fmt::print("{}", getBdsVersion().to_string());
271268
return 0;
272269
case "--protocolversion"_h:
273-
fmt::print("{}", ll::getServerProtocolVersion());
270+
fmt::print("{}", getServerProtocolVersion());
274271
return 0;
275272
default:
276273
break;
@@ -282,5 +279,6 @@ LL_AUTO_STATIC_HOOK(LeviLaminaMainHook, HookPriority::Normal, "main", int, int a
282279
getServerStatus() = ServerStatus::Default;
283280
return res;
284281
}
282+
} // namespace ll
285283

286284
[[maybe_unused]] BOOL WINAPI DllMain(HMODULE, DWORD, LPVOID) { return true; }

src/ll/core/form/FormHandler.cpp

+26-24
Original file line numberDiff line numberDiff line change
@@ -73,23 +73,17 @@ void ModalFormHandler::handle(Player& player, std::string const& data) const {
7373
std::unordered_map<uint, std::unique_ptr<FormHandler>> formHandlers = {};
7474
uint currentId = 0;
7575

76-
uint addFormHandler(std::unique_ptr<FormHandler>&& data) {
77-
formHandlers.emplace(++currentId, std::move(data));
78-
return currentId;
79-
}
80-
81-
void handleFormPacket(Player& player, uint formId, std::string const& data) {
76+
bool handleFormPacket(Player& player, uint formId, std::string const& data) {
8277
auto it = formHandlers.find(formId);
8378
if (it == formHandlers.end()) {
84-
ll::logger.error("Failed to find form handler for form id {}", formId);
85-
return;
79+
return false;
8680
}
8781
it->second->handle(player, data);
8882
formHandlers.erase(it);
83+
return true;
8984
}
90-
} // namespace ll::form::handler
9185

92-
LL_AUTO_TYPED_INSTANCE_HOOK(
86+
LL_TYPED_INSTANCE_HOOK(
9387
FormResponseHandler,
9488
HookPriority::Highest,
9589
PacketHandlerDispatcherInstance<ModalFormResponsePacket>,
@@ -99,25 +93,33 @@ LL_AUTO_TYPED_INSTANCE_HOOK(
9993
NetEventCallback& callback,
10094
std::shared_ptr<Packet>& packet
10195
) {
102-
auto player = ((ServerNetworkHandler&)callback).getServerPlayer(source, SubClientId::PrimaryClient);
103-
if (!player.has_value()) {
104-
ll::logger.error("Failed to get player by NetworkIdentifier for FormResponseHandler");
105-
return;
106-
}
107-
108-
auto& modalPacket = (ModalFormResponsePacket&)*packet;
96+
if (auto player = ((ServerNetworkHandler&)callback).getServerPlayer(source, SubClientId::PrimaryClient); player) {
97+
auto& modalPacket = (ModalFormResponsePacket&)*packet;
10998

110-
auto data = std::string{"null"};
99+
auto data = std::string{"null"};
111100

112-
if (!modalPacket.mFormCancelReason && modalPacket.mJSONResponse) {
113-
data = modalPacket.mJSONResponse.value().toStyledString();
114-
if (data.ends_with('\n')) {
115-
data.pop_back();
116-
if (data.ends_with('\r')) {
101+
if (!modalPacket.mFormCancelReason && modalPacket.mJSONResponse) {
102+
data = modalPacket.mJSONResponse.value().toStyledString();
103+
if (data.ends_with('\n')) {
117104
data.pop_back();
105+
if (data.ends_with('\r')) {
106+
data.pop_back();
107+
}
118108
}
119109
}
110+
111+
if (ll::form::handler::handleFormPacket(player, modalPacket.mFormId, data)) {
112+
return;
113+
}
120114
}
115+
origin(source, callback, packet);
116+
}
117+
118+
uint addFormHandler(std::unique_ptr<FormHandler>&& data) {
119+
static ll::memory::HookAutoRegister<FormResponseHandler> hook;
121120

122-
ll::form::handler::handleFormPacket(player, modalPacket.mFormId, data);
121+
formHandlers.emplace(++currentId, std::move(data));
122+
return currentId;
123123
}
124+
125+
} // namespace ll::form::handler

src/ll/core/form/FormHandler.h

-2
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,4 @@ class ModalFormHandler : public FormHandler {
5757

5858
uint addFormHandler(std::unique_ptr<FormHandler>&& data);
5959

60-
void handleFormPacket(Player& player, uint formId, std::string const& data);
61-
6260
} // namespace ll::form::handler

0 commit comments

Comments
 (0)