Main Page | Namespace List | Class List | File List | Namespace Members | Class Members | File Members

source/view/MainFrame.cc

Go to the documentation of this file.
00001 /*
00002  * z2se
00003  * Copyright (C) 2004-2005 emuWorks
00004  * http://games.technoplaza.net/
00005  *
00006  * This file is part of z2se.
00007  *
00008  * z2se is free software; you can redistribute it and/or modify
00009  * it under the terms of the GNU General Public License as published by
00010  * the Free Software Foundation; either version 2 of the License, or
00011  * (at your option) any later version.
00012  *
00013  * z2se is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  * GNU General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU General Public License
00019  * along with z2se; if not, write to the Free Software
00020  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00021  */
00022 
00023 // $Id: MainFrame.cc,v 1.10 2005/08/04 05:37:51 technoplaza Exp $
00024 
00025 #ifdef HAVE_CONFIG_H
00026     #include <config.h>
00027 #endif
00028 
00029 #include <wx/wxprec.h>
00030 
00031 #ifndef WX_PRECOMP
00032    #include <wx/wx.h>
00033 #endif
00034 
00035 #include "MainFrame.hh"
00036 #include "../GenApp.hh"
00037 
00038 using namespace emuWorks;
00039 
00040 const char *MainFrame::ICON[] = {
00041     "16 16 4 1",
00042     "   c None",
00043     "!  c #F0BC3C",
00044     "#  c #FCFCFC",
00045     "$  c black",
00046     "!!!!!!!!!!!!!!!!",
00047     "##############$!",
00048     "$$$$$$$$$$$$$$$!",
00049     "!$#$#$#$#$#$#$!!",
00050     "!!$$$$$$$$$$$!!!",
00051     "!!#$!#$!#$!#$!!!",
00052     "!!#$!#$!#$!#$!!!",
00053     "!!#$!#$!#$!#$!!!",
00054     "!!#$!#$!#$!#$!!!",
00055     "!!#$!#$!#$!#$!!!",
00056     "!$$$$$$$$$$$$$!!",
00057     "!############$!!",
00058     "$$$$$$$$$$$$$$$!",
00059     "##############$!",
00060     "$$$$$$$$$$$$$$$!",
00061     "!!!!!!!!!!!!!!!!"
00062 };
00063 
00064 IMPLEMENT_DYNAMIC_CLASS(MainFrame, wxFrame)
00065 
00066 BEGIN_EVENT_TABLE(MainFrame, wxFrame)
00067     EVT_CLOSE(MainFrame::windowClosing)
00068 
00069     EVT_MENU(XRCID("IDM_FILE_OPEN"), MainFrame::fileOpen)
00070     EVT_MENU(XRCID("IDM_FILE_CLOSE"), MainFrame::fileClose)
00071     EVT_MENU(XRCID("IDM_FILE_SAVE"), MainFrame::fileSave)
00072     EVT_MENU(XRCID("IDM_FILE_SAVE_AS"), MainFrame::fileSaveAs)
00073     EVT_MENU(XRCID("IDM_FILE_EXIT"), MainFrame::fileExit)
00074     
00075     EVT_MENU(XRCID("IDM_GAME_ONE"), MainFrame::gameChange)
00076     EVT_MENU(XRCID("IDM_GAME_TWO"), MainFrame::gameChange)
00077     EVT_MENU(XRCID("IDM_GAME_THREE"), MainFrame::gameChange)
00078     
00079     EVT_MENU(XRCID("IDM_HAVE_ALL_LEVELS"), MainFrame::multiChange)
00080     EVT_MENU(XRCID("IDM_HAVE_ALL_CONTAINERS"), MainFrame::multiChange)
00081     EVT_MENU(XRCID("IDM_HAVE_ALL_TECHNIQUES"), MainFrame::multiChange)
00082     EVT_MENU(XRCID("IDM_HAVE_ALL_SPELLS"), MainFrame::multiChange)
00083     EVT_MENU(XRCID("IDM_HAVE_ALL_ITEMS"), MainFrame::multiChange)
00084     EVT_MENU(XRCID("IDM_HAVE_ALL_SEALS"), MainFrame::multiChange)
00085     EVT_MENU(XRCID("IDM_HAVE_ALL_KEYS"), MainFrame::multiChange)
00086     
00087     EVT_MENU(XRCID("IDM_HAVE_NONE_LEVELS"), MainFrame::multiChange)
00088     EVT_MENU(XRCID("IDM_HAVE_NONE_CONTAINERS"), MainFrame::multiChange)
00089     EVT_MENU(XRCID("IDM_HAVE_NONE_TECHNIQUES"), MainFrame::multiChange)
00090     EVT_MENU(XRCID("IDM_HAVE_NONE_SPELLS"), MainFrame::multiChange)
00091     EVT_MENU(XRCID("IDM_HAVE_NONE_ITEMS"), MainFrame::multiChange)
00092     EVT_MENU(XRCID("IDM_HAVE_NONE_SEALS"), MainFrame::multiChange)
00093     EVT_MENU(XRCID("IDM_HAVE_NONE_KEYS"), MainFrame::multiChange)
00094     
00095     EVT_MENU(XRCID("IDM_HELP_ABOUT"), MainFrame::helpAbout)
00096     
00097     EVT_TEXT(XRCID("ID_NAME"), MainFrame::nameChange)
00098     EVT_COMMAND_SCROLL(XRCID("ID_PLAY_COUNT"), MainFrame::playCountChange)
00099     EVT_CHECKBOX(XRCID("ID_TRIFORCE"), MainFrame::triforceChange)
00100     
00101     EVT_COMMAND_SCROLL(XRCID("ID_SWORD_LEVEL"), MainFrame::levelChange)
00102     EVT_COMMAND_SCROLL(XRCID("ID_MAGIC_LEVEL"), MainFrame::levelChange)
00103     EVT_COMMAND_SCROLL(XRCID("ID_LIFE_LEVEL"), MainFrame::levelChange)
00104     
00105     EVT_COMMAND_SCROLL(XRCID("ID_MAGIC_CONTAINER"), MainFrame::containerChange)
00106     EVT_COMMAND_SCROLL(XRCID("ID_LIFE_CONTAINER"), MainFrame::containerChange)
00107     
00108     EVT_CHECKBOX(XRCID("ID_DOWNWARD_THRUST"), MainFrame::techniqueChange)
00109     EVT_CHECKBOX(XRCID("ID_UPWARD_THRUST"), MainFrame::techniqueChange)    
00110     
00111     EVT_CHECKBOX(XRCID("ID_SHIELD"), MainFrame::spellChange)
00112     EVT_CHECKBOX(XRCID("ID_JUMP"), MainFrame::spellChange)
00113     EVT_CHECKBOX(XRCID("ID_LIFE"), MainFrame::spellChange)
00114     EVT_CHECKBOX(XRCID("ID_FAIRY"), MainFrame::spellChange)
00115     EVT_CHECKBOX(XRCID("ID_FIRE"), MainFrame::spellChange)
00116     EVT_CHECKBOX(XRCID("ID_REFLECT"), MainFrame::spellChange)
00117     EVT_CHECKBOX(XRCID("ID_SPELL"), MainFrame::spellChange)
00118     EVT_CHECKBOX(XRCID("ID_THUNDER"), MainFrame::spellChange)
00119     
00120     EVT_CHECKBOX(XRCID("ID_CANDLE"), MainFrame::itemChange)
00121     EVT_CHECKBOX(XRCID("ID_GLOVE"), MainFrame::itemChange)
00122     EVT_CHECKBOX(XRCID("ID_RAFT"), MainFrame::itemChange)
00123     EVT_CHECKBOX(XRCID("ID_BOOTS"), MainFrame::itemChange)
00124     EVT_CHECKBOX(XRCID("ID_CROSS"), MainFrame::itemChange)
00125     EVT_CHECKBOX(XRCID("ID_FLUTE"), MainFrame::itemChange)
00126     EVT_CHECKBOX(XRCID("ID_MAGIC_KEY"), MainFrame::itemChange)
00127     EVT_CHECKBOX(XRCID("ID_HAMMER"), MainFrame::itemChange)
00128     
00129     EVT_CHECKBOX(XRCID("ID_PARAPA"), MainFrame::sealChange)
00130     EVT_CHECKBOX(XRCID("ID_MIDORO"), MainFrame::sealChange)
00131     EVT_CHECKBOX(XRCID("ID_ISLAND"), MainFrame::sealChange)
00132     EVT_CHECKBOX(XRCID("ID_MAZE"), MainFrame::sealChange)
00133     EVT_CHECKBOX(XRCID("ID_SEA"), MainFrame::sealChange)
00134     EVT_CHECKBOX(XRCID("ID_THREE_EYE_ROCK"), MainFrame::sealChange)
00135     
00136     EVT_COMMAND_SCROLL(XRCID("ID_KEY"), MainFrame::keyChange)
00137 END_EVENT_TABLE()
00138 
00139 MainFrame::MainFrame() {
00140     SetParent(NULL);
00141     CreateControls();
00142     Centre();
00143     
00144     SetDropTarget(new FileDropTarget(this));
00145 }
00146 
00147 void MainFrame::CreateControls() {
00148     wxXmlResource::Get()->LoadFrame(this, GetParent(), wxT("ID_FRAME"));
00149     SetIcon(ICON);
00150     
00151     wxMenuBar *menubar = GetMenuBar();
00152     
00153     fileCloseItem = menubar->FindItem(XRCID("IDM_FILE_CLOSE"));
00154     fileSaveItem = menubar->FindItem(XRCID("IDM_FILE_SAVE"));
00155     fileSaveAsItem = menubar->FindItem(XRCID("IDM_FILE_SAVE_AS"));
00156     
00157     gameItems[0] = menubar->FindItem(XRCID("IDM_GAME_ONE"));
00158     gameItems[0]->Enable(false);
00159     
00160     gameItems[1] = menubar->FindItem(XRCID("IDM_GAME_TWO"));
00161     gameItems[1]->Enable(false);
00162     
00163     gameItems[2] = menubar->FindItem(XRCID("IDM_GAME_THREE"));
00164     gameItems[2]->Enable(false);
00165 
00166     panel = XRCCTRL(*this, "ID_PANEL", wxPanel);
00167     panel->Show(false);
00168     
00169     wxStringList letters("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K",
00170                          "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
00171                          "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6",
00172                          "7", "8", "9", " ", NULL);
00173 
00174     wxTextValidator nameValidator(wxFILTER_INCLUDE_CHAR_LIST);
00175     nameValidator.SetIncludeList(letters);
00176     
00177     nameText = XRCCTRL(*this, "ID_NAME", wxTextCtrl);
00178     nameText->SetValidator(nameValidator);
00179     nameText->SetMaxLength(8);
00180     
00181     playCountSlider = XRCCTRL(*this, "ID_PLAY_COUNT", wxSlider);
00182     triforceCheck = XRCCTRL(*this, "ID_TRIFORCE", wxCheckBox);
00183 
00184     swordLevelSlider = XRCCTRL(*this, "ID_SWORD_LEVEL", wxSlider);
00185     magicLevelSlider = XRCCTRL(*this, "ID_MAGIC_LEVEL", wxSlider);
00186     lifeLevelSlider = XRCCTRL(*this, "ID_LIFE_LEVEL", wxSlider);
00187 
00188     magicContainerSlider = XRCCTRL(*this, "ID_MAGIC_CONTAINER", wxSlider);
00189     lifeContainerSlider = XRCCTRL(*this, "ID_LIFE_CONTAINER", wxSlider);
00190 
00191     downwardThrustCheck = XRCCTRL(*this, "ID_DOWNWARD_THRUST", wxCheckBox);
00192     upwardThrustCheck = XRCCTRL(*this, "ID_UPWARD_THRUST", wxCheckBox);
00193 
00194     shieldCheck = XRCCTRL(*this, "ID_SHIELD", wxCheckBox);
00195     jumpCheck = XRCCTRL(*this, "ID_JUMP", wxCheckBox);
00196     lifeCheck = XRCCTRL(*this, "ID_LIFE", wxCheckBox);
00197     fairyCheck = XRCCTRL(*this, "ID_FAIRY", wxCheckBox);
00198     fireCheck = XRCCTRL(*this, "ID_FIRE", wxCheckBox);
00199     reflectCheck = XRCCTRL(*this, "ID_REFLECT", wxCheckBox);
00200     spellCheck = XRCCTRL(*this, "ID_SPELL", wxCheckBox);
00201     thunderCheck = XRCCTRL(*this, "ID_THUNDER", wxCheckBox);
00202     
00203     candleCheck = XRCCTRL(*this, "ID_CANDLE", wxCheckBox);
00204     gloveCheck = XRCCTRL(*this, "ID_GLOVE", wxCheckBox);
00205     raftCheck = XRCCTRL(*this, "ID_RAFT", wxCheckBox);
00206     bootsCheck = XRCCTRL(*this, "ID_BOOTS", wxCheckBox);
00207     crossCheck = XRCCTRL(*this, "ID_CROSS", wxCheckBox);
00208     fluteCheck = XRCCTRL(*this, "ID_FLUTE", wxCheckBox);
00209     magicKeyCheck = XRCCTRL(*this, "ID_MAGIC_KEY", wxCheckBox);
00210     hammerCheck = XRCCTRL(*this, "ID_HAMMER", wxCheckBox);
00211     
00212     palaceCheck[0] = XRCCTRL(*this, "ID_PARAPA", wxCheckBox);
00213     palaceCheck[1] = XRCCTRL(*this, "ID_MIDORO", wxCheckBox);
00214     palaceCheck[2] = XRCCTRL(*this, "ID_ISLAND", wxCheckBox);
00215     palaceCheck[3] = XRCCTRL(*this, "ID_MAZE", wxCheckBox);
00216     palaceCheck[4] = XRCCTRL(*this, "ID_SEA", wxCheckBox);
00217     palaceCheck[5] = XRCCTRL(*this, "ID_THREE_EYE_ROCK", wxCheckBox);
00218     
00219     keySlider = XRCCTRL(*this, "ID_KEY", wxSlider);
00220     
00221     setOpen(false);
00222 }
00223 
00224 void MainFrame::setOpen(bool open) {
00225     this->open = open;
00226     
00227     fileCloseItem->Enable(open);
00228     fileSaveItem->Enable(open);
00229     fileSaveAsItem->Enable(open);
00230 
00231     GetMenuBar()->EnableTop(2, open);
00232 }
00233 
00234 bool MainFrame::close() {
00235     if (!isOpen()) {
00236         return true;
00237     }
00238     
00239     if (sram->isModified()) {
00240         int choice = wxMessageBox(wxT("Save Game File Before Closing?"),
00241                                   wxT("Warning: Unsaved Changes"),
00242                                   wxYES_NO | wxCANCEL | wxICON_QUESTION);
00243                                   
00244         if (choice == wxYES) {
00245             if (!sram->save()) {
00246                 return false;
00247             }
00248         } else if (choice == wxCANCEL) {
00249             return false;
00250         }
00251     }
00252     
00253     delete sram;
00254     
00255     for (int game = 0; game < 3; game++) {
00256         gameItems[game]->Enable(false);
00257     }
00258     
00259     panel->Show(false);
00260     setOpen(false);
00261     
00262     return true;
00263 }
00264 
00265 void MainFrame::loadGameData(int game) {
00266     sram->setCurrentGame(game);
00267     SaveSlot *slot = sram->getCurrentGame();
00268     
00269     nameText->SetValue(slot->getName());
00270     playCountSlider->SetValue(slot->getPlayCount());
00271     triforceCheck->SetValue(slot->hasTriforce());
00272     
00273     swordLevelSlider->SetValue(slot->getLevel(SWORDLEVEL));
00274     magicLevelSlider->SetValue(slot->getLevel(MAGICLEVEL));
00275     lifeLevelSlider->SetValue(slot->getLevel(LIFELEVEL));
00276     
00277     magicContainerSlider->SetValue(slot->getContainers(MAGICCONTAINER));
00278     lifeContainerSlider->SetValue(slot->getContainers(LIFECONTAINER));
00279     
00280     downwardThrustCheck->SetValue(slot->hasTechnique(DOWNWARDTHRUST));
00281     upwardThrustCheck->SetValue(slot->hasTechnique(UPWARDTHRUST));
00282     
00283     shieldCheck->SetValue(slot->hasSpell(SHIELD));
00284     jumpCheck->SetValue(slot->hasSpell(JUMP));
00285     lifeCheck->SetValue(slot->hasSpell(LIFE));
00286     fairyCheck->SetValue(slot->hasSpell(FAIRY));
00287     fireCheck->SetValue(slot->hasSpell(FIRE));
00288     reflectCheck->SetValue(slot->hasSpell(REFLECT));
00289     spellCheck->SetValue(slot->hasSpell(SPELL));
00290     thunderCheck->SetValue(slot->hasSpell(THUNDER));
00291     
00292     candleCheck->SetValue(slot->hasItem(CANDLE));
00293     gloveCheck->SetValue(slot->hasItem(GLOVE));
00294     raftCheck->SetValue(slot->hasItem(RAFT));
00295     bootsCheck->SetValue(slot->hasItem(BOOTS));
00296     crossCheck->SetValue(slot->hasItem(CROSS));
00297     fluteCheck->SetValue(slot->hasItem(FLUTE));
00298     magicKeyCheck->SetValue(slot->hasItem(MAGICKEY));
00299     hammerCheck->SetValue(slot->hasItem(HAMMER));
00300     
00301     for (int palace = 0; palace < 6; palace++) {
00302         palaceCheck[palace]->SetValue(slot->hasSeal(palace));
00303     }
00304     
00305     keySlider->SetValue(slot->getKeys());
00306     
00307     panel->Show(true);
00308 }
00309 
00310 void MainFrame::load(wxString &filename) {
00311     if (!close()) {
00312         return;
00313     }
00314     
00315     sram = new SRAMFile(filename);
00316     
00317     int first = -1;
00318     
00319     for (int game = 2; game >= 0; game--) {
00320         if (sram->isValidGame(game)) {
00321             gameItems[game]->Enable(true);
00322             first = game;
00323         }
00324     }
00325     
00326     if (first == -1) {
00327         delete sram;
00328         
00329         wxMessageBox(wxT("No game data is in the file you loaded."),
00330                      wxT("Error: No Data Found"), wxOK | wxICON_ERROR);
00331     } else {
00332         loadGameData(first);
00333         
00334         if (first != 0) {
00335             gameItems[first]->Check(true);
00336         }
00337 
00338         setOpen(true);
00339     }
00340 }
00341 
00342 void MainFrame::fileOpen(wxCommandEvent &) {
00343     static wxFileDialog *dlg = new wxFileDialog(this, 
00344         wxT("Choose a .SAV File"), "", "", 
00345         wxT("NES SRAM File (*.sav)|*.sav"), (wxOPEN | wxCHANGE_DIR));
00346         
00347     int value = dlg->ShowModal();
00348     
00349     if (value == wxID_OK) {
00350         wxString filename = dlg->GetPath();
00351         load(filename);
00352     }
00353 }
00354 
00355 void MainFrame::fileClose(wxCommandEvent &) {
00356     close();
00357 }
00358 
00359 void MainFrame::fileSave(wxCommandEvent &) {
00360     sram->save();
00361 }
00362 
00363 void MainFrame::fileSaveAs(wxCommandEvent &) {
00364     static wxFileDialog *dlg = new wxFileDialog(this,
00365         wxT("Choose a .SAV File"), "", "",
00366         wxT("NES SRAM File (*.sav)|*.sav"), (wxSAVE | wxCHANGE_DIR));
00367 
00368     int value = dlg->ShowModal();
00369 
00370     if (value == wxID_OK) {
00371         wxString filename = dlg->GetPath();
00372         sram->save(filename);
00373     }
00374 }
00375 
00376 void MainFrame::fileExit(wxCommandEvent &) {
00377     if (close()) {
00378         Close(true);
00379     }
00380 }
00381 
00382 void MainFrame::windowClosing(wxCloseEvent &event) {
00383     if (event.CanVeto()) {
00384         if (!close()) {
00385             event.Veto();
00386             return;
00387         }
00388     }
00389     
00390     Destroy();
00391 }
00392 
00393 void MainFrame::gameChange(wxCommandEvent &event) {
00394     int id = event.GetId();
00395     
00396     if (id == XRCID("IDM_GAME_ONE")) {
00397         loadGameData(0);
00398     } else if (id == XRCID("IDM_GAME_TWO")) {
00399         loadGameData(1);
00400     } else if (id == XRCID("IDM_GAME_THREE")) {
00401         loadGameData(2);
00402     }
00403 }
00404 
00405 void MainFrame::multiChange(wxCommandEvent &event) {
00406     SaveSlot *game = sram->getCurrentGame();
00407     int id = event.GetId();
00408     
00409     if (id == XRCID("IDM_HAVE_ALL_LEVELS")) {
00410         swordLevelSlider->SetValue(8);
00411         game->setLevel(SWORDLEVEL, 8);
00412         
00413         magicLevelSlider->SetValue(8);
00414         game->setLevel(MAGICLEVEL, 8);
00415         
00416         lifeLevelSlider->SetValue(8);
00417         game->setLevel(LIFELEVEL, 8);
00418     } else if (id == XRCID("IDM_HAVE_ALL_CONTAINERS")) {
00419         magicContainerSlider->SetValue(8);
00420         game->setContainers(MAGICCONTAINER, 8);
00421         
00422         lifeContainerSlider->SetValue(8);
00423         game->setContainers(LIFECONTAINER, 8);
00424     } else if (id == XRCID("IDM_HAVE_ALL_TECHNIQUES")) {
00425         downwardThrustCheck->SetValue(true);
00426         game->setTechnique(DOWNWARDTHRUST, true);
00427         
00428         upwardThrustCheck->SetValue(true);
00429         game->setTechnique(UPWARDTHRUST, true);
00430     } else if (id == XRCID("IDM_HAVE_ALL_SPELLS")) {
00431         shieldCheck->SetValue(true);
00432         game->setSpell(SHIELD, true);
00433         
00434         jumpCheck->SetValue(true);
00435         game->setSpell(JUMP, true);
00436         
00437         lifeCheck->SetValue(true);
00438         game->setSpell(LIFE, true);
00439         
00440         fairyCheck->SetValue(true);
00441         game->setSpell(FAIRY, true);
00442         
00443         fireCheck->SetValue(true);
00444         game->setSpell(FIRE, true);
00445         
00446         reflectCheck->SetValue(true);
00447         game->setSpell(REFLECT, true);
00448         
00449         spellCheck->SetValue(true);
00450         game->setSpell(SPELL, true);
00451         
00452         thunderCheck->SetValue(true);
00453         game->setSpell(THUNDER, true);
00454     } else if (id == XRCID("IDM_HAVE_ALL_ITEMS")) {
00455         candleCheck->SetValue(true);
00456         game->setItem(CANDLE, true);
00457         
00458         gloveCheck->SetValue(true);
00459         game->setItem(GLOVE, true);
00460         
00461         raftCheck->SetValue(true);
00462         game->setItem(RAFT, true);
00463         
00464         bootsCheck->SetValue(true);
00465         game->setItem(BOOTS, true);
00466         
00467         crossCheck->SetValue(true);
00468         game->setItem(CROSS, true);
00469         
00470         fluteCheck->SetValue(true);
00471         game->setItem(FLUTE, true);
00472         
00473         magicKeyCheck->SetValue(true);
00474         game->setItem(MAGICKEY, true);
00475         
00476         hammerCheck->SetValue(true);
00477         game->setItem(HAMMER, true);
00478     } else if (id == XRCID("IDM_HAVE_ALL_SEALS")) {
00479         palaceCheck[0]->SetValue(true);
00480         game->setSeal(0, true);
00481         
00482         palaceCheck[1]->SetValue(true);
00483         game->setSeal(1, true);
00484         
00485         palaceCheck[2]->SetValue(true);
00486         game->setSeal(2, true);
00487         
00488         palaceCheck[3]->SetValue(true);
00489         game->setSeal(3, true);
00490         
00491         palaceCheck[4]->SetValue(true);
00492         game->setSeal(4, true);
00493         
00494         palaceCheck[5]->SetValue(true);
00495         game->setSeal(5, true);
00496     } else if (id == XRCID("IDM_HAVE_ALL_KEYS")) {
00497         keySlider->SetValue(9);
00498         game->setKeys(9);
00499     } else if (id == XRCID("IDM_HAVE_NONE_LEVELS")) {
00500         swordLevelSlider->SetValue(1);
00501         game->setLevel(SWORDLEVEL, 1);
00502         
00503         magicLevelSlider->SetValue(1);
00504         game->setLevel(MAGICLEVEL, 1);
00505         
00506         lifeLevelSlider->SetValue(1);
00507         game->setLevel(LIFELEVEL, 1);
00508     } else if (id == XRCID("IDM_HAVE_NONE_CONTAINERS")) {
00509         magicContainerSlider->SetValue(4);
00510         game->setContainers(MAGICCONTAINER, 4);
00511         
00512         lifeContainerSlider->SetValue(4);
00513         game->setContainers(LIFECONTAINER, 4);
00514     } else if (id == XRCID("IDM_HAVE_NONE_TECHNIQUES")) {
00515         downwardThrustCheck->SetValue(false);
00516         game->setTechnique(DOWNWARDTHRUST, false);
00517         
00518         upwardThrustCheck->SetValue(false);
00519         game->setTechnique(UPWARDTHRUST, false);
00520     } else if (id == XRCID("IDM_HAVE_NONE_SPELLS")) {
00521         shieldCheck->SetValue(false);
00522         game->setSpell(SHIELD, false);
00523         
00524         jumpCheck->SetValue(false);
00525         game->setSpell(JUMP, false);
00526         
00527         lifeCheck->SetValue(false);
00528         game->setSpell(LIFE, false);
00529         
00530         fairyCheck->SetValue(false);
00531         game->setSpell(FAIRY, false);
00532         
00533         fireCheck->SetValue(false);
00534         game->setSpell(FIRE, false);
00535         
00536         reflectCheck->SetValue(false);
00537         game->setSpell(REFLECT, false);
00538         
00539         spellCheck->SetValue(false);
00540         game->setSpell(SPELL, false);
00541         
00542         thunderCheck->SetValue(false);
00543         game->setSpell(THUNDER, false);
00544     } else if (id == XRCID("IDM_HAVE_NONE_ITEMS")) {
00545         candleCheck->SetValue(false);
00546         game->setItem(CANDLE, false);
00547         
00548         gloveCheck->SetValue(false);
00549         game->setItem(GLOVE, false);
00550         
00551         raftCheck->SetValue(false);
00552         game->setItem(RAFT, false);
00553         
00554         bootsCheck->SetValue(false);
00555         game->setItem(BOOTS, false);
00556         
00557         crossCheck->SetValue(false);
00558         game->setItem(CROSS, false);
00559         
00560         fluteCheck->SetValue(false);
00561         game->setItem(FLUTE, false);
00562         
00563         magicKeyCheck->SetValue(false);
00564         game->setItem(MAGICKEY, false);
00565         
00566         hammerCheck->SetValue(false);
00567         game->setItem(HAMMER, false);
00568     } else if (id == XRCID("IDM_HAVE_NONE_SEALS")) {
00569         palaceCheck[0]->SetValue(false);
00570         game->setSeal(0, false);
00571         
00572         palaceCheck[1]->SetValue(false);
00573         game->setSeal(1, false);
00574         
00575         palaceCheck[2]->SetValue(false);
00576         game->setSeal(2, false);
00577         
00578         palaceCheck[3]->SetValue(false);
00579         game->setSeal(3, false);
00580         
00581         palaceCheck[4]->SetValue(false);
00582         game->setSeal(4, false);
00583         
00584         palaceCheck[5]->SetValue(false);
00585         game->setSeal(5, false);
00586     } else if (id == XRCID("IDM_HAVE_NONE_KEYS")) {
00587         keySlider->SetValue(0);
00588         game->setKeys(0);
00589     }
00590 }
00591 
00592 void MainFrame::helpAbout(wxCommandEvent &) {
00593     wxString msg = wxString(*GenApp::APP_FULL_NAME + wxT(' ') + 
00594                             *GenApp::APP_VERSION + wxT('\n') +
00595                             *GenApp::APP_COPYRIGHT + wxT('\n') +
00596                             *GenApp::APP_URL);
00597     wxString title = wxString(wxT("About ") + 
00598                               *GenApp::APP_FULL_NAME + 
00599                               wxT("..."));
00600     
00601     wxMessageBox(msg, title, wxOK | wxICON_INFORMATION, this);
00602 }
00603 
00604 void MainFrame::nameChange(wxCommandEvent &) {
00605     if (!isOpen()) {
00606         return;
00607     }
00608     
00609     SaveSlot *game = sram->getCurrentGame();
00610     wxString name = nameText->GetValue();
00611     game->setName(name);
00612 }
00613 
00614 void MainFrame::playCountChange(wxScrollEvent &) {
00615     if (!isOpen()) {
00616         return;
00617     }
00618     
00619     SaveSlot *game = sram->getCurrentGame();
00620     game->setPlayCount(playCountSlider->GetValue());
00621 }
00622 
00623 void MainFrame::triforceChange(wxCommandEvent &) {
00624     if (!isOpen()) {
00625         return;
00626     }
00627     
00628     SaveSlot *game = sram->getCurrentGame();
00629     game->setTriforce(triforceCheck->IsChecked());
00630 }
00631 
00632 void MainFrame::levelChange(wxScrollEvent &event) {
00633     if (!isOpen()) {
00634         return;
00635     }
00636     
00637     SaveSlot *game = sram->getCurrentGame();
00638     wxSlider *ctrl = (wxSlider *)event.GetEventObject();
00639     
00640     int level = SWORDLEVEL;
00641     
00642     if (ctrl == magicLevelSlider) {
00643         level = MAGICLEVEL;
00644     } else if (ctrl == lifeLevelSlider) {
00645         level = LIFELEVEL;
00646     }
00647     
00648     game->setLevel(level, ctrl->GetValue());
00649 }
00650 
00651 void MainFrame::containerChange(wxScrollEvent &event) {
00652     if (!isOpen()) {
00653         return;
00654     }
00655     
00656     SaveSlot *game = sram->getCurrentGame();
00657     wxSlider *ctrl = (wxSlider *)event.GetEventObject();
00658     
00659     int container = ((ctrl == magicContainerSlider) ? 
00660                         MAGICCONTAINER : LIFECONTAINER);
00661                         
00662     game->setContainers(container, ctrl->GetValue());
00663 }
00664 
00665 void MainFrame::techniqueChange(wxCommandEvent &event) {
00666     if (!isOpen()) {
00667         return;
00668     }
00669     
00670     SaveSlot *game = sram->getCurrentGame();
00671     wxCheckBox *ctrl = (wxCheckBox *)event.GetEventObject();
00672     
00673     int technique = ((ctrl == downwardThrustCheck) ?
00674                         DOWNWARDTHRUST : UPWARDTHRUST);
00675                         
00676     game->setTechnique(technique, ctrl->IsChecked());
00677 }
00678 
00679 void MainFrame::spellChange(wxCommandEvent &event) {
00680     if (!isOpen()) {
00681         return;
00682     }
00683     
00684     SaveSlot *game = sram->getCurrentGame();
00685     wxCheckBox *ctrl = (wxCheckBox *)event.GetEventObject();
00686     
00687     int spell = SHIELD;
00688     
00689     if (ctrl == jumpCheck) {
00690         spell = JUMP;
00691     } else if (ctrl == lifeCheck) {
00692         spell = LIFE;
00693     } else if (ctrl == fairyCheck) {
00694         spell = FAIRY;
00695     } else if (ctrl == fireCheck) {
00696         spell = FIRE;
00697     } else if (ctrl == reflectCheck) {
00698         spell = REFLECT;
00699     } else if (ctrl == spellCheck) {
00700         spell = SPELL;
00701     } else if (ctrl == thunderCheck) {
00702         spell = THUNDER;
00703     }
00704     
00705     game->setSpell(spell, ctrl->IsChecked());
00706 }
00707 
00708 void MainFrame::itemChange(wxCommandEvent &event) {
00709     if (!isOpen()) {
00710         return;
00711     }
00712     
00713     SaveSlot *game = sram->getCurrentGame();
00714     wxCheckBox *ctrl = (wxCheckBox *)event.GetEventObject();
00715     
00716     int item = CANDLE;
00717     
00718     if (ctrl == gloveCheck) {
00719         item = GLOVE;
00720     } else if (ctrl == raftCheck) {
00721         item = RAFT;
00722     } else if (ctrl == bootsCheck) {
00723         item = BOOTS;
00724     } else if (ctrl == crossCheck) {
00725         item = CROSS;
00726     } else if (ctrl == fluteCheck) {
00727         item = FLUTE;
00728     } else if (ctrl == magicKeyCheck) {
00729         item = MAGICKEY;
00730     } else if (ctrl == hammerCheck) {
00731         item = HAMMER;
00732     }
00733     
00734     game->setItem(item, ctrl->IsChecked());
00735 }
00736 
00737 void MainFrame::sealChange(wxCommandEvent &event) {
00738     if (!isOpen()) {
00739         return;
00740     }
00741     
00742     SaveSlot *game = sram->getCurrentGame();
00743     wxCheckBox *ctrl = (wxCheckBox *)event.GetEventObject();
00744     int palace;
00745     
00746     for (palace = 0; palace < 6; palace++) {
00747         if (palaceCheck[palace] == ctrl) {
00748             break;
00749         }
00750     }
00751     
00752     game->setSeal(palace, ctrl->IsChecked());
00753 }
00754 
00755 void MainFrame::keyChange(wxScrollEvent &) {
00756     if (!isOpen()) {
00757         return;
00758     }
00759     
00760     SaveSlot *game = sram->getCurrentGame();
00761     game->setKeys(keySlider->GetValue());
00762 }
00763 

Generated on Thu Aug 4 00:30:33 2005 for Zelda II SRAM Editor by  doxygen 1.4.4