void NpcDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "ok") { if (mActionState == NPC_ACTION_NEXT) { nextDialog(); // TRANSLATORS: Please leave the \n sequences intact. addText(_("\n> Next\n"), false); } else if (mActionState == NPC_ACTION_CLOSE) { closeDialog(); } else if (mActionState == NPC_ACTION_INPUT) { std::string printText = ""; // Text that will get printed in the textbox if (mInputState == NPC_INPUT_LIST) { int selectedIndex = mItemList->getSelected(); if (selectedIndex >= (int) mItems.size() || selectedIndex < 0) return; printText = mItems[selectedIndex]; NpcEvent("doMenu") event.setInt("choice", selectedIndex + 1); event.trigger("NPC"); } else if (mInputState == NPC_INPUT_STRING) { printText = mTextField->getText(); NpcEvent("doStringInput") event.setString("value", printText); event.trigger("NPC"); } else if (mInputState == NPC_INPUT_INTEGER) { printText = strprintf("%d", mIntField->getValue()); NpcEvent("doIntegerInput") event.setInt("value", mIntField->getValue()); event.trigger("NPC"); } // addText will auto remove the input layout addText(strprintf("\n> \"%s\"\n", printText.c_str()), false); mNewText.clear(); } if (!mLogInteraction) setText(""); } else if (event.getId() == "reset") { if (mInputState == NPC_INPUT_STRING) { mTextField->setText(mDefaultString); } else if (mInputState == NPC_INPUT_INTEGER) { mIntField->setValue(mDefaultInt); } } else if (event.getId() == "inc") { mIntField->setValue(mIntField->getValue() + 1); } else if (event.getId() == "dec") { mIntField->setValue(mIntField->getValue() - 1); } else if (event.getId() == "clear") { setText(mNewText); } }