diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Chat/ChatCommands/ChatCommand.h | 22 | ||||
-rw-r--r-- | src/server/game/Chat/ChatCommands/ChatCommandArgs.h | 10 | ||||
-rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 10 |
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 727a40f1e3c..e6fd93b9c11 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommand.h +++ b/src/server/game/Chat/ChatCommands/ChatCommand.h @@ -142,6 +142,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 @@ -216,17 +224,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 } {} @@ -243,6 +253,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 fa88ae7038a..4b36b28b26d 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 11f60f30435..07b61c7c518 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -118,11 +118,11 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvData) else object = ObjectAccessor::FindPlayer(guid); -#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) |