aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Chat/ChatCommands/ChatCommand.h22
-rw-r--r--src/server/game/Chat/ChatCommands/ChatCommandArgs.h10
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp10
3 files changed, 21 insertions, 21 deletions
diff --git a/src/server/game/Chat/ChatCommands/ChatCommand.h b/src/server/game/Chat/ChatCommands/ChatCommand.h
index 25fcff415c1..75516894c6a 100644
--- a/src/server/game/Chat/ChatCommands/ChatCommand.h
+++ b/src/server/game/Chat/ChatCommands/ChatCommand.h
@@ -141,6 +141,14 @@ namespace Trinity::Impl::ChatCommands
};
_handler = reinterpret_cast<void*>(handler);
}
+ CommandInvoker(bool(&handler)(ChatHandler*, char const*))
+ {
+ _wrapper = [](void* handler, ChatHandler* chatHandler, std::string_view argsStr)
+ {
+ return reinterpret_cast<bool(*)(ChatHandler*, char const*)>(handler)(chatHandler, argsStr.empty() ? "" : argsStr.data());
+ };
+ _handler = reinterpret_cast<void*>(handler);
+ }
explicit operator bool() const { return (_wrapper != nullptr); }
bool operator()(ChatHandler* chatHandler, std::string_view args) const
@@ -215,17 +223,19 @@ namespace Trinity::ChatCommands
{}
ChatCommandBuilder(ChatCommandBuilder const&) = default;
- /* deprecated: char const* parameters to command handlers */
- [[deprecated]] ChatCommandBuilder(char const* name, bool(&handler)(ChatHandler*, char const*), rbac::RBACPermissions permission, Trinity::ChatCommands::Console allowConsole)
+ [[deprecated("char const* parameters to command handlers are deprecated; convert this to a typed argument handler instead")]]
+ ChatCommandBuilder(char const* name, bool(&handler)(ChatHandler*, char const*), rbac::RBACPermissions permission, Trinity::ChatCommands::Console allowConsole)
: _name{ ASSERT_NOTNULL(name) }, _data{ std::in_place_type<InvokerEntry>, std::piecewise_construct, std::forward_as_tuple(handler), std::forward_as_tuple(permission, allowConsole) }
{}
- /* deprecated: old-style command table format */
template <typename TypedHandler>
- [[deprecated]] ChatCommandBuilder(char const* name, rbac::RBACPermissions permission, bool console, TypedHandler* handler, char const*)
+ [[deprecated("you are using the old-style command format; convert this to the new format ({ name, handler (not a pointer!), permission, Console::(Yes/No) })")]]
+ ChatCommandBuilder(char const* name, rbac::RBACPermissions permission, bool console, TypedHandler* handler, char const*)
: _name{ ASSERT_NOTNULL(name) }, _data{ std::in_place_type<InvokerEntry>, std::piecewise_construct, std::forward_as_tuple(*handler), std::forward_as_tuple(permission, static_cast<Trinity::ChatCommands::Console>(console)) }
{}
- [[deprecated]] ChatCommandBuilder(char const* name, rbac::RBACPermissions, bool, std::nullptr_t, char const*, std::vector <ChatCommandBuilder> const& sub)
+
+ [[deprecated("you are using the old-style command format; convert this to the new format ({ name, subCommands })")]]
+ ChatCommandBuilder(char const* name, rbac::RBACPermissions, bool, std::nullptr_t, char const*, std::vector <ChatCommandBuilder> const& sub)
: _name{ ASSERT_NOTNULL(name) }, _data { std::in_place_type<SubCommandEntry>, sub }
{}
@@ -242,6 +252,6 @@ namespace Trinity::ChatCommands
}
// backwards compatibility with old patches
-using ChatCommand [[deprecated]] = Trinity::ChatCommands::ChatCommandBuilder;
+using ChatCommand [[deprecated("std::vector<ChatCommand> should be ChatCommandTable! (using namespace Trinity::ChatCommands)")]] = Trinity::ChatCommands::ChatCommandBuilder;
#endif
diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h
index 5d51e7c6da6..7262b8f180c 100644
--- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h
+++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h
@@ -74,16 +74,6 @@ namespace Trinity::Impl::ChatCommands
}
};
- /*
- for backwards compatibility, consumes the rest of the string
- new code should use the Tail/WTail tags defined in ChatCommandTags
- */
- template <>
- struct ArgInfo<char const*, void>
- {
- static ChatCommandResult TryConsume(char const*& arg, ChatHandler const*, std::string_view args) { arg = (args.empty() ? "" : args.data()); return std::string_view(); }
- };
-
// string_view
template <>
struct ArgInfo<std::string_view, void>
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index 5c108c6e42a..59b92a92300 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -111,11 +111,11 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestG
else
object = ObjectAccessor::FindPlayer(packet.QuestGiverGUID);
-#define CLOSE_GOSSIP_CLEAR_SHARING_INFO() \
- do { \
- _player->PlayerTalkClass->SendCloseGossip(); \
- _player->ClearQuestSharingInfo(); \
- } while (0)
+ auto CLOSE_GOSSIP_CLEAR_SHARING_INFO = ([this]()
+ {
+ _player->PlayerTalkClass->SendCloseGossip();
+ _player->ClearQuestSharingInfo();
+ });
// no or incorrect quest giver
if (!object)