summaryrefslogtreecommitdiff
path: root/src/net/tmwserv
diff options
context:
space:
mode:
authorJared Adams <jaxad0127@gmail.com>2009-04-05 19:17:33 -0600
committerJared Adams <jaxad0127@gmail.com>2009-04-05 19:17:33 -0600
commita0c7d1f61783e77e552896824855377e4bb43f8d (patch)
treee952181b83482abeffbd8ad9c62789b8f72e42e5 /src/net/tmwserv
parent9113afb868f6c1da5911437d3ddabdcf169cbec2 (diff)
downloadmana-a0c7d1f61783e77e552896824855377e4bb43f8d.tar.gz
mana-a0c7d1f61783e77e552896824855377e4bb43f8d.tar.bz2
mana-a0c7d1f61783e77e552896824855377e4bb43f8d.tar.xz
mana-a0c7d1f61783e77e552896824855377e4bb43f8d.zip
Implement TMWServ's NpcHandler
Diffstat (limited to 'src/net/tmwserv')
-rw-r--r--src/net/tmwserv/buysellhandler.cpp2
-rw-r--r--src/net/tmwserv/inventoryhandler.cpp4
-rw-r--r--src/net/tmwserv/inventoryhandler.h2
-rw-r--r--src/net/tmwserv/npchandler.cpp75
-rw-r--r--src/net/tmwserv/npchandler.h34
5 files changed, 111 insertions, 6 deletions
diff --git a/src/net/tmwserv/buysellhandler.cpp b/src/net/tmwserv/buysellhandler.cpp
index bab475d2..e6943ee0 100644
--- a/src/net/tmwserv/buysellhandler.cpp
+++ b/src/net/tmwserv/buysellhandler.cpp
@@ -84,7 +84,7 @@ void BuySellHandler::handleMessage(MessageIn &msg)
int itemId = msg.readInt16();
int amount = msg.readInt16();
int value = msg.readInt16();
- sellDialog->addItem(itemId, amount, value);
+ sellDialog->addItem(new Item(itemId, amount, false), value);
}
break;
}
diff --git a/src/net/tmwserv/inventoryhandler.cpp b/src/net/tmwserv/inventoryhandler.cpp
index f21c25a9..ac079846 100644
--- a/src/net/tmwserv/inventoryhandler.cpp
+++ b/src/net/tmwserv/inventoryhandler.cpp
@@ -37,10 +37,10 @@
#include "resources/iteminfo.h"
-namespace TmwServ {
-
Net::InventoryHandler *inventoryHandler;
+namespace TmwServ {
+
InventoryHandler::InventoryHandler()
{
static const Uint16 _messages[] = {
diff --git a/src/net/tmwserv/inventoryhandler.h b/src/net/tmwserv/inventoryhandler.h
index 38281e2a..c70b10c0 100644
--- a/src/net/tmwserv/inventoryhandler.h
+++ b/src/net/tmwserv/inventoryhandler.h
@@ -52,8 +52,6 @@ class InventoryHandler : public MessageHandler, Net::InventoryHandler
StorageType destination);
};
-extern Net::InventoryHandler *inventoryHandler;
-
} // namespace TmwServ
#endif
diff --git a/src/net/tmwserv/npchandler.cpp b/src/net/tmwserv/npchandler.cpp
index 4acd2eee..63d341d7 100644
--- a/src/net/tmwserv/npchandler.cpp
+++ b/src/net/tmwserv/npchandler.cpp
@@ -23,6 +23,8 @@
#include "net/tmwserv/protocol.h"
+#include "net/tmwserv/gameserver/player.h"
+
#include "net/messagein.h"
#include "beingmanager.h"
@@ -32,6 +34,10 @@
#include "gui/npcpostdialog.h"
#include "gui/npc_text.h"
+Net::NpcHandler *npcHandler;
+
+namespace TmwServ {
+
NpcHandler::NpcHandler()
{
static const Uint16 _messages[] = {
@@ -42,6 +48,7 @@ NpcHandler::NpcHandler()
0
};
handledMessages = _messages;
+ npcHandler = this;
}
void NpcHandler::handleMessage(MessageIn &msg)
@@ -81,3 +88,71 @@ void NpcHandler::handleMessage(MessageIn &msg)
break;
}
}
+
+void NpcHandler::talk(int npcId)
+{
+ Net::GameServer::Player::talkToNPC(npcId, true);
+}
+
+void NpcHandler::nextDialog(int npcId)
+{
+ Net::GameServer::Player::talkToNPC(npcId, false);
+}
+
+void NpcHandler::closeDialog(int npcId)
+{
+ // TODO
+}
+
+void NpcHandler::listInput(int npcId, int value)
+{
+ Net::GameServer::Player::selectFromNPC(npcId, value);
+}
+
+void NpcHandler::integerInput(int npcId, int value)
+{
+ // TODO
+}
+
+void NpcHandler::stringInput(int npcId, const std::string &value)
+{
+ // TODO
+}
+
+void NpcHandler::sendLetter(int npcId, const std::string &recipient,
+ const std::string &text)
+{
+ Net::GameServer::Player::sendLetter(recipient, text);
+}
+
+void NpcHandler::startShopping(int beingId)
+{
+ // TODO
+}
+
+void NpcHandler::buy(int beingId)
+{
+ // TODO
+}
+
+void NpcHandler::sell(int beingId)
+{
+ // TODO
+}
+
+void NpcHandler::buyItem(int beingId, int itemId, int amount)
+{
+ Net::GameServer::Player::tradeWithNPC(itemId, amount);
+}
+
+void NpcHandler::sellItem(int beingId, int itemId, int amount)
+{
+ Net::GameServer::Player::tradeWithNPC(itemId, amount);
+}
+
+void NpcHandler::endShopping(int beingId)
+{
+ // TODO
+}
+
+} // namespace TmwServ
diff --git a/src/net/tmwserv/npchandler.h b/src/net/tmwserv/npchandler.h
index c8ad738b..2c405e16 100644
--- a/src/net/tmwserv/npchandler.h
+++ b/src/net/tmwserv/npchandler.h
@@ -23,13 +23,45 @@
#define NET_TMWSERV_NPCHANDLER_H
#include "net/messagehandler.h"
+#include "net/npchandler.h"
-class NpcHandler : public MessageHandler
+namespace TmwServ {
+
+class NpcHandler : public MessageHandler, public Net::NpcHandler
{
public:
NpcHandler();
void handleMessage(MessageIn &msg);
+
+ void talk(int npcId);
+
+ void nextDialog(int npcId);
+
+ void closeDialog(int npcId);
+
+ void listInput(int npcId, int value);
+
+ void integerInput(int npcId, int value);
+
+ void stringInput(int npcId, const std::string &value);
+
+ void sendLetter(int npcId, const std::string &recipient,
+ const std::string &text);
+
+ void startShopping(int beingId);
+
+ void buy(int beingId);
+
+ void sell(int beingId);
+
+ void buyItem(int beingId, int itemId, int amount);
+
+ void sellItem(int beingId, int itemId, int amount);
+
+ void endShopping(int beingId);
};
+} // namespace TmwServ
+
#endif