00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <cmath>
00026
00027 #include <QActionGroup>
00028 #include <QCloseEvent>
00029 #include <QDesktopWidget>
00030 #include <QFileDialog>
00031 #include <QIntValidator>
00032 #include <QMessageBox>
00033 #include <QRegExpValidator>
00034 #include <QUrl>
00035
00036 #include "view/aboutdialog.hh"
00037 #include "view/mainwindow.hh"
00038
00039 using namespace soesrame;
00040
00041 MainWindow::MainWindow() : QMainWindow(), aboutDialog(0),
00042 ignoreSignals(false), open(false) {
00043
00044 ui.setupUi(this);
00045
00046
00047 connect(this, SIGNAL(sramFileOpened()), this, SLOT(onSRAMFileOpened()));
00048 connect(this, SIGNAL(sramFileOpened()), this, SIGNAL(uiChanged()));
00049 connect(this, SIGNAL(uiChanged()), this, SLOT(onUIChanged()));
00050
00051
00052 QActionGroup *gameActionGroup = new QActionGroup(this);
00053 gameActionGroup->addAction(ui.gameGame1);
00054 gameActionGroup->addAction(ui.gameGame2);
00055 gameActionGroup->addAction(ui.gameGame3);
00056 gameActionGroup->addAction(ui.gameGame4);
00057 gameActionGroup->setExclusive(true);
00058
00059 QActionGroup *regionActionGroup = new QActionGroup(this);
00060 regionActionGroup->addAction(ui.regionUnitedStates);
00061 regionActionGroup->addAction(ui.regionEngland);
00062 regionActionGroup->addAction(ui.regionFrance);
00063 regionActionGroup->addAction(ui.regionGermany);
00064 regionActionGroup->addAction(ui.regionSpain);
00065 regionActionGroup->setExclusive(true);
00066
00067
00068 switch (QLocale::system().language()) {
00069 case QLocale::Spanish:
00070 setRegion(REGION_SPAIN);
00071 ui.regionSpain->setChecked(true);
00072 break;
00073
00074 case QLocale::German:
00075 setRegion(REGION_GERMANY);
00076 ui.regionGermany->setChecked(true);
00077 break;
00078
00079 case QLocale::French:
00080 setRegion(REGION_FRANCE);
00081 ui.regionFrance->setChecked(true);
00082 break;
00083
00084 case QLocale::English:
00085 case QLocale::C:
00086 if (QLocale::system().country() == QLocale::UnitedKingdom) {
00087 setRegion(REGION_ENGLAND);
00088 ui.regionEngland->setChecked(true);
00089 } else {
00090 setRegion(REGION_UNITEDSTATES);
00091 }
00092 break;
00093
00094 default:
00095
00096 setRegion(REGION_ENGLAND);
00097 ui.regionEngland->setChecked(true);
00098 }
00099
00100
00101 QIntValidator *under6Validator = new QIntValidator(0, 6, this);
00102 QIntValidator *under100Validator = new QIntValidator(0, 99, this);
00103 QIntValidator *under1000Validator = new QIntValidator(0, 999, this);
00104 QIntValidator *any24BitValidator = new QIntValidator(0, 16777215, this);
00105 QIntValidator *levelValidator = new QIntValidator(1, 99, this);
00106 QIntValidator *weaponLevelValidator = new QIntValidator(0, 255, this);
00107
00108
00109 ui.talonsText->setValidator(any24BitValidator);
00110 ui.jewelsText->setValidator(any24BitValidator);
00111 ui.goldCoinsText->setValidator(any24BitValidator);
00112 ui.creditsText->setValidator(any24BitValidator);
00113
00114
00115 ui.boyLevelText->setValidator(levelValidator);
00116 ui.boyCurrentHPText->setValidator(under1000Validator);
00117 ui.boyExperienceText->setValidator(any24BitValidator);
00118
00119 ui.dogLevelText->setValidator(levelValidator);
00120 ui.dogCurrentHPText->setValidator(under1000Validator);
00121 ui.dogExperienceText->setValidator(any24BitValidator);
00122 ui.dogAttackLevelText->setValidator(weaponLevelValidator);
00123
00124
00125 ui.boneCrusherText->setValidator(weaponLevelValidator);
00126 ui.gladiatorSwordText->setValidator(weaponLevelValidator);
00127 ui.crusaderSwordText->setValidator(weaponLevelValidator);
00128 ui.neutronBladeText->setValidator(weaponLevelValidator);
00129
00130 ui.spidersClawText->setValidator(weaponLevelValidator);
00131 ui.bronzeAxeText->setValidator(weaponLevelValidator);
00132 ui.knightBasherText->setValidator(weaponLevelValidator);
00133 ui.atomSmasherText->setValidator(weaponLevelValidator);
00134
00135 ui.hornSpearText->setValidator(weaponLevelValidator);
00136 ui.bronzeSpearText->setValidator(weaponLevelValidator);
00137 ui.lanceWeaponText->setValidator(weaponLevelValidator);
00138 ui.laserLanceText->setValidator(weaponLevelValidator);
00139
00140
00141 ui.acornText->setValidator(under100Validator);
00142 ui.ashText->setValidator(under100Validator);
00143 ui.atlasMedallionText->setValidator(under100Validator);
00144 ui.boneText->setValidator(under100Validator);
00145 ui.brimstoneText->setValidator(under100Validator);
00146 ui.clayText->setValidator(under100Validator);
00147 ui.crystalText->setValidator(under100Validator);
00148 ui.dryIceText->setValidator(under100Validator);
00149 ui.ethanolText->setValidator(under100Validator);
00150 ui.featherText->setValidator(under100Validator);
00151 ui.greaseText->setValidator(under100Validator);
00152 ui.gunpowderText->setValidator(under100Validator);
00153 ui.ironText->setValidator(under100Validator);
00154 ui.limestoneText->setValidator(under100Validator);
00155 ui.meteoriteText->setValidator(under100Validator);
00156 ui.mudPepperText->setValidator(under100Validator);
00157 ui.mushroomText->setValidator(under100Validator);
00158 ui.oilText->setValidator(under100Validator);
00159 ui.rootText->setValidator(under100Validator);
00160 ui.vinegarText->setValidator(under100Validator);
00161 ui.waterText->setValidator(under100Validator);
00162 ui.waxText->setValidator(under100Validator);
00163
00164
00165 ui.acidRainText->setValidator(under100Validator);
00166 ui.atlasText->setValidator(under100Validator);
00167 ui.barrierText->setValidator(under100Validator);
00168 ui.callUpText->setValidator(under100Validator);
00169 ui.corrosionText->setValidator(under100Validator);
00170 ui.crushText->setValidator(under100Validator);
00171 ui.cureText->setValidator(under100Validator);
00172 ui.defendText->setValidator(under100Validator);
00173 ui.doubleDrainText->setValidator(under100Validator);
00174 ui.drainText->setValidator(under100Validator);
00175 ui.energizeText->setValidator(under100Validator);
00176 ui.escapeText->setValidator(under100Validator);
00177 ui.explosionText->setValidator(under100Validator);
00178 ui.fireballText->setValidator(under100Validator);
00179 ui.firePowerText->setValidator(under100Validator);
00180 ui.flashText->setValidator(under100Validator);
00181 ui.forceFieldText->setValidator(under100Validator);
00182 ui.hardBallText->setValidator(under100Validator);
00183 ui.healText->setValidator(under100Validator);
00184 ui.lanceAlchemyText->setValidator(under100Validator);
00185 ui.levitateText->setValidator(under100Validator);
00186 ui.lightningStormText->setValidator(under100Validator);
00187 ui.miracleCureText->setValidator(under100Validator);
00188 ui.nitroText->setValidator(under100Validator);
00189 ui.oneUpText->setValidator(under100Validator);
00190 ui.reflectText->setValidator(under100Validator);
00191 ui.regrowthText->setValidator(under100Validator);
00192 ui.revealerText->setValidator(under100Validator);
00193 ui.reviveText->setValidator(under100Validator);
00194 ui.slowBurnText->setValidator(under100Validator);
00195 ui.speedText->setValidator(under100Validator);
00196 ui.stingText->setValidator(under100Validator);
00197 ui.stopText->setValidator(under100Validator);
00198 ui.superHealText->setValidator(under100Validator);
00199
00200
00201 ui.petalText->setValidator(under6Validator);
00202 ui.nectarText->setValidator(under6Validator);
00203 ui.honeyText->setValidator(under6Validator);
00204 ui.dogBiscuitText->setValidator(under6Validator);
00205 ui.wingsText->setValidator(under6Validator);
00206 ui.essenceText->setValidator(under6Validator);
00207 ui.pixieDustText->setValidator(under6Validator);
00208 ui.callBeadText->setValidator(under100Validator);
00209
00210
00211 ui.leatherCollarText->setValidator(under6Validator);
00212 ui.spikyCollarText->setValidator(under6Validator);
00213 ui.defenderCollarText->setValidator(under6Validator);
00214 ui.spotsCollarText->setValidator(under6Validator);
00215
00216
00217 ui.grassVestText->setValidator(under6Validator);
00218 ui.shellPlateText->setValidator(under6Validator);
00219 ui.dinoSkinText->setValidator(under6Validator);
00220 ui.bronzeArmorText->setValidator(under6Validator);
00221 ui.stoneVestText->setValidator(under6Validator);
00222 ui.centurionCapeText->setValidator(under6Validator);
00223 ui.silverMailText->setValidator(under6Validator);
00224 ui.goldPlatedVestText->setValidator(under6Validator);
00225 ui.shiningArmorText->setValidator(under6Validator);
00226 ui.magnaMailText->setValidator(under6Validator);
00227 ui.titaniumVestText->setValidator(under6Validator);
00228 ui.virtualVestText->setValidator(under6Validator);
00229
00230
00231 ui.thunderBallText->setValidator(under100Validator);
00232 ui.particleBombText->setValidator(under100Validator);
00233 ui.cryoBlastText->setValidator(under100Validator);
00234
00235
00236 ui.grassHatText->setValidator(under6Validator);
00237 ui.shellHatText->setValidator(under6Validator);
00238 ui.dinoHelmText->setValidator(under6Validator);
00239 ui.bronzeHelmetText->setValidator(under6Validator);
00240 ui.obsidianHelmText->setValidator(under6Validator);
00241 ui.centurionHelmText->setValidator(under6Validator);
00242 ui.titansCrownText->setValidator(under6Validator);
00243 ui.dragonHelmText->setValidator(under6Validator);
00244 ui.knightsHelmText->setValidator(under6Validator);
00245 ui.lightningHelmText->setValidator(under6Validator);
00246 ui.oldReliableText->setValidator(under6Validator);
00247 ui.brainstormText->setValidator(under6Validator);
00248
00249
00250 ui.vineBraceletText->setValidator(under6Validator);
00251 ui.mammothGuardText->setValidator(under6Validator);
00252 ui.clawGuardText->setValidator(under6Validator);
00253 ui.serpentBracerText->setValidator(under6Validator);
00254 ui.bronzeGauntletText->setValidator(under6Validator);
00255 ui.glovesOfRaText->setValidator(under6Validator);
00256 ui.ironBracerText->setValidator(under6Validator);
00257 ui.magiciansRingText->setValidator(under6Validator);
00258 ui.dragonsClawText->setValidator(under6Validator);
00259 ui.cybergloveText->setValidator(under6Validator);
00260 ui.protectorRingText->setValidator(under6Validator);
00261 ui.virtualGloveText->setValidator(under6Validator);
00262
00263
00264 ui.annihilationAmuletText->setValidator(under100Validator);
00265 ui.beadsText->setValidator(under100Validator);
00266 ui.ceramicPotText->setValidator(under100Validator);
00267 ui.chickenText->setValidator(under100Validator);
00268 ui.goldenJackalText->setValidator(under100Validator);
00269 ui.jeweledScarabText->setValidator(under100Validator);
00270 ui.limestoneTabletText->setValidator(under100Validator);
00271 ui.perfumeText->setValidator(under100Validator);
00272 ui.riceText->setValidator(under100Validator);
00273 ui.spiceText->setValidator(under100Validator);
00274 ui.souvenirSpoonText->setValidator(under100Validator);
00275 ui.tapestryText->setValidator(under100Validator);
00276 ui.ticketForExhibitionText->setValidator(under100Validator);
00277 }
00278
00279 bool MainWindow::confirmClose() {
00280 if (sram->isModified()) {
00281 int choice =
00282 QMessageBox::question(this, tr("Warning: Unsaved Changes"),
00283 tr("Save changes?"), QMessageBox::Yes,
00284 QMessageBox::No, QMessageBox::Cancel);
00285
00286 if (choice == QMessageBox::Yes) {
00287 ui.fileSave->trigger();
00288
00289
00290 if (sram->isModified()) {
00291 return false;
00292 }
00293 } else if (choice == QMessageBox::Cancel) {
00294 return false;
00295 }
00296 }
00297
00298 return true;
00299 }
00300
00301 void MainWindow::openSRAM(const QString &filename) {
00302 try {
00303 sram = new SRAMFile(filename, region);
00304 sramFile = new QString(filename);
00305 open = true;
00306
00307 emit sramFileOpened();
00308 } catch (InvalidSRAMFileException &e) {
00309 QString temp;
00310
00311 if (e.getError() == ISFE_INVALIDSIZE) {
00312 temp = tr("Invalid SRAM File Size");
00313 } else if (e.getError() == ISFE_NOVALIDGAMES) {
00314 temp = tr("No Save Games Found");
00315 }
00316
00317 QMessageBox::warning(this, tr("Unable to Open SRAM File"), temp,
00318 QMessageBox::Ok, QMessageBox::NoButton);
00319 }
00320 }
00321
00322 void MainWindow::setAlchemy(enum sf_alchemy alchemy, int state) {
00323 if (ignoreSignals) {
00324 return;
00325 }
00326
00327 Q_ASSERT(open);
00328
00329 sram->setAlchemy(alchemy, (state != 0));
00330 emit uiChanged();
00331 }
00332
00333 void MainWindow::setAlchemyLevelMajor(enum sf_alchemy alchemy, int value) {
00334 if (ignoreSignals) {
00335 return;
00336 }
00337
00338 Q_ASSERT(open);
00339
00340 std::pair<int, int> temp = sram->getAlchemyLevel(alchemy);
00341 temp.first = value;
00342 sram->setAlchemyLevel(alchemy, temp);
00343
00344 emit uiChanged();
00345 }
00346
00347 void MainWindow::setAlchemyLevelMinor(enum sf_alchemy alchemy,
00348 const QString &text) {
00349 Q_ASSERT(open);
00350
00351 std::pair<int, int> temp = sram->getAlchemyLevel(alchemy);
00352 temp.second = text.toInt();
00353 sram->setAlchemyLevel(alchemy, temp);
00354
00355 emit uiChanged();
00356 }
00357
00358 void MainWindow::setCharm(enum sf_charm charm, int state) {
00359 if (ignoreSignals) {
00360 return;
00361 }
00362
00363 Q_ASSERT(open);
00364
00365 sram->setCharm(charm, (state != 0));
00366 emit uiChanged();
00367 }
00368
00369 void MainWindow::setGame(int game) {
00370 Q_ASSERT(open);
00371 Q_ASSERT((game >= 0) && (game < 4));
00372
00373 sram->setGame(game);
00374 emit sramFileOpened();
00375 }
00376
00377 void MainWindow::setIngredient(enum sf_ingredient ingredient,
00378 const QString &text) {
00379 Q_ASSERT(open);
00380
00381 sram->setIngredient(ingredient, text.toInt());
00382 emit uiChanged();
00383 }
00384
00385 void MainWindow::setItem(enum sf_item item, const QString &text) {
00386 Q_ASSERT(open);
00387
00388 sram->setItem(item, text.toInt());
00389 emit uiChanged();
00390 }
00391
00392 void MainWindow::setMoney(enum sf_money money, const QString &text) {
00393 Q_ASSERT(open);
00394
00395 sram->setMoney(money, text.toUInt());
00396 emit uiChanged();
00397 }
00398
00399 void MainWindow::setRegion(enum sf_region region) {
00400 Q_ASSERT(!open);
00401
00402 QRegExpValidator *validator;
00403
00404 this->region = region;
00405
00406 switch (region) {
00407 case REGION_GERMANY:
00408 validator = new QRegExpValidator(
00409 QRegExp("[A-Za-z1-3,\\.!'\\-&# "
00410 "\\x00C4\\x00D6\\x00DC\\x00DF\\x00E4\\x00F6\\x00FC]*"),
00411 this);
00412 break;
00413
00414 case REGION_SPAIN:
00415 validator = new QRegExpValidator(
00416 QRegExp("[A-Za-z0-9,\\.!'\\-& \\x00F1]*"),
00417 this);
00418 break;
00419
00420 default:
00421
00422 validator = new QRegExpValidator(
00423 QRegExp("[A-Za-z0-9,\\.!'\\-&# ]*"),
00424 this);
00425 }
00426
00427 ui.boyNameText->setValidator(validator);
00428 ui.dogNameText->setValidator(validator);
00429 }
00430
00431 void MainWindow::setTradeGood(enum sf_tradegood tradegood,
00432 const QString &text) {
00433 Q_ASSERT(open);
00434
00435 sram->setTradeGood(tradegood, text.toInt());
00436 emit uiChanged();
00437 }
00438
00439 void MainWindow::setWeapon(enum sf_weapon weapon, int state) {
00440 if (ignoreSignals) {
00441 return;
00442 }
00443
00444 Q_ASSERT(open);
00445
00446 sram->setWeapon(weapon, (state != 0));
00447 emit uiChanged();
00448 }
00449
00450 void MainWindow::setWeaponLevelMajor(enum sf_weapon weapon, int value) {
00451 if (ignoreSignals) {
00452 return;
00453 }
00454
00455 Q_ASSERT(open);
00456
00457 std::pair<int, int> temp = sram->getWeaponLevel(weapon);
00458 temp.first = value;
00459 sram->setWeaponLevel(weapon, temp);
00460
00461 showActualLevel(temp, weapon);
00462 emit uiChanged();
00463 }
00464
00465 void MainWindow::setWeaponLevelMinor(enum sf_weapon weapon,
00466 const QString &text) {
00467 Q_ASSERT(open);
00468
00469 std::pair<int, int> temp = sram->getWeaponLevel(weapon);
00470 temp.second = text.toInt();
00471 sram->setWeaponLevel(weapon, temp);
00472
00473 showActualLevel(temp, weapon);
00474 emit uiChanged();
00475 }
00476
00477 void MainWindow::show() {
00478 QRect screenRect = QApplication::desktop()->availableGeometry();
00479 QRect windowRect = frameGeometry();
00480
00481 move(screenRect.width() / 2 - windowRect.width() / 2,
00482 screenRect.height() / 2 - windowRect.height() / 2);
00483
00484 emit uiChanged();
00485
00486 QMainWindow::show();
00487 }
00488
00489 void MainWindow::showActualLevel(std::pair<int, int> level,
00490 enum sf_weapon weapon) {
00491 level.second = static_cast<int>(std::floor(level.second / 2.56));
00492
00493 QString status =
00494 QString(tr("Actual Level %1:%2")).arg(level.first).arg(level.second);
00495
00496 switch (weapon) {
00497 case SF_BONECRUSHER:
00498 ui.boneCrusherSpinner->setStatusTip(status);
00499 ui.boneCrusherText->setStatusTip(status);
00500 break;
00501
00502 case SF_GLADIATORSWORD:
00503 ui.gladiatorSwordSpinner->setStatusTip(status);
00504 ui.gladiatorSwordText->setStatusTip(status);
00505 break;
00506
00507 case SF_CRUSADERSWORD:
00508 ui.crusaderSwordSpinner->setStatusTip(status);
00509 ui.crusaderSwordText->setStatusTip(status);
00510 break;
00511
00512 case SF_NEUTRONBLADE:
00513 ui.neutronBladeSpinner->setStatusTip(status);
00514 ui.neutronBladeText->setStatusTip(status);
00515 break;
00516
00517 case SF_SPIDERSCLAW:
00518 ui.spidersClawSpinner->setStatusTip(status);
00519 ui.spidersClawText->setStatusTip(status);
00520 break;
00521
00522 case SF_BRONZEAXE:
00523 ui.bronzeAxeSpinner->setStatusTip(status);
00524 ui.bronzeAxeText->setStatusTip(status);
00525 break;
00526
00527 case SF_KNIGHTBASHER:
00528 ui.knightBasherSpinner->setStatusTip(status);
00529 ui.knightBasherText->setStatusTip(status);
00530 break;
00531
00532 case SF_ATOMSMASHER:
00533 ui.atomSmasherSpinner->setStatusTip(status);
00534 ui.atomSmasherText->setStatusTip(status);
00535 break;
00536
00537 case SF_HORNSPEAR:
00538 ui.hornSpearSpinner->setStatusTip(status);
00539 ui.hornSpearText->setStatusTip(status);
00540 break;
00541
00542 case SF_BRONZESPEAR:
00543 ui.bronzeSpearSpinner->setStatusTip(status);
00544 ui.bronzeSpearText->setStatusTip(status);
00545 break;
00546
00547 case SF_LANCEWEAPON:
00548 ui.lanceWeaponSpinner->setStatusTip(status);
00549 ui.lanceWeaponText->setStatusTip(status);
00550 break;
00551
00552 case SF_LASERLANCE:
00553 ui.laserLanceSpinner->setStatusTip(status);
00554 ui.laserLanceText->setStatusTip(status);
00555 break;
00556
00557 default:
00558 ui.dogAttackLevelSpinner->setStatusTip(status);
00559 ui.dogAttackLevelText->setStatusTip(status);
00560 break;
00561 }
00562 }
00563
00564 void MainWindow::closeEvent(QCloseEvent *event) {
00565 if (open && !confirmClose()) {
00566 event->ignore();
00567 } else {
00568 event->accept();
00569 }
00570 }
00571
00572 void MainWindow::dragEnterEvent(QDragEnterEvent *event) {
00573
00574 if (event->mimeData()->hasFormat("text/uri-list")) {
00575 event->acceptProposedAction();
00576 }
00577 }
00578
00579 void MainWindow::dropEvent(QDropEvent *event) {
00580 QList<QUrl> urls = event->mimeData()->urls();
00581 QString filename = urls.first().toLocalFile();
00582
00583
00584 if (filename.isEmpty()) {
00585 return;
00586 }
00587
00588 if (open) {
00589 ui.fileClose->trigger();
00590
00591
00592 if (open) {
00593 return;
00594 }
00595 }
00596
00597 openSRAM(filename);
00598 }
00599
00600 void MainWindow::onSRAMFileOpened() {
00601 Q_ASSERT(sram);
00602
00603 std::pair<int, int> level;
00604
00605 ignoreSignals = true;
00606
00607
00608 ui.boyNameText->setText(sram->getName(SF_BOY));
00609 ui.dogNameText->setText(sram->getName(SF_DOG));
00610
00611
00612 ui.talonsText->setText(QString::number(sram->getMoney(SF_TALONS)));
00613 ui.jewelsText->setText(QString::number(sram->getMoney(SF_JEWELS)));
00614 ui.goldCoinsText->setText(QString::number(sram->getMoney(SF_GOLDCOINS)));
00615 ui.creditsText->setText(QString::number(sram->getMoney(SF_CREDITS)));
00616
00617
00618 ui.boyLevelText->setText(QString::number(sram->getLevel(SF_BOY)));
00619 ui.boyCurrentHPText->setText(QString::number(sram->getCurrentHP(SF_BOY)));
00620 ui.boyExperienceText->setText(QString::number(sram->getExperience(SF_BOY)));
00621
00622
00623 ui.dogLevelText->setText(QString::number(sram->getLevel(SF_DOG)));
00624 ui.dogCurrentHPText->setText(QString::number(sram->getCurrentHP(SF_DOG)));
00625 ui.dogExperienceText->setText(QString::number(sram->getExperience(SF_DOG)));
00626
00627 level = sram->getAttackLevel();
00628 ui.dogAttackLevelSpinner->setValue(level.first);
00629 ui.dogAttackLevelText->setText(QString::number(level.second));
00630 showActualLevel(level);
00631
00632
00633 level = sram->getWeaponLevel(SF_BONECRUSHER);
00634 ui.boneCrusherCheck->setChecked(sram->hasWeapon(SF_BONECRUSHER));
00635 ui.boneCrusherSpinner->setValue(level.first);
00636 ui.boneCrusherText->setText(QString::number(level.second));
00637 showActualLevel(level, SF_BONECRUSHER);
00638
00639 level = sram->getWeaponLevel(SF_GLADIATORSWORD);
00640 ui.gladiatorSwordCheck->setChecked(sram->hasWeapon(SF_GLADIATORSWORD));
00641 ui.gladiatorSwordSpinner->setValue(level.first);
00642 ui.gladiatorSwordText->setText(QString::number(level.second));
00643 showActualLevel(level, SF_GLADIATORSWORD);
00644
00645 level = sram->getWeaponLevel(SF_CRUSADERSWORD);
00646 ui.crusaderSwordCheck->setChecked(sram->hasWeapon(SF_CRUSADERSWORD));
00647 ui.crusaderSwordSpinner->setValue(level.first);
00648 ui.crusaderSwordText->setText(QString::number(level.second));
00649 showActualLevel(level, SF_CRUSADERSWORD);
00650
00651 level = sram->getWeaponLevel(SF_NEUTRONBLADE);
00652 ui.neutronBladeCheck->setChecked(sram->hasWeapon(SF_NEUTRONBLADE));
00653 ui.neutronBladeSpinner->setValue(level.first);
00654 ui.neutronBladeText->setText(QString::number(level.second));
00655 showActualLevel(level, SF_NEUTRONBLADE);
00656
00657 level = sram->getWeaponLevel(SF_SPIDERSCLAW);
00658 ui.spidersClawCheck->setChecked(sram->hasWeapon(SF_SPIDERSCLAW));
00659 ui.spidersClawSpinner->setValue(level.first);
00660 ui.spidersClawText->setText(QString::number(level.second));
00661 showActualLevel(level, SF_SPIDERSCLAW);
00662
00663 level = sram->getWeaponLevel(SF_BRONZEAXE);
00664 ui.bronzeAxeCheck->setChecked(sram->hasWeapon(SF_BRONZEAXE));
00665 ui.bronzeAxeSpinner->setValue(level.first);
00666 ui.bronzeAxeText->setText(QString::number(level.second));
00667 showActualLevel(level, SF_BRONZEAXE);
00668
00669 level = sram->getWeaponLevel(SF_KNIGHTBASHER);
00670 ui.knightBasherCheck->setChecked(sram->hasWeapon(SF_KNIGHTBASHER));
00671 ui.knightBasherSpinner->setValue(level.first);
00672 ui.knightBasherText->setText(QString::number(level.second));
00673 showActualLevel(level, SF_KNIGHTBASHER);
00674
00675 level = sram->getWeaponLevel(SF_ATOMSMASHER);
00676 ui.atomSmasherCheck->setChecked(sram->hasWeapon(SF_ATOMSMASHER));
00677 ui.atomSmasherSpinner->setValue(level.first);
00678 ui.atomSmasherText->setText(QString::number(level.second));
00679 showActualLevel(level, SF_ATOMSMASHER);
00680
00681 level = sram->getWeaponLevel(SF_HORNSPEAR);
00682 ui.hornSpearCheck->setChecked(sram->hasWeapon(SF_HORNSPEAR));
00683 ui.hornSpearSpinner->setValue(level.first);
00684 ui.hornSpearText->setText(QString::number(level.second));
00685 showActualLevel(level, SF_HORNSPEAR);
00686
00687 level = sram->getWeaponLevel(SF_BRONZESPEAR);
00688 ui.bronzeSpearCheck->setChecked(sram->hasWeapon(SF_BRONZESPEAR));
00689 ui.bronzeSpearSpinner->setValue(level.first);
00690 ui.bronzeSpearText->setText(QString::number(level.second));
00691 showActualLevel(level, SF_BRONZESPEAR);
00692
00693 level = sram->getWeaponLevel(SF_LANCEWEAPON);
00694 ui.lanceWeaponCheck->setChecked(sram->hasWeapon(SF_LANCEWEAPON));
00695 ui.lanceWeaponSpinner->setValue(level.first);
00696 ui.lanceWeaponText->setText(QString::number(level.second));
00697 showActualLevel(level, SF_LANCEWEAPON);
00698
00699 level = sram->getWeaponLevel(SF_LASERLANCE);
00700 ui.laserLanceCheck->setChecked(sram->hasWeapon(SF_LASERLANCE));
00701 ui.laserLanceSpinner->setValue(level.first);
00702 ui.laserLanceText->setText(QString::number(level.second));
00703 showActualLevel(level, SF_LASERLANCE);
00704
00705 ui.bazookaCheck->setChecked(sram->hasWeapon(SF_BAZOOKA));
00706
00707
00708 ui.acornText->setText(QString::number(sram->getIngredient(SF_ACORN)));
00709 ui.ashText->setText(QString::number(sram->getIngredient(SF_ASH)));
00710 ui.atlasMedallionText->setText(QString::number(sram->getIngredient(SF_ATLASMEDALLION)));
00711 ui.boneText->setText(QString::number(sram->getIngredient(SF_BONE)));
00712 ui.brimstoneText->setText(QString::number(sram->getIngredient(SF_BRIMSTONE)));
00713 ui.clayText->setText(QString::number(sram->getIngredient(SF_CLAY)));
00714 ui.crystalText->setText(QString::number(sram->getIngredient(SF_CRYSTAL)));
00715 ui.dryIceText->setText(QString::number(sram->getIngredient(SF_DRYICE)));
00716 ui.ethanolText->setText(QString::number(sram->getIngredient(SF_ETHANOL)));
00717 ui.featherText->setText(QString::number(sram->getIngredient(SF_FEATHER)));
00718 ui.greaseText->setText(QString::number(sram->getIngredient(SF_GREASE)));
00719 ui.gunpowderText->setText(QString::number(sram->getIngredient(SF_GUNPOWDER)));
00720 ui.ironText->setText(QString::number(sram->getIngredient(SF_IRON)));
00721 ui.limestoneText->setText(QString::number(sram->getIngredient(SF_LIMESTONE)));
00722 ui.meteoriteText->setText(QString::number(sram->getIngredient(SF_METEORITE)));
00723 ui.mudPepperText->setText(QString::number(sram->getIngredient(SF_MUDPEPPER)));
00724 ui.mushroomText->setText(QString::number(sram->getIngredient(SF_MUSHROOM)));
00725 ui.oilText->setText(QString::number(sram->getIngredient(SF_OIL)));
00726 ui.rootText->setText(QString::number(sram->getIngredient(SF_ROOT)));
00727 ui.vinegarText->setText(QString::number(sram->getIngredient(SF_VINEGAR)));
00728 ui.waterText->setText(QString::number(sram->getIngredient(SF_WATER)));
00729 ui.waxText->setText(QString::number(sram->getIngredient(SF_WAX)));
00730
00731
00732 level = sram->getAlchemyLevel(SF_ACIDRAIN);
00733 ui.acidRainCheck->setChecked(sram->hasAlchemy(SF_ACIDRAIN));
00734 ui.acidRainSpinner->setValue(level.first);
00735 ui.acidRainText->setText(QString::number(level.second));
00736
00737 level = sram->getAlchemyLevel(SF_ATLAS);
00738 ui.atlasCheck->setChecked(sram->hasAlchemy(SF_ATLAS));
00739 ui.atlasSpinner->setValue(level.first);
00740 ui.atlasText->setText(QString::number(level.second));
00741
00742 level = sram->getAlchemyLevel(SF_BARRIER);
00743 ui.barrierCheck->setChecked(sram->hasAlchemy(SF_BARRIER));
00744 ui.barrierSpinner->setValue(level.first);
00745 ui.barrierText->setText(QString::number(level.second));
00746
00747 level = sram->getAlchemyLevel(SF_CALLUP);
00748 ui.callUpCheck->setChecked(sram->hasAlchemy(SF_CALLUP));
00749 ui.callUpSpinner->setValue(level.first);
00750 ui.callUpText->setText(QString::number(level.second));
00751
00752 level = sram->getAlchemyLevel(SF_CORROSION);
00753 ui.corrosionCheck->setChecked(sram->hasAlchemy(SF_CORROSION));
00754 ui.corrosionSpinner->setValue(level.first);
00755 ui.corrosionText->setText(QString::number(level.second));
00756
00757 level = sram->getAlchemyLevel(SF_CRUSH);
00758 ui.crushCheck->setChecked(sram->hasAlchemy(SF_CRUSH));
00759 ui.crushSpinner->setValue(level.first);
00760 ui.crushText->setText(QString::number(level.second));
00761
00762 level = sram->getAlchemyLevel(SF_CURE);
00763 ui.cureCheck->setChecked(sram->hasAlchemy(SF_CURE));
00764 ui.cureSpinner->setValue(level.first);
00765 ui.cureText->setText(QString::number(level.second));
00766
00767 level = sram->getAlchemyLevel(SF_DEFEND);
00768 ui.defendCheck->setChecked(sram->hasAlchemy(SF_DEFEND));
00769 ui.defendSpinner->setValue(level.first);
00770 ui.defendText->setText(QString::number(level.second));
00771
00772 level = sram->getAlchemyLevel(SF_DOUBLEDRAIN);
00773 ui.doubleDrainCheck->setChecked(sram->hasAlchemy(SF_DOUBLEDRAIN));
00774 ui.doubleDrainSpinner->setValue(level.first);
00775 ui.doubleDrainText->setText(QString::number(level.second));
00776
00777 level = sram->getAlchemyLevel(SF_DRAIN);
00778 ui.drainCheck->setChecked(sram->hasAlchemy(SF_DRAIN));
00779 ui.drainSpinner->setValue(level.first);
00780 ui.drainText->setText(QString::number(level.second));
00781
00782 level = sram->getAlchemyLevel(SF_ENERGIZE);
00783 ui.energizeCheck->setChecked(sram->hasAlchemy(SF_ENERGIZE));
00784 ui.energizeSpinner->setValue(level.first);
00785 ui.energizeText->setText(QString::number(level.second));
00786
00787 level = sram->getAlchemyLevel(SF_ESCAPE);
00788 ui.escapeCheck->setChecked(sram->hasAlchemy(SF_ESCAPE));
00789 ui.escapeSpinner->setValue(level.first);
00790 ui.escapeText->setText(QString::number(level.second));
00791
00792 level = sram->getAlchemyLevel(SF_EXPLOSION);
00793 ui.explosionCheck->setChecked(sram->hasAlchemy(SF_EXPLOSION));
00794 ui.explosionSpinner->setValue(level.first);
00795 ui.explosionText->setText(QString::number(level.second));
00796
00797 level = sram->getAlchemyLevel(SF_FIREBALL);
00798 ui.fireballCheck->setChecked(sram->hasAlchemy(SF_FIREBALL));
00799 ui.fireballSpinner->setValue(level.first);
00800 ui.fireballText->setText(QString::number(level.second));
00801
00802 level = sram->getAlchemyLevel(SF_FIREPOWER);
00803 ui.firePowerCheck->setChecked(sram->hasAlchemy(SF_FIREPOWER));
00804 ui.firePowerSpinner->setValue(level.first);
00805 ui.firePowerText->setText(QString::number(level.second));
00806
00807 level = sram->getAlchemyLevel(SF_FLASH);
00808 ui.flashCheck->setChecked(sram->hasAlchemy(SF_FLASH));
00809 ui.flashSpinner->setValue(level.first);
00810 ui.flashText->setText(QString::number(level.second));
00811
00812 level = sram->getAlchemyLevel(SF_FORCEFIELD);
00813 ui.forceFieldCheck->setChecked(sram->hasAlchemy(SF_FORCEFIELD));
00814 ui.forceFieldSpinner->setValue(level.first);
00815 ui.forceFieldText->setText(QString::number(level.second));
00816
00817 level = sram->getAlchemyLevel(SF_HARDBALL);
00818 ui.hardBallCheck->setChecked(sram->hasAlchemy(SF_HARDBALL));
00819 ui.hardBallSpinner->setValue(level.first);
00820 ui.hardBallText->setText(QString::number(level.second));
00821
00822 level = sram->getAlchemyLevel(SF_HEAL);
00823 ui.healCheck->setChecked(sram->hasAlchemy(SF_HEAL));
00824 ui.healSpinner->setValue(level.first);
00825 ui.healText->setText(QString::number(level.second));
00826
00827 level = sram->getAlchemyLevel(SF_LANCEALCHEMY);
00828 ui.lanceAlchemyCheck->setChecked(sram->hasAlchemy(SF_LANCEALCHEMY));
00829 ui.lanceAlchemySpinner->setValue(level.first);
00830 ui.lanceAlchemyText->setText(QString::number(level.second));
00831
00832 level = sram->getAlchemyLevel(SF_LEVITATE);
00833 ui.levitateCheck->setChecked(sram->hasAlchemy(SF_LEVITATE));
00834 ui.levitateSpinner->setValue(level.first);
00835 ui.levitateText->setText(QString::number(level.second));
00836
00837 level = sram->getAlchemyLevel(SF_LIGHTNINGSTORM);
00838 ui.lightningStormCheck->setChecked(sram->hasAlchemy(SF_LIGHTNINGSTORM));
00839 ui.lightningStormSpinner->setValue(level.first);
00840 ui.lightningStormText->setText(QString::number(level.second));
00841
00842 level = sram->getAlchemyLevel(SF_MIRACLECURE);
00843 ui.miracleCureCheck->setChecked(sram->hasAlchemy(SF_MIRACLECURE));
00844 ui.miracleCureSpinner->setValue(level.first);
00845 ui.miracleCureText->setText(QString::number(level.second));
00846
00847 level = sram->getAlchemyLevel(SF_NITRO);
00848 ui.nitroCheck->setChecked(sram->hasAlchemy(SF_NITRO));
00849 ui.nitroSpinner->setValue(level.first);
00850 ui.nitroText->setText(QString::number(level.second));
00851
00852 level = sram->getAlchemyLevel(SF_ONEUP);
00853 ui.oneUpCheck->setChecked(sram->hasAlchemy(SF_ONEUP));
00854 ui.oneUpSpinner->setValue(level.first);
00855 ui.oneUpText->setText(QString::number(level.second));
00856
00857 level = sram->getAlchemyLevel(SF_REFLECT);
00858 ui.reflectCheck->setChecked(sram->hasAlchemy(SF_REFLECT));
00859 ui.reflectSpinner->setValue(level.first);
00860 ui.reflectText->setText(QString::number(level.second));
00861
00862 level = sram->getAlchemyLevel(SF_REGROWTH);
00863 ui.regrowthCheck->setChecked(sram->hasAlchemy(SF_REGROWTH));
00864 ui.regrowthSpinner->setValue(level.first);
00865 ui.regrowthText->setText(QString::number(level.second));
00866
00867 level = sram->getAlchemyLevel(SF_REVEALER);
00868 ui.revealerCheck->setChecked(sram->hasAlchemy(SF_REVEALER));
00869 ui.revealerSpinner->setValue(level.first);
00870 ui.revealerText->setText(QString::number(level.second));
00871
00872 level = sram->getAlchemyLevel(SF_REVIVE);
00873 ui.reviveCheck->setChecked(sram->hasAlchemy(SF_REVIVE));
00874 ui.reviveSpinner->setValue(level.first);
00875 ui.reviveText->setText(QString::number(level.second));
00876
00877 level = sram->getAlchemyLevel(SF_SLOWBURN);
00878 ui.slowBurnCheck->setChecked(sram->hasAlchemy(SF_SLOWBURN));
00879 ui.slowBurnSpinner->setValue(level.first);
00880 ui.slowBurnText->setText(QString::number(level.second));
00881
00882 level = sram->getAlchemyLevel(SF_SPEED);
00883 ui.speedCheck->setChecked(sram->hasAlchemy(SF_SPEED));
00884 ui.speedSpinner->setValue(level.first);
00885 ui.speedText->setText(QString::number(level.second));
00886
00887 level = sram->getAlchemyLevel(SF_STING);
00888 ui.stingCheck->setChecked(sram->hasAlchemy(SF_STING));
00889 ui.stingSpinner->setValue(level.first);
00890 ui.stingText->setText(QString::number(level.second));
00891
00892 level = sram->getAlchemyLevel(SF_STOP);
00893 ui.stopCheck->setChecked(sram->hasAlchemy(SF_STOP));
00894 ui.stopSpinner->setValue(level.first);
00895 ui.stopText->setText(QString::number(level.second));
00896
00897 level = sram->getAlchemyLevel(SF_SUPERHEAL);
00898 ui.superHealCheck->setChecked(sram->hasAlchemy(SF_SUPERHEAL));
00899 ui.superHealSpinner->setValue(level.first);
00900 ui.superHealText->setText(QString::number(level.second));
00901
00902
00903 ui.petalText->setText(QString::number(sram->getItem(SF_PETAL)));
00904 ui.nectarText->setText(QString::number(sram->getItem(SF_NECTAR)));
00905 ui.honeyText->setText(QString::number(sram->getItem(SF_HONEY)));
00906 ui.dogBiscuitText->setText(QString::number(sram->getItem(SF_DOGBISCUIT)));
00907 ui.wingsText->setText(QString::number(sram->getItem(SF_WINGS)));
00908 ui.essenceText->setText(QString::number(sram->getItem(SF_ESSENCE)));
00909 ui.pixieDustText->setText(QString::number(sram->getItem(SF_PIXIEDUST)));
00910 ui.callBeadText->setText(QString::number(sram->getItem(SF_CALLBEAD)));
00911
00912
00913 ui.leatherCollarText->
00914 setText(QString::number(sram->getItem(SF_LEATHERCOLLAR)));
00915 ui.spikyCollarText->
00916 setText(QString::number(sram->getItem(SF_SPIKYCOLLAR)));
00917 ui.defenderCollarText->
00918 setText(QString::number(sram->getItem(SF_DEFENDERCOLLAR)));
00919 ui.spotsCollarText->
00920 setText(QString::number(sram->getItem(SF_SPOTSCOLLAR)));
00921
00922
00923 ui.grassVestText->
00924 setText(QString::number(sram->getItem(SF_GRASSVEST)));
00925 ui.shellPlateText->
00926 setText(QString::number(sram->getItem(SF_SHELLPLATE)));
00927 ui.dinoSkinText->
00928 setText(QString::number(sram->getItem(SF_DINOSKIN)));
00929 ui.bronzeArmorText->
00930 setText(QString::number(sram->getItem(SF_BRONZEARMOR)));
00931 ui.stoneVestText->
00932 setText(QString::number(sram->getItem(SF_STONEVEST)));
00933 ui.centurionCapeText->
00934 setText(QString::number(sram->getItem(SF_CENTURIONCAPE)));
00935 ui.silverMailText->
00936 setText(QString::number(sram->getItem(SF_SILVERMAIL)));
00937 ui.goldPlatedVestText->
00938 setText(QString::number(sram->getItem(SF_GOLDPLATEDVEST)));
00939 ui.shiningArmorText->
00940 setText(QString::number(sram->getItem(SF_SHININGARMOR)));
00941 ui.magnaMailText->
00942 setText(QString::number(sram->getItem(SF_MAGNAMAIL)));
00943 ui.titaniumVestText->
00944 setText(QString::number(sram->getItem(SF_TITANIUMVEST)));
00945 ui.virtualVestText->
00946 setText(QString::number(sram->getItem(SF_VIRTUALVEST)));
00947
00948
00949 ui.thunderBallText->
00950 setText(QString::number(sram->getItem(SF_THUNDERBALL)));
00951 ui.particleBombText->
00952 setText(QString::number(sram->getItem(SF_PARTICLEBOMB)));
00953 ui.cryoBlastText->
00954 setText(QString::number(sram->getItem(SF_CRYOBLAST)));
00955
00956
00957 ui.grassHatText->
00958 setText(QString::number(sram->getItem(SF_GRASSHAT)));
00959 ui.shellHatText->
00960 setText(QString::number(sram->getItem(SF_SHELLHAT)));
00961 ui.dinoHelmText->
00962 setText(QString::number(sram->getItem(SF_DINOHELM)));
00963 ui.bronzeHelmetText->
00964 setText(QString::number(sram->getItem(SF_BRONZEHELMET)));
00965 ui.obsidianHelmText->
00966 setText(QString::number(sram->getItem(SF_OBSIDIANHELM)));
00967 ui.centurionHelmText->
00968 setText(QString::number(sram->getItem(SF_CENTURIONHELM)));
00969 ui.titansCrownText->
00970 setText(QString::number(sram->getItem(SF_TITANSCROWN)));
00971 ui.dragonHelmText->
00972 setText(QString::number(sram->getItem(SF_DRAGONHELM)));
00973 ui.knightsHelmText->
00974 setText(QString::number(sram->getItem(SF_KNIGHTSHELM)));
00975 ui.lightningHelmText->
00976 setText(QString::number(sram->getItem(SF_LIGHTNINGHELM)));
00977 ui.oldReliableText->
00978 setText(QString::number(sram->getItem(SF_OLDRELIABLE)));
00979 ui.brainstormText->
00980 setText(QString::number(sram->getItem(SF_BRAINSTORM)));
00981
00982
00983 ui.vineBraceletText->
00984 setText(QString::number(sram->getItem(SF_VINEBRACELET)));
00985 ui.mammothGuardText->
00986 setText(QString::number(sram->getItem(SF_MAMMOTHGUARD)));
00987 ui.clawGuardText->
00988 setText(QString::number(sram->getItem(SF_CLAWGUARD)));
00989 ui.serpentBracerText->
00990 setText(QString::number(sram->getItem(SF_SERPENTBRACER)));
00991 ui.bronzeGauntletText->
00992 setText(QString::number(sram->getItem(SF_BRONZEGAUNTLET)));
00993 ui.glovesOfRaText->
00994 setText(QString::number(sram->getItem(SF_GLOVESOFRA)));
00995 ui.ironBracerText->
00996 setText(QString::number(sram->getItem(SF_IRONBRACER)));
00997 ui.magiciansRingText->
00998 setText(QString::number(sram->getItem(SF_MAGICIANSRING)));
00999 ui.dragonsClawText->
01000 setText(QString::number(sram->getItem(SF_DRAGONSCLAW)));
01001 ui.cybergloveText->
01002 setText(QString::number(sram->getItem(SF_CYBERGLOVE)));
01003 ui.protectorRingText->
01004 setText(QString::number(sram->getItem(SF_PROTECTORRING)));
01005 ui.virtualGloveText->
01006 setText(QString::number(sram->getItem(SF_VIRTUALGLOVE)));
01007
01008
01009 ui.armorPolishCheck->setChecked(sram->hasCharm(SF_ARMORPOLISH));
01010 ui.chocoboEggCheck->setChecked(sram->hasCharm(SF_CHOCOBOEGG));
01011 ui.insectIncenseCheck->setChecked(sram->hasCharm(SF_INSECTINCENSE));
01012 ui.jadeDiskCheck->setChecked(sram->hasCharm(SF_JADEDISK));
01013 ui.jaguarRingCheck->setChecked(sram->hasCharm(SF_JAGUARRING));
01014 ui.magicGourdCheck->setChecked(sram->hasCharm(SF_MAGICGOURD));
01015 ui.moxaStickCheck->setChecked(sram->hasCharm(SF_MOXASTICK));
01016 ui.oracleBoneCheck->setChecked(sram->hasCharm(SF_ORACLEBONE));
01017 ui.rubyHeartCheck->setChecked(sram->hasCharm(SF_RUBYHEART));
01018 ui.silverSheathCheck->setChecked(sram->hasCharm(SF_SILVERSHEATH));
01019 ui.staffOfLifeCheck->setChecked(sram->hasCharm(SF_STAFFOFLIFE));
01020 ui.sunStoneCheck->setChecked(sram->hasCharm(SF_SUNSTONE));
01021 ui.thugsCloakCheck->setChecked(sram->hasCharm(SF_THUGSCLOAK));
01022 ui.wizardsCoinCheck->setChecked(sram->hasCharm(SF_WIZARDSCOIN));
01023
01024
01025 ui.annihilationAmuletText->
01026 setText(QString::number(sram->getTradeGood(SF_ANNIHILATIONAMULET)));
01027 ui.beadsText->
01028 setText(QString::number(sram->getTradeGood(SF_BEADS)));
01029 ui.ceramicPotText->
01030 setText(QString::number(sram->getTradeGood(SF_CERAMICPOT)));
01031 ui.chickenText->
01032 setText(QString::number(sram->getTradeGood(SF_CHICKEN)));
01033 ui.goldenJackalText->
01034 setText(QString::number(sram->getTradeGood(SF_GOLDENJACKAL)));
01035 ui.jeweledScarabText->
01036 setText(QString::number(sram->getTradeGood(SF_JEWELEDSCARAB)));
01037 ui.limestoneTabletText->
01038 setText(QString::number(sram->getTradeGood(SF_LIMESTONETABLET)));
01039 ui.perfumeText->
01040 setText(QString::number(sram->getTradeGood(SF_PERFUME)));
01041 ui.riceText->
01042 setText(QString::number(sram->getTradeGood(SF_RICE)));
01043 ui.spiceText->
01044 setText(QString::number(sram->getTradeGood(SF_SPICE)));
01045 ui.souvenirSpoonText->
01046 setText(QString::number(sram->getTradeGood(SF_SOUVENIRSPOON)));
01047 ui.tapestryText->
01048 setText(QString::number(sram->getTradeGood(SF_TAPESTRY)));
01049 ui.ticketForExhibitionText->
01050 setText(QString::number(sram->getTradeGood(SF_TICKETFOREXHIBITION)));
01051
01052 ignoreSignals = false;
01053 }
01054
01055 void MainWindow::onUIChanged() {
01056 ui.fileClose->setEnabled(open);
01057 ui.fileSave->setEnabled(open && sram->isModified());
01058 ui.fileSaveAs->setEnabled(open);
01059
01060
01061 ui.regionUnitedStates->setEnabled(!open);
01062 ui.regionEngland->setEnabled(!open);
01063 ui.regionFrance->setEnabled(!open);
01064 ui.regionGermany->setEnabled(!open);
01065 ui.regionSpain->setEnabled(!open);
01066
01067 ui.tabWidget->setVisible(open);
01068
01069 if (open) {
01070 ui.gameGame1->setEnabled(sram->isValid(0));
01071 ui.gameGame2->setEnabled(sram->isValid(1));
01072 ui.gameGame3->setEnabled(sram->isValid(2));
01073 ui.gameGame4->setEnabled(sram->isValid(3));
01074
01075 switch (sram->getGame()) {
01076 case 0: ui.gameGame1->setChecked(true); break;
01077 case 1: ui.gameGame2->setChecked(true); break;
01078 case 2: ui.gameGame3->setChecked(true); break;
01079 default: ui.gameGame4->setChecked(true); break;
01080 }
01081
01082 ui.boneCrusherSpinner->setEnabled(sram->hasWeapon(SF_BONECRUSHER));
01083 ui.boneCrusherText->setEnabled(sram->hasWeapon(SF_BONECRUSHER));
01084
01085 ui.gladiatorSwordSpinner->setEnabled(sram->hasWeapon(SF_GLADIATORSWORD));
01086 ui.gladiatorSwordText->setEnabled(sram->hasWeapon(SF_GLADIATORSWORD));
01087
01088 ui.crusaderSwordSpinner->setEnabled(sram->hasWeapon(SF_CRUSADERSWORD));
01089 ui.crusaderSwordText->setEnabled(sram->hasWeapon(SF_CRUSADERSWORD));
01090
01091 ui.neutronBladeSpinner->setEnabled(sram->hasWeapon(SF_NEUTRONBLADE));
01092 ui.neutronBladeText->setEnabled(sram->hasWeapon(SF_NEUTRONBLADE));
01093
01094 ui.spidersClawSpinner->setEnabled(sram->hasWeapon(SF_SPIDERSCLAW));
01095 ui.spidersClawText->setEnabled(sram->hasWeapon(SF_SPIDERSCLAW));
01096
01097 ui.bronzeAxeSpinner->setEnabled(sram->hasWeapon(SF_BRONZEAXE));
01098 ui.bronzeAxeText->setEnabled(sram->hasWeapon(SF_BRONZEAXE));
01099
01100 ui.knightBasherSpinner->setEnabled(sram->hasWeapon(SF_KNIGHTBASHER));
01101 ui.knightBasherText->setEnabled(sram->hasWeapon(SF_KNIGHTBASHER));
01102
01103 ui.atomSmasherSpinner->setEnabled(sram->hasWeapon(SF_ATOMSMASHER));
01104 ui.atomSmasherText->setEnabled(sram->hasWeapon(SF_ATOMSMASHER));
01105
01106 ui.hornSpearSpinner->setEnabled(sram->hasWeapon(SF_HORNSPEAR));
01107 ui.hornSpearText->setEnabled(sram->hasWeapon(SF_HORNSPEAR));
01108
01109 ui.bronzeSpearSpinner->setEnabled(sram->hasWeapon(SF_BRONZESPEAR));
01110 ui.bronzeSpearText->setEnabled(sram->hasWeapon(SF_BRONZESPEAR));
01111
01112 ui.lanceWeaponSpinner->setEnabled(sram->hasWeapon(SF_LANCEWEAPON));
01113 ui.lanceWeaponText->setEnabled(sram->hasWeapon(SF_LANCEWEAPON));
01114
01115 ui.laserLanceSpinner->setEnabled(sram->hasWeapon(SF_LASERLANCE));
01116 ui.laserLanceText->setEnabled(sram->hasWeapon(SF_LASERLANCE));
01117
01118 ui.acidRainSpinner->setEnabled(sram->hasAlchemy(SF_ACIDRAIN));
01119 ui.acidRainText->setEnabled(sram->hasAlchemy(SF_ACIDRAIN));
01120
01121 ui.atlasSpinner->setEnabled(sram->hasAlchemy(SF_ATLAS));
01122 ui.atlasText->setEnabled(sram->hasAlchemy(SF_ATLAS));
01123
01124 ui.barrierSpinner->setEnabled(sram->hasAlchemy(SF_BARRIER));
01125 ui.barrierText->setEnabled(sram->hasAlchemy(SF_BARRIER));
01126
01127 ui.callUpSpinner->setEnabled(sram->hasAlchemy(SF_CALLUP));
01128 ui.callUpText->setEnabled(sram->hasAlchemy(SF_CALLUP));
01129
01130 ui.corrosionSpinner->setEnabled(sram->hasAlchemy(SF_CORROSION));
01131 ui.corrosionText->setEnabled(sram->hasAlchemy(SF_CORROSION));
01132
01133 ui.crushSpinner->setEnabled(sram->hasAlchemy(SF_CRUSH));
01134 ui.crushText->setEnabled(sram->hasAlchemy(SF_CRUSH));
01135
01136 ui.cureSpinner->setEnabled(sram->hasAlchemy(SF_CURE));
01137 ui.cureText->setEnabled(sram->hasAlchemy(SF_CURE));
01138
01139 ui.defendSpinner->setEnabled(sram->hasAlchemy(SF_DEFEND));
01140 ui.defendText->setEnabled(sram->hasAlchemy(SF_DEFEND));
01141
01142 ui.doubleDrainSpinner->setEnabled(sram->hasAlchemy(SF_DOUBLEDRAIN));
01143 ui.doubleDrainText->setEnabled(sram->hasAlchemy(SF_DOUBLEDRAIN));
01144
01145 ui.drainSpinner->setEnabled(sram->hasAlchemy(SF_DRAIN));
01146 ui.drainText->setEnabled(sram->hasAlchemy(SF_DRAIN));
01147
01148 ui.energizeSpinner->setEnabled(sram->hasAlchemy(SF_ENERGIZE));
01149 ui.energizeText->setEnabled(sram->hasAlchemy(SF_ENERGIZE));
01150
01151 ui.escapeSpinner->setEnabled(sram->hasAlchemy(SF_ESCAPE));
01152 ui.escapeText->setEnabled(sram->hasAlchemy(SF_ESCAPE));
01153
01154 ui.explosionSpinner->setEnabled(sram->hasAlchemy(SF_EXPLOSION));
01155 ui.explosionText->setEnabled(sram->hasAlchemy(SF_EXPLOSION));
01156
01157 ui.fireballSpinner->setEnabled(sram->hasAlchemy(SF_FIREBALL));
01158 ui.fireballText->setEnabled(sram->hasAlchemy(SF_FIREBALL));
01159
01160 ui.firePowerSpinner->setEnabled(sram->hasAlchemy(SF_FIREPOWER));
01161 ui.firePowerText->setEnabled(sram->hasAlchemy(SF_FIREPOWER));
01162
01163 ui.flashSpinner->setEnabled(sram->hasAlchemy(SF_FLASH));
01164 ui.flashText->setEnabled(sram->hasAlchemy(SF_FLASH));
01165
01166 ui.forceFieldSpinner->setEnabled(sram->hasAlchemy(SF_FORCEFIELD));
01167 ui.forceFieldText->setEnabled(sram->hasAlchemy(SF_FORCEFIELD));
01168
01169 ui.hardBallSpinner->setEnabled(sram->hasAlchemy(SF_HARDBALL));
01170 ui.hardBallText->setEnabled(sram->hasAlchemy(SF_HARDBALL));
01171
01172 ui.healSpinner->setEnabled(sram->hasAlchemy(SF_HEAL));
01173 ui.healText->setEnabled(sram->hasAlchemy(SF_HEAL));
01174
01175 ui.lanceAlchemySpinner->setEnabled(sram->hasAlchemy(SF_LANCEALCHEMY));
01176 ui.lanceAlchemyText->setEnabled(sram->hasAlchemy(SF_LANCEALCHEMY));
01177
01178 ui.levitateSpinner->setEnabled(sram->hasAlchemy(SF_LEVITATE));
01179 ui.levitateText->setEnabled(sram->hasAlchemy(SF_LEVITATE));
01180
01181 ui.lightningStormSpinner->setEnabled(sram->hasAlchemy(SF_LIGHTNINGSTORM));
01182 ui.lightningStormText->setEnabled(sram->hasAlchemy(SF_LIGHTNINGSTORM));
01183
01184 ui.miracleCureSpinner->setEnabled(sram->hasAlchemy(SF_MIRACLECURE));
01185 ui.miracleCureText->setEnabled(sram->hasAlchemy(SF_MIRACLECURE));
01186
01187 ui.nitroSpinner->setEnabled(sram->hasAlchemy(SF_NITRO));
01188 ui.nitroText->setEnabled(sram->hasAlchemy(SF_NITRO));
01189
01190 ui.oneUpSpinner->setEnabled(sram->hasAlchemy(SF_ONEUP));
01191 ui.oneUpText->setEnabled(sram->hasAlchemy(SF_ONEUP));
01192
01193 ui.reflectSpinner->setEnabled(sram->hasAlchemy(SF_REFLECT));
01194 ui.reflectText->setEnabled(sram->hasAlchemy(SF_REFLECT));
01195
01196 ui.regrowthSpinner->setEnabled(sram->hasAlchemy(SF_REGROWTH));
01197 ui.regrowthText->setEnabled(sram->hasAlchemy(SF_REGROWTH));
01198
01199 ui.revealerSpinner->setEnabled(sram->hasAlchemy(SF_REVEALER));
01200 ui.revealerText->setEnabled(sram->hasAlchemy(SF_REVEALER));
01201
01202 ui.reviveSpinner->setEnabled(sram->hasAlchemy(SF_REVIVE));
01203 ui.reviveText->setEnabled(sram->hasAlchemy(SF_REVIVE));
01204
01205 ui.slowBurnSpinner->setEnabled(sram->hasAlchemy(SF_SLOWBURN));
01206 ui.slowBurnText->setEnabled(sram->hasAlchemy(SF_SLOWBURN));
01207
01208 ui.speedSpinner->setEnabled(sram->hasAlchemy(SF_SPEED));
01209 ui.speedText->setEnabled(sram->hasAlchemy(SF_SPEED));
01210
01211 ui.stingSpinner->setEnabled(sram->hasAlchemy(SF_STING));
01212 ui.stingText->setEnabled(sram->hasAlchemy(SF_STING));
01213
01214 ui.stopSpinner->setEnabled(sram->hasAlchemy(SF_STOP));
01215 ui.stopText->setEnabled(sram->hasAlchemy(SF_STOP));
01216
01217 ui.superHealSpinner->setEnabled(sram->hasAlchemy(SF_SUPERHEAL));
01218 ui.superHealText->setEnabled(sram->hasAlchemy(SF_SUPERHEAL));
01219 } else {
01220 ui.gameGame1->setEnabled(false);
01221 ui.gameGame2->setEnabled(false);
01222 ui.gameGame3->setEnabled(false);
01223 ui.gameGame4->setEnabled(false);
01224 }
01225 }
01226
01227 void MainWindow::on_boyCurrentHPText_textEdited(const QString &text) {
01228 Q_ASSERT(open);
01229
01230 sram->setCurrentHP(SF_BOY, text.toUInt());
01231 emit uiChanged();
01232 }
01233
01234 void MainWindow::on_boyExperienceText_textEdited(const QString &text) {
01235 Q_ASSERT(open);
01236
01237 sram->setExperience(SF_BOY, text.toUInt());
01238 emit uiChanged();
01239 }
01240
01241 void MainWindow::on_boyLevelText_textEdited(const QString &text) {
01242 Q_ASSERT(open);
01243
01244 int level = text.toInt();
01245
01246 if (level != 0) {
01247 sram->setLevel(SF_BOY, level);
01248 emit uiChanged();
01249 }
01250 }
01251
01252 void MainWindow::on_boyNameText_textEdited(const QString &name) {
01253 Q_ASSERT(open);
01254
01255 sram->setName(SF_BOY, name);
01256 emit uiChanged();
01257 }
01258
01259 void MainWindow::on_dogAttackLevelSpinner_valueChanged(int level) {
01260 if (ignoreSignals) {
01261 return;
01262 }
01263
01264 Q_ASSERT(open);
01265
01266 std::pair<int, int> temp = sram->getAttackLevel();
01267 temp.first = level;
01268 sram->setAttackLevel(temp);
01269
01270 emit uiChanged();
01271 }
01272
01273 void MainWindow::on_dogAttackLevelText_textEdited(const QString &text) {
01274 Q_ASSERT(open);
01275
01276 std::pair<int, int> temp = sram->getAttackLevel();
01277 temp.second = text.toInt();
01278 sram->setAttackLevel(temp);
01279
01280 showActualLevel(temp);
01281 emit uiChanged();
01282 }
01283
01284 void MainWindow::on_dogCurrentHPText_textEdited(const QString &text) {
01285 Q_ASSERT(open);
01286
01287 sram->setCurrentHP(SF_DOG, text.toUInt());
01288 emit uiChanged();
01289 }
01290
01291 void MainWindow::on_dogExperienceText_textEdited(const QString &text) {
01292 Q_ASSERT(open);
01293
01294 sram->setExperience(SF_DOG, text.toUInt());
01295 emit uiChanged();
01296 }
01297
01298 void MainWindow::on_dogLevelText_textEdited(const QString &text) {
01299 Q_ASSERT(open);
01300
01301 int level = text.toInt();
01302
01303 if (level != 0) {
01304 sram->setLevel(SF_DOG, level);
01305 emit uiChanged();
01306 }
01307 }
01308
01309 void MainWindow::on_dogNameText_textEdited(const QString &name) {
01310 Q_ASSERT(open);
01311
01312 sram->setName(SF_DOG, name);
01313 emit uiChanged();
01314 }
01315
01316 void MainWindow::on_fileClose_triggered(bool) {
01317 Q_ASSERT(open);
01318
01319 if (confirmClose()) {
01320 delete sram;
01321 delete sramFile;
01322 open = false;
01323
01324 emit uiChanged();
01325 }
01326 }
01327
01328 void MainWindow::on_fileOpen_triggered(bool) {
01329 if (open && !confirmClose()) {
01330 return;
01331 }
01332
01333 QString filename =
01334 QFileDialog::getOpenFileName(this,
01335 tr("Open Secret of Evermore SRAM File"),
01336 "", tr("SRAM Files (*.srm)"));
01337
01338 if (filename.isNull()) {
01339 return;
01340 }
01341
01342 ui.tabWidget->setCurrentIndex(0);
01343 openSRAM(filename);
01344 }
01345
01346 void MainWindow::on_fileSave_triggered(bool) {
01347 Q_ASSERT(open);
01348
01349 if (!sram->save(*sramFile)) {
01350 QMessageBox::warning(this, tr("Unable to Save SRAM File"),
01351 tr("An I/O error occurred while trying to save."),
01352 QMessageBox::Ok, QMessageBox::NoButton);
01353 }
01354
01355 emit uiChanged();
01356 }
01357
01358 void MainWindow::on_fileSaveAs_triggered(bool) {
01359 Q_ASSERT(open);
01360
01361 QString temp =
01362 QFileDialog::getSaveFileName(this, tr("Save SRAM File As"),
01363 "", tr("SRAM Files (*.srm)"));
01364
01365 if (temp.isNull()) {
01366 return;
01367 }
01368
01369 delete sramFile;
01370 sramFile = new QString(temp);
01371
01372 ui.fileSave->trigger();
01373 }
01374
01375 void MainWindow::on_helpAbout_triggered(bool) {
01376 if (!aboutDialog) {
01377 aboutDialog = new AboutDialog(this);
01378 }
01379
01380 aboutDialog->show();
01381 }
01382