summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/buysell.cpp34
-rw-r--r--src/gui/buysell.h7
-rw-r--r--src/gui/npc_text.cpp18
-rw-r--r--src/gui/npc_text.h9
-rw-r--r--src/gui/npcintegerdialog.cpp16
-rw-r--r--src/gui/npcintegerdialog.h4
-rw-r--r--src/gui/npclistdialog.cpp16
-rw-r--r--src/gui/npclistdialog.h5
-rw-r--r--src/gui/npcstringdialog.cpp22
-rw-r--r--src/gui/npcstringdialog.h5
10 files changed, 102 insertions, 34 deletions
diff --git a/src/gui/buysell.cpp b/src/gui/buysell.cpp
index 7d63f184..dc7deef6 100644
--- a/src/gui/buysell.cpp
+++ b/src/gui/buysell.cpp
@@ -25,10 +25,13 @@
#include "../npc.h"
+#include "../net/messageout.h"
+#include "../net/protocol.h"
+
#include "../utils/gettext.h"
-BuySellDialog::BuySellDialog():
- Window(_("Shop"))
+BuySellDialog::BuySellDialog(Network *network):
+ Window(_("Shop")), mNetwork(network)
{
Button *buyButton = 0;
static const char *buttonNames[] = {
@@ -54,12 +57,27 @@ BuySellDialog::BuySellDialog():
void BuySellDialog::action(const gcn::ActionEvent &event)
{
- if (event.getId() == "Buy") {
- current_npc->buy();
- } else if (event.getId() == "Sell") {
- current_npc->sell();
- } else if (event.getId() == "Cancel") {
+ setVisible(false);
+ int action = 0;
+
+ NPC::mTalking = false;
+
+ if (event.getId() == "Buy")
+ {
+ action = 0;
+ }
+ else if (event.getId() == "Sell")
+ {
+ action = 1;
+ }
+ else if (event.getId() == "Cancel")
+ {
current_npc = 0;
+ return;
}
- setVisible(false);
+
+ MessageOut outMsg(mNetwork);
+ outMsg.writeInt16(CMSG_NPC_BUY_SELL_REQUEST);
+ outMsg.writeInt32(current_npc);
+ outMsg.writeInt8(action);
}
diff --git a/src/gui/buysell.h b/src/gui/buysell.h
index c12e3c9b..747066a7 100644
--- a/src/gui/buysell.h
+++ b/src/gui/buysell.h
@@ -27,6 +27,8 @@
#include "window.h"
+class Network;
+
/**
* A dialog to choose between buying or selling at a shop.
*
@@ -41,12 +43,15 @@ class BuySellDialog : public Window, public gcn::ActionListener
*
* @see Window::Window
*/
- BuySellDialog();
+ BuySellDialog(Network *network);
/**
* Called when receiving actions from the widgets.
*/
void action(const gcn::ActionEvent &event);
+
+ private:
+ Network *mNetwork;
};
#endif
diff --git a/src/gui/npc_text.cpp b/src/gui/npc_text.cpp
index c28f1403..b94e8aa4 100644
--- a/src/gui/npc_text.cpp
+++ b/src/gui/npc_text.cpp
@@ -29,10 +29,13 @@
#include "../npc.h"
+#include "../net/messageout.h"
+#include "../net/protocol.h"
+
#include "../utils/gettext.h"
-NpcTextDialog::NpcTextDialog():
- Window(_("NPC"))
+NpcTextDialog::NpcTextDialog(Network *network):
+ Window(_("NPC")), mNetwork(network)
{
setResizable(true);
@@ -87,12 +90,19 @@ void NpcTextDialog::action(const gcn::ActionEvent &event)
setVisible(false);
if (current_npc)
- current_npc->nextDialog();
+ nextDialog();
- current_npc = NULL;
+ current_npc = 0;
}
}
+void NpcTextDialog::nextDialog(int npcID)
+{
+ MessageOut outMsg(mNetwork);
+ outMsg.writeInt16(CMSG_NPC_NEXT_REQUEST);
+ outMsg.writeInt32(npcID);
+}
+
void NpcTextDialog::widgetResized(const gcn::Event &event)
{
Window::widgetResized(event);
diff --git a/src/gui/npc_text.h b/src/gui/npc_text.h
index 63d41cd6..a72de5d0 100644
--- a/src/gui/npc_text.h
+++ b/src/gui/npc_text.h
@@ -29,6 +29,9 @@
#include "window.h"
+#include "../npc.h"
+
+class Network;
class TextBox;
/**
@@ -44,7 +47,7 @@ class NpcTextDialog : public Window, public gcn::ActionListener
*
* @see Window::Window
*/
- NpcTextDialog();
+ NpcTextDialog(Network *network);
/**
* Called when receiving actions from the widgets.
@@ -71,6 +74,8 @@ class NpcTextDialog : public Window, public gcn::ActionListener
*/
void addText(const std::string &string);
+ void nextDialog(int npcID = current_npc);
+
/**
* Called when resizing the window.
*
@@ -79,7 +84,7 @@ class NpcTextDialog : public Window, public gcn::ActionListener
void widgetResized(const gcn::Event &event);
private:
- gcn::Button *okButton;
+ Network *mNetwork;
gcn::ScrollArea *mScrollArea;
TextBox *mTextBox;
gcn::Button *mButton;
diff --git a/src/gui/npcintegerdialog.cpp b/src/gui/npcintegerdialog.cpp
index 9c49a630..132a7608 100644
--- a/src/gui/npcintegerdialog.cpp
+++ b/src/gui/npcintegerdialog.cpp
@@ -28,10 +28,13 @@
#include "../npc.h"
+#include "../net/messageout.h"
+#include "../net/protocol.h"
+
#include "../utils/gettext.h"
-NpcIntegerDialog::NpcIntegerDialog():
- Window(_("NPC Number Request"))
+NpcIntegerDialog::NpcIntegerDialog(Network *network):
+ Window(_("NPC Number Request")), mNetwork(network)
{
mValueField = new IntTextField();
@@ -104,11 +107,14 @@ void NpcIntegerDialog::action(const gcn::ActionEvent &event)
if (finish)
{
setVisible(false);
+ NPC::mTalking = false;
- if (current_npc)
- current_npc->integerInput(mValueField->getValue());
+ MessageOut outMsg(mNetwork);
+ outMsg.writeInt16(CMSG_NPC_INT_RESPONSE);
+ outMsg.writeInt32(current_npc);
+ outMsg.writeInt32(mValueField->getValue());
- current_npc = NULL;
+ current_npc = 0;
mValueField->reset();
}
}
diff --git a/src/gui/npcintegerdialog.h b/src/gui/npcintegerdialog.h
index cca8cb32..15bdee48 100644
--- a/src/gui/npcintegerdialog.h
+++ b/src/gui/npcintegerdialog.h
@@ -27,6 +27,7 @@
#include "window.h"
+class Network;
class IntTextField;
/**
@@ -42,7 +43,7 @@ class NpcIntegerDialog : public Window, public gcn::ActionListener
*
* @see Window::Window
*/
- NpcIntegerDialog();
+ NpcIntegerDialog(Network *network);
/**
* Called when receiving actions from the widgets.
@@ -78,6 +79,7 @@ class NpcIntegerDialog : public Window, public gcn::ActionListener
void requestFocus();
private:
+ Network *mNetwork;
gcn::Button *mDecButton;
gcn::Button *mIncButton;
IntTextField *mValueField;
diff --git a/src/gui/npclistdialog.cpp b/src/gui/npclistdialog.cpp
index 2c4dfc04..73b00239 100644
--- a/src/gui/npclistdialog.cpp
+++ b/src/gui/npclistdialog.cpp
@@ -31,10 +31,13 @@
#include "../npc.h"
+#include "../net/messageout.h"
+#include "../net/protocol.h"
+
#include "../utils/gettext.h"
-NpcListDialog::NpcListDialog():
- Window(_("NPC"))
+NpcListDialog::NpcListDialog(Network *network):
+ Window(_("NPC")), mNetwork(network)
{
setResizable(true);
@@ -86,6 +89,7 @@ void NpcListDialog::parseItems(const std::string &itemString)
void NpcListDialog::reset()
{
+ NPC::mTalking = false;
mItemList->setSelected(-1);
mItems.clear();
}
@@ -112,10 +116,12 @@ void NpcListDialog::action(const gcn::ActionEvent &event)
setVisible(false);
reset();
- if (current_npc)
- current_npc->dialogChoice(choice);
+ MessageOut outMsg(mNetwork);
+ outMsg.writeInt16(CMSG_NPC_LIST_CHOICE);
+ outMsg.writeInt32(current_npc);
+ outMsg.writeInt8(choice);
- current_npc = NULL;
+ current_npc = 0;
}
}
diff --git a/src/gui/npclistdialog.h b/src/gui/npclistdialog.h
index de3a7a77..0a0e9813 100644
--- a/src/gui/npclistdialog.h
+++ b/src/gui/npclistdialog.h
@@ -30,6 +30,8 @@
#include "window.h"
+class Network;
+
/**
* The npc list dialog.
*
@@ -44,7 +46,7 @@ class NpcListDialog : public Window, public gcn::ActionListener,
*
* @see Window::Window
*/
- NpcListDialog();
+ NpcListDialog(Network *network);
/**
* Called when receiving actions from the widgets.
@@ -79,6 +81,7 @@ class NpcListDialog : public Window, public gcn::ActionListener,
void requestFocus();
private:
+ Network *mNetwork;
gcn::ListBox *mItemList;
gcn::ScrollArea *scrollArea;
gcn::Button *okButton;
diff --git a/src/gui/npcstringdialog.cpp b/src/gui/npcstringdialog.cpp
index 140ca40f..f2c7434c 100644
--- a/src/gui/npcstringdialog.cpp
+++ b/src/gui/npcstringdialog.cpp
@@ -28,10 +28,13 @@
#include "../npc.h"
+#include "../net/messageout.h"
+#include "../net/protocol.h"
+
#include "../utils/gettext.h"
-NpcStringDialog::NpcStringDialog():
- Window(_("NPC Text Request"))
+NpcStringDialog::NpcStringDialog(Network *network):
+ Window(_("NPC Text Request")), mNetwork(network)
{
mValueField = new TextField("");
@@ -64,12 +67,19 @@ void NpcStringDialog::action(const gcn::ActionEvent &event)
}
setVisible(false);
+ NPC::mTalking = false;
- if (current_npc)
- current_npc->stringInput(mValueField->getText());
-
- current_npc = NULL;
+ std::string text = mValueField->getText();
mValueField->setText("");
+
+ MessageOut outMsg(mNetwork);
+ outMsg.writeInt16(CMSG_NPC_STR_RESPONSE);
+ outMsg.writeInt16(text.length() + 9);
+ outMsg.writeInt32(current_npc);
+ outMsg.writeString(text, text.length());
+ outMsg.writeInt8(0);
+
+ current_npc = 0;
}
bool NpcStringDialog::isInputFocused()
diff --git a/src/gui/npcstringdialog.h b/src/gui/npcstringdialog.h
index c8871184..ee620daf 100644
--- a/src/gui/npcstringdialog.h
+++ b/src/gui/npcstringdialog.h
@@ -27,6 +27,8 @@
#include "window.h"
+class Network;
+
/**
* The npc integer input dialog.
*
@@ -40,7 +42,7 @@ class NpcStringDialog : public Window, public gcn::ActionListener
*
* @see Window::Window
*/
- NpcStringDialog();
+ NpcStringDialog(Network *network);
/**
* Called when receiving actions from the widgets.
@@ -70,6 +72,7 @@ class NpcStringDialog : public Window, public gcn::ActionListener
void requestFocus();
private:
+ Network *mNetwork;
gcn::TextField *mValueField;
gcn::Button *okButton;
gcn::Button *cancelButton;