summaryrefslogtreecommitdiffstats
path: root/pokemodr/MapEffectUI.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2008-05-15 04:58:10 +0000
committerBen Boeckel <MathStuf@gmail.com>2008-05-15 04:58:10 +0000
commitb46fba7a98595e8be65caaaa8f36b2e28adce137 (patch)
tree074518f6554a7764707fc1035a4bf158ca8ae1b3 /pokemodr/MapEffectUI.cpp
parent25984412ffc414de66b7fc990bb53cbfcf2a6993 (diff)
downloadsigen-b46fba7a98595e8be65caaaa8f36b2e28adce137.tar.gz
sigen-b46fba7a98595e8be65caaaa8f36b2e28adce137.tar.xz
sigen-b46fba7a98595e8be65caaaa8f36b2e28adce137.zip
[ADD] MapEffect widget logic
[FIX] Fixed up some other minor problems git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@133 6ecfd1a5-f3ed-3746-8530-beee90d26b22
Diffstat (limited to 'pokemodr/MapEffectUI.cpp')
-rw-r--r--pokemodr/MapEffectUI.cpp186
1 files changed, 186 insertions, 0 deletions
diff --git a/pokemodr/MapEffectUI.cpp b/pokemodr/MapEffectUI.cpp
new file mode 100644
index 00000000..5aefb6fd
--- /dev/null
+++ b/pokemodr/MapEffectUI.cpp
@@ -0,0 +1,186 @@
+/*
+ * Copyright 2008 Ben Boeckel <MathStuf@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// Header include
+#include "MapEffectUI.h"
+
+// PokeModr includes
+#include "FileDialog.h"
+
+// Pokemod includes
+#include "../pokemod/Dialog.h"
+#include "../pokemod/Item.h"
+#include "../pokemod/Map.h"
+#include "../pokemod/MapEffect.h"
+#include "../pokemod/Pokemod.h"
+
+MapEffectUI::MapEffectUI(MapEffect* effect, QWidget* parent) :
+ ObjectUI(parent)
+{
+ setupUi(this);
+ QMetaObject::connectSlotsByName(this);
+ setObjects(effect, new MapEffect(*effect));
+ connect(this, SIGNAL(changed(bool)), boxButtons, SLOT(setEnabled(bool)));
+ connect(modified(), SIGNAL(error(const QString&)), this, SLOT(setGui()));
+ connect(modified(), SIGNAL(error(const QString&)), this, SLOT(errorMessage(const QString&)));
+ connect(modified(), SIGNAL(warning(const QString&)), this, SLOT(warningMessage(const QString&)));
+ connect(modified(), SIGNAL(changed()), this, SLOT(setChanged()));
+ init();
+}
+
+MapEffectUI::~MapEffectUI()
+{
+}
+
+void MapEffectUI::initGui()
+{
+ varEffect->addItems(MapEffect::EffectStr);
+ varDirection->addItems(Pokemod::DirectionStr.mid(0, Pokemod::D_End));
+}
+
+void MapEffectUI::refreshGui()
+{
+ varCoordinate->setMaximum(static_cast<const Map*>(original()->parent())->size());
+ varDialog->clear();
+ for (int i = 0; i < static_cast<const Pokemod*>(original()->pokemod())->dialogCount(); ++i)
+ {
+ const Dialog* dialog = static_cast<const Pokemod*>(original()->pokemod())->dialog(i);
+ varDialog->addItem(dialog->dialog().mid(0, 25));
+ varDialog->setItemData(i, dialog->id());
+ }
+}
+
+void MapEffectUI::setGui()
+{
+ varName->setText(static_cast<MapEffect*>(modified())->name());
+ varCoordinate->setValue(static_cast<MapEffect*>(modified())->coordinate());
+ varExistFlag->setValue(static_cast<MapEffect*>(modified())->existFlag());
+ varSkin->setIcon(static_cast<MapEffect*>(modified())->skin());
+ varEffect->setCurrentIndex(static_cast<MapEffect*>(modified())->effect());
+ const int effect = static_cast<MapEffect*>(modified())->effect();
+ if ((effect == MapEffect::E_Button) || (effect == MapEffect::E_StrengthBlock))
+ {
+ varValue1->setEnabled(true);
+ varValue1->setValue(static_cast<MapEffect*>(modified())->value1());
+ }
+ else
+ varValue1->setEnabled(false);
+ varValue2->clear();
+ switch (effect)
+ {
+ case MapEffect::E_Item:
+ for (int i = 0; i < static_cast<const Pokemod*>(original()->pokemod())->itemCount(); ++i)
+ {
+ const Item* item = static_cast<const Pokemod*>(original()->pokemod())->item(i);
+ varValue2->addItem(item->name());
+ varValue2->setItemData(i, item->id());
+ }
+ varValue2->setCurrentIndex(varValue2->findData(static_cast<MapEffect*>(modified())->value2()));
+ break;
+ case MapEffect::E_PC:
+ varValue2->addItems(MapEffect::PCTypeStr);
+ for (int i = 0; i < MapEffect::PC_End; ++i)
+ varValue2->setItemData(i, i);
+ varValue2->setCurrentIndex(static_cast<MapEffect*>(modified())->value2());
+ break;
+ case MapEffect::E_StrengthBlock:
+ case MapEffect::E_Button:
+ varValue2->addItems(Flag::ValueStr);
+ for (int i = 0; i < Flag::End; ++i)
+ varValue2->setItemData(i, i);
+ varValue2->setCurrentIndex(static_cast<MapEffect*>(modified())->value2());
+ break;
+ }
+ varDirection->setCurrentIndex(static_cast<MapEffect*>(modified())->direction());
+ varIsGhost->setChecked(static_cast<MapEffect*>(modified())->isGhost() ? Qt::Checked : Qt::Unchecked);
+ varCanMove->setChecked(static_cast<MapEffect*>(modified())->canMove() ? Qt::Checked : Qt::Unchecked);
+ varDialog->setCurrentIndex(varDialog->findData(static_cast<MapEffect*>(modified())->dialog()));
+}
+
+void MapEffectUI::on_buttonApply_clicked()
+{
+ *static_cast<MapEffect*>(original()) = *static_cast<MapEffect*>(modified());
+ emit(changed(false));
+}
+
+void MapEffectUI::on_buttonDiscard_clicked()
+{
+ *static_cast<MapEffect*>(modified()) = *static_cast<MapEffect*>(original());
+ setGui();
+ emit(changed(false));
+}
+
+void MapEffectUI::on_varName_textChanged(const QString& name)
+{
+ static_cast<MapEffect*>(modified())->setName(name);
+}
+
+void MapEffectUI::on_varCoordinate_valueChanged(const Point& coordinate)
+{
+ static_cast<MapEffect*>(modified())->setCoordinate(coordinate);
+}
+
+void MapEffectUI::on_varExistFlag_valueChanged(const Flag& existFlag)
+{
+ static_cast<MapEffect*>(modified())->setExistFlag(existFlag);
+}
+
+void MapEffectUI::on_varSkin_pressed()
+{
+ FileDialog* dialog = new FileDialog(QSize(192, 128));
+ if (dialog->exec() == QDialog::Accepted)
+ {
+ static_cast<MapEffect*>(modified())->setSkin(QPixmap(dialog->selectedFile()));
+ setGui();
+ }
+ delete dialog;
+}
+
+void MapEffectUI::on_varEffect_indexChanged(const int effect)
+{
+ static_cast<MapEffect*>(modified())->setEffect(effect);
+}
+
+void MapEffectUI::on_varValue1_valueChanged(const int value1)
+{
+ static_cast<MapEffect*>(modified())->setValue1(value1);
+}
+
+void MapEffectUI::on_varValue2_currentIndexChanged(const int value2)
+{
+ static_cast<MapEffect*>(modified())->setValue1(varValue2->itemData(value2).toInt());
+}
+
+void MapEffectUI::on_varDirection_currentIndexChanged(const int direction)
+{
+ static_cast<MapEffect*>(modified())->setDirection(direction);
+}
+
+void MapEffectUI::on_varIsGhost_clicked(const bool isGhost)
+{
+ static_cast<MapEffect*>(modified())->setIsGhost(isGhost);
+}
+
+void MapEffectUI::on_varCanMove_clicked(const bool canMove)
+{
+ static_cast<MapEffect*>(modified())->setCanMove(canMove);
+}
+
+void MapEffectUI::on_varDialog_currentIndexChanged(const int dialog)
+{
+ static_cast<MapEffect*>(modified())->setDialog(varDialog->itemData(dialog).toInt());
+}