summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <bjorn@lindeijer.nl>2025-05-12 09:28:27 +0200
committerThorbjørn Lindeijer <bjorn@lindeijer.nl>2025-05-12 09:32:51 +0200
commitb418c02be75bd364aabaae130709a748d23fa42a (patch)
tree37d155163b2d567b75d0caa181d695726543855e
parent3f630c76de06a0cbda163342b5ae0bf166aaad9f (diff)
downloadmana-b418c02be75bd364aabaae130709a748d23fa42a.tar.gz
mana-b418c02be75bd364aabaae130709a748d23fa42a.tar.bz2
mana-b418c02be75bd364aabaae130709a748d23fa42a.tar.xz
mana-b418c02be75bd364aabaae130709a748d23fa42a.zip
Fixed handling of "close2" script command
When adding support for SMSG_NPC_COMMAND in d5ebad4e74da011777f9ba1a13f, I mistakenly assumed the "close dialog" (5) command should just close the NPC dialog. However, the client is expected to send CMSG_NPC_CLOSE as well. Closes #91 Closes #107 Closes #108
-rw-r--r--src/event.h1
-rw-r--r--src/gui/npcdialog.cpp38
-rw-r--r--src/net/manaserv/npchandler.cpp2
3 files changed, 11 insertions, 30 deletions
diff --git a/src/event.h b/src/event.h
index 06e38007..d3fdede9 100644
--- a/src/event.h
+++ b/src/event.h
@@ -76,7 +76,6 @@ public:
DoMove,
DoUnequip,
DoUse,
- End,
EnginesInitialized,
EnginesInitializing,
GuiWindowsLoaded,
diff --git a/src/gui/npcdialog.cpp b/src/gui/npcdialog.cpp
index e2e7b040..16e7db94 100644
--- a/src/gui/npcdialog.cpp
+++ b/src/gui/npcdialog.cpp
@@ -537,16 +537,11 @@ void NpcEventListener::event(Event::Channel channel,
else if (event.getType() == Event::Next)
{
int id = event.getInt("id");
- NpcDialog *dialog = getDialog(id, false);
- if (!dialog)
- {
- int mNpcId = id;
- Net::getNpcHandler()->nextDialog(mNpcId);
- return;
- }
-
- dialog->showNextButton();
+ if (NpcDialog *dialog = getDialog(id, false))
+ dialog->showNextButton();
+ else
+ Net::getNpcHandler()->nextDialog(id);
}
else if (event.getType() == Event::ClearDialog)
{
@@ -556,32 +551,19 @@ void NpcEventListener::event(Event::Channel channel,
else if (event.getType() == Event::Close)
{
int id = event.getInt("id");
- NpcDialog *dialog = getDialog(id, false);
- if (!dialog)
- {
- int mNpcId = id;
- Net::getNpcHandler()->closeDialog(mNpcId);
- return;
- }
-
- dialog->showCloseButton();
- }
- else if (event.getType() == Event::CloseDialog)
- {
- if (NpcDialog *dialog = getDialog(event.getInt("id"), false))
- dialog->setVisible(false);
+ if (NpcDialog *dialog = getDialog(id, false))
+ dialog->showCloseButton();
+ else
+ Net::getNpcHandler()->closeDialog(id);
}
else if (event.getType() == Event::CloseAll)
{
NpcDialog::closeAll();
}
- else if (event.getType() == Event::End)
+ else if (event.getType() == Event::CloseDialog)
{
- int id = event.getInt("id");
- NpcDialog *dialog = getDialog(id, false);
-
- if (dialog)
+ if (NpcDialog *dialog = getDialog(event.getInt("id"), false))
dialog->close();
}
else if (event.getType() == Event::Post)
diff --git a/src/net/manaserv/npchandler.cpp b/src/net/manaserv/npchandler.cpp
index 44729654..df139d23 100644
--- a/src/net/manaserv/npchandler.cpp
+++ b/src/net/manaserv/npchandler.cpp
@@ -101,7 +101,7 @@ void NpcHandler::handleMessage(MessageIn &msg)
break;
case GPMSG_NPC_ERROR:
- event = new Event(Event::End);
+ event = new Event(Event::CloseDialog);
event->setInt("id", npcId);
event->trigger(Event::NpcChannel);
break;