void NpcEventListener::event(Event::Channel channel, const Event &event) { if (channel != Event::NpcChannel) return; if (event.getType() == Event::Message) { NpcDialog *dialog = getDialog(event.getInt("id")); dialog->addText(event.getString("text")); } else if (event.getType() == Event::Menu) { NpcDialog *dialog = getDialog(event.getInt("id")); dialog->choiceRequest(); int count = event.getInt("choiceCount"); for (int i = 1; i <= count; i++) dialog->addChoice(event.getString("choice" + toString(i))); dialog->initChoiceSelection(); } else if (event.getType() == Event::IntegerInput) { NpcDialog *dialog = getDialog(event.getInt("id")); int defaultValue = event.getInt("default", 0); int min = event.getInt("min", 0); int max = event.getInt("max", 2147483647); dialog->integerRequest(defaultValue, min, max); } else if (event.getType() == Event::StringInput) { NpcDialog *dialog = getDialog(event.getInt("id")); try { dialog->textRequest(event.getString("default")); } catch (BadEvent) { dialog->textRequest(""); } } 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(); } 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::CloseAll) { NpcDialog::closeAll(); } else if (event.getType() == Event::End) { int id = event.getInt("id"); NpcDialog *dialog = getDialog(id, false); if (dialog) dialog->close(); } else if (event.getType() == Event::Post) { new NpcPostDialog(event.getInt("id")); } }
void NpcEventListener::event(const std::string &channel, const Mana::Event &event) { if (channel != "NPC") return; if (event.getName() == "Message") { NpcDialog *dialog = getDialog(event.getInt("id")); dialog->addText(event.getString("text")); } else if (event.getName() == "Menu") { NpcDialog *dialog = getDialog(event.getInt("id")); dialog->choiceRequest(); int count = event.getInt("choiceCount"); for (int i = 1; i <= count; i++) dialog->addChoice(event.getString("choice" + toString(i))); } else if (event.getName() == "IntegerInput") { NpcDialog *dialog = getDialog(event.getInt("id")); int defaultValue = event.getInt("default", 0); int min = event.getInt("min", 0); int max = event.getInt("max", 2147483647); dialog->integerRequest(defaultValue, min, max); } else if (event.getName() == "StringInput") { NpcDialog *dialog = getDialog(event.getInt("id")); try { dialog->textRequest(event.getString("default")); } catch (Mana::BadEvent) { dialog->textRequest(""); } } else if (event.getName() == "Next") { int id = event.getInt("id"); NpcDialog *dialog = getDialog(id, false); if (!dialog) { int mNpcId = id; NpcEvent("doNext"); event.trigger("NPC"); return; } dialog->showNextButton(); } else if (event.getName() == "Close") { int id = event.getInt("id"); NpcDialog *dialog = getDialog(id, false); if (!dialog) { int mNpcId = id; NpcEvent("doClose"); event.trigger("NPC"); return; } dialog->showCloseButton(); } else if (event.getName() == "CloseAll") { NpcDialog::closeAll(); } else if (event.getName() == "End") { int id = event.getInt("id"); NpcDialog *dialog = getDialog(id, false); if (dialog) dialog->close(); } else if (event.getName() == "Post") { new NpcPostDialog(event.getInt("id")); } }