Skip to content

Commit 6c7faef

Browse files
HualY_Less
authored andcommitted
Add console handler callback to insert handled commands into cmdlist
# Conflicts: # Server/Components/Console/commands.cpp
1 parent a7c5b41 commit 6c7faef

File tree

11 files changed

+385
-334
lines changed

11 files changed

+385
-334
lines changed

SDK/include/Server/Components/Console/console.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ struct ConsoleEventHandler
5252
{
5353
virtual bool onConsoleText(StringView command, StringView parameters, const ConsoleCommandSenderData& sender) { return false; }
5454
virtual void onRconLoginAttempt(IPlayer& player, StringView password, bool success) { }
55+
virtual void onConsoleCommandListRequest(FlatHashSet<StringView>& commands) { }
5556
};
5657

5758
static const UID ConsoleComponent_UID = UID(0xbfa24e49d0c95ee4);

SDK/include/utils.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#define STRINGIFY(s) _STRINGIFY(s)
44
#define _STRINGIFY(s) #s
55

6-
StringView trim(StringView view)
6+
inline StringView trim(StringView view)
77
{
88
char const* const whitespace = " \t\n\r\f\v";
99
const size_t start = view.find_first_not_of(whitespace);

Server/Components/Console/cmd_handler.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
#pragma once
1010

1111
#include "sdk.hpp"
12-
#include <Server/Components/Console/console.hpp>
1312
#include <unordered_map>
13+
#include "console_impl.hpp"
1414

1515
using namespace Impl;
1616

17-
using CommandHandlerFuncType = void (*)(const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core);
17+
using CommandHandlerFuncType = void (*)(const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core);
1818

1919
class ConsoleCmdHandler
2020
{

Server/Components/Console/commands.cpp

Lines changed: 44 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
FlatHashMap<String, CommandHandlerFuncType> ConsoleCmdHandler::Commands;
1212

13-
ADD_CONSOLE_CMD(gamemodetext, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
13+
ADD_CONSOLE_CMD(gamemodetext, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
1414
{
1515
if (params.empty())
1616
{
@@ -20,7 +20,7 @@ ADD_CONSOLE_CMD(gamemodetext, [](const String& params, const ConsoleCommandSende
2020
core->setData(SettableCoreDataType::ModeText, params);
2121
});
2222

23-
ADD_CONSOLE_CMD(hostname, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
23+
ADD_CONSOLE_CMD(hostname, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
2424
{
2525
if (params.empty())
2626
{
@@ -30,7 +30,7 @@ ADD_CONSOLE_CMD(hostname, [](const String& params, const ConsoleCommandSenderDat
3030
core->setData(SettableCoreDataType::ServerName, params);
3131
});
3232

33-
ADD_CONSOLE_CMD(mapname, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
33+
ADD_CONSOLE_CMD(mapname, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
3434
{
3535
if (params.empty())
3636
{
@@ -40,7 +40,7 @@ ADD_CONSOLE_CMD(mapname, [](const String& params, const ConsoleCommandSenderData
4040
core->setData(SettableCoreDataType::MapName, params);
4141
});
4242

43-
ADD_CONSOLE_CMD(weburl, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
43+
ADD_CONSOLE_CMD(weburl, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
4444
{
4545
if (params.empty())
4646
{
@@ -50,7 +50,7 @@ ADD_CONSOLE_CMD(weburl, [](const String& params, const ConsoleCommandSenderData&
5050
core->setData(SettableCoreDataType::URL, params);
5151
});
5252

53-
ADD_CONSOLE_CMD(language, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
53+
ADD_CONSOLE_CMD(language, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
5454
{
5555
if (params.empty())
5656
{
@@ -61,22 +61,35 @@ ADD_CONSOLE_CMD(language, [](const String& params, const ConsoleCommandSenderDat
6161
console.sendMessage(sender, "Setting server language to: \"" + params + "\"");
6262
});
6363

64-
ADD_CONSOLE_CMD(cmdlist, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
64+
ADD_CONSOLE_CMD(cmdlist, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
6565
{
66+
FlatHashSet<StringView> commands;
67+
6668
console.sendMessage(sender, "Console commands:");
6769
for (auto& kv : ConsoleCmdHandler::Commands)
6870
{
69-
console.sendMessage(sender, kv.first);
71+
commands.emplace(kv.first);
72+
}
73+
74+
console.defEventDispatcher().all(
75+
[&commands](ConsoleEventHandler* handler)
76+
{
77+
handler->onConsoleCommandListRequest(commands);
78+
});
79+
80+
for (auto kv : commands)
81+
{
82+
console.sendMessage(sender, kv);
7083
}
7184
});
7285

7386
struct VarlistEnumCallback : OptionEnumeratorCallback
7487
{
75-
IConsoleComponent& console;
88+
ConsoleComponent& console;
7689
IConfig& config;
7790
const ConsoleCommandSenderData& sender;
7891

79-
VarlistEnumCallback(IConsoleComponent& console, IConfig& config, const ConsoleCommandSenderData& sender)
92+
VarlistEnumCallback(ConsoleComponent& console, IConfig& config, const ConsoleCommandSenderData& sender)
8093
: console(console)
8194
, config(config)
8295
, sender(sender)
@@ -137,14 +150,14 @@ struct VarlistEnumCallback : OptionEnumeratorCallback
137150
}
138151
};
139152

140-
ADD_CONSOLE_CMD(varlist, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
153+
ADD_CONSOLE_CMD(varlist, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
141154
{
142155
console.sendMessage(sender, "Console variables:");
143156
VarlistEnumCallback cb(console, core->getConfig(), sender);
144157
core->getConfig().enumOptions(cb);
145158
});
146159

147-
ADD_CONSOLE_CMD(password, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
160+
ADD_CONSOLE_CMD(password, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
148161
{
149162
if (params.empty())
150163
{
@@ -161,7 +174,7 @@ ADD_CONSOLE_CMD(password, [](const String& params, const ConsoleCommandSenderDat
161174
console.sendMessage(sender, "Setting server password to: \"" + params + "\"");
162175
});
163176

164-
ADD_CONSOLE_CMD(say, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
177+
ADD_CONSOLE_CMD(say, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
165178
{
166179
if (params.empty())
167180
{
@@ -170,7 +183,7 @@ ADD_CONSOLE_CMD(say, [](const String& params, const ConsoleCommandSenderData& se
170183
core->getPlayers().sendClientMessageToAll(Colour(37, 135, 206), String("* Admin: ") + params);
171184
});
172185

173-
ADD_CONSOLE_CMD(players, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
186+
ADD_CONSOLE_CMD(players, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
174187
{
175188
if (!core->getPlayers().entries().size())
176189
{
@@ -199,7 +212,7 @@ ADD_CONSOLE_CMD(players, [](const String& params, const ConsoleCommandSenderData
199212
}
200213
});
201214

202-
ADD_CONSOLE_CMD(kick, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
215+
ADD_CONSOLE_CMD(kick, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
203216
{
204217
int playerId;
205218
if (sscanf(params.data(), "%d", &playerId) == EOF)
@@ -225,7 +238,7 @@ ADD_CONSOLE_CMD(kick, [](const String& params, const ConsoleCommandSenderData& s
225238
player->kick();
226239
});
227240

228-
ADD_CONSOLE_CMD(ban, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
241+
ADD_CONSOLE_CMD(ban, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
229242
{
230243
int playerId;
231244
if (sscanf(params.data(), "%d", &playerId) == EOF)
@@ -251,7 +264,7 @@ ADD_CONSOLE_CMD(ban, [](const String& params, const ConsoleCommandSenderData& se
251264
player->ban("CONSOLE BAN");
252265
});
253266

254-
ADD_CONSOLE_CMD(banip, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
267+
ADD_CONSOLE_CMD(banip, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
255268
{
256269
if (params.empty())
257270
{
@@ -268,13 +281,13 @@ ADD_CONSOLE_CMD(banip, [](const String& params, const ConsoleCommandSenderData&
268281
console.sendMessage(sender, String("IP ") + params.data() + String(" has been banned."));
269282
});
270283

271-
ADD_CONSOLE_CMD(reloadbans, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
284+
ADD_CONSOLE_CMD(reloadbans, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
272285
{
273286
core->getConfig().reloadBans();
274287
console.sendMessage(sender, "Banlist reloded.");
275288
});
276289

277-
ADD_CONSOLE_CMD(unbanip, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
290+
ADD_CONSOLE_CMD(unbanip, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
278291
{
279292
if (params.empty())
280293
{
@@ -290,7 +303,7 @@ ADD_CONSOLE_CMD(unbanip, [](const String& params, const ConsoleCommandSenderData
290303
core->getConfig().removeBan(unban);
291304
});
292305

293-
ADD_CONSOLE_CMD(gravity, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
306+
ADD_CONSOLE_CMD(gravity, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
294307
{
295308
float gravity = 0.008f;
296309
if (sscanf(params.data(), "%f", &gravity) == EOF)
@@ -301,7 +314,7 @@ ADD_CONSOLE_CMD(gravity, [](const String& params, const ConsoleCommandSenderData
301314
core->setGravity(gravity);
302315
});
303316

304-
ADD_CONSOLE_CMD(weather, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
317+
ADD_CONSOLE_CMD(weather, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
305318
{
306319
int weather = 0;
307320
if (sscanf(params.data(), "%d", &weather) == EOF)
@@ -312,7 +325,7 @@ ADD_CONSOLE_CMD(weather, [](const String& params, const ConsoleCommandSenderData
312325
core->setWeather(weather);
313326
});
314327

315-
ADD_CONSOLE_CMD(rcon_password, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
328+
ADD_CONSOLE_CMD(rcon_password, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
316329
{
317330
if (params.empty())
318331
{
@@ -322,12 +335,12 @@ ADD_CONSOLE_CMD(rcon_password, [](const String& params, const ConsoleCommandSend
322335
core->setData(SettableCoreDataType::AdminPassword, params);
323336
});
324337

325-
ADD_CONSOLE_CMD(echo, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
338+
ADD_CONSOLE_CMD(echo, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
326339
{
327340
console.sendMessage(sender, params);
328341
});
329342

330-
ADD_CONSOLE_CMD(messageslimit, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
343+
ADD_CONSOLE_CMD(messageslimit, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
331344
{
332345
int value = 0;
333346
if (sscanf(params.data(), "%d", &value) == EOF)
@@ -339,7 +352,7 @@ ADD_CONSOLE_CMD(messageslimit, [](const String& params, const ConsoleCommandSend
339352
core->updateNetworks();
340353
});
341354

342-
ADD_CONSOLE_CMD(messageholelimit, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
355+
ADD_CONSOLE_CMD(messageholelimit, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
343356
{
344357
int value = 0;
345358
if (sscanf(params.data(), "%d", &value) == EOF)
@@ -351,7 +364,7 @@ ADD_CONSOLE_CMD(messageholelimit, [](const String& params, const ConsoleCommandS
351364
core->updateNetworks();
352365
});
353366

354-
ADD_CONSOLE_CMD(ackslimit, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
367+
ADD_CONSOLE_CMD(ackslimit, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
355368
{
356369
int value = 0;
357370
if (sscanf(params.data(), "%d", &value) == EOF)
@@ -363,7 +376,7 @@ ADD_CONSOLE_CMD(ackslimit, [](const String& params, const ConsoleCommandSenderDa
363376
core->updateNetworks();
364377
});
365378

366-
ADD_CONSOLE_CMD(playertimeout, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
379+
ADD_CONSOLE_CMD(playertimeout, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
367380
{
368381
int value = 0;
369382
if (sscanf(params.data(), "%d", &value) == EOF)
@@ -375,7 +388,7 @@ ADD_CONSOLE_CMD(playertimeout, [](const String& params, const ConsoleCommandSend
375388
core->updateNetworks();
376389
});
377390

378-
ADD_CONSOLE_CMD(rcon, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
391+
ADD_CONSOLE_CMD(rcon, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
379392
{
380393
if (params == "1")
381394
{
@@ -395,7 +408,7 @@ ADD_CONSOLE_CMD(rcon, [](const String& params, const ConsoleCommandSenderData& s
395408
}
396409
});
397410

398-
ADD_CONSOLE_CMD(sleep, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
411+
ADD_CONSOLE_CMD(sleep, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
399412
{
400413
float value = 0.0f;
401414
if (sscanf(params.data(), "%f", &value) == EOF)
@@ -407,7 +420,7 @@ ADD_CONSOLE_CMD(sleep, [](const String& params, const ConsoleCommandSenderData&
407420
core->setThreadSleep(Microseconds(static_cast<long long>(value * 1000.0f)));
408421
});
409422

410-
ADD_CONSOLE_CMD(dynticks, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
423+
ADD_CONSOLE_CMD(dynticks, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
411424
{
412425
int value = 0;
413426
if (sscanf(params.data(), "%d", &value) == EOF)
@@ -419,7 +432,7 @@ ADD_CONSOLE_CMD(dynticks, [](const String& params, const ConsoleCommandSenderDat
419432
core->useDynTicks(bool(value));
420433
});
421434

422-
ADD_CONSOLE_CMD(tickrate, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
435+
ADD_CONSOLE_CMD(tickrate, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
423436
{
424437
int value = 0;
425438
if (sscanf(params.data(), "%d", &value) == EOF)
@@ -433,7 +446,7 @@ ADD_CONSOLE_CMD(tickrate, [](const String& params, const ConsoleCommandSenderDat
433446
core->setThreadSleep(Microseconds(static_cast<long long>(sleep * 1000.0f)));
434447
});
435448

436-
ADD_CONSOLE_CMD(worldtime, [](const String& params, const ConsoleCommandSenderData& sender, IConsoleComponent& console, ICore* core)
449+
ADD_CONSOLE_CMD(worldtime, [](const String& params, const ConsoleCommandSenderData& sender, ConsoleComponent& console, ICore* core)
437450
{
438451
int time;
439452
if (sscanf(params.data(), "%d", &time) == EOF)

0 commit comments

Comments
 (0)