diff options
-rw-r--r-- | src/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/actions/actions.cpp | 34 | ||||
-rw-r--r-- | src/actions/actions.h | 2 | ||||
-rw-r--r-- | src/actions/commands.cpp | 36 | ||||
-rw-r--r-- | src/actions/commands.h | 3 | ||||
-rw-r--r-- | src/actions/pets.cpp | 133 | ||||
-rw-r--r-- | src/actions/pets.h | 39 | ||||
-rw-r--r-- | src/input/inputactionmap.h | 1 |
9 files changed, 177 insertions, 75 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d9e314785..7fddb7a97 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -789,6 +789,8 @@ SET(SRCS actions/commands.h actions/move.cpp actions/move.h + actions/pets.cpp + actions/pets.h actions/statusbar.cpp actions/statusbar.h actions/tabs.cpp diff --git a/src/Makefile.am b/src/Makefile.am index 6ae632933..8a5388af1 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -911,6 +911,8 @@ manaplus_SOURCES += gui/widgets/avatarlistbox.cpp \ actions/commands.h \ actions/move.cpp \ actions/move.h \ + actions/pets.cpp \ + actions/pets.h \ actions/statusbar.cpp \ actions/statusbar.h \ actions/tabs.cpp \ diff --git a/src/actions/actions.cpp b/src/actions/actions.cpp index d43853790..6d54ec1bb 100644 --- a/src/actions/actions.cpp +++ b/src/actions/actions.cpp @@ -77,7 +77,6 @@ #include "net/ipc.h" #include "net/mercenaryhandler.h" #include "net/npchandler.h" -#include "net/pethandler.h" #include "net/playerhandler.h" #include "net/uploadcharinfo.h" #include "net/tradehandler.h" @@ -288,22 +287,6 @@ impHandler(emote) return false; } -impHandler(petEmote) -{ - if (event.action >= InputAction::PET_EMOTE_1 - && event.action <= InputAction::PET_EMOTE_48) - { - const int emotion = event.action - InputAction::PET_EMOTE_1; - if (emoteShortcut) - petHandler->emote(emoteShortcut->getEmote(emotion), 0); - if (Game::instance()) - Game::instance()->setValidSpeed(); - return true; - } - - return false; -} - impHandler(outfit) { if (inputManager.isActionActive(InputAction::WEAR_OUTFIT)) @@ -1401,23 +1384,6 @@ impHandler(uploadLog) return true; } -impHandler(catchPet) -{ - if (!localPlayer || !actorManager) - return false; - - Being *target = nullptr; - if (!event.args.empty()) - target = actorManager->findNearestByName(event.args); - if (!target) - target = localPlayer->getTarget(); - else - localPlayer->setTarget(target); - if (target) - petHandler->catchPet(target); - return true; -} - impHandler0(mercenaryFire) { mercenaryHandler->fire(); diff --git a/src/actions/actions.h b/src/actions/actions.h index 922d32d12..d726fbde1 100644 --- a/src/actions/actions.h +++ b/src/actions/actions.h @@ -30,7 +30,6 @@ struct InputEvent; namespace Actions { decHandler(emote); - decHandler(petEmote); decHandler(outfit); decHandler(mouseClick); decHandler(ok); @@ -94,7 +93,6 @@ namespace Actions decHandler(uploadConfig); decHandler(uploadServerConfig); decHandler(uploadLog); - decHandler(catchPet); decHandler(mercenaryFire); decHandler(useItem); decHandler(useItemInv); diff --git a/src/actions/commands.cpp b/src/actions/commands.cpp index d2155d54b..dab837172 100644 --- a/src/actions/commands.cpp +++ b/src/actions/commands.cpp @@ -47,7 +47,6 @@ #include "net/guildhandler.h" #include "net/homunculushandler.h" #include "net/partyhandler.h" -#include "net/pethandler.h" #include "net/serverfeatures.h" #include "resources/iteminfo.h" @@ -376,14 +375,6 @@ impHandler(commandEmote) return false; } -impHandler(commandEmotePet) -{ - // need use actual pet id - petHandler->emote(static_cast<uint8_t>( - atoi(event.args.c_str())), 0); - return true; -} - impHandler(awayMessage) { if (localPlayer) @@ -733,23 +724,6 @@ impHandler(talkRaw) return true; } -impHandler(talkPet) -{ - std::string args = event.args; - // in future probably need add channel detection - if (!localPlayer->getPets().empty()) - { - if (findCutFirst(args, "/me ")) - args = textToMe(args); - chatHandler->talkPet(args, GENERAL_CHANNEL); - } - else - { - chatHandler->talk(args, GENERAL_CHANNEL); - } - return true; -} - impHandler(gm) { chatHandler->talk("@wgm " + event.args, GENERAL_CHANNEL); @@ -796,16 +770,6 @@ impHandler(serverUnIgnoreWhisper) return true; } -impHandler(setPetName) -{ - const std::string args = event.args; - if (args.empty()) - return false; - - petHandler->setName(args); - return true; -} - impHandler(setHomunculusName) { const std::string args = event.args; diff --git a/src/actions/commands.h b/src/actions/commands.h index 245b514a2..6543295fd 100644 --- a/src/actions/commands.h +++ b/src/actions/commands.h @@ -44,7 +44,6 @@ namespace Actions decHandler(setTarget); decHandler(commandOutfit); decHandler(commandEmote); - decHandler(commandEmotePet); decHandler(awayMessage); decHandler(pseudoAway); decHandler(follow); @@ -71,13 +70,11 @@ namespace Actions decHandler(enableAway); decHandler(testParticle); decHandler(talkRaw); - decHandler(talkPet); decHandler(gm); decHandler(hack); decHandler(debugSpawn); decHandler(serverIgnoreWhisper); decHandler(serverUnIgnoreWhisper); - decHandler(setPetName); decHandler(setHomunculusName); decHandler(fireHomunculus); decHandler(leaveParty); diff --git a/src/actions/pets.cpp b/src/actions/pets.cpp new file mode 100644 index 000000000..30cfc9613 --- /dev/null +++ b/src/actions/pets.cpp @@ -0,0 +1,133 @@ +/* + * The ManaPlus Client + * Copyright (C) 2012-2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "actions/pets.h" + +#include "actormanager.h" +#include "configuration.h" +#include "game.h" +#include "emoteshortcut.h" +#include "inventory.h" +#include "item.h" +#include "party.h" + +#include "actions/actiondef.h" + +#include "being/localplayer.h" +#include "being/playerinfo.h" +#include "being/playerrelations.h" + +#include "gui/chatconsts.h" +#include "gui/viewport.h" + +#include "gui/windows/chatwindow.h" +#include "gui/windows/socialwindow.h" +#include "gui/windows/outfitwindow.h" + +#include "gui/widgets/tabs/chat/whispertab.h" + +#include "net/adminhandler.h" +#include "net/chathandler.h" +#include "net/guildhandler.h" +#include "net/homunculushandler.h" +#include "net/partyhandler.h" +#include "net/pethandler.h" +#include "net/serverfeatures.h" + +#include "resources/iteminfo.h" + +#include "utils/chatutils.h" +#include "utils/gettext.h" +#include "utils/process.h" + +#include "debug.h" + +namespace Actions +{ + +impHandler(commandEmotePet) +{ + // need use actual pet id + petHandler->emote(static_cast<uint8_t>( + atoi(event.args.c_str())), 0); + return true; +} + +impHandler(talkPet) +{ + std::string args = event.args; + // in future probably need add channel detection + if (!localPlayer->getPets().empty()) + { + if (findCutFirst(args, "/me ")) + args = textToMe(args); + chatHandler->talkPet(args, GENERAL_CHANNEL); + } + else + { + chatHandler->talk(args, GENERAL_CHANNEL); + } + return true; +} + +impHandler(setPetName) +{ + const std::string args = event.args; + if (args.empty()) + return false; + + petHandler->setName(args); + return true; +} + +impHandler(petEmote) +{ + if (event.action >= InputAction::PET_EMOTE_1 + && event.action <= InputAction::PET_EMOTE_48) + { + const int emotion = event.action - InputAction::PET_EMOTE_1; + if (emoteShortcut) + petHandler->emote(emoteShortcut->getEmote(emotion), 0); + if (Game::instance()) + Game::instance()->setValidSpeed(); + return true; + } + + return false; +} + +impHandler(catchPet) +{ + if (!localPlayer || !actorManager) + return false; + + Being *target = nullptr; + if (!event.args.empty()) + target = actorManager->findNearestByName(event.args); + if (!target) + target = localPlayer->getTarget(); + else + localPlayer->setTarget(target); + if (target) + petHandler->catchPet(target); + return true; +} + +} // namespace Actions diff --git a/src/actions/pets.h b/src/actions/pets.h new file mode 100644 index 000000000..e0521b546 --- /dev/null +++ b/src/actions/pets.h @@ -0,0 +1,39 @@ +/* + * The ManaPlus Client + * Copyright (C) 2011-2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef ACTIONS_PETS_H +#define ACTIONS_PETS_H + +#define decHandler(name) bool name(InputEvent &event) + +struct InputEvent; + +namespace Actions +{ + decHandler(commandEmotePet); + decHandler(talkPet); + decHandler(setPetName); + decHandler(petEmote); + decHandler(catchPet); +} // namespace Actions + +#undef decHandler + +#endif // ACTIONS_PETS_H diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h index 6d09c4e6f..4c1c6d986 100644 --- a/src/input/inputactionmap.h +++ b/src/input/inputactionmap.h @@ -29,6 +29,7 @@ #include "actions/chat.h" #include "actions/commands.h" #include "actions/move.h" +#include "actions/pets.h" #include "actions/statusbar.h" #include "actions/tabs.h" #include "actions/target.h" |