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 #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 <wx/regex.h>
00036 #include <wx/xrc/xmlres.h>
00037
00038 #include "exceptions/InvalidSRAMDataException.hh"
00039 #include "res/icon32x32.xpm"
00040 #include "model/SRAMFile.hh"
00041 #include "view/Frame.hh"
00042 #include "view/SRAMFileTarget.hh"
00043
00044 using namespace smse;
00045
00046 Frame::Frame() : timer(this, ID_SBTIMER), sram(NULL), ignoreTextEvents(true) {
00047 SetParent(NULL);
00048
00049 CreateControls();
00050 GetSizer()->SetSizeHints(this);
00051 Centre();
00052
00053
00054 XRCCTRL(*this, "IDN_SMSE", wxNotebook)->Show(false);
00055
00056
00057 ignoreTextEvents = false;
00058
00059
00060 SetDropTarget(new SRAMFileTarget(this));
00061 }
00062
00063 void Frame::CreateControls() {
00064 wxXmlResource::Get()->LoadFrame(this, GetParent(), wxT("IDF_SMSE"));
00065 SetIcon(wxIcon(icon32x32_xpm));
00066
00067 wxTextValidator nv(wxFILTER_NUMERIC);
00068
00069 XRCCTRL(*this, "IDT_GAME_ENERGY", wxTextCtrl)->SetValidator(nv);
00070 XRCCTRL(*this, "IDT_GAME_RESERVE", wxTextCtrl)->SetValidator(nv);
00071 XRCCTRL(*this, "IDT_GAME_MISSILES", wxTextCtrl)->SetValidator(nv);
00072 XRCCTRL(*this, "IDT_GAME_SMISSILES", wxTextCtrl)->SetValidator(nv);
00073 XRCCTRL(*this, "IDT_GAME_PBOMBS", wxTextCtrl)->SetValidator(nv);
00074 }
00075
00076 bool Frame::close(bool save) {
00077
00078 wxASSERT(sram);
00079
00080 if (save && !this->save()) {
00081 return false;
00082 }
00083
00084 delete sram;
00085 sram = NULL;
00086
00087 enableMenus();
00088
00089 return true;
00090 }
00091
00092 void Frame::enableMenus() {
00093 wxMenuBar *mb = GetMenuBar();
00094
00095 mb->FindItem(wxID_CLOSE)->Enable(sram);
00096 mb->FindItem(wxID_SAVE)->Enable(sram);
00097 mb->FindItem(wxID_SAVEAS)->Enable(sram);
00098
00099 mb->FindItem(XRCID("IDM_GAME_GAMEA"))->Enable(sram && sram->isValidGame(0));
00100 mb->FindItem(XRCID("IDM_GAME_GAMEB"))->Enable(sram && sram->isValidGame(1));
00101 mb->FindItem(XRCID("IDM_GAME_GAMEC"))->Enable(sram && sram->isValidGame(2));
00102
00103 mb->FindItem(XRCID("IDM_GAME_ENDING"))->Enable(sram);
00104 mb->FindItem(XRCID("IDM_GAME_GIVE"))->Enable(sram);
00105 }
00106
00107 void Frame::load(int game) {
00108
00109 wxASSERT((game >= 0) && (game < SRAMFile::GAMES));
00110
00111
00112 wxASSERT(sram && sram->isValidGame(game));
00113
00114
00115 sram->setGame(game);
00116
00117 this->game = game;
00118
00119 try {
00120 loadGameTab();
00121 loadMiscTab();
00122 loadItemsTab();
00123 loadColorDoorsTab();
00124 loadSpecialDoorsTab();
00125
00126 enableMenus();
00127 } catch (InvalidSRAMDataException &e) {
00128 wxString message(e.what(), wxConvLibc);
00129
00130 wxMessageBox(message, wxT("Error: Invalid Super Metroid SRAM"),
00131 wxOK | wxICON_ERROR);
00132
00133 close();
00134 }
00135 }
00136
00137 void Frame::loadBosses() {
00138
00139 wxASSERT(sram);
00140
00141
00142 XRCCTRL(*this, "IDC_GAME_BOSS_KRAID",
00143 wxCheckBox)->SetValue(sram->getBoss(BOSS_KRAID));
00144 XRCCTRL(*this, "IDC_GAME_STATUE_KRAID",
00145 wxCheckBox)->SetValue(sram->getStatue(STATUE_KRAID));
00146
00147
00148 XRCCTRL(*this, "IDC_GAME_BOSS_PHANTOON",
00149 wxCheckBox)->SetValue(sram->getBoss(BOSS_PHANTOON));
00150 XRCCTRL(*this, "IDC_GAME_STATUE_PHANTOON",
00151 wxCheckBox)->SetValue(sram->getStatue(STATUE_PHANTOON));
00152
00153
00154 XRCCTRL(*this, "IDC_GAME_BOSS_DRAYGON",
00155 wxCheckBox)->SetValue(sram->getBoss(BOSS_DRAYGON));
00156 XRCCTRL(*this, "IDC_GAME_STATUE_DRAYGON",
00157 wxCheckBox)->SetValue(sram->getStatue(STATUE_DRAYGON));
00158
00159
00160 XRCCTRL(*this, "IDC_GAME_BOSS_RIDLEY",
00161 wxCheckBox)->SetValue(sram->getBoss(BOSS_RIDLEY));
00162 XRCCTRL(*this, "IDC_GAME_STATUE_RIDLEY",
00163 wxCheckBox)->SetValue(sram->getStatue(STATUE_RIDLEY));
00164 }
00165
00166 void Frame::loadColorDoorsTab() {
00167 loadRedDoors();
00168 loadGreenDoors();
00169 loadYellowDoors();
00170 }
00171
00172 void Frame::loadControllerConfig() {
00173
00174 wxASSERT(sram);
00175
00176 XRCCTRL(*this, "IDC_MISC_DASH",
00177 wxChoice)->SetSelection(sram->getButton(ACTION_DASH));
00178 XRCCTRL(*this, "IDC_MISC_JUMP",
00179 wxChoice)->SetSelection(sram->getButton(ACTION_JUMP));
00180 XRCCTRL(*this, "IDC_MISC_ITEMCANCEL",
00181 wxChoice)->SetSelection(sram->getButton(ACTION_ITEMCANCEL));
00182 XRCCTRL(*this, "IDC_MISC_SHOT",
00183 wxChoice)->SetSelection(sram->getButton(ACTION_SHOT));
00184 XRCCTRL(*this, "IDC_MISC_ANGLEUP",
00185 wxChoice)->SetSelection(sram->getButton(ACTION_ANGLEUP));
00186 XRCCTRL(*this, "IDC_MISC_ANGLEDOWN",
00187 wxChoice)->SetSelection(sram->getButton(ACTION_ANGLEDOWN));
00188 XRCCTRL(*this, "IDC_MISC_ITEMSELECT",
00189 wxChoice)->SetSelection(sram->getButton(ACTION_ITEMSELECT));
00190 }
00191
00192 void Frame::loadEnergy() {
00193
00194 wxASSERT(sram);
00195
00196 ignoreTextEvents = true;
00197
00198 int energy = sram->getEnergy();
00199
00200
00201 XRCCTRL(*this, "IDT_GAME_ENERGY",
00202 wxTextCtrl)->SetValue(wxString::Format(wxT("%d"), energy));
00203
00204
00205 energy = sram->getReserveEnergy();
00206
00207 XRCCTRL(*this, "IDT_GAME_RESERVE",
00208 wxTextCtrl)->SetValue(wxString::Format(wxT("%d"), energy));
00209
00210 ignoreTextEvents = false;
00211 }
00212
00213 void Frame::loadEnergyTanks() {
00214
00215 wxASSERT(sram);
00216
00217 XRCCTRL(*this, "IDC_ITEMS_ET_C1",
00218 wxCheckBox)->SetValue(sram->hasEnergyTank(SO_CETANKS));
00219 XRCCTRL(*this, "IDC_ITEMS_ET_C2",
00220 wxCheckBox)->SetValue(sram->hasEnergyTank(SO_CETANKS + 1));
00221 XRCCTRL(*this, "IDC_ITEMS_ET_BS1",
00222 wxCheckBox)->SetValue(sram->hasEnergyTank(SO_BSETANKS));
00223 XRCCTRL(*this, "IDC_ITEMS_ET_BS2",
00224 wxCheckBox)->SetValue(sram->hasEnergyTank(SO_BSETANKS + 1));
00225 XRCCTRL(*this, "IDC_ITEMS_ET_BS3",
00226 wxCheckBox)->SetValue(sram->hasEnergyTank(SO_BSETANKS + 2));
00227 XRCCTRL(*this, "IDC_ITEMS_ET_BS4",
00228 wxCheckBox)->SetValue(sram->hasEnergyTank(SO_BSETANKS + 3));
00229 XRCCTRL(*this, "IDC_ITEMS_ET_BS5",
00230 wxCheckBox)->SetValue(sram->hasEnergyTank(SO_BSETANKS + 4));
00231 XRCCTRL(*this, "IDC_ITEMS_ET_NF1",
00232 wxCheckBox)->SetValue(sram->hasEnergyTank(SO_NFETANKS));
00233 XRCCTRL(*this, "IDC_ITEMS_ET_NF2",
00234 wxCheckBox)->SetValue(sram->hasEnergyTank(SO_NFETANKS + 1));
00235 XRCCTRL(*this, "IDC_ITEMS_ET_NF3",
00236 wxCheckBox)->SetValue(sram->hasEnergyTank(SO_NFETANKS + 2));
00237 XRCCTRL(*this, "IDC_ITEMS_ET_NF4",
00238 wxCheckBox)->SetValue(sram->hasEnergyTank(SO_NFETANKS + 3));
00239 XRCCTRL(*this, "IDC_ITEMS_ET_WS",
00240 wxCheckBox)->SetValue(sram->hasEnergyTank(SO_WSETANKS));
00241 XRCCTRL(*this, "IDC_ITEMS_ET_M1",
00242 wxCheckBox)->SetValue(sram->hasEnergyTank(SO_METANKS));
00243 XRCCTRL(*this, "IDC_ITEMS_ET_M2",
00244 wxCheckBox)->SetValue(sram->hasEnergyTank(SO_METANKS + 1));
00245 }
00246
00247 void Frame::loadEyeDoors() {
00248
00249 wxASSERT(sram);
00250
00251 XRCCTRL(*this, "IDC_EYEDOOR_KRAID",
00252 wxCheckBox)->SetValue(sram->getDoor(ED_KRAID));
00253 XRCCTRL(*this, "IDC_EYEDOOR_RIDLEY",
00254 wxCheckBox)->SetValue(sram->getDoor(ED_RIDLEY));
00255 XRCCTRL(*this, "IDC_EYEDOOR_PHANTOON",
00256 wxCheckBox)->SetValue(sram->getDoor(ED_PHANTOON));
00257 XRCCTRL(*this, "IDC_EYEDOOR_DRAYGON",
00258 wxCheckBox)->SetValue(sram->getDoor(ED_DRAYGON));
00259 XRCCTRL(*this, "IDC_EYEDOOR_T",
00260 wxCheckBox)->SetValue(sram->getDoor(ED_T));
00261 }
00262
00263 void Frame::loadGameConfig() {
00264
00265 wxASSERT(sram);
00266
00267 XRCCTRL(*this, "IDRB_MISC_LANGUAGE",
00268 wxRadioBox)->SetSelection(sram->getMiscBit(MB_LANGUAGE));
00269 XRCCTRL(*this, "IDRB_MISC_MOONWALK",
00270 wxRadioBox)->SetSelection(sram->getMiscBit(MB_MOONWALK));
00271 XRCCTRL(*this, "IDRB_MISC_ICONCANCEL",
00272 wxRadioBox)->SetSelection(sram->getMiscBit(MB_ICONCANCEL));
00273 }
00274
00275 void Frame::loadGameStatus() {
00276
00277 wxASSERT(sram);
00278
00279 XRCCTRL(*this, "IDC_MISC_MTUBEBROKEN",
00280 wxCheckBox)->SetValue(sram->getMiscBit(MB_MTUBEBROKEN));
00281 XRCCTRL(*this, "IDC_MISC_RESCUEDANIMALS",
00282 wxCheckBox)->SetValue(sram->getMiscBit(MB_RESCUEDANIMALS));
00283 }
00284
00285 void Frame::loadGameTab() {
00286 loadEnergy();
00287 loadInventory();
00288
00289 loadBosses();
00290 loadMiniBosses();
00291 loadMetroidRooms();
00292 loadZebetites();
00293
00294 loadSavePoint();
00295 loadMaps();
00296 }
00297
00298 void Frame::loadGameTime() {
00299
00300 wxASSERT(sram);
00301
00302 ignoreTextEvents = true;
00303
00304 int hours = sram->getGameHours();
00305 int minutes = sram->getGameMinutes();
00306
00307 XRCCTRL(*this, "IDT_MISC_GAMETIME",
00308 wxTextCtrl)->SetValue(wxString::Format(wxT("%d:%02d"), hours, minutes));
00309
00310 ignoreTextEvents = false;
00311 }
00312
00313 void Frame::loadGreenDoors() {
00314
00315 wxASSERT(sram);
00316
00317
00318 XRCCTRL(*this, "IDC_GREENDOOR_C1",
00319 wxCheckBox)->SetValue(sram->getDoor(GD_C1));
00320 XRCCTRL(*this, "IDC_GREENDOOR_C_WS",
00321 wxCheckBox)->SetValue(sram->getDoor(GD_C_WS));
00322
00323
00324 XRCCTRL(*this, "IDC_GREENDOOR_BS1",
00325 wxCheckBox)->SetValue(sram->getDoor(GD_BS1));
00326 XRCCTRL(*this, "IDC_GREENDOOR_BS2",
00327 wxCheckBox)->SetValue(sram->getDoor(GD_BS2));
00328 XRCCTRL(*this, "IDC_GREENDOOR_BS3",
00329 wxCheckBox)->SetValue(sram->getDoor(GD_BS3));
00330 XRCCTRL(*this, "IDC_GREENDOOR_BS4",
00331 wxCheckBox)->SetValue(sram->getDoor(GD_BS4));
00332 XRCCTRL(*this, "IDC_GREENDOOR_BS5",
00333 wxCheckBox)->SetValue(sram->getDoor(GD_BS5));
00334 XRCCTRL(*this, "IDC_GREENDOOR_BS6",
00335 wxCheckBox)->SetValue(sram->getDoor(GD_BS6));
00336 XRCCTRL(*this, "IDC_GREENDOOR_BS7",
00337 wxCheckBox)->SetValue(sram->getDoor(GD_BS7));
00338 XRCCTRL(*this, "IDC_GREENDOOR_BS8",
00339 wxCheckBox)->SetValue(sram->getDoor(GD_BS8));
00340 XRCCTRL(*this, "IDC_GREENDOOR_BS_SPAZER",
00341 wxCheckBox)->SetValue(sram->getDoor(GD_BS_SPAZER));
00342 XRCCTRL(*this, "IDC_GREENDOOR_BS_SPORESPAWNEXIT",
00343 wxCheckBox)->SetValue(sram->getDoor(GD_BS_SPORESPAWNEXIT));
00344
00345
00346 XRCCTRL(*this, "IDC_GREENDOOR_NF1",
00347 wxCheckBox)->SetValue(sram->getDoor(GD_NF1));
00348 XRCCTRL(*this, "IDC_GREENDOOR_NF2",
00349 wxCheckBox)->SetValue(sram->getDoor(GD_NF2));
00350 XRCCTRL(*this, "IDC_GREENDOOR_NF3",
00351 wxCheckBox)->SetValue(sram->getDoor(GD_NF3));
00352 XRCCTRL(*this, "IDC_GREENDOOR_NF4",
00353 wxCheckBox)->SetValue(sram->getDoor(GD_NF4));
00354 XRCCTRL(*this, "IDC_GREENDOOR_NF_ICEBEAM",
00355 wxCheckBox)->SetValue(sram->getDoor(GD_NF_ICEBEAM));
00356 XRCCTRL(*this, "IDC_GREENDOOR_NF_SPEEDBOOSTER",
00357 wxCheckBox)->SetValue(sram->getDoor(GD_NF_SPEEDBOOSTER));
00358
00359
00360 XRCCTRL(*this, "IDC_GREENDOOR_WS",
00361 wxCheckBox)->SetValue(sram->getDoor(GD_WS));
00362
00363
00364 XRCCTRL(*this, "IDC_GREENDOOR_M1",
00365 wxCheckBox)->SetValue(sram->getDoor(GD_M1));
00366 XRCCTRL(*this, "IDC_GREENDOOR_M2",
00367 wxCheckBox)->SetValue(sram->getDoor(GD_M2));
00368 XRCCTRL(*this, "IDC_GREENDOOR_M3",
00369 wxCheckBox)->SetValue(sram->getDoor(GD_M3));
00370 XRCCTRL(*this, "IDC_GREENDOOR_M_DRAYGON",
00371 wxCheckBox)->SetValue(sram->getDoor(GD_M_DRAYGON));
00372 }
00373
00374 void Frame::loadInventory() {
00375
00376 wxASSERT(sram);
00377
00378 ignoreTextEvents = true;
00379
00380 int missiles = sram->getMissiles();
00381
00382
00383 XRCCTRL(*this, "IDT_GAME_MISSILES",
00384 wxTextCtrl)->SetValue(wxString::Format(wxT("%d"), missiles));
00385 XRCCTRL(*this, "IDSB_GAME_MISSILES", wxSpinButton)->SetValue(missiles);
00386
00387
00388 missiles = sram->getSuperMissiles();
00389
00390 XRCCTRL(*this, "IDT_GAME_SMISSILES",
00391 wxTextCtrl)->SetValue(wxString::Format(wxT("%d"), missiles));
00392 XRCCTRL(*this, "IDSB_GAME_SMISSILES", wxSpinButton)->SetValue(missiles);
00393
00394
00395 int bombs = sram->getPowerBombs();
00396
00397 XRCCTRL(*this, "IDT_GAME_PBOMBS",
00398 wxTextCtrl)->SetValue(wxString::Format(wxT("%d"), bombs));
00399 XRCCTRL(*this, "IDSB_GAME_PBOMBS", wxSpinButton)->SetValue(bombs);
00400
00401 ignoreTextEvents = false;
00402 }
00403
00404 void Frame::loadItems() {
00405
00406 wxASSERT(sram);
00407
00408 XRCCTRL(*this, "IDC_ITEMS_MORPHINGBALL",
00409 wxCheckBox)->SetValue(sram->hasItem(ITEM_MORPHINGBALL));
00410 XRCCTRL(*this, "IDC_ITEMS_MORPHINGBALL_EQUIPPED",
00411 wxCheckBox)->SetValue(sram->isItemEquipped(ITEM_MORPHINGBALL));
00412
00413 XRCCTRL(*this, "IDC_ITEMS_BOMBS",
00414 wxCheckBox)->SetValue(sram->hasItem(ITEM_BOMBS));
00415 XRCCTRL(*this, "IDC_ITEMS_BOMBS_EQUIPPED",
00416 wxCheckBox)->SetValue(sram->isItemEquipped(ITEM_BOMBS));
00417
00418 XRCCTRL(*this, "IDC_ITEMS_SPRINGBALL",
00419 wxCheckBox)->SetValue(sram->hasItem(ITEM_SPRINGBALL));
00420 XRCCTRL(*this, "IDC_ITEMS_SPRINGBALL_EQUIPPED",
00421 wxCheckBox)->SetValue(sram->isItemEquipped(ITEM_SPRINGBALL));
00422
00423 XRCCTRL(*this, "IDC_ITEMS_SCREWATTACK",
00424 wxCheckBox)->SetValue(sram->hasItem(ITEM_SCREWATTACK));
00425 XRCCTRL(*this, "IDC_ITEMS_SCREWATTACK_EQUIPPED",
00426 wxCheckBox)->SetValue(sram->isItemEquipped(ITEM_SCREWATTACK));
00427
00428 XRCCTRL(*this, "IDC_ITEMS_VARIASUIT",
00429 wxCheckBox)->SetValue(sram->hasItem(ITEM_VARIASUIT));
00430 XRCCTRL(*this, "IDC_ITEMS_VARIASUIT_EQUIPPED",
00431 wxCheckBox)->SetValue(sram->isItemEquipped(ITEM_VARIASUIT));
00432
00433 XRCCTRL(*this, "IDC_ITEMS_GRAVITYSUIT",
00434 wxCheckBox)->SetValue(sram->hasItem(ITEM_GRAVITYSUIT));
00435 XRCCTRL(*this, "IDC_ITEMS_GRAVITYSUIT_EQUIPPED",
00436 wxCheckBox)->SetValue(sram->isItemEquipped(ITEM_GRAVITYSUIT));
00437
00438 XRCCTRL(*this, "IDC_ITEMS_HJBOOTS",
00439 wxCheckBox)->SetValue(sram->hasItem(ITEM_HJBOOTS));
00440 XRCCTRL(*this, "IDC_ITEMS_HJBOOTS_EQUIPPED",
00441 wxCheckBox)->SetValue(sram->isItemEquipped(ITEM_HJBOOTS));
00442
00443 XRCCTRL(*this, "IDC_ITEMS_SPACEJUMP",
00444 wxCheckBox)->SetValue(sram->hasItem(ITEM_SPACEJUMP));
00445 XRCCTRL(*this, "IDC_ITEMS_SPACEJUMP_EQUIPPED",
00446 wxCheckBox)->SetValue(sram->isItemEquipped(ITEM_SPACEJUMP));
00447
00448 XRCCTRL(*this, "IDC_ITEMS_SPEEDBOOSTER",
00449 wxCheckBox)->SetValue(sram->hasItem(ITEM_SPEEDBOOSTER));
00450 XRCCTRL(*this, "IDC_ITEMS_SPEEDBOOSTER_EQUIPPED",
00451 wxCheckBox)->SetValue(sram->isItemEquipped(ITEM_SPEEDBOOSTER));
00452
00453 XRCCTRL(*this, "IDC_ITEMS_CHARGEBEAM",
00454 wxCheckBox)->SetValue(sram->hasItem(ITEM_CHARGEBEAM));
00455 XRCCTRL(*this, "IDC_ITEMS_CHARGEBEAM_EQUIPPED",
00456 wxCheckBox)->SetValue(sram->isItemEquipped(ITEM_CHARGEBEAM));
00457
00458 XRCCTRL(*this, "IDC_ITEMS_ICEBEAM",
00459 wxCheckBox)->SetValue(sram->hasItem(ITEM_ICEBEAM));
00460 XRCCTRL(*this, "IDC_ITEMS_ICEBEAM_EQUIPPED",
00461 wxCheckBox)->SetValue(sram->isItemEquipped(ITEM_ICEBEAM));
00462
00463 XRCCTRL(*this, "IDC_ITEMS_WAVEBEAM",
00464 wxCheckBox)->SetValue(sram->hasItem(ITEM_WAVEBEAM));
00465 XRCCTRL(*this, "IDC_ITEMS_WAVEBEAM_EQUIPPED",
00466 wxCheckBox)->SetValue(sram->isItemEquipped(ITEM_WAVEBEAM));
00467
00468 XRCCTRL(*this, "IDC_ITEMS_SPAZER",
00469 wxCheckBox)->SetValue(sram->hasItem(ITEM_SPAZER));
00470 XRCCTRL(*this, "IDC_ITEMS_SPAZER_EQUIPPED",
00471 wxCheckBox)->SetValue(sram->isItemEquipped(ITEM_SPAZER));
00472
00473 XRCCTRL(*this, "IDC_ITEMS_PLASMA",
00474 wxCheckBox)->SetValue(sram->hasItem(ITEM_PLASMA));
00475 XRCCTRL(*this, "IDC_ITEMS_PLASMA_EQUIPPED",
00476 wxCheckBox)->SetValue(sram->isItemEquipped(ITEM_PLASMA));
00477
00478 XRCCTRL(*this, "IDC_ITEMS_GRAPPLINGBEAM",
00479 wxCheckBox)->SetValue(sram->hasItem(ITEM_GRAPPLINGBEAM));
00480
00481 XRCCTRL(*this, "IDC_ITEMS_XRAYSCOPE",
00482 wxCheckBox)->SetValue(sram->hasItem(ITEM_XRAYSCOPE));
00483 }
00484
00485 void Frame::loadItemsTab() {
00486 loadItems();
00487
00488 loadMissilePacks();
00489 loadSuperMissilePacks();
00490 loadPowerBombPacks();
00491
00492 loadEnergyTanks();
00493 loadReserveTanks();
00494 }
00495
00496 void Frame::loadMaps() {
00497
00498 wxASSERT(sram);
00499
00500 XRCCTRL(*this, "IDC_GAME_MAP_C",
00501 wxCheckBox)->SetValue(sram->hasMap(AREA_C));
00502 XRCCTRL(*this, "IDC_GAME_MAP_BS",
00503 wxCheckBox)->SetValue(sram->hasMap(AREA_BS));
00504 XRCCTRL(*this, "IDC_GAME_MAP_NF",
00505 wxCheckBox)->SetValue(sram->hasMap(AREA_NF));
00506 XRCCTRL(*this, "IDC_GAME_MAP_WS",
00507 wxCheckBox)->SetValue(sram->hasMap(AREA_WS));
00508 XRCCTRL(*this, "IDC_GAME_MAP_M",
00509 wxCheckBox)->SetValue(sram->hasMap(AREA_M));
00510 XRCCTRL(*this, "IDC_GAME_MAP_T",
00511 wxCheckBox)->SetValue(sram->hasMap(AREA_T));
00512 }
00513
00514 void Frame::loadMetalDoors() {
00515
00516 wxASSERT(sram);
00517
00518
00519 XRCCTRL(*this, "IDC_METALDOOR_C_BOMBSEXIT",
00520 wxCheckBox)->SetValue(sram->getDoor(MD_C_BOMBSEXIT));
00521
00522
00523 XRCCTRL(*this, "IDC_METALDOOR_BS1",
00524 wxCheckBox)->SetValue(sram->getDoor(MD_BS1));
00525 XRCCTRL(*this, "IDC_METALDOOR_BS2",
00526 wxCheckBox)->SetValue(sram->getDoor(MD_BS2));
00527 XRCCTRL(*this, "IDC_METALDOOR_BS3",
00528 wxCheckBox)->SetValue(sram->getDoor(MD_BS3));
00529 XRCCTRL(*this, "IDC_METALDOOR_BS4",
00530 wxCheckBox)->SetValue(sram->getDoor(MD_BS4));
00531 XRCCTRL(*this, "IDC_METALDOOR_BS5",
00532 wxCheckBox)->SetValue(sram->getDoor(MD_BS5));
00533 XRCCTRL(*this, "IDC_METALDOOR_BS6",
00534 wxCheckBox)->SetValue(sram->getDoor(MD_BS6));
00535 XRCCTRL(*this, "IDC_METALDOOR_BS7",
00536 wxCheckBox)->SetValue(sram->getDoor(MD_BS7));
00537 XRCCTRL(*this, "IDC_METALDOOR_BS8",
00538 wxCheckBox)->SetValue(sram->getDoor(MD_BS8));
00539 XRCCTRL(*this, "IDC_METALDOOR_BS9",
00540 wxCheckBox)->SetValue(sram->getDoor(MD_BS9));
00541 XRCCTRL(*this, "IDC_METALDOOR_BS_MAPEXIT",
00542 wxCheckBox)->SetValue(sram->getDoor(MD_BS_MAPEXIT));
00543 XRCCTRL(*this, "IDC_METALDOOR_BS_OLDTLEFT",
00544 wxCheckBox)->SetValue(sram->getDoor(MD_BS_OLDTLEFT));
00545 XRCCTRL(*this, "IDC_METALDOOR_BS_OLDTRIGHT",
00546 wxCheckBox)->SetValue(sram->getDoor(MD_BS_OLDTRIGHT));
00547 XRCCTRL(*this, "IDC_METALDOOR_BS_MINIKRAIDLEFT",
00548 wxCheckBox)->SetValue(sram->getDoor(MD_BS_MINIKRAIDLEFT));
00549 XRCCTRL(*this, "IDC_METALDOOR_BS_MINIKRAIDRIGHT",
00550 wxCheckBox)->SetValue(sram->getDoor(MD_BS_MINIKRAIDRIGHT));
00551 XRCCTRL(*this, "IDC_METALDOOR_BS_VARIASUIT",
00552 wxCheckBox)->SetValue(sram->getDoor(MD_BS_VARIASUIT));
00553 XRCCTRL(*this, "IDC_METALDOOR_BS_KRAIDEXIT",
00554 wxCheckBox)->SetValue(sram->getDoor(MD_BS_KRAIDEXIT));
00555
00556
00557 XRCCTRL(*this, "IDC_METALDOOR_NF_HJBOOTSEXIT",
00558 wxCheckBox)->SetValue(sram->getDoor(MD_NF_HJBOOTSEXIT));
00559 XRCCTRL(*this, "IDC_METALDOOR_NF_CROCOMIREEXIT",
00560 wxCheckBox)->SetValue(sram->getDoor(MD_NF_CROCOMIREEXIT));
00561 XRCCTRL(*this, "IDC_METALDOOR_NF_SCREWATTACK",
00562 wxCheckBox)->SetValue(sram->getDoor(MD_NF_SCREWATTACK));
00563 XRCCTRL(*this, "IDC_METALDOOR_NF_GOLDSPACEPIRATES",
00564 wxCheckBox)->SetValue(sram->getDoor(MD_NF_GOLDSPACEPIRATES));
00565 XRCCTRL(*this, "IDC_METALDOOR_NF_RIDLEYLEFT",
00566 wxCheckBox)->SetValue(sram->getDoor(MD_NF_RIDLEYLEFT));
00567 XRCCTRL(*this, "IDC_METALDOOR_NF_RIDLEYEXIT",
00568 wxCheckBox)->SetValue(sram->getDoor(MD_NF_RIDLEYEXIT));
00569
00570
00571 XRCCTRL(*this, "IDC_METALDOOR_WS1",
00572 wxCheckBox)->SetValue(sram->getDoor(MD_WS1));
00573 XRCCTRL(*this, "IDC_METALDOOR_WS2",
00574 wxCheckBox)->SetValue(sram->getDoor(MD_WS2));
00575 XRCCTRL(*this, "IDC_METALDOOR_WS3",
00576 wxCheckBox)->SetValue(sram->getDoor(MD_WS3));
00577 XRCCTRL(*this, "IDC_METALDOOR_WS4",
00578 wxCheckBox)->SetValue(sram->getDoor(MD_WS4));
00579 XRCCTRL(*this, "IDC_METALDOOR_WS_PHANTOONEXIT",
00580 wxCheckBox)->SetValue(sram->getDoor(MD_WS_PHANTOONEXIT));
00581
00582
00583 XRCCTRL(*this, "IDC_METALDOOR_M1",
00584 wxCheckBox)->SetValue(sram->getDoor(MD_M1));
00585 XRCCTRL(*this, "IDC_METALDOOR_M2",
00586 wxCheckBox)->SetValue(sram->getDoor(MD_M2));
00587 XRCCTRL(*this, "IDC_METALDOOR_M_BOTWOONEXIT",
00588 wxCheckBox)->SetValue(sram->getDoor(MD_M_BOTWOONEXIT));
00589 XRCCTRL(*this, "IDC_METALDOOR_M_SPACEJUMP",
00590 wxCheckBox)->SetValue(sram->getDoor(MD_M_SPACEJUMP));
00591 XRCCTRL(*this, "IDC_METALDOOR_M_DRAYGONEXIT",
00592 wxCheckBox)->SetValue(sram->getDoor(MD_M_DRAYGONEXIT));
00593 XRCCTRL(*this, "IDC_METALDOOR_M_PLASMA",
00594 wxCheckBox)->SetValue(sram->getDoor(MD_M_PLASMA));
00595 XRCCTRL(*this, "IDC_METALDOOR_M_PLASMAEXIT",
00596 wxCheckBox)->SetValue(sram->getDoor(MD_M_PLASMAEXIT));
00597
00598
00599 XRCCTRL(*this, "IDC_METALDOOR_T1",
00600 wxCheckBox)->SetValue(sram->getDoor(MD_T1));
00601 XRCCTRL(*this, "IDC_METALDOOR_T2",
00602 wxCheckBox)->SetValue(sram->getDoor(MD_T2));
00603 XRCCTRL(*this, "IDC_METALDOOR_T3",
00604 wxCheckBox)->SetValue(sram->getDoor(MD_T3));
00605 XRCCTRL(*this, "IDC_METALDOOR_T4",
00606 wxCheckBox)->SetValue(sram->getDoor(MD_T4));
00607 XRCCTRL(*this, "IDC_METALDOOR_T5",
00608 wxCheckBox)->SetValue(sram->getDoor(MD_T5));
00609 }
00610
00611 void Frame::loadMetroidRooms() {
00612
00613 wxASSERT(sram);
00614
00615 XRCCTRL(*this, "IDC_GAME_METROIDROOM1",
00616 wxCheckBox)->SetValue(sram->getMetroidRoom(MR1));
00617 XRCCTRL(*this, "IDC_GAME_METROIDROOM2",
00618 wxCheckBox)->SetValue(sram->getMetroidRoom(MR2));
00619 XRCCTRL(*this, "IDC_GAME_METROIDROOM3",
00620 wxCheckBox)->SetValue(sram->getMetroidRoom(MR3));
00621 XRCCTRL(*this, "IDC_GAME_METROIDROOM4",
00622 wxCheckBox)->SetValue(sram->getMetroidRoom(MR4));
00623 }
00624
00625 void Frame::loadMiniBosses() {
00626
00627 wxASSERT(sram);
00628
00629
00630 XRCCTRL(*this, "IDC_GAME_MINIBOSS_SILVERTORIZO",
00631 wxCheckBox)->SetValue(sram->getBoss(BOSS_SILVERTORIZO));
00632
00633
00634 XRCCTRL(*this, "IDC_GAME_MINIBOSS_SPORESPAWN",
00635 wxCheckBox)->SetValue(sram->getBoss(BOSS_SPORESPAWN));
00636
00637
00638 XRCCTRL(*this, "IDC_GAME_MINIBOSS_BOTWOON",
00639 wxCheckBox)->SetValue(sram->getBoss(BOSS_BOTWOON));
00640
00641
00642 XRCCTRL(*this, "IDC_GAME_MINIBOSS_CROCOMIRE",
00643 wxCheckBox)->SetValue(sram->getBoss(BOSS_CROCOMIRE));
00644
00645
00646 XRCCTRL(*this, "IDC_GAME_MINIBOSS_GOLDENTORIZO",
00647 wxCheckBox)->SetValue(sram->getBoss(BOSS_GOLDENTORIZO));
00648 }
00649
00650 void Frame::loadMiscTab() {
00651 loadGameTime();
00652 loadGameStatus();
00653 loadControllerConfig();
00654 loadGameConfig();
00655 }
00656
00657 void Frame::loadMissilePacks() {
00658
00659 wxASSERT(sram);
00660
00661
00662 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_C1",
00663 wxCheckBox)->SetValue(sram->hasMissilePack(SO_CMISSILEPACKS));
00664 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_C2",
00665 wxCheckBox)->SetValue(sram->hasMissilePack(SO_CMISSILEPACKS + 1));
00666 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_C3",
00667 wxCheckBox)->SetValue(sram->hasMissilePack(SO_CMISSILEPACKS + 2));
00668 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_C4",
00669 wxCheckBox)->SetValue(sram->hasMissilePack(SO_CMISSILEPACKS + 3));
00670 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_C5",
00671 wxCheckBox)->SetValue(sram->hasMissilePack(SO_CMISSILEPACKS + 4));
00672 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_C6",
00673 wxCheckBox)->SetValue(sram->hasMissilePack(SO_CMISSILEPACKS + 5));
00674 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_C7",
00675 wxCheckBox)->SetValue(sram->hasMissilePack(SO_CMISSILEPACKS + 6));
00676 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_C8",
00677 wxCheckBox)->SetValue(sram->hasMissilePack(SO_CMISSILEPACKS + 7));
00678
00679
00680 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_BS1",
00681 wxCheckBox)->SetValue(sram->hasMissilePack(SO_BSMISSILEPACKS ));
00682 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_BS2",
00683 wxCheckBox)->SetValue(sram->hasMissilePack(SO_BSMISSILEPACKS + 1));
00684 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_BS3",
00685 wxCheckBox)->SetValue(sram->hasMissilePack(SO_BSMISSILEPACKS + 2));
00686 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_BS4",
00687 wxCheckBox)->SetValue(sram->hasMissilePack(SO_BSMISSILEPACKS + 3));
00688 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_BS5",
00689 wxCheckBox)->SetValue(sram->hasMissilePack(SO_BSMISSILEPACKS + 4));
00690 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_BS6",
00691 wxCheckBox)->SetValue(sram->hasMissilePack(SO_BSMISSILEPACKS + 5));
00692 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_BS7",
00693 wxCheckBox)->SetValue(sram->hasMissilePack(SO_BSMISSILEPACKS + 6));
00694 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_BS8",
00695 wxCheckBox)->SetValue(sram->hasMissilePack(SO_BSMISSILEPACKS + 7));
00696 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_BS9",
00697 wxCheckBox)->SetValue(sram->hasMissilePack(SO_BSMISSILEPACKS + 8));
00698 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_BS10",
00699 wxCheckBox)->SetValue(sram->hasMissilePack(SO_BSMISSILEPACKS + 9));
00700 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_BS11",
00701 wxCheckBox)->SetValue(sram->hasMissilePack(SO_BSMISSILEPACKS + 10));
00702 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_BS12",
00703 wxCheckBox)->SetValue(sram->hasMissilePack(SO_BSMISSILEPACKS + 11));
00704
00705
00706 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF1",
00707 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS));
00708 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF2",
00709 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS + 1));
00710 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF3",
00711 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS + 2));
00712 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF4",
00713 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS + 3));
00714 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF5",
00715 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS + 4));
00716 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF6",
00717 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS + 5));
00718 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF7",
00719 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS + 6));
00720 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF8",
00721 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS + 7));
00722 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF9",
00723 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS + 8));
00724 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF10",
00725 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS + 9));
00726 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF11",
00727 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS + 10));
00728 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF12",
00729 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS + 11));
00730 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF13",
00731 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS + 12));
00732 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF14",
00733 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS + 13));
00734 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_NF15",
00735 wxCheckBox)->SetValue(sram->hasMissilePack(SO_NFMISSILEPACKS + 14));
00736
00737
00738 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_WS1",
00739 wxCheckBox)->SetValue(sram->hasMissilePack(SO_WSMISSILEPACKS));
00740 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_WS2",
00741 wxCheckBox)->SetValue(sram->hasMissilePack(SO_WSMISSILEPACKS + 1));
00742 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_WS3",
00743 wxCheckBox)->SetValue(sram->hasMissilePack(SO_WSMISSILEPACKS + 2));
00744
00745
00746 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_M1",
00747 wxCheckBox)->SetValue(sram->hasMissilePack(SO_MMISSILEPACKS));
00748 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_M2",
00749 wxCheckBox)->SetValue(sram->hasMissilePack(SO_MMISSILEPACKS + 1));
00750 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_M3",
00751 wxCheckBox)->SetValue(sram->hasMissilePack(SO_MMISSILEPACKS + 2));
00752 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_M4",
00753 wxCheckBox)->SetValue(sram->hasMissilePack(SO_MMISSILEPACKS + 3));
00754 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_M5",
00755 wxCheckBox)->SetValue(sram->hasMissilePack(SO_MMISSILEPACKS + 4));
00756 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_M6",
00757 wxCheckBox)->SetValue(sram->hasMissilePack(SO_MMISSILEPACKS + 5));
00758 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_M7",
00759 wxCheckBox)->SetValue(sram->hasMissilePack(SO_MMISSILEPACKS + 6));
00760 XRCCTRL(*this, "IDC_PICKUPS_MISSILE_M8",
00761 wxCheckBox)->SetValue(sram->hasMissilePack(SO_MMISSILEPACKS + 7));
00762 }
00763
00764 void Frame::loadPowerBombPacks() {
00765
00766 wxASSERT(sram);
00767
00768
00769 XRCCTRL(*this, "IDC_PICKUPS_PBOMB_C",
00770 wxCheckBox)->SetValue(sram->hasPowerBombPack(SO_CPBOMBPACKS));
00771
00772
00773 XRCCTRL(*this, "IDC_PICKUPS_PBOMB_BS1",
00774 wxCheckBox)->SetValue(sram->hasPowerBombPack(SO_BSPBOMBPACKS));
00775 XRCCTRL(*this, "IDC_PICKUPS_PBOMB_BS2",
00776 wxCheckBox)->SetValue(sram->hasPowerBombPack(SO_BSPBOMBPACKS + 1));
00777 XRCCTRL(*this, "IDC_PICKUPS_PBOMB_BS3",
00778 wxCheckBox)->SetValue(sram->hasPowerBombPack(SO_BSPBOMBPACKS + 2));
00779 XRCCTRL(*this, "IDC_PICKUPS_PBOMB_BS4",
00780 wxCheckBox)->SetValue(sram->hasPowerBombPack(SO_BSPBOMBPACKS + 3));
00781 XRCCTRL(*this, "IDC_PICKUPS_PBOMB_BS5",
00782 wxCheckBox)->SetValue(sram->hasPowerBombPack(SO_BSPBOMBPACKS + 4));
00783
00784
00785 XRCCTRL(*this, "IDC_PICKUPS_PBOMB_NF1",
00786 wxCheckBox)->SetValue(sram->hasPowerBombPack(SO_NFPBOMBPACKS));
00787 XRCCTRL(*this, "IDC_PICKUPS_PBOMB_NF2",
00788 wxCheckBox)->SetValue(sram->hasPowerBombPack(SO_NFPBOMBPACKS + 1));
00789 XRCCTRL(*this, "IDC_PICKUPS_PBOMB_NF3",
00790 wxCheckBox)->SetValue(sram->hasPowerBombPack(SO_NFPBOMBPACKS + 2));
00791
00792
00793 XRCCTRL(*this, "IDC_PICKUPS_PBOMB_M",
00794 wxCheckBox)->SetValue(sram->hasPowerBombPack(SO_MPBOMBPACKS));
00795 }
00796
00797 void Frame::loadRedDoors() {
00798
00799 wxASSERT(sram);
00800
00801 XRCCTRL(*this, "IDC_REDDOOR_C_MAP",
00802 wxCheckBox)->SetValue(sram->getDoor(RD_C_MAP));
00803 XRCCTRL(*this, "IDC_REDDOOR_C_BOMBS",
00804 wxCheckBox)->SetValue(sram->getDoor(RD_C_BOMBS));
00805 XRCCTRL(*this, "IDC_REDDOOR_C_TELEVATOR",
00806 wxCheckBox)->SetValue(sram->getDoor(RD_C_TELEVATOR));
00807
00808 XRCCTRL(*this, "IDC_REDDOOR_BS1",
00809 wxCheckBox)->SetValue(sram->getDoor(RD_BS1));
00810 XRCCTRL(*this, "IDC_REDDOOR_BS2",
00811 wxCheckBox)->SetValue(sram->getDoor(RD_BS2));
00812 XRCCTRL(*this, "IDC_REDDOOR_BS3",
00813 wxCheckBox)->SetValue(sram->getDoor(RD_BS3));
00814 XRCCTRL(*this, "IDC_REDDOOR_BS4",
00815 wxCheckBox)->SetValue(sram->getDoor(RD_BS4));
00816 XRCCTRL(*this, "IDC_REDDOOR_BS5",
00817 wxCheckBox)->SetValue(sram->getDoor(RD_BS5));
00818 XRCCTRL(*this, "IDC_REDDOOR_BS6",
00819 wxCheckBox)->SetValue(sram->getDoor(RD_BS6));
00820 XRCCTRL(*this, "IDC_REDDOOR_BS_MAP",
00821 wxCheckBox)->SetValue(sram->getDoor(RD_BS_MAP));
00822 XRCCTRL(*this, "IDC_REDDOOR_BS_RTANK",
00823 wxCheckBox)->SetValue(sram->getDoor(RD_BS_RTANK));
00824 XRCCTRL(*this, "IDC_REDDOOR_BS_SPORESPAWN",
00825 wxCheckBox)->SetValue(sram->getDoor(RD_BS_SPORESPAWN));
00826 XRCCTRL(*this, "IDC_REDDOOR_BS_XRAYSCOPE",
00827 wxCheckBox)->SetValue(sram->getDoor(RD_BS_XRAYSCOPE));
00828
00829 XRCCTRL(*this, "IDC_REDDOOR_NF1",
00830 wxCheckBox)->SetValue(sram->getDoor(RD_NF1));
00831 XRCCTRL(*this, "IDC_REDDOOR_NF2",
00832 wxCheckBox)->SetValue(sram->getDoor(RD_NF2));
00833 XRCCTRL(*this, "IDC_REDDOOR_NF3",
00834 wxCheckBox)->SetValue(sram->getDoor(RD_NF3));
00835 XRCCTRL(*this, "IDC_REDDOOR_NF4",
00836 wxCheckBox)->SetValue(sram->getDoor(RD_NF4));
00837 XRCCTRL(*this, "IDC_REDDOOR_NF_HJBOOTS",
00838 wxCheckBox)->SetValue(sram->getDoor(RD_NF_HJBOOTS));
00839 XRCCTRL(*this, "IDC_REDDOOR_NF_SPEEDBOOSTER",
00840 wxCheckBox)->SetValue(sram->getDoor(RD_NF_SPEEDBOOSTER));
00841 XRCCTRL(*this, "IDC_REDDOOR_NF_WAVEBEAM",
00842 wxCheckBox)->SetValue(sram->getDoor(RD_NF_WAVEBEAM));
00843
00844 XRCCTRL(*this, "IDC_REDDOOR_WS_RTANK",
00845 wxCheckBox)->SetValue(sram->getDoor(RD_WS_RTANK));
00846
00847 XRCCTRL(*this, "IDC_REDDOOR_M1",
00848 wxCheckBox)->SetValue(sram->getDoor(RD_M1));
00849 XRCCTRL(*this, "IDC_REDDOOR_M2",
00850 wxCheckBox)->SetValue(sram->getDoor(RD_M2));
00851 XRCCTRL(*this, "IDC_REDDOOR_M3",
00852 wxCheckBox)->SetValue(sram->getDoor(RD_M3));
00853 XRCCTRL(*this, "IDC_REDDOOR_M4",
00854 wxCheckBox)->SetValue(sram->getDoor(RD_M4));
00855 XRCCTRL(*this, "IDC_REDDOOR_M5",
00856 wxCheckBox)->SetValue(sram->getDoor(RD_M5));
00857 XRCCTRL(*this, "IDC_REDDOOR_M6",
00858 wxCheckBox)->SetValue(sram->getDoor(RD_M6));
00859 XRCCTRL(*this, "IDC_REDDOOR_M_MAP",
00860 wxCheckBox)->SetValue(sram->getDoor(RD_M_MAP));
00861
00862 XRCCTRL(*this, "IDC_REDDOOR_T1",
00863 wxCheckBox)->SetValue(sram->getDoor(RD_T1));
00864 XRCCTRL(*this, "IDC_REDDOOR_T_MB",
00865 wxCheckBox)->SetValue(sram->getDoor(RD_T_MB));
00866 }
00867
00868 void Frame::loadReserveTanks() {
00869
00870 wxASSERT(sram);
00871
00872 XRCCTRL(*this, "IDC_ITEMS_RTANK_BS",
00873 wxCheckBox)->SetValue(sram->hasReserveTank(SO_BSRTANK));
00874 XRCCTRL(*this, "IDC_ITEMS_RTANK_NF",
00875 wxCheckBox)->SetValue(sram->hasReserveTank(SO_NFRTANK));
00876 XRCCTRL(*this, "IDC_ITEMS_RTANK_WS",
00877 wxCheckBox)->SetValue(sram->hasReserveTank(SO_WSRTANK));
00878 XRCCTRL(*this, "IDC_ITEMS_RTANK_M",
00879 wxCheckBox)->SetValue(sram->hasReserveTank(SO_MRTANK));
00880 }
00881
00882 void Frame::loadSavePoint() {
00883
00884 wxASSERT(sram);
00885
00886 std::pair<enum Area, int> save = sram->getSavePoint();
00887 XRCCTRL(*this, "IDRB_GAME_SAVEAREA", wxRadioBox)->SetSelection(save.first);
00888
00889 switch (save.second) {
00890 case 0:
00891 XRCCTRL(*this, "IDR_GAME_SP1", wxRadioButton)->SetValue(true);
00892 break;
00893
00894 case 1:
00895 XRCCTRL(*this, "IDR_GAME_SP2", wxRadioButton)->SetValue(true);
00896 break;
00897
00898 case 2:
00899 XRCCTRL(*this, "IDR_GAME_SP3", wxRadioButton)->SetValue(true);
00900 break;
00901
00902 case 3:
00903 XRCCTRL(*this, "IDR_GAME_SP4", wxRadioButton)->SetValue(true);
00904 break;
00905
00906 case 4:
00907 XRCCTRL(*this, "IDR_GAME_SP5", wxRadioButton)->SetValue(true);
00908 break;
00909
00910 case 5:
00911 XRCCTRL(*this, "IDR_GAME_SP6", wxRadioButton)->SetValue(true);
00912 break;
00913
00914 default:
00915
00916 throw InvalidSRAMDataException("Invalid save point");
00917 }
00918 }
00919
00920 void Frame::loadSpecialDoorsTab() {
00921 loadEyeDoors();
00922 loadMetalDoors();
00923 }
00924
00925 void Frame::loadSuperMissilePacks() {
00926
00927 wxASSERT(sram);
00928
00929
00930 XRCCTRL(*this, "IDC_PICKUPS_SMISSILE_C", wxCheckBox)->
00931 SetValue(sram->hasSuperMissilePack(SO_CSMISSILEPACKS));
00932
00933
00934 XRCCTRL(*this, "IDC_PICKUPS_SMISSILE_BS1", wxCheckBox)->
00935 SetValue(sram->hasSuperMissilePack(SO_BSSMISSILEPACKS));
00936 XRCCTRL(*this, "IDC_PICKUPS_SMISSILE_BS2", wxCheckBox)->
00937 SetValue(sram->hasSuperMissilePack(SO_BSSMISSILEPACKS + 1));
00938 XRCCTRL(*this, "IDC_PICKUPS_SMISSILE_BS3", wxCheckBox)->
00939 SetValue(sram->hasSuperMissilePack(SO_BSSMISSILEPACKS + 2));
00940
00941
00942 XRCCTRL(*this, "IDC_PICKUPS_SMISSILE_NF", wxCheckBox)->
00943 SetValue(sram->hasSuperMissilePack(SO_NFSMISSILEPACKS));
00944
00945
00946 XRCCTRL(*this, "IDC_PICKUPS_SMISSILE_WS1", wxCheckBox)->
00947 SetValue(sram->hasSuperMissilePack(SO_WSSMISSILEPACKS));
00948 XRCCTRL(*this, "IDC_PICKUPS_SMISSILE_WS2", wxCheckBox)->
00949 SetValue(sram->hasSuperMissilePack(SO_WSSMISSILEPACKS + 1));
00950
00951
00952 XRCCTRL(*this, "IDC_PICKUPS_SMISSILE_M1", wxCheckBox)->
00953 SetValue(sram->hasSuperMissilePack(SO_MSMISSILEPACKS));
00954 XRCCTRL(*this, "IDC_PICKUPS_SMISSILE_M2", wxCheckBox)->
00955 SetValue(sram->hasSuperMissilePack(SO_MSMISSILEPACKS + 1));
00956 XRCCTRL(*this, "IDC_PICKUPS_SMISSILE_M3", wxCheckBox)->
00957 SetValue(sram->hasSuperMissilePack(SO_MSMISSILEPACKS + 2));
00958 }
00959
00960 void Frame::loadYellowDoors() {
00961
00962 wxASSERT(sram);
00963
00964
00965 XRCCTRL(*this, "IDC_YELLOWDOOR_C1",
00966 wxCheckBox)->SetValue(sram->getDoor(YD_C1));
00967 XRCCTRL(*this, "IDC_YELLOWDOOR_C2",
00968 wxCheckBox)->SetValue(sram->getDoor(YD_C2));
00969 XRCCTRL(*this, "IDC_YELLOWDOOR_C3",
00970 wxCheckBox)->SetValue(sram->getDoor(YD_C3));
00971 XRCCTRL(*this, "IDC_YELLOWDOOR_C4",
00972 wxCheckBox)->SetValue(sram->getDoor(YD_C4));
00973 XRCCTRL(*this, "IDC_YELLOWDOOR_C5",
00974 wxCheckBox)->SetValue(sram->getDoor(YD_C5));
00975 XRCCTRL(*this, "IDC_YELLOWDOOR_C6",
00976 wxCheckBox)->SetValue(sram->getDoor(YD_C6));
00977
00978
00979 XRCCTRL(*this, "IDC_YELLOWDOOR_BS1",
00980 wxCheckBox)->SetValue(sram->getDoor(YD_BS1));
00981 XRCCTRL(*this, "IDC_YELLOWDOOR_BS2",
00982 wxCheckBox)->SetValue(sram->getDoor(YD_BS2));
00983 XRCCTRL(*this, "IDC_YELLOWDOOR_BS3",
00984 wxCheckBox)->SetValue(sram->getDoor(YD_BS3));
00985 XRCCTRL(*this, "IDC_YELLOWDOOR_BS_XRAYSCOPE",
00986 wxCheckBox)->SetValue(sram->getDoor(YD_BS_XRAYSCOPE));
00987
00988
00989 XRCCTRL(*this, "IDC_YELLOWDOOR_NF1",
00990 wxCheckBox)->SetValue(sram->getDoor(YD_NF1));
00991 XRCCTRL(*this, "IDC_YELLOWDOOR_NF2",
00992 wxCheckBox)->SetValue(sram->getDoor(YD_NF2));
00993 XRCCTRL(*this, "IDC_YELLOWDOOR_NF_MAP",
00994 wxCheckBox)->SetValue(sram->getDoor(YD_NF_MAP));
00995 }
00996
00997 void Frame::loadZebetites() {
00998
00999 wxASSERT(sram);
01000
01001 unsigned int zebetites = sram->getZebetites();
01002
01003 if (zebetites < 5) {
01004 XRCCTRL(*this, "IDRB_GAME_ZEBETITES",
01005 wxRadioBox)->SetSelection(zebetites);
01006 } else {
01007
01008 throw InvalidSRAMDataException("Invalid destroyed zebetite count");
01009 }
01010 }
01011
01012 void Frame::open(const wxString &filename) {
01013 try {
01014 SRAMFile *temp = new SRAMFile(filename);
01015
01016 if (sram) {
01017 close();
01018 }
01019
01020 sram = temp;
01021
01022 for (unsigned int i = 0; i < SRAMFile::GAMES; ++i) {
01023 if (sram->isValidGame(i)) {
01024 load(i);
01025 break;
01026 }
01027 }
01028 } catch (InvalidSRAMFileException &e) {
01029 wxString error(e.what(), wxConvLibc);
01030
01031 wxMessageBox(error,
01032 wxT("Error: Invalid Super Metroid SRAM file"),
01033 wxOK | wxICON_ERROR);
01034 }
01035 }
01036
01037 bool Frame::save(const wxString &filename) {
01038 try {
01039 sram->save(filename);
01040 } catch (FileIOException &e) {
01041 wxMessageBox(wxT("Unable to write SRAM file"),
01042 wxT("Error: Unable to save SRAM"),
01043 wxOK | wxICON_ERROR);
01044
01045 return false;
01046 }
01047
01048 return true;
01049 }
01050
01051 void Frame::onBossChange(wxCommandEvent &event) {
01052
01053 wxASSERT(sram);
01054
01055 enum Statue statue;
01056
01057 if (event.GetId() == XRCID("IDC_GAME_BOSS_KRAID")) {
01058 sram->setBoss(BOSS_KRAID, event.IsChecked());
01059 statue = STATUE_KRAID;
01060 } else if (event.GetId() == XRCID("IDC_GAME_BOSS_PHANTOON")) {
01061 sram->setBoss(BOSS_PHANTOON, event.IsChecked());
01062 statue = STATUE_PHANTOON;
01063 } else if (event.GetId() == XRCID("IDC_GAME_BOSS_DRAYGON")) {
01064 sram->setBoss(BOSS_DRAYGON, event.IsChecked());
01065 statue = STATUE_DRAYGON;
01066 } else {
01067
01068 wxASSERT(event.GetId() == XRCID("IDC_GAME_BOSS_RIDLEY"));
01069
01070 sram->setBoss(BOSS_RIDLEY, event.IsChecked());
01071 statue = STATUE_RIDLEY;
01072 }
01073
01074 if (!event.IsChecked()) {
01075 sram->setStatue(statue, false);
01076 sram->setMiscBit(MB_TELEVATOR, false);
01077 }
01078 }
01079
01080 void Frame::onControllerChange(wxCommandEvent &event) {
01081
01082 wxASSERT(sram);
01083
01084 enum Button button = static_cast<enum Button>(event.GetSelection());
01085
01086 if (event.GetId() == XRCID("IDC_MISC_DASH")) {
01087 sram->setButton(ACTION_DASH, button);
01088 } else if (event.GetId() == XRCID("IDC_MISC_JUMP")) {
01089 sram->setButton(ACTION_JUMP, button);
01090 } else if (event.GetId() == XRCID("IDC_MISC_ITEMCANCEL")) {
01091 sram->setButton(ACTION_ITEMCANCEL, button);
01092 } else if (event.GetId() == XRCID("IDC_MISC_SHOT")) {
01093 sram->setButton(ACTION_SHOT, button);
01094 } else if (event.GetId() == XRCID("IDC_MISC_ANGLEUP")) {
01095 button = static_cast<enum Button>(event.GetSelection() + BUTTON_L);
01096 sram->setButton(ACTION_ANGLEUP, button);
01097 } else if (event.GetId() == XRCID("IDC_MISC_ANGLEDOWN")) {
01098 button = static_cast<enum Button>(event.GetSelection() + BUTTON_L);
01099 sram->setButton(ACTION_ANGLEDOWN, button);
01100 } else {
01101
01102 wxASSERT(event.GetId() == XRCID("IDC_MISC_ITEMSELECT"));
01103
01104 sram->setButton(ACTION_ITEMSELECT, button);
01105 }
01106 }
01107
01108 void Frame::onEnergyChange(wxCommandEvent &event) {
01109 if (!ignoreTextEvents) {
01110
01111 wxASSERT(sram);
01112
01113 unsigned long value;
01114
01115 if (event.GetString().ToULong(&value)) {
01116 wxUint16 energy = static_cast<wxUint16>(value);
01117
01118 if (event.GetId() == XRCID("IDT_GAME_ENERGY")) {
01119 unsigned int max = sram->getMaxEnergy();
01120
01121 if (value > max) {
01122 value = max;
01123
01124 GetStatusBar()->SetStatusText(wxString::Format
01125 (wxT("Warning: Samus' max energy is %d"), max));
01126 timer.Start(CLEAR_DELAY, true);
01127 }
01128
01129 sram->setEnergy(energy);
01130 } else {
01131
01132 wxASSERT(event.GetId() == XRCID("IDT_GAME_RESERVE"));
01133
01134 unsigned int max = sram->getMaxReserveEnergy();
01135
01136 if (value > max) {
01137 value = max;
01138
01139 GetStatusBar()->SetStatusText(wxString::Format
01140 (wxT("Warning: Samus' max reserve energy is %d"), max));
01141 timer.Start(CLEAR_DELAY, true);
01142 }
01143
01144 sram->setReserveEnergy(energy);
01145 }
01146 }
01147 }
01148 }
01149
01150 void Frame::onEnergyTankChange(wxCommandEvent &event) {
01151
01152 wxASSERT(sram);
01153
01154 if (event.GetId() == XRCID("IDC_ITEMS_ET_C1")) {
01155 sram->setEnergyTank(SO_CETANKS, event.IsChecked());
01156 } else if (event.GetId() == XRCID("IDC_ITEMS_ET_C2")) {
01157 sram->setEnergyTank(SO_CETANKS + 1, event.IsChecked());
01158 } else if (event.GetId() == XRCID("IDC_ITEMS_ET_BS1")) {
01159 sram->setEnergyTank(SO_BSETANKS, event.IsChecked());
01160 } else if (event.GetId() == XRCID("IDC_ITEMS_ET_BS2")) {
01161 sram->setEnergyTank(SO_BSETANKS + 1, event.IsChecked());
01162 } else if (event.GetId() == XRCID("IDC_ITEMS_ET_BS3")) {
01163 sram->setEnergyTank(SO_BSETANKS + 2, event.IsChecked());
01164 } else if (event.GetId() == XRCID("IDC_ITEMS_ET_BS4")) {
01165 sram->setEnergyTank(SO_BSETANKS + 3, event.IsChecked());
01166 } else if (event.GetId() == XRCID("IDC_ITEMS_ET_BS5")) {
01167 sram->setEnergyTank(SO_BSETANKS + 4, event.IsChecked());
01168 } else if (event.GetId() == XRCID("IDC_ITEMS_ET_NF1")) {
01169 sram->setEnergyTank(SO_NFETANKS, event.IsChecked());
01170 } else if (event.GetId() == XRCID("IDC_ITEMS_ET_NF2")) {
01171 sram->setEnergyTank(SO_NFETANKS + 1, event.IsChecked());
01172 } else if (event.GetId() == XRCID("IDC_ITEMS_ET_NF3")) {
01173 sram->setEnergyTank(SO_NFETANKS + 2, event.IsChecked());
01174 } else if (event.GetId() == XRCID("IDC_ITEMS_ET_NF4")) {
01175 sram->setEnergyTank(SO_NFETANKS + 3, event.IsChecked());
01176 } else if (event.GetId() == XRCID("IDC_ITEMS_ET_WS")) {
01177 sram->setEnergyTank(SO_WSETANKS, event.IsChecked());
01178 } else if (event.GetId() == XRCID("IDC_ITEMS_ET_M1")) {
01179 sram->setEnergyTank(SO_METANKS, event.IsChecked());
01180 } else {
01181
01182 wxASSERT(event.GetId() == XRCID("IDC_ITEMS_ET_M2"));
01183
01184 sram->setEnergyTank(SO_METANKS + 1, event.IsChecked());
01185 }
01186
01187 wxTextCtrl *ctrl = XRCCTRL(*this, "IDT_GAME_ENERGY", wxTextCtrl);
01188 unsigned long value;
01189
01190 if (ctrl->GetValue().ToULong(&value)) {
01191 wxUint16 max = sram->getMaxEnergy();
01192
01193 if (value > max) {
01194 ignoreTextEvents = true;
01195 ctrl->SetValue(wxString::Format(wxT("%d"), max));
01196 ignoreTextEvents = false;
01197 }
01198 }
01199 }
01200
01201 void Frame::onEyeDoorChange(wxCommandEvent &event) {
01202
01203 wxASSERT(sram);
01204
01205 if (event.GetId() == XRCID("IDC_EYEDOOR_KRAID")) {
01206 sram->setDoor(ED_KRAID, event.IsChecked());
01207 } else if (event.GetId() == XRCID("IDC_EYEDOOR_PHANTOON")) {
01208 sram->setDoor(ED_PHANTOON, event.IsChecked());
01209 } else if (event.GetId() == XRCID("IDC_EYEDOOR_DRAYGON")) {
01210 sram->setDoor(ED_DRAYGON, event.IsChecked());
01211 } else if (event.GetId() == XRCID("IDC_EYEDOOR_RIDLEY")) {
01212 sram->setDoor(ED_RIDLEY, event.IsChecked());
01213 } else {
01214
01215 wxASSERT(event.GetId() == XRCID("IDC_EYEDOOR_T"));
01216
01217 sram->setDoor(ED_T, event.IsChecked());
01218 }
01219 }
01220
01221 void Frame::onFileClose(wxCommandEvent &) {
01222
01223 wxASSERT(sram);
01224
01225 if (sram->isModified()) {
01226 int answer = wxMessageBox(wxT("Save SRAM before closing?"),
01227 wxT("Warning: Unsaved SRAM file"),
01228 wxYES_NO | wxCANCEL | wxICON_QUESTION);
01229
01230 if (answer == wxYES) {
01231 close(true);
01232
01233 return;
01234 } else if (answer == wxCANCEL) {
01235 return;
01236 }
01237 }
01238
01239 close();
01240 }
01241
01242 void Frame::onFileOpen(wxCommandEvent &) {
01243
01244 if (sram && sram->isModified()) {
01245 int answer = wxMessageBox(wxT("Save current SRAM?"),
01246 wxT("Warning: Unsaved SRAM file"),
01247 wxYES_NO | wxICON_QUESTION);
01248
01249 if (answer == wxYES) {
01250 if (!save()) {
01251 return;
01252 }
01253 }
01254 }
01255
01256 wxFileDialog dlg(this, wxT("Select a Super Metroid SRAM file"),
01257 wxEmptyString, wxEmptyString,
01258 wxT("SRAM Files (*.srm)|*.srm"), wxOPEN);
01259
01260 if (dlg.ShowModal() == wxID_OK) {
01261 open(dlg.GetPath());
01262 }
01263 }
01264
01265 void Frame::onFileSave(wxCommandEvent &) {
01266
01267 wxASSERT(sram && sram->isModified());
01268
01269 save();
01270 }
01271
01272 void Frame::onFileSaveAs(wxCommandEvent &) {
01273
01274 wxASSERT(sram && sram->isModified());
01275
01276 wxFileDialog dlg(this, wxT("Select a Super Metroid SRAM file"),
01277 wxEmptyString, wxEmptyString,
01278 wxT("SRAM Files (*.srm)|*.srm"), wxSAVE);
01279
01280 if (dlg.ShowModal() == wxID_OK) {
01281 sram->save(dlg.GetPath());
01282 }
01283 }
01284
01285 void Frame::onFileSaveUpdate(wxUpdateUIEvent &) {
01286 bool enable = (sram && sram->isModified());
01287
01288 wxMenuItem *item = GetMenuBar()->FindItem(wxID_SAVE);
01289 item->Enable(enable);
01290
01291 item = GetMenuBar()->FindItem(wxID_SAVEAS);
01292 item->Enable(enable);
01293 }
01294
01295 void Frame::onGame(wxCommandEvent &event) {
01296 if (event.GetId() == XRCID("IDM_GAME_GAMEA")) {
01297 load(0);
01298 } else if (event.GetId() == XRCID("IDM_GAME_GAMEB")) {
01299 load(1);
01300 } else {
01301
01302 wxASSERT(event.GetId() == XRCID("IDM_GAME_GAMEC"));
01303
01304 load(2);
01305 }
01306 }
01307
01308 void Frame::onGameClear(wxCommandEvent &event) {
01309
01310 wxASSERT(sram);
01311
01312 int game;
01313 wxChar ch;
01314
01315 if (event.GetId() == XRCID("IDM_GAME_CLEARA")) {
01316 game = 0;
01317 ch = wxT('A');
01318 } else if (event.GetId() == XRCID("IDM_GAME_CLEARB")) {
01319 game = 1;
01320 ch = wxT('B');
01321 } else {
01322
01323 wxASSERT(event.GetId() == XRCID("IDM_GAME_CLEARC"));
01324
01325 game = 2;
01326 ch = wxT('C');
01327 }
01328
01329 int answer = wxMessageBox(wxString::Format
01330 (wxT("Are you sure you want to erase Game %c?"), ch),
01331 wxT("Really erase game?"), wxYES_NO | wxICON_QUESTION);
01332
01333 if (answer == wxYES) {
01334
01335 SRAMFile *temp = new SRAMFile(*sram);
01336
01337
01338 sram->clear(game);
01339
01340 if (this->game == game) {
01341
01342 int game = -1;
01343
01344 for (unsigned int i = 0; i < SRAMFile::GAMES; ++i) {
01345 if (sram->isValidGame(i)) {
01346 game = i;
01347 break;
01348 }
01349 }
01350
01351 if (game == -1) {
01352
01353 if (!close(true)) {
01354
01355 delete sram;
01356
01357 sram = temp;
01358 }
01359 } else {
01360
01361 delete temp;
01362
01363 load(game);
01364 }
01365 }
01366
01367 enableMenus();
01368 }
01369 }
01370
01371 void Frame::onGameClearUpdate(wxUpdateUIEvent &event) {
01372 if (event.GetId() == XRCID("IDM_GAME_CLEAR")) {
01373 event.Enable(sram);
01374 } else if (event.GetId() == XRCID("IDM_GAME_CLEARA")) {
01375 event.Enable(sram && sram->isValidGame(0));
01376 } else if (event.GetId() == XRCID("IDM_GAME_CLEARB")) {
01377 event.Enable(sram && sram->isValidGame(1));
01378 } else {
01379
01380 wxASSERT(event.GetId() == XRCID("IDM_GAME_CLEARC"));
01381
01382 event.Enable(sram && sram->isValidGame(2));
01383 }
01384 }
01385
01386 void Frame::onGameCopy(wxCommandEvent &event) {
01387
01388 wxASSERT(sram);
01389
01390 int src, dest;
01391 wxChar sch, dch;
01392
01393 if (event.GetId() == XRCID("IDM_GAME_COPYAB")) {
01394 src = 0;
01395 dest = 1;
01396 sch = wxT('A');
01397 dch = wxT('B');
01398 } else if (event.GetId() == XRCID("IDM_GAME_COPYAC")) {
01399 src = 0;
01400 dest = 2;
01401 sch = wxT('A');
01402 dch = wxT('C');
01403 } else if (event.GetId() == XRCID("IDM_GAME_COPYBA")) {
01404 src = 1;
01405 dest = 0;
01406 sch = wxT('B');
01407 dch = wxT('A');
01408 } else if (event.GetId() == XRCID("IDM_GAME_COPYBC")) {
01409 src = 1;
01410 dest = 2;
01411 sch = wxT('B');
01412 dch = wxT('C');
01413 } else if (event.GetId() == XRCID("IDM_GAME_COPYCA")) {
01414 src = 2;
01415 dest = 0;
01416 sch = wxT('C');
01417 dch = wxT('A');
01418 } else {
01419
01420 wxASSERT(event.GetId() == XRCID("IDM_GAME_COPYCB"));
01421
01422 src = 2;
01423 dest = 1;
01424 sch = wxT('C');
01425 dch = wxT('B');
01426 }
01427
01428 int answer = wxMessageBox(wxString::Format
01429 (wxT("Are you sure you want to copy Game %c over Game %c?"), sch, dch),
01430 wxT("Really copy game?"), wxYES_NO | wxICON_QUESTION);
01431
01432 if (answer == wxYES) {
01433 sram->copy(src, dest);
01434 enableMenus();
01435 }
01436 }
01437
01438 void Frame::onGameCopyUpdate(wxUpdateUIEvent &event) {
01439 if (event.GetId() == XRCID("IDM_GAME_COPY")) {
01440 event.Enable(sram);
01441 } else if (event.GetId() == XRCID("IDM_GAME_COPYA")) {
01442 event.Enable(sram && sram->isValidGame(0));
01443 } else if (event.GetId() == XRCID("IDM_GAME_COPYB")) {
01444 event.Enable(sram && sram->isValidGame(1));
01445 } else {
01446
01447 wxASSERT(event.GetId() == XRCID("IDM_GAME_COPYC"));
01448
01449 event.Enable(sram && sram->isValidGame(2));
01450 }
01451 }
01452
01453 void Frame::onGameEnding(wxCommandEvent &event) {
01454
01455 wxASSERT(sram);
01456
01457 wxTextCtrl *ctrl = XRCCTRL(*this, "IDT_MISC_GAMETIME", wxTextCtrl);
01458
01459 if (event.GetId() == XRCID("IDM_GAME_ENDING1")) {
01460 ctrl->SetValue(wxT("0:00"));
01461 } else if (event.GetId() == XRCID("IDM_GAME_ENDING2")) {
01462 ctrl->SetValue(wxT("3:00"));
01463 } else {
01464
01465 wxASSERT(event.GetId() == XRCID("IDM_GAME_ENDING3"));
01466
01467 ctrl->SetValue(wxT("10:00"));
01468 }
01469 }
01470
01471 void Frame::onGameGiveBosses(wxCommandEvent &) {
01472
01473 wxASSERT(sram);
01474
01475 sram->setBoss(BOSS_KRAID);
01476 sram->setStatue(STATUE_KRAID);
01477
01478 sram->setBoss(BOSS_RIDLEY);
01479 sram->setStatue(STATUE_RIDLEY);
01480
01481 sram->setBoss(BOSS_PHANTOON);
01482 sram->setStatue(STATUE_PHANTOON);
01483
01484 sram->setBoss(BOSS_DRAYGON);
01485 sram->setStatue(STATUE_DRAYGON);
01486
01487 sram->setMiscBit(MB_TELEVATOR);
01488
01489 loadBosses();
01490 }
01491
01492 void Frame::onGameGiveEnergy(wxCommandEvent &) {
01493
01494 wxASSERT(sram);
01495
01496 sram->setEnergy();
01497 sram->setReserveEnergy();
01498 loadEnergy();
01499 }
01500
01501 void Frame::onGameGiveEnergyTanks(wxCommandEvent &) {
01502
01503 wxASSERT(sram);
01504
01505 for (int i = 0; i < ETANKS; ++i) {
01506 sram->setEnergyTank(i + SO_CETANKS);
01507 }
01508
01509 loadEnergyTanks();
01510 }
01511
01512 void Frame::onGameGiveEverything(wxCommandEvent &) {
01513
01514 wxASSERT(sram);
01515
01516 wxCommandEvent event1(wxEVT_COMMAND_MENU_SELECTED,
01517 XRCID("IDM_GAME_GIVE_BOSSES"));
01518 GetEventHandler()->ProcessEvent(event1);
01519
01520 wxCommandEvent event2(wxEVT_COMMAND_MENU_SELECTED,
01521 XRCID("IDM_GAME_GIVE_MINIBOSSES"));
01522 GetEventHandler()->ProcessEvent(event2);
01523
01524 wxCommandEvent event3(wxEVT_COMMAND_MENU_SELECTED,
01525 XRCID("IDM_GAME_GIVE_METROIDROOMS"));
01526 GetEventHandler()->ProcessEvent(event3);
01527
01528 wxCommandEvent event4(wxEVT_COMMAND_MENU_SELECTED,
01529 XRCID("IDM_GAME_GIVE_ZEBETITES"));
01530 GetEventHandler()->ProcessEvent(event4);
01531
01532 wxCommandEvent event5(wxEVT_COMMAND_MENU_SELECTED,
01533 XRCID("IDM_GAME_GIVE_MAPS"));
01534 GetEventHandler()->ProcessEvent(event5);
01535
01536 wxCommandEvent event6(wxEVT_COMMAND_MENU_SELECTED,
01537 XRCID("IDM_GAME_GIVE_ITEMS"));
01538 GetEventHandler()->ProcessEvent(event6);
01539
01540 wxCommandEvent event7(wxEVT_COMMAND_MENU_SELECTED,
01541 XRCID("IDM_GAME_GIVE_MISSILES"));
01542 GetEventHandler()->ProcessEvent(event7);
01543
01544 wxCommandEvent event8(wxEVT_COMMAND_MENU_SELECTED,
01545 XRCID("IDM_GAME_GIVE_SMISSILES"));
01546 GetEventHandler()->ProcessEvent(event8);
01547
01548 wxCommandEvent event9(wxEVT_COMMAND_MENU_SELECTED,
01549 XRCID("IDM_GAME_GIVE_PBOMBS"));
01550 GetEventHandler()->ProcessEvent(event9);
01551
01552 wxCommandEvent event10(wxEVT_COMMAND_MENU_SELECTED,
01553 XRCID("IDM_GAME_GIVE_ETANKS"));
01554 GetEventHandler()->ProcessEvent(event10);
01555
01556 wxCommandEvent event11(wxEVT_COMMAND_MENU_SELECTED,
01557 XRCID("IDM_GAME_GIVE_RTANKS"));
01558 GetEventHandler()->ProcessEvent(event11);
01559
01560 wxCommandEvent event12(wxEVT_COMMAND_MENU_SELECTED,
01561 XRCID("IDM_GAME_GIVE_REDDOORS"));
01562 GetEventHandler()->ProcessEvent(event12);
01563
01564 wxCommandEvent event13(wxEVT_COMMAND_MENU_SELECTED,
01565 XRCID("IDM_GAME_GIVE_GREENDOORS"));
01566 GetEventHandler()->ProcessEvent(event13);
01567
01568 wxCommandEvent event14(wxEVT_COMMAND_MENU_SELECTED,
01569 XRCID("IDM_GAME_GIVE_YELLOWDOORS"));
01570 GetEventHandler()->ProcessEvent(event14);
01571
01572 wxCommandEvent event15(wxEVT_COMMAND_MENU_SELECTED,
01573 XRCID("IDM_GAME_GIVE_EYEDOORS"));
01574 GetEventHandler()->ProcessEvent(event15);
01575
01576 wxCommandEvent event16(wxEVT_COMMAND_MENU_SELECTED,
01577 XRCID("IDM_GAME_GIVE_METALDOORS"));
01578 GetEventHandler()->ProcessEvent(event16);
01579
01580 wxCommandEvent event17(wxEVT_COMMAND_MENU_SELECTED,
01581 XRCID("IDM_GAME_GIVE_ENERGY"));
01582 GetEventHandler()->ProcessEvent(event17);
01583
01584 wxCommandEvent event18(wxEVT_COMMAND_MENU_SELECTED,
01585 XRCID("IDM_GAME_GIVE_INVENTORY"));
01586 GetEventHandler()->ProcessEvent(event18);
01587 }
01588
01589 void Frame::onGameGiveEyeDoors(wxCommandEvent &) {
01590
01591 wxASSERT(sram);
01592
01593 for (int i = 0; i < EYEDOORS; ++i) {
01594 sram->setDoor(i + ED_KRAID);
01595 }
01596
01597 loadEyeDoors();
01598 }
01599
01600 void Frame::onGameGiveGreenDoors(wxCommandEvent &) {
01601
01602 wxASSERT(sram);
01603
01604 for (int i = 0; i < GREENDOORS; ++i) {
01605 sram->setDoor(i + GD_C1);
01606 }
01607
01608 loadGreenDoors();
01609 }
01610
01611 void Frame::onGameGiveInventory(wxCommandEvent &) {
01612
01613 wxASSERT(sram);
01614
01615 sram->setMissiles();
01616 sram->setSuperMissiles();
01617 sram->setPowerBombs();
01618 loadInventory();
01619 }
01620
01621 void Frame::onGameGiveItems(wxCommandEvent &) {
01622
01623 wxASSERT(sram);
01624
01625 sram->setItem(ITEM_MORPHINGBALL);
01626 sram->setItemEquipped(ITEM_MORPHINGBALL);
01627
01628 sram->setItem(ITEM_BOMBS);
01629 sram->setItemEquipped(ITEM_BOMBS);
01630
01631 sram->setItem(ITEM_SPRINGBALL);
01632 sram->setItemEquipped(ITEM_SPRINGBALL);
01633
01634 sram->setItem(ITEM_SCREWATTACK);
01635 sram->setItemEquipped(ITEM_SCREWATTACK);
01636
01637 sram->setItem(ITEM_VARIASUIT);
01638 sram->setItemEquipped(ITEM_VARIASUIT);
01639
01640 sram->setItem(ITEM_GRAVITYSUIT);
01641 sram->setItemEquipped(ITEM_GRAVITYSUIT);
01642
01643 sram->setItem(ITEM_HJBOOTS);
01644 sram->setItemEquipped(ITEM_HJBOOTS);
01645
01646 sram->setItem(ITEM_SPACEJUMP);
01647 sram->setItemEquipped(ITEM_SPACEJUMP);
01648
01649 sram->setItem(ITEM_SPEEDBOOSTER);
01650 sram->setItemEquipped(ITEM_SPEEDBOOSTER);
01651
01652 sram->setItem(ITEM_CHARGEBEAM);
01653 sram->setItemEquipped(ITEM_CHARGEBEAM);
01654
01655 sram->setItem(ITEM_ICEBEAM);
01656 sram->setItemEquipped(ITEM_ICEBEAM);
01657
01658 sram->setItem(ITEM_WAVEBEAM);
01659 sram->setItemEquipped(ITEM_WAVEBEAM);
01660
01661 sram->setItem(ITEM_SPAZER);
01662 sram->setItemEquipped(ITEM_SPAZER, false);
01663
01664 sram->setItem(ITEM_PLASMA);
01665 sram->setItemEquipped(ITEM_PLASMA);
01666
01667 sram->setItem(ITEM_GRAPPLINGBEAM);
01668 sram->setItemEquipped(ITEM_GRAPPLINGBEAM);
01669
01670 sram->setItem(ITEM_XRAYSCOPE);
01671 sram->setItemEquipped(ITEM_XRAYSCOPE);
01672
01673 loadItems();
01674 }
01675
01676 void Frame::onGameGiveMaps(wxCommandEvent &) {
01677
01678 wxASSERT(sram);
01679
01680 sram->setMap(AREA_C);
01681 sram->setMap(AREA_BS);
01682 sram->setMap(AREA_NF);
01683 sram->setMap(AREA_WS);
01684 sram->setMap(AREA_M);
01685 sram->setMap(AREA_T);
01686
01687 loadMaps();
01688 }
01689
01690 void Frame::onGameGiveMetalDoors(wxCommandEvent &) {
01691
01692 wxASSERT(sram);
01693
01694 for (int i = 0; i < METALDOORS; ++i) {
01695 sram->setDoor(i + MD_C_BOMBSEXIT);
01696 }
01697
01698 loadMetalDoors();
01699 }
01700
01701 void Frame::onGameGiveMetroidRooms(wxCommandEvent &) {
01702
01703 wxASSERT(sram);
01704
01705 sram->setMetroidRoom(MR1);
01706 sram->setMetroidRoom(MR2);
01707 sram->setMetroidRoom(MR3);
01708 sram->setMetroidRoom(MR4);
01709
01710 loadMetroidRooms();
01711 }
01712
01713 void Frame::onGameGiveMiniBosses(wxCommandEvent &) {
01714
01715 wxASSERT(sram);
01716
01717 sram->setBoss(BOSS_SILVERTORIZO);
01718 sram->setBoss(BOSS_SPORESPAWN);
01719 sram->setBoss(BOSS_BOTWOON);
01720 sram->setBoss(BOSS_CROCOMIRE);
01721 sram->setBoss(BOSS_GOLDENTORIZO);
01722
01723 loadMiniBosses();
01724 }
01725
01726 void Frame::onGameGiveMissilePacks(wxCommandEvent &) {
01727
01728 wxASSERT(sram);
01729
01730 for (int i = 0; i < MISSILE_PACKS; ++i) {
01731 sram->setMissilePack(i + SO_CMISSILEPACKS);
01732 }
01733
01734 loadMissilePacks();
01735 }
01736
01737 void Frame::onGameGivePowerBombPacks(wxCommandEvent &) {
01738
01739 wxASSERT(sram);
01740
01741 for (int i = 0; i < PBOMB_PACKS; ++i) {
01742 sram->setPowerBombPack(i + SO_CPBOMBPACKS);
01743 }
01744
01745 loadPowerBombPacks();
01746 }
01747
01748 void Frame::onGameGiveRedDoors(wxCommandEvent &) {
01749
01750 wxASSERT(sram);
01751
01752 for (int i = 0; i < REDDOORS; ++i) {
01753 sram->setDoor(i + RD_C_MAP);
01754 }
01755
01756 loadRedDoors();
01757 }
01758
01759 void Frame::onGameGiveReserveTanks(wxCommandEvent &) {
01760
01761 wxASSERT(sram);
01762
01763 for (int i = 0; i < RTANKS; ++i) {
01764 sram->setReserveTank(i + SO_BSRTANK);
01765 }
01766
01767 loadReserveTanks();
01768 }
01769
01770 void Frame::onGameGiveSuperMissilePacks(wxCommandEvent &) {
01771
01772 wxASSERT(sram);
01773
01774 for (int i = 0; i < SMISSILE_PACKS; ++i) {
01775 sram->setSuperMissilePack(i + SO_CSMISSILEPACKS);
01776 }
01777
01778 loadSuperMissilePacks();
01779 }
01780
01781 void Frame::onGameGiveYellowDoors(wxCommandEvent &) {
01782
01783 wxASSERT(sram);
01784
01785 for (int i = 0; i < YELLOWDOORS; ++i) {
01786 sram->setDoor(i + YD_C1);
01787 }
01788
01789 loadYellowDoors();
01790 }
01791
01792 void Frame::onGameGiveZebetites(wxCommandEvent &) {
01793
01794 wxASSERT(sram);
01795
01796 sram->setZebetites();
01797 loadZebetites();
01798 }
01799
01800 void Frame::onGameTimeChange(wxCommandEvent &event) {
01801 if (!ignoreTextEvents) {
01802
01803 wxASSERT(sram);
01804
01805 wxRegEx regex(wxT("^([0-9]{1,2}):([0-9]{2,2})$"));
01806
01807
01808 wxASSERT(regex.IsValid());
01809
01810 wxString value = event.GetString();
01811
01812 if (regex.Matches(value)) {
01813 long hours, minutes;
01814
01815 regex.GetMatch(value, 1).ToLong(&hours);
01816 regex.GetMatch(value, 2).ToLong(&minutes);
01817
01818 if (minutes < 60) {
01819 sram->setGameHours(static_cast<unsigned char>(hours));
01820 sram->setGameMinutes(static_cast<unsigned char>(minutes));
01821
01822 GetStatusBar()->SetStatusText(wxEmptyString);
01823 } else {
01824 GetStatusBar()->SetStatusText
01825 (wxT("Warning: Game Minutes cannot exceed 60"));
01826 timer.Start(CLEAR_DELAY, true);
01827 }
01828 } else {
01829 GetStatusBar()->SetStatusText
01830 (wxT("Warning: Game time must be of the form HH:MM"));
01831 timer.Start(CLEAR_DELAY, true);
01832 }
01833 }
01834 }
01835
01836 void Frame::onGameUpdate(wxUpdateUIEvent &event) {
01837 if (sram) {
01838 int game;
01839
01840 if (event.GetId() == XRCID("IDM_GAME_GAMEA")) {
01841 game = 0;
01842 } else if (event.GetId() == XRCID("IDM_GAME_GAMEB")) {
01843 game = 1;
01844 } else {
01845
01846 wxASSERT(event.GetId() == XRCID("IDM_GAME_GAMEC"));
01847
01848 game = 2;
01849 }
01850
01851 if (game == sram->getGame()) {
01852 event.Check(true);
01853 }
01854
01855 event.Enable(sram->isValidGame(game));
01856 }
01857 }
01858
01859 void Frame::onGreenDoorChange(wxCommandEvent &event) {
01860
01861 wxASSERT(sram);
01862
01863 if (event.GetId() == XRCID("IDC_GREENDOOR_C1")) {
01864 sram->setDoor(GD_C1, event.IsChecked());
01865 } else if (event.GetId() == XRCID("IDC_GREENDOOR_C_WS")) {
01866 sram->setDoor(GD_C_WS, event.IsChecked());
01867 } else if (event.GetId() == XRCID("IDC_GREENDOOR_BS1")) {
01868 sram->setDoor(GD_BS1, event.IsChecked());
01869 } else if (event.GetId() == XRCID("IDC_GREENDOOR_BS2")) {
01870 sram->setDoor(GD_BS2, event.IsChecked());
01871 } else if (event.GetId() == XRCID("IDC_GREENDOOR_BS3")) {
01872 sram->setDoor(GD_BS3, event.IsChecked());
01873 } else if (event.GetId() == XRCID("IDC_GREENDOOR_BS4")) {
01874 sram->setDoor(GD_BS4, event.IsChecked());
01875 } else if (event.GetId() == XRCID("IDC_GREENDOOR_BS5")) {
01876 sram->setDoor(GD_BS5, event.IsChecked());
01877 } else if (event.GetId() == XRCID("IDC_GREENDOOR_BS6")) {
01878 sram->setDoor(GD_BS6, event.IsChecked());
01879 } else if (event.GetId() == XRCID("IDC_GREENDOOR_BS7")) {
01880 sram->setDoor(GD_BS7, event.IsChecked());
01881 } else if (event.GetId() == XRCID("IDC_GREENDOOR_BS8")) {
01882 sram->setDoor(GD_BS8, event.IsChecked());
01883 } else if (event.GetId() == XRCID("IDC_GREENDOOR_BS_SPAZER")) {
01884 sram->setDoor(GD_BS_SPAZER, event.IsChecked());
01885 } else if (event.GetId() == XRCID("IDC_GREENDOOR_BS_SPORESPAWNEXIT")) {
01886 sram->setDoor(GD_BS_SPORESPAWNEXIT, event.IsChecked());
01887 } else if (event.GetId() == XRCID("IDC_GREENDOOR_NF1")) {
01888 sram->setDoor(GD_NF1, event.IsChecked());
01889 } else if (event.GetId() == XRCID("IDC_GREENDOOR_NF2")) {
01890 sram->setDoor(GD_NF2, event.IsChecked());
01891 } else if (event.GetId() == XRCID("IDC_GREENDOOR_NF3")) {
01892 sram->setDoor(GD_NF3, event.IsChecked());
01893 } else if (event.GetId() == XRCID("IDC_GREENDOOR_NF4")) {
01894 sram->setDoor(GD_NF4, event.IsChecked());
01895 } else if (event.GetId() == XRCID("IDC_GREENDOOR_NF_ICEBEAM")) {
01896 sram->setDoor(GD_NF_ICEBEAM, event.IsChecked());
01897 } else if (event.GetId() == XRCID("IDC_GREENDOOR_NF_SPEEDBOOSTER")) {
01898 sram->setDoor(GD_NF_SPEEDBOOSTER, event.IsChecked());
01899 } else if (event.GetId() == XRCID("IDC_GREENDOOR_WS")) {
01900 sram->setDoor(GD_WS, event.IsChecked());
01901 } else if (event.GetId() == XRCID("IDC_GREENDOOR_M1")) {
01902 sram->setDoor(GD_M1, event.IsChecked());
01903 } else if (event.GetId() == XRCID("IDC_GREENDOOR_M2")) {
01904 sram->setDoor(GD_M2, event.IsChecked());
01905 } else if (event.GetId() == XRCID("IDC_GREENDOOR_M3")) {
01906 sram->setDoor(GD_M3, event.IsChecked());
01907 } else {
01908
01909 wxASSERT(event.GetId() == XRCID("IDC_GREENDOOR_M_DRAYGON"));
01910
01911 sram->setDoor(GD_M_DRAYGON, event.IsChecked());
01912 }
01913 }
01914
01915 void Frame::onHelpAbout(wxCommandEvent &) {
01916 wxString message = APP_NAME + wxT(' ') + APP_VERSION + wxT('\n') +
01917 APP_COPYRIGHT + wxT('\n') + APP_URL;
01918 wxString title = wxT("About ") + APP_NAME + wxT("...");
01919
01920 wxMessageBox(message, title, wxOK | wxICON_INFORMATION);
01921 }
01922
01923 void Frame::onItemChange(wxCommandEvent &event) {
01924
01925 wxASSERT(sram);
01926
01927 enum Item item;
01928
01929 if (event.GetId() == XRCID("IDC_ITEMS_MORPHINGBALL")) {
01930 item = ITEM_MORPHINGBALL;
01931 } else if (event.GetId() == XRCID("IDC_ITEMS_BOMBS")) {
01932 item = ITEM_BOMBS;
01933 } else if (event.GetId() == XRCID("IDC_ITEMS_SPRINGBALL")) {
01934 item = ITEM_SPRINGBALL;
01935 } else if (event.GetId() == XRCID("IDC_ITEMS_SCREWATTACK")) {
01936 item = ITEM_SCREWATTACK;
01937 } else if (event.GetId() == XRCID("IDC_ITEMS_VARIASUIT")) {
01938 item = ITEM_VARIASUIT;
01939 } else if (event.GetId() == XRCID("IDC_ITEMS_GRAVITYSUIT")) {
01940 item = ITEM_GRAVITYSUIT;
01941 } else if (event.GetId() == XRCID("IDC_ITEMS_HJBOOTS")) {
01942 item = ITEM_HJBOOTS;
01943 } else if (event.GetId() == XRCID("IDC_ITEMS_SPACEJUMP")) {
01944 item = ITEM_SPACEJUMP;
01945 } else if (event.GetId() == XRCID("IDC_ITEMS_SPEEDBOOSTER")) {
01946 item = ITEM_SPEEDBOOSTER;
01947 } else if (event.GetId() == XRCID("IDC_ITEMS_CHARGEBEAM")) {
01948 item = ITEM_CHARGEBEAM;
01949 } else if (event.GetId() == XRCID("IDC_ITEMS_ICEBEAM")) {
01950 item = ITEM_ICEBEAM;
01951 } else if (event.GetId() == XRCID("IDC_ITEMS_WAVEBEAM")) {
01952 item = ITEM_WAVEBEAM;
01953 } else if (event.GetId() == XRCID("IDC_ITEMS_SPAZER")) {
01954 item = ITEM_SPAZER;
01955 } else if (event.GetId() == XRCID("IDC_ITEMS_PLASMA")) {
01956 item = ITEM_PLASMA;
01957 } else if (event.GetId() == XRCID("IDC_ITEMS_XRAYSCOPE")) {
01958 item = ITEM_XRAYSCOPE;
01959 sram->setItemEquipped(item, event.IsChecked());
01960 } else {
01961
01962 wxASSERT(event.GetId() == XRCID("IDC_ITEMS_GRAPPLINGBEAM"));
01963
01964 item = ITEM_GRAPPLINGBEAM;
01965 sram->setItemEquipped(ITEM_GRAPPLINGBEAM, event.IsChecked());
01966 }
01967
01968 sram->setItem(item, event.IsChecked());
01969
01970 if (!event.IsChecked()) {
01971 sram->setItemEquipped(item, false);
01972 }
01973 }
01974
01975 void Frame::onItemEquippedChange(wxCommandEvent &event) {
01976
01977 wxASSERT(sram);
01978
01979 if (event.GetId() == XRCID("IDC_ITEMS_MORPHINGBALL_EQUIPPED")) {
01980 sram->setItemEquipped(ITEM_MORPHINGBALL, event.IsChecked());
01981 } else if (event.GetId() == XRCID("IDC_ITEMS_BOMBS_EQUIPPED")) {
01982 sram->setItemEquipped(ITEM_BOMBS, event.IsChecked());
01983 } else if (event.GetId() == XRCID("IDC_ITEMS_SPRINGBALL_EQUIPPED")) {
01984 sram->setItemEquipped(ITEM_SPRINGBALL, event.IsChecked());
01985 } else if (event.GetId() == XRCID("IDC_ITEMS_SCREWATTACK_EQUIPPED")) {
01986 sram->setItemEquipped(ITEM_SCREWATTACK, event.IsChecked());
01987 } else if (event.GetId() == XRCID("IDC_ITEMS_VARIASUIT_EQUIPPED")) {
01988 sram->setItemEquipped(ITEM_VARIASUIT, event.IsChecked());
01989 } else if (event.GetId() == XRCID("IDC_ITEMS_GRAVITYSUIT_EQUIPPED")) {
01990 sram->setItemEquipped(ITEM_GRAVITYSUIT, event.IsChecked());
01991 } else if (event.GetId() == XRCID("IDC_ITEMS_HJBOOTS_EQUIPPED")) {
01992 sram->setItemEquipped(ITEM_HJBOOTS, event.IsChecked());
01993 } else if (event.GetId() == XRCID("IDC_ITEMS_SPACEJUMP_EQUIPPED")) {
01994 sram->setItemEquipped(ITEM_SPACEJUMP, event.IsChecked());
01995 } else if (event.GetId() == XRCID("IDC_ITEMS_SPEEDBOOSTER_EQUIPPED")) {
01996 sram->setItemEquipped(ITEM_SPEEDBOOSTER, event.IsChecked());
01997 } else if (event.GetId() == XRCID("IDC_ITEMS_CHARGEBEAM_EQUIPPED")) {
01998 sram->setItemEquipped(ITEM_CHARGEBEAM, event.IsChecked());
01999 } else if (event.GetId() == XRCID("IDC_ITEMS_ICEBEAM_EQUIPPED")) {
02000 sram->setItemEquipped(ITEM_ICEBEAM, event.IsChecked());
02001 } else if (event.GetId() == XRCID("IDC_ITEMS_WAVEBEAM_EQUIPPED")) {
02002 sram->setItemEquipped(ITEM_WAVEBEAM, event.IsChecked());
02003 } else if (event.GetId() == XRCID("IDC_ITEMS_SPAZER_EQUIPPED")) {
02004 sram->setItemEquipped(ITEM_SPAZER, event.IsChecked());
02005
02006 if (event.IsChecked()) {
02007 sram->setItemEquipped(ITEM_PLASMA, false);
02008 }
02009 } else {
02010
02011 wxASSERT(event.GetId() == XRCID("IDC_ITEMS_PLASMA_EQUIPPED"));
02012
02013 sram->setItemEquipped(ITEM_PLASMA, event.IsChecked());
02014
02015 if (event.IsChecked()) {
02016 sram->setItemEquipped(ITEM_SPAZER, false);
02017 }
02018 }
02019 }
02020
02021 void Frame::onItemEquippedUpdate(wxUpdateUIEvent &event) {
02022 if (sram) {
02023 enum Item item;
02024
02025 if (event.GetId() == XRCID("IDC_ITEMS_MORPHINGBALL_EQUIPPED")) {
02026 item = ITEM_MORPHINGBALL;
02027 } else if (event.GetId() == XRCID("IDC_ITEMS_BOMBS_EQUIPPED")) {
02028 item = ITEM_BOMBS;
02029 } else if (event.GetId() == XRCID("IDC_ITEMS_SPRINGBALL_EQUIPPED")) {
02030 item = ITEM_SPRINGBALL;
02031 } else if (event.GetId() == XRCID("IDC_ITEMS_HJBOOTS_EQUIPPED")) {
02032 item = ITEM_HJBOOTS;
02033 } else if (event.GetId() == XRCID("IDC_ITEMS_VARIASUIT_EQUIPPED")) {
02034 item = ITEM_VARIASUIT;
02035 } else if (event.GetId() == XRCID("IDC_ITEMS_GRAVITYSUIT_EQUIPPED")) {
02036 item = ITEM_GRAVITYSUIT;
02037 } else if (event.GetId() == XRCID("IDC_ITEMS_SPEEDBOOSTER_EQUIPPED")) {
02038 item = ITEM_SPEEDBOOSTER;
02039 } else if (event.GetId() == XRCID("IDC_ITEMS_SPACEJUMP_EQUIPPED")) {
02040 item = ITEM_SPACEJUMP;
02041 } else if (event.GetId() == XRCID("IDC_ITEMS_SCREWATTACK_EQUIPPED")) {
02042 item = ITEM_SCREWATTACK;
02043 } else if (event.GetId() == XRCID("IDC_ITEMS_CHARGEBEAM_EQUIPPED")) {
02044 item = ITEM_CHARGEBEAM;
02045 } else if (event.GetId() == XRCID("IDC_ITEMS_ICEBEAM_EQUIPPED")) {
02046 item = ITEM_ICEBEAM;
02047 } else if (event.GetId() == XRCID("IDC_ITEMS_WAVEBEAM_EQUIPPED")) {
02048 item = ITEM_WAVEBEAM;
02049 } else if (event.GetId() == XRCID("IDC_ITEMS_SPAZER_EQUIPPED")) {
02050 item = ITEM_SPAZER;
02051
02052 if (sram->isItemEquipped(ITEM_PLASMA)) {
02053 event.Check(false);
02054 }
02055 } else {
02056
02057 wxASSERT(event.GetId() == XRCID("IDC_ITEMS_PLASMA_EQUIPPED"));
02058
02059 item = ITEM_PLASMA;
02060
02061 if (sram->isItemEquipped(ITEM_SPAZER)) {
02062 event.Check(false);
02063 }
02064 }
02065
02066 event.Enable(sram->hasItem(item));
02067
02068 if (!sram->hasItem(item)) {
02069 event.Check(false);
02070 }
02071 }
02072 }
02073
02074 void Frame::onMapChange(wxCommandEvent &event) {
02075
02076 wxASSERT(sram);
02077
02078 if (event.GetId() == XRCID("IDC_GAME_MAP_C")) {
02079 sram->setMap(AREA_C, event.IsChecked());
02080 } else if (event.GetId() == XRCID("IDC_GAME_MAP_BS")) {
02081 sram->setMap(AREA_BS, event.IsChecked());
02082 } else if (event.GetId() == XRCID("IDC_GAME_MAP_NF")) {
02083 sram->setMap(AREA_NF, event.IsChecked());
02084 } else if (event.GetId() == XRCID("IDC_GAME_MAP_WS")) {
02085 sram->setMap(AREA_WS, event.IsChecked());
02086 } else if (event.GetId() == XRCID("IDC_GAME_MAP_M")) {
02087 sram->setMap(AREA_M, event.IsChecked());
02088 } else {
02089
02090 wxASSERT(event.GetId() == XRCID("IDC_GAME_MAP_T"));
02091
02092 sram->setMap(AREA_T, event.IsChecked());
02093 }
02094 }
02095
02096 void Frame::onMetalDoorChange(wxCommandEvent &event) {
02097
02098 wxASSERT(sram);
02099
02100 if (event.GetId() == XRCID("IDC_METALDOOR_C_BOMBSEXIT")) {
02101 sram->setDoor(MD_C_BOMBSEXIT, event.IsChecked());
02102 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS1")) {
02103 sram->setDoor(MD_BS1, event.IsChecked());
02104 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS2")) {
02105 sram->setDoor(MD_BS2, event.IsChecked());
02106 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS3")) {
02107 sram->setDoor(MD_BS3, event.IsChecked());
02108 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS4")) {
02109 sram->setDoor(MD_BS4, event.IsChecked());
02110 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS5")) {
02111 sram->setDoor(MD_BS5, event.IsChecked());
02112 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS6")) {
02113 sram->setDoor(MD_BS6, event.IsChecked());
02114 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS7")) {
02115 sram->setDoor(MD_BS7, event.IsChecked());
02116 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS8")) {
02117 sram->setDoor(MD_BS8, event.IsChecked());
02118 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS9")) {
02119 sram->setDoor(MD_BS9, event.IsChecked());
02120 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS_MAPEXIT")) {
02121 sram->setDoor(MD_BS_MAPEXIT, event.IsChecked());
02122 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS_OLDTLEFT")) {
02123 sram->setDoor(MD_BS_OLDTLEFT, event.IsChecked());
02124 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS_OLDTRIGHT")) {
02125 sram->setDoor(MD_BS_OLDTRIGHT, event.IsChecked());
02126 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS_MINIKRAIDLEFT")) {
02127 sram->setDoor(MD_BS_MINIKRAIDLEFT, event.IsChecked());
02128 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS_MINIKRAIDRIGHT")) {
02129 sram->setDoor(MD_BS_MINIKRAIDRIGHT, event.IsChecked());
02130 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS_VARIASUIT")) {
02131 sram->setDoor(MD_BS_VARIASUIT, event.IsChecked());
02132 } else if (event.GetId() == XRCID("IDC_METALDOOR_BS_KRAIDEXIT")) {
02133 sram->setDoor(MD_BS_KRAIDEXIT, event.IsChecked());
02134 } else if (event.GetId() == XRCID("IDC_METALDOOR_NF_HJBOOTSEXIT")) {
02135 sram->setDoor(MD_NF_HJBOOTSEXIT, event.IsChecked());
02136 } else if (event.GetId() == XRCID("IDC_METALDOOR_NF_CROCOMIREEXIT")) {
02137 sram->setDoor(MD_NF_CROCOMIREEXIT, event.IsChecked());
02138 } else if (event.GetId() == XRCID("IDC_METALDOOR_NF_SCREWATTACK")) {
02139 sram->setDoor(MD_NF_SCREWATTACK, event.IsChecked());
02140 } else if (event.GetId() == XRCID("IDC_METALDOOR_NF_GOLDSPACEPIRATES")) {
02141 sram->setDoor(MD_NF_GOLDSPACEPIRATES, event.IsChecked());
02142 } else if (event.GetId() == XRCID("IDC_METALDOOR_NF_RIDLEYLEFT")) {
02143 sram->setDoor(MD_NF_RIDLEYLEFT, event.IsChecked());
02144 } else if (event.GetId() == XRCID("IDC_METALDOOR_NF_RIDLEYEXIT")) {
02145 sram->setDoor(MD_NF_RIDLEYEXIT, event.IsChecked());
02146 } else if (event.GetId() == XRCID("IDC_METALDOOR_WS1")) {
02147 sram->setDoor(MD_WS1, event.IsChecked());
02148 } else if (event.GetId() == XRCID("IDC_METALDOOR_WS2")) {
02149 sram->setDoor(MD_WS2, event.IsChecked());
02150 } else if (event.GetId() == XRCID("IDC_METALDOOR_WS3")) {
02151 sram->setDoor(MD_WS3, event.IsChecked());
02152 } else if (event.GetId() == XRCID("IDC_METALDOOR_WS4")) {
02153 sram->setDoor(MD_WS4, event.IsChecked());
02154 } else if (event.GetId() == XRCID("IDC_METALDOOR_WS_PHANTOONEXIT")) {
02155 sram->setDoor(MD_WS_PHANTOONEXIT, event.IsChecked());
02156 } else if (event.GetId() == XRCID("IDC_METALDOOR_M1")) {
02157 sram->setDoor(MD_M1, event.IsChecked());
02158 } else if (event.GetId() == XRCID("IDC_METALDOOR_M2")) {
02159 sram->setDoor(MD_M2, event.IsChecked());
02160 } else if (event.GetId() == XRCID("IDC_METALDOOR_M_BOTWOONEXIT")) {
02161 sram->setDoor(MD_M_BOTWOONEXIT, event.IsChecked());
02162 } else if (event.GetId() == XRCID("IDC_METALDOOR_M_SPACEJUMP")) {
02163 sram->setDoor(MD_M_SPACEJUMP, event.IsChecked());
02164 } else if (event.GetId() == XRCID("IDC_METALDOOR_M_DRAYGONEXIT")) {
02165 sram->setDoor(MD_M_DRAYGONEXIT, event.IsChecked());
02166 } else if (event.GetId() == XRCID("IDC_METALDOOR_M_PLASMA")) {
02167 sram->setDoor(MD_M_PLASMA, event.IsChecked());
02168 } else if (event.GetId() == XRCID("IDC_METALDOOR_M_PLASMAEXIT")) {
02169 sram->setDoor(MD_M_PLASMAEXIT, event.IsChecked());
02170 } else if (event.GetId() == XRCID("IDC_METALDOOR_T1")) {
02171 sram->setDoor(MD_T1, event.IsChecked());
02172 } else if (event.GetId() == XRCID("IDC_METALDOOR_T2")) {
02173 sram->setDoor(MD_T2, event.IsChecked());
02174 } else if (event.GetId() == XRCID("IDC_METALDOOR_T3")) {
02175 sram->setDoor(MD_T3, event.IsChecked());
02176 } else if (event.GetId() == XRCID("IDC_METALDOOR_T4")) {
02177 sram->setDoor(MD_T4, event.IsChecked());
02178 } else {
02179
02180 wxASSERT(event.GetId() == XRCID("IDC_METALDOOR_T5"));
02181
02182 sram->setDoor(MD_T5, event.IsChecked());
02183 }
02184 }
02185
02186 void Frame::onMetroidRoomChange(wxCommandEvent &event) {
02187
02188 wxASSERT(sram);
02189
02190 if (event.GetId() == XRCID("IDC_GAME_METROIDROOM1")) {
02191 sram->setMetroidRoom(MR1, event.IsChecked());
02192 } else if (event.GetId() == XRCID("IDC_GAME_METROIDROOM2")) {
02193 sram->setMetroidRoom(MR2, event.IsChecked());
02194 } else if (event.GetId() == XRCID("IDC_GAME_METROIDROOM3")) {
02195 sram->setMetroidRoom(MR3, event.IsChecked());
02196 } else {
02197
02198 wxASSERT(event.GetId() == XRCID("IDC_GAME_METROIDROOM4"));
02199
02200 sram->setMetroidRoom(MR4, event.IsChecked());
02201 }
02202 }
02203
02204 void Frame::onMiniBossChange(wxCommandEvent &event) {
02205
02206 wxASSERT(sram);
02207
02208 if (event.GetId() == XRCID("IDC_GAME_MINIBOSS_SILVERTORIZO")) {
02209 sram->setBoss(BOSS_SILVERTORIZO, event.IsChecked());
02210 } else if (event.GetId() == XRCID("IDC_GAME_MINIBOSS_SPORESPAWN")) {
02211 sram->setBoss(BOSS_SPORESPAWN, event.IsChecked());
02212 } else if (event.GetId() == XRCID("IDC_GAME_MINIBOSS_BOTWOON")) {
02213 sram->setBoss(BOSS_BOTWOON, event.IsChecked());
02214 } else if (event.GetId() == XRCID("IDC_GAME_MINIBOSS_CROCOMIRE")) {
02215 sram->setBoss(BOSS_CROCOMIRE, event.IsChecked());
02216 } else {
02217
02218 wxASSERT(event.GetId() == XRCID("IDC_GAME_MINIBOSS_GOLDENTORIZO"));
02219
02220 sram->setBoss(BOSS_GOLDENTORIZO, event.IsChecked());
02221 }
02222 }
02223
02224 void Frame::onMiscConfigChange(wxCommandEvent &event) {
02225
02226 wxASSERT(sram);
02227
02228 if (event.GetId() == XRCID("IDRB_MISC_LANGUAGE")) {
02229 sram->setMiscBit(MB_LANGUAGE, event.GetSelection());
02230 } else if (event.GetId() == XRCID("IDRB_MISC_MOONWALK")) {
02231 sram->setMiscBit(MB_MOONWALK, event.GetSelection());
02232 } else {
02233
02234 wxASSERT(event.GetId() == XRCID("IDRB_MISC_ICONCANCEL"));
02235
02236 sram->setMiscBit(MB_ICONCANCEL, event.GetSelection());
02237 }
02238 }
02239
02240 void Frame::onMiscStatChange(wxCommandEvent &event) {
02241
02242 wxASSERT(sram);
02243
02244 if (event.GetId() == XRCID("IDC_MISC_MTUBEBROKEN")) {
02245 sram->setMiscBit(MB_MTUBEBROKEN, event.IsChecked());
02246 } else {
02247
02248 wxASSERT(event.GetId() == XRCID("IDC_MISC_RESCUEDANIMALS"));
02249
02250 sram->setMiscBit(MB_RESCUEDANIMALS, event.IsChecked());
02251 }
02252 }
02253
02254 void Frame::onMissilePackChange(wxCommandEvent &event) {
02255
02256 wxASSERT(sram);
02257
02258 if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_C1")) {
02259 sram->setMissilePack(SO_CMISSILEPACKS, event.IsChecked());
02260 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_C2")) {
02261 sram->setMissilePack(SO_CMISSILEPACKS + 1, event.IsChecked());
02262 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_C3")) {
02263 sram->setMissilePack(SO_CMISSILEPACKS + 2, event.IsChecked());
02264 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_C4")) {
02265 sram->setMissilePack(SO_CMISSILEPACKS + 3, event.IsChecked());
02266 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_C5")) {
02267 sram->setMissilePack(SO_CMISSILEPACKS + 4, event.IsChecked());
02268 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_C6")) {
02269 sram->setMissilePack(SO_CMISSILEPACKS + 5, event.IsChecked());
02270 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_C7")) {
02271 sram->setMissilePack(SO_CMISSILEPACKS + 6, event.IsChecked());
02272 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_C8")) {
02273 sram->setMissilePack(SO_CMISSILEPACKS + 7, event.IsChecked());
02274 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_BS1")) {
02275 sram->setMissilePack(SO_BSMISSILEPACKS, event.IsChecked());
02276 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_BS2")) {
02277 sram->setMissilePack(SO_BSMISSILEPACKS + 1, event.IsChecked());
02278 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_BS3")) {
02279 sram->setMissilePack(SO_BSMISSILEPACKS + 2, event.IsChecked());
02280 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_BS4")) {
02281 sram->setMissilePack(SO_BSMISSILEPACKS + 3, event.IsChecked());
02282 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_BS5")) {
02283 sram->setMissilePack(SO_BSMISSILEPACKS + 4, event.IsChecked());
02284 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_BS6")) {
02285 sram->setMissilePack(SO_BSMISSILEPACKS + 5, event.IsChecked());
02286 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_BS7")) {
02287 sram->setMissilePack(SO_BSMISSILEPACKS + 6, event.IsChecked());
02288 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_BS8")) {
02289 sram->setMissilePack(SO_BSMISSILEPACKS + 7, event.IsChecked());
02290 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_BS9")) {
02291 sram->setMissilePack(SO_BSMISSILEPACKS + 8, event.IsChecked());
02292 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_BS10")) {
02293 sram->setMissilePack(SO_BSMISSILEPACKS + 9, event.IsChecked());
02294 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_BS11")) {
02295 sram->setMissilePack(SO_BSMISSILEPACKS + 10, event.IsChecked());
02296 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_BS12")) {
02297 sram->setMissilePack(SO_BSMISSILEPACKS + 11, event.IsChecked());
02298 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF1")) {
02299 sram->setMissilePack(SO_NFMISSILEPACKS, event.IsChecked());
02300 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF2")) {
02301 sram->setMissilePack(SO_NFMISSILEPACKS + 1, event.IsChecked());
02302 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF3")) {
02303 sram->setMissilePack(SO_NFMISSILEPACKS + 2, event.IsChecked());
02304 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF4")) {
02305 sram->setMissilePack(SO_NFMISSILEPACKS + 3, event.IsChecked());
02306 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF5")) {
02307 sram->setMissilePack(SO_NFMISSILEPACKS + 4, event.IsChecked());
02308 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF6")) {
02309 sram->setMissilePack(SO_NFMISSILEPACKS + 5, event.IsChecked());
02310 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF7")) {
02311 sram->setMissilePack(SO_NFMISSILEPACKS + 6, event.IsChecked());
02312 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF8")) {
02313 sram->setMissilePack(SO_NFMISSILEPACKS + 7, event.IsChecked());
02314 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF9")) {
02315 sram->setMissilePack(SO_NFMISSILEPACKS + 8, event.IsChecked());
02316 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF10")) {
02317 sram->setMissilePack(SO_NFMISSILEPACKS + 9, event.IsChecked());
02318 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF11")) {
02319 sram->setMissilePack(SO_NFMISSILEPACKS + 10, event.IsChecked());
02320 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF12")) {
02321 sram->setMissilePack(SO_NFMISSILEPACKS + 11, event.IsChecked());
02322 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF13")) {
02323 sram->setMissilePack(SO_NFMISSILEPACKS + 12, event.IsChecked());
02324 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF14")) {
02325 sram->setMissilePack(SO_NFMISSILEPACKS + 13, event.IsChecked());
02326 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_NF15")) {
02327 sram->setMissilePack(SO_NFMISSILEPACKS + 14, event.IsChecked());
02328 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_WS1")) {
02329 sram->setMissilePack(SO_WSMISSILEPACKS, event.IsChecked());
02330 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_WS2")) {
02331 sram->setMissilePack(SO_WSMISSILEPACKS + 1, event.IsChecked());
02332 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_WS3")) {
02333 sram->setMissilePack(SO_WSMISSILEPACKS + 2, event.IsChecked());
02334 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_M1")) {
02335 sram->setMissilePack(SO_MMISSILEPACKS, event.IsChecked());
02336 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_M2")) {
02337 sram->setMissilePack(SO_MMISSILEPACKS + 1, event.IsChecked());
02338 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_M3")) {
02339 sram->setMissilePack(SO_MMISSILEPACKS + 2, event.IsChecked());
02340 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_M4")) {
02341 sram->setMissilePack(SO_MMISSILEPACKS + 3, event.IsChecked());
02342 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_M5")) {
02343 sram->setMissilePack(SO_MMISSILEPACKS + 4, event.IsChecked());
02344 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_M6")) {
02345 sram->setMissilePack(SO_MMISSILEPACKS + 5, event.IsChecked());
02346 } else if (event.GetId() == XRCID("IDC_PICKUPS_MISSILE_M7")) {
02347 sram->setMissilePack(SO_MMISSILEPACKS + 6, event.IsChecked());
02348 } else {
02349
02350 wxASSERT(event.GetId() == XRCID("IDC_PICKUPS_MISSILE_M8"));
02351
02352 sram->setMissilePack(SO_MMISSILEPACKS + 7, event.IsChecked());
02353 }
02354
02355 wxTextCtrl *ctrl = XRCCTRL(*this, "IDT_GAME_MISSILES", wxTextCtrl);
02356 unsigned long value;
02357
02358 if (ctrl->GetValue().ToULong(&value)) {
02359 unsigned char max = sram->getMaxMissiles();
02360
02361 if (value > max) {
02362 ignoreTextEvents = true;
02363 ctrl->SetValue(wxString::Format(wxT("%d"), max));
02364 ignoreTextEvents = false;
02365 }
02366 }
02367 }
02368
02369 void Frame::onMissilesSpinner(wxSpinEvent &event) {
02370
02371 wxASSERT(event.GetId() == XRCID("IDSB_GAME_MISSILES"));
02372
02373
02374 wxASSERT(sram);
02375
02376 int missiles = event.GetPosition();
02377 int max = sram->getMaxMissiles();
02378
02379 if (missiles > max) {
02380 missiles = max;
02381
02382 wxSpinButton *ptr =
02383 dynamic_cast<wxSpinButton *>(event.GetEventObject());
02384
02385
02386 wxASSERT(ptr);
02387
02388 ptr->SetValue(max);
02389 }
02390
02391 sram->setMissiles(missiles);
02392
02393 ignoreTextEvents = true;
02394 XRCCTRL(*this, "IDT_GAME_MISSILES",
02395 wxTextCtrl)->SetValue(wxString::Format(wxT("%d"), missiles));
02396 ignoreTextEvents = false;
02397 }
02398
02399 void Frame::onMissilesChange(wxCommandEvent &event) {
02400
02401 wxASSERT(event.GetId() == XRCID("IDT_GAME_MISSILES"));
02402
02403 if (!ignoreTextEvents) {
02404
02405 wxASSERT(sram);
02406
02407 unsigned long value;
02408
02409 if (event.GetString().ToULong(&value)) {
02410 unsigned char missiles = static_cast<unsigned char>(value);
02411 unsigned char max = sram->getMaxMissiles();
02412
02413 if (value > max) {
02414 missiles = max;
02415
02416 GetStatusBar()->SetStatusText(wxString::Format
02417 (wxT("Warning: Samus' missile capacity is %d"), max));
02418 timer.Start(CLEAR_DELAY, true);
02419 }
02420
02421 sram->setMissiles(missiles);
02422
02423 XRCCTRL(*this, "IDSB_GAME_MISSILES",
02424 wxSpinButton)->SetValue(missiles);
02425 }
02426 }
02427 }
02428
02429 void Frame::onNotebookUpdate(wxUpdateUIEvent &event) {
02430 wxNotebook *notebook = dynamic_cast<wxNotebook *>(event.GetEventObject());
02431
02432
02433 wxASSERT(notebook);
02434
02435 notebook->Show(sram);
02436
02437 if (!sram) {
02438 notebook->SetSelection(0);
02439 }
02440 }
02441
02442 void Frame::onPowerBombPackChange(wxCommandEvent &event) {
02443
02444 wxASSERT(sram);
02445
02446 if (event.GetId() == XRCID("IDC_PICKUPS_PBOMB_C")) {
02447 sram->setPowerBombPack(SO_CPBOMBPACKS, event.IsChecked());
02448 } else if (event.GetId() == XRCID("IDC_PICKUPS_PBOMB_BS1")) {
02449 sram->setPowerBombPack(SO_BSPBOMBPACKS, event.IsChecked());
02450 } else if (event.GetId() == XRCID("IDC_PICKUPS_PBOMB_BS2")) {
02451 sram->setPowerBombPack(SO_BSPBOMBPACKS + 1, event.IsChecked());
02452 } else if (event.GetId() == XRCID("IDC_PICKUPS_PBOMB_BS3")) {
02453 sram->setPowerBombPack(SO_BSPBOMBPACKS + 2, event.IsChecked());
02454 } else if (event.GetId() == XRCID("IDC_PICKUPS_PBOMB_BS4")) {
02455 sram->setPowerBombPack(SO_BSPBOMBPACKS + 3, event.IsChecked());
02456 } else if (event.GetId() == XRCID("IDC_PICKUPS_PBOMB_BS5")) {
02457 sram->setPowerBombPack(SO_BSPBOMBPACKS + 4, event.IsChecked());
02458 } else if (event.GetId() == XRCID("IDC_PICKUPS_PBOMB_NF1")) {
02459 sram->setPowerBombPack(SO_NFPBOMBPACKS, event.IsChecked());
02460 } else if (event.GetId() == XRCID("IDC_PICKUPS_PBOMB_NF2")) {
02461 sram->setPowerBombPack(SO_NFPBOMBPACKS + 1, event.IsChecked());
02462 } else if (event.GetId() == XRCID("IDC_PICKUPS_PBOMB_NF3")) {
02463 sram->setPowerBombPack(SO_NFPBOMBPACKS + 2, event.IsChecked());
02464 } else {
02465
02466 wxASSERT(event.GetId() == XRCID("IDC_PICKUPS_PBOMB_M"));
02467
02468 sram->setPowerBombPack(SO_MPBOMBPACKS, event.IsChecked());
02469 }
02470
02471 wxTextCtrl *ctrl = XRCCTRL(*this, "IDT_GAME_PBOMBS", wxTextCtrl);
02472 unsigned long value;
02473
02474 if (ctrl->GetValue().ToULong(&value)) {
02475 unsigned char max = sram->getMaxPowerBombs();
02476
02477 if (value > max) {
02478 ignoreTextEvents = true;
02479 ctrl->SetValue(wxString::Format(wxT("%d"), max));
02480 ignoreTextEvents = false;
02481 }
02482 }
02483 }
02484
02485 void Frame::onPowerBombsSpinner(wxSpinEvent &event) {
02486
02487 wxASSERT(event.GetId() == XRCID("IDSB_GAME_PBOMBS"));
02488
02489
02490 wxASSERT(sram);
02491
02492 int bombs = event.GetPosition();
02493 int max = sram->getMaxPowerBombs();
02494
02495 if (bombs > max) {
02496 bombs = max;
02497
02498 wxSpinButton *ptr =
02499 dynamic_cast<wxSpinButton *>(event.GetEventObject());
02500
02501
02502 wxASSERT(ptr);
02503
02504 ptr->SetValue(max);
02505 }
02506
02507 sram->setPowerBombs(bombs);
02508
02509 ignoreTextEvents = true;
02510 XRCCTRL(*this, "IDT_GAME_PBOMBS",
02511 wxTextCtrl)->SetValue(wxString::Format(wxT("%d"), bombs));
02512 ignoreTextEvents = false;
02513 }
02514
02515 void Frame::onPowerBombsChange(wxCommandEvent &event) {
02516
02517 wxASSERT(event.GetId() == XRCID("IDT_GAME_PBOMBS"));
02518
02519 if (!ignoreTextEvents) {
02520
02521 wxASSERT(sram);
02522
02523 unsigned long value;
02524
02525 if (event.GetString().ToULong(&value)) {
02526 unsigned char bombs = static_cast<unsigned char>(value);
02527 unsigned char max = sram->getMaxPowerBombs();
02528
02529 if (value > max) {
02530 bombs = max;
02531
02532 GetStatusBar()->SetStatusText(wxString::Format
02533 (wxT("Warning: Samus' power bomb capacity is %d"), max));
02534 timer.Start(CLEAR_DELAY, true);
02535 }
02536
02537 sram->setPowerBombs(bombs);
02538
02539 XRCCTRL(*this, "IDSB_GAME_PBOMBS",
02540 wxSpinButton)->SetValue(bombs);
02541 }
02542 }
02543 }
02544
02545 void Frame::onRedDoorChange(wxCommandEvent &event) {
02546
02547 wxASSERT(sram);
02548
02549 if (event.GetId() == XRCID("IDC_REDDOOR_C_MAP")) {
02550 sram->setDoor(RD_C_MAP, event.IsChecked());
02551 } else if (event.GetId() == XRCID("IDC_REDDOOR_C_BOMBS")) {
02552 sram->setDoor(RD_C_BOMBS, event.IsChecked());
02553 } else if (event.GetId() == XRCID("IDC_REDDOOR_C_TELEVATOR")) {
02554 sram->setDoor(RD_C_TELEVATOR, event.IsChecked());
02555 } else if (event.GetId() == XRCID("IDC_REDDOOR_BS1")) {
02556 sram->setDoor(RD_BS1, event.IsChecked());
02557 } else if (event.GetId() == XRCID("IDC_REDDOOR_BS2")) {
02558 sram->setDoor(RD_BS2, event.IsChecked());
02559 } else if (event.GetId() == XRCID("IDC_REDDOOR_BS3")) {
02560 sram->setDoor(RD_BS3, event.IsChecked());
02561 } else if (event.GetId() == XRCID("IDC_REDDOOR_BS4")) {
02562 sram->setDoor(RD_BS4, event.IsChecked());
02563 } else if (event.GetId() == XRCID("IDC_REDDOOR_BS5")) {
02564 sram->setDoor(RD_BS5, event.IsChecked());
02565 } else if (event.GetId() == XRCID("IDC_REDDOOR_BS6")) {
02566 sram->setDoor(RD_BS6, event.IsChecked());
02567 } else if (event.GetId() == XRCID("IDC_REDDOOR_BS_MAP")) {
02568 sram->setDoor(RD_BS_MAP, event.IsChecked());
02569 } else if (event.GetId() == XRCID("IDC_REDDOOR_BS_RTANK")) {
02570 sram->setDoor(RD_BS_RTANK, event.IsChecked());
02571 } else if (event.GetId() == XRCID("IDC_REDDOOR_BS_SPORESPAWN")) {
02572 sram->setDoor(RD_BS_SPORESPAWN, event.IsChecked());
02573 } else if (event.GetId() == XRCID("IDC_REDDOOR_BS_XRAYSCOPE")) {
02574 sram->setDoor(RD_BS_XRAYSCOPE, event.IsChecked());
02575 } else if (event.GetId() == XRCID("IDC_REDDOOR_NF1")) {
02576 sram->setDoor(RD_NF1, event.IsChecked());
02577 } else if (event.GetId() == XRCID("IDC_REDDOOR_NF2")) {
02578 sram->setDoor(RD_NF2, event.IsChecked());
02579 } else if (event.GetId() == XRCID("IDC_REDDOOR_NF3")) {
02580 sram->setDoor(RD_NF3, event.IsChecked());
02581 } else if (event.GetId() == XRCID("IDC_REDDOOR_NF4")) {
02582 sram->setDoor(RD_NF4, event.IsChecked());
02583 } else if (event.GetId() == XRCID("IDC_REDDOOR_NF_HJBOOTS")) {
02584 sram->setDoor(RD_NF_HJBOOTS, event.IsChecked());
02585 } else if (event.GetId() == XRCID("IDC_REDDOOR_NF_SPEEDBOOSTER")) {
02586 sram->setDoor(RD_NF_SPEEDBOOSTER, event.IsChecked());
02587 } else if (event.GetId() == XRCID("IDC_REDDOOR_NF_WAVEBEAM")) {
02588 sram->setDoor(RD_NF_WAVEBEAM, event.IsChecked());
02589 } else if (event.GetId() == XRCID("IDC_REDDOOR_WS_RTANK")) {
02590 sram->setDoor(RD_WS_RTANK, event.IsChecked());
02591 } else if (event.GetId() == XRCID("IDC_REDDOOR_M1")) {
02592 sram->setDoor(RD_M1, event.IsChecked());
02593 } else if (event.GetId() == XRCID("IDC_REDDOOR_M2")) {
02594 sram->setDoor(RD_M2, event.IsChecked());
02595 } else if (event.GetId() == XRCID("IDC_REDDOOR_M3")) {
02596 sram->setDoor(RD_M3, event.IsChecked());
02597 } else if (event.GetId() == XRCID("IDC_REDDOOR_M4")) {
02598 sram->setDoor(RD_M4, event.IsChecked());
02599 } else if (event.GetId() == XRCID("IDC_REDDOOR_M5")) {
02600 sram->setDoor(RD_M5, event.IsChecked());
02601 } else if (event.GetId() == XRCID("IDC_REDDOOR_M6")) {
02602 sram->setDoor(RD_M6, event.IsChecked());
02603 } else if (event.GetId() == XRCID("IDC_REDDOOR_M_MAP")) {
02604 sram->setDoor(RD_M_MAP, event.IsChecked());
02605 } else if (event.GetId() == XRCID("IDC_REDDOOR_T1")) {
02606 sram->setDoor(RD_T1, event.IsChecked());
02607 } else {
02608
02609 wxASSERT(event.GetId() == XRCID("IDC_REDDOOR_T_MB"));
02610
02611 sram->setDoor(RD_T_MB, event.IsChecked());
02612 }
02613 }
02614
02615 void Frame::onReserveTankChange(wxCommandEvent &event) {
02616
02617 wxASSERT(sram);
02618
02619 if (event.GetId() == XRCID("IDC_ITEMS_RTANK_BS")) {
02620 sram->setReserveTank(SO_BSRTANK, event.IsChecked());
02621 } else if (event.GetId() == XRCID("IDC_ITEMS_RTANK_NF")) {
02622 sram->setReserveTank(SO_NFRTANK, event.IsChecked());
02623 } else if (event.GetId() == XRCID("IDC_ITEMS_RTANK_WS")) {
02624 sram->setReserveTank(SO_WSRTANK, event.IsChecked());
02625 } else {
02626
02627 wxASSERT(event.GetId() == XRCID("IDC_ITEMS_RTANK_M"));
02628
02629 sram->setReserveTank(SO_MRTANK, event.IsChecked());
02630 }
02631
02632 wxTextCtrl *ctrl = XRCCTRL(*this, "IDT_GAME_RESERVE", wxTextCtrl);
02633 unsigned long value;
02634
02635 if (ctrl->GetValue().ToULong(&value)) {
02636 wxUint16 max = sram->getMaxReserveEnergy();
02637
02638 if (value > max) {
02639 ignoreTextEvents = true;
02640 ctrl->SetValue(wxString::Format(wxT("%d"), max));
02641 ignoreTextEvents = false;
02642 }
02643 }
02644 }
02645
02646 void Frame::onSaveAreaChange(wxCommandEvent &event) {
02647
02648 wxASSERT(sram);
02649
02650 enum Area area = static_cast<enum Area>(event.GetSelection());
02651 sram->setSavePoint(area);
02652
02653 XRCCTRL(*this, "IDR_GAME_SP1", wxRadioButton)->SetValue(true);
02654 }
02655
02656 void Frame::onSavePointChange(wxCommandEvent &event) {
02657
02658 wxASSERT(sram);
02659
02660 std::pair<enum Area, int> sp = sram->getSavePoint();
02661
02662 if (event.GetId() == XRCID("IDR_GAME_SP1")) {
02663 sp.second = 0;
02664 } else if (event.GetId() == XRCID("IDR_GAME_SP2")) {
02665 sp.second = 1;
02666 } else if (event.GetId() == XRCID("IDR_GAME_SP3")) {
02667 sp.second = 2;
02668 } else if (event.GetId() == XRCID("IDR_GAME_SP4")) {
02669 sp.second = 3;
02670 } else if (event.GetId() == XRCID("IDR_GAME_SP5")) {
02671 sp.second = 4;
02672 } else {
02673
02674 wxASSERT(event.GetId() == XRCID("IDR_GAME_SP6"));
02675
02676 sp.second = 5;
02677 }
02678
02679 sram->setSavePoint(sp.first, sp.second);
02680 }
02681
02682 void Frame::onSavePointUpdate(wxUpdateUIEvent &event) {
02683 if (sram) {
02684 int points = 0;
02685 std::pair<enum Area, int> save = sram->getSavePoint();
02686
02687 switch (save.first) {
02688 case AREA_C:
02689 points = C_SAVEPOINTS;
02690 break;
02691
02692 case AREA_BS:
02693 points = BS_SAVEPOINTS;
02694 break;
02695
02696 case AREA_NF:
02697 points = NF_SAVEPOINTS;
02698 break;
02699
02700 case AREA_WS:
02701 points = WS_SAVEPOINTS;
02702 break;
02703
02704 case AREA_M:
02705 points = M_SAVEPOINTS;
02706 break;
02707
02708 case AREA_T:
02709 points = T_SAVEPOINTS;
02710 break;
02711 }
02712
02713 int point;
02714
02715 if (event.GetId() == XRCID("IDR_GAME_SP1")) {
02716 point = 0;
02717 } else if (event.GetId() == XRCID("IDR_GAME_SP2")) {
02718 point = 1;
02719 } else if (event.GetId() == XRCID("IDR_GAME_SP3")) {
02720 point = 2;
02721 } else if (event.GetId() == XRCID("IDR_GAME_SP4")) {
02722 point = 3;
02723 } else if (event.GetId() == XRCID("IDR_GAME_SP5")) {
02724 point = 4;
02725 } else {
02726
02727 wxASSERT(event.GetId() == XRCID("IDR_GAME_SP6"));
02728
02729 point = 5;
02730 }
02731
02732 event.Enable(point < points);
02733 }
02734 }
02735
02736 void Frame::onStatueChange(wxCommandEvent &event) {
02737
02738 wxASSERT(sram);
02739
02740 if (event.GetId() == XRCID("IDC_GAME_STATUE_KRAID")) {
02741 sram->setStatue(STATUE_KRAID, event.IsChecked());
02742 } else if (event.GetId() == XRCID("IDC_GAME_STATUE_PHANTOON")) {
02743 sram->setStatue(STATUE_PHANTOON, event.IsChecked());
02744 } else if (event.GetId() == XRCID("IDC_GAME_STATUE_DRAYGON")) {
02745 sram->setStatue(STATUE_DRAYGON, event.IsChecked());
02746 } else {
02747
02748 wxASSERT(event.GetId() == XRCID("IDC_GAME_STATUE_RIDLEY"));
02749
02750 sram->setStatue(STATUE_RIDLEY, event.IsChecked());
02751 }
02752
02753 if (event.IsChecked()) {
02754 if (sram->getStatue(STATUE_KRAID) && sram->getStatue(STATUE_PHANTOON) &&
02755 sram->getStatue(STATUE_DRAYGON) && sram->getStatue(STATUE_RIDLEY)) {
02756 sram->setMiscBit(MB_TELEVATOR);
02757 }
02758 } else {
02759 sram->setMiscBit(MB_TELEVATOR, false);
02760 }
02761 }
02762
02763 void Frame::onStatueUpdate(wxUpdateUIEvent &event) {
02764 if (sram) {
02765 bool value;
02766
02767 if (event.GetId() == XRCID("IDC_GAME_STATUE_KRAID")) {
02768 value = sram->getBoss(BOSS_KRAID);
02769 } else if (event.GetId() == XRCID("IDC_GAME_STATUE_PHANTOON")) {
02770 value = sram->getBoss(BOSS_PHANTOON);
02771 } else if (event.GetId() == XRCID("IDC_GAME_STATUE_DRAYGON")) {
02772 value = sram->getBoss(BOSS_DRAYGON);
02773 } else {
02774
02775 wxASSERT(event.GetId() == XRCID("IDC_GAME_STATUE_RIDLEY"));
02776
02777 value = sram->getBoss(BOSS_RIDLEY);
02778 }
02779
02780 event.Enable(value);
02781
02782 if (!value) {
02783 event.Check(false);
02784 }
02785 }
02786 }
02787
02788 void Frame::onStatusBarTimer(wxTimerEvent &) {
02789 GetStatusBar()->SetStatusText(wxEmptyString);
02790 }
02791
02792 void Frame::onSuperMissilePackChange(wxCommandEvent &event) {
02793
02794 wxASSERT(sram);
02795
02796 if (event.GetId() == XRCID("IDC_PICKUPS_SMISSILE_C")) {
02797 sram->setSuperMissilePack(SO_CSMISSILEPACKS, event.IsChecked());
02798 } else if (event.GetId() == XRCID("IDC_PICKUPS_SMISSILE_BS1")) {
02799 sram->setSuperMissilePack(SO_BSSMISSILEPACKS, event.IsChecked());
02800 } else if (event.GetId() == XRCID("IDC_PICKUPS_SMISSILE_BS2")) {
02801 sram->setSuperMissilePack(SO_BSSMISSILEPACKS + 1, event.IsChecked());
02802 } else if (event.GetId() == XRCID("IDC_PICKUPS_SMISSILE_BS3")) {
02803 sram->setSuperMissilePack(SO_BSSMISSILEPACKS + 2, event.IsChecked());
02804 } else if (event.GetId() == XRCID("IDC_PICKUPS_SMISSILE_NF")) {
02805 sram->setSuperMissilePack(SO_NFSMISSILEPACKS, event.IsChecked());
02806 } else if (event.GetId() == XRCID("IDC_PICKUPS_SMISSILE_WS1")) {
02807 sram->setSuperMissilePack(SO_WSSMISSILEPACKS, event.IsChecked());
02808 } else if (event.GetId() == XRCID("IDC_PICKUPS_SMISSILE_WS2")) {
02809 sram->setSuperMissilePack(SO_WSSMISSILEPACKS + 1, event.IsChecked());
02810 } else if (event.GetId() == XRCID("IDC_PICKUPS_SMISSILE_M1")) {
02811 sram->setSuperMissilePack(SO_MSMISSILEPACKS, event.IsChecked());
02812 } else if (event.GetId() == XRCID("IDC_PICKUPS_SMISSILE_M2")) {
02813 sram->setSuperMissilePack(SO_MSMISSILEPACKS + 1, event.IsChecked());
02814 } else {
02815
02816 wxASSERT(event.GetId() == XRCID("IDC_PICKUPS_SMISSILE_M3"));
02817
02818 sram->setSuperMissilePack(SO_MSMISSILEPACKS + 2, event.IsChecked());
02819 }
02820
02821 wxTextCtrl *ctrl = XRCCTRL(*this, "IDT_GAME_SMISSILES", wxTextCtrl);
02822 unsigned long value;
02823
02824 if (ctrl->GetValue().ToULong(&value)) {
02825 unsigned char max = sram->getMaxSuperMissiles();
02826
02827 if (value > max) {
02828 ignoreTextEvents = true;
02829 ctrl->SetValue(wxString::Format(wxT("%d"), max));
02830 ignoreTextEvents = false;
02831 }
02832 }
02833 }
02834
02835 void Frame::onSuperMissilesSpinner(wxSpinEvent &event) {
02836
02837 wxASSERT(event.GetId() == XRCID("IDSB_GAME_SMISSILES"));
02838
02839
02840 wxASSERT(sram);
02841
02842 int missiles = event.GetPosition();
02843 int max = sram->getMaxSuperMissiles();
02844
02845 if (missiles > max) {
02846 missiles = max;
02847
02848 wxSpinButton *ptr =
02849 dynamic_cast<wxSpinButton *>(event.GetEventObject());
02850
02851
02852 wxASSERT(ptr);
02853
02854 ptr->SetValue(max);
02855 }
02856
02857 sram->setSuperMissiles(missiles);
02858
02859 ignoreTextEvents = true;
02860 XRCCTRL(*this, "IDT_GAME_SMISSILES",
02861 wxTextCtrl)->SetValue(wxString::Format(wxT("%d"), missiles));
02862 ignoreTextEvents = false;
02863 }
02864
02865 void Frame::onSuperMissilesChange(wxCommandEvent &event) {
02866
02867 wxASSERT(event.GetId() == XRCID("IDT_GAME_SMISSILES"));
02868
02869 if (!ignoreTextEvents) {
02870
02871 wxASSERT(sram);
02872
02873 unsigned long value;
02874
02875 if (event.GetString().ToULong(&value)) {
02876 unsigned char missiles = static_cast<unsigned char>(value);
02877 unsigned char max = sram->getMaxSuperMissiles();
02878
02879 if (value > max) {
02880 missiles = max;
02881
02882 GetStatusBar()->SetStatusText(wxString::Format
02883 (wxT("Warning: Samus' super missile capacity is %d"), max));
02884 timer.Start(CLEAR_DELAY, true);
02885 }
02886
02887 sram->setSuperMissiles(missiles);
02888
02889 XRCCTRL(*this, "IDSB_GAME_SMISSILES",
02890 wxSpinButton)->SetValue(missiles);
02891 }
02892 }
02893 }
02894
02895 void Frame::onWindowClosing(wxCloseEvent &event) {
02896
02897 if (event.CanVeto() && sram && sram->isModified()) {
02898 int answer = wxMessageBox(wxT("Save before exit?"),
02899 wxT("Warning: SRAM has been modified"),
02900 wxYES_NO | wxCANCEL | wxICON_QUESTION);
02901
02902 if (answer == wxYES) {
02903 if (!close(true)) {
02904 event.Veto();
02905 return;
02906 }
02907 } else if (answer == wxCANCEL) {
02908 event.Veto();
02909 return;
02910 }
02911 }
02912
02913 Destroy();
02914 }
02915
02916 void Frame::onYellowDoorChange(wxCommandEvent &event) {
02917
02918 wxASSERT(sram);
02919
02920 if (event.GetId() == XRCID("IDC_YELLOWDOOR_C1")) {
02921 sram->setDoor(YD_C1, event.IsChecked());
02922 } else if (event.GetId() == XRCID("IDC_YELLOWDOOR_C2")) {
02923 sram->setDoor(YD_C2, event.IsChecked());
02924 } else if (event.GetId() == XRCID("IDC_YELLOWDOOR_C3")) {
02925 sram->setDoor(YD_C3, event.IsChecked());
02926 } else if (event.GetId() == XRCID("IDC_YELLOWDOOR_C4")) {
02927 sram->setDoor(YD_C4, event.IsChecked());
02928 } else if (event.GetId() == XRCID("IDC_YELLOWDOOR_C5")) {
02929 sram->setDoor(YD_C5, event.IsChecked());
02930 } else if (event.GetId() == XRCID("IDC_YELLOWDOOR_C6")) {
02931 sram->setDoor(YD_C6, event.IsChecked());
02932 } else if (event.GetId() == XRCID("IDC_YELLOWDOOR_BS1")) {
02933 sram->setDoor(YD_BS1, event.IsChecked());
02934 } else if (event.GetId() == XRCID("IDC_YELLOWDOOR_BS2")) {
02935 sram->setDoor(YD_BS2, event.IsChecked());
02936 } else if (event.GetId() == XRCID("IDC_YELLOWDOOR_BS3")) {
02937 sram->setDoor(YD_BS3, event.IsChecked());
02938 } else if (event.GetId() == XRCID("IDC_YELLOWDOOR_BS_XRAYSCOPE")) {
02939 sram->setDoor(YD_BS_XRAYSCOPE, event.IsChecked());
02940 } else if (event.GetId() == XRCID("IDC_YELLOWDOOR_NF1")) {
02941 sram->setDoor(YD_NF1, event.IsChecked());
02942 } else if (event.GetId() == XRCID("IDC_YELLOWDOOR_NF2")) {
02943 sram->setDoor(YD_NF2, event.IsChecked());
02944 } else {
02945
02946 wxASSERT(event.GetId() == XRCID("IDC_YELLOWDOOR_NF_MAP"));
02947
02948 sram->setDoor(YD_NF_MAP, event.IsChecked());
02949 }
02950 }
02951
02952 void Frame::onZebetitesChange(wxCommandEvent &event) {
02953
02954 wxASSERT(sram);
02955
02956 sram->setZebetites(event.GetSelection());
02957 }
02958
02959 BEGIN_EVENT_TABLE(Frame, wxFrame)
02960 EVT_CHECKBOX(XRCID("IDC_GAME_BOSS_KRAID"), Frame::onBossChange)
02961 EVT_CHECKBOX(XRCID("IDC_GAME_BOSS_PHANTOON"), Frame::onBossChange)
02962 EVT_CHECKBOX(XRCID("IDC_GAME_BOSS_DRAYGON"), Frame::onBossChange)
02963 EVT_CHECKBOX(XRCID("IDC_GAME_BOSS_RIDLEY"), Frame::onBossChange)
02964
02965 EVT_CHECKBOX(XRCID("IDC_GAME_STATUE_KRAID"), Frame::onStatueChange)
02966 EVT_CHECKBOX(XRCID("IDC_GAME_STATUE_PHANTOON"), Frame::onStatueChange)
02967 EVT_CHECKBOX(XRCID("IDC_GAME_STATUE_DRAYGON"), Frame::onStatueChange)
02968 EVT_CHECKBOX(XRCID("IDC_GAME_STATUE_RIDLEY"), Frame::onStatueChange)
02969
02970 EVT_CHECKBOX(XRCID("IDC_GAME_MINIBOSS_SILVERTORIZO"),
02971 Frame::onMiniBossChange)
02972 EVT_CHECKBOX(XRCID("IDC_GAME_MINIBOSS_SPORESPAWN"), Frame::onMiniBossChange)
02973 EVT_CHECKBOX(XRCID("IDC_GAME_MINIBOSS_BOTWOON"), Frame::onMiniBossChange)
02974 EVT_CHECKBOX(XRCID("IDC_GAME_MINIBOSS_CROCOMIRE"), Frame::onMiniBossChange)
02975 EVT_CHECKBOX(XRCID("IDC_GAME_MINIBOSS_GOLDENTORIZO"),
02976 Frame::onMiniBossChange)
02977
02978 EVT_CHECKBOX(XRCID("IDC_GAME_METROIDROOM1"), Frame::onMetroidRoomChange)
02979 EVT_CHECKBOX(XRCID("IDC_GAME_METROIDROOM2"), Frame::onMetroidRoomChange)
02980 EVT_CHECKBOX(XRCID("IDC_GAME_METROIDROOM3"), Frame::onMetroidRoomChange)
02981 EVT_CHECKBOX(XRCID("IDC_GAME_METROIDROOM4"), Frame::onMetroidRoomChange)
02982
02983 EVT_CHECKBOX(XRCID("IDC_GAME_MAP_C"), Frame::onMapChange)
02984 EVT_CHECKBOX(XRCID("IDC_GAME_MAP_BS"), Frame::onMapChange)
02985 EVT_CHECKBOX(XRCID("IDC_GAME_MAP_NF"), Frame::onMapChange)
02986 EVT_CHECKBOX(XRCID("IDC_GAME_MAP_WS"), Frame::onMapChange)
02987 EVT_CHECKBOX(XRCID("IDC_GAME_MAP_M"), Frame::onMapChange)
02988 EVT_CHECKBOX(XRCID("IDC_GAME_MAP_T"), Frame::onMapChange)
02989
02990 EVT_CHECKBOX(XRCID("IDC_MISC_MTUBEBROKEN"), Frame::onMiscStatChange)
02991 EVT_CHECKBOX(XRCID("IDC_MISC_RESCUEDANIMALS"), Frame::onMiscStatChange)
02992
02993 EVT_CHECKBOX(XRCID("IDC_ITEMS_MORPHINGBALL"), Frame::onItemChange)
02994 EVT_CHECKBOX(XRCID("IDC_ITEMS_BOMBS"), Frame::onItemChange)
02995 EVT_CHECKBOX(XRCID("IDC_ITEMS_SPRINGBALL"), Frame::onItemChange)
02996 EVT_CHECKBOX(XRCID("IDC_ITEMS_SCREWATTACK"), Frame::onItemChange)
02997 EVT_CHECKBOX(XRCID("IDC_ITEMS_VARIASUIT"), Frame::onItemChange)
02998 EVT_CHECKBOX(XRCID("IDC_ITEMS_GRAVITYSUIT"), Frame::onItemChange)
02999 EVT_CHECKBOX(XRCID("IDC_ITEMS_HJBOOTS"), Frame::onItemChange)
03000 EVT_CHECKBOX(XRCID("IDC_ITEMS_SPACEJUMP"), Frame::onItemChange)
03001 EVT_CHECKBOX(XRCID("IDC_ITEMS_SPEEDBOOSTER"), Frame::onItemChange)
03002 EVT_CHECKBOX(XRCID("IDC_ITEMS_CHARGEBEAM"), Frame::onItemChange)
03003 EVT_CHECKBOX(XRCID("IDC_ITEMS_ICEBEAM"), Frame::onItemChange)
03004 EVT_CHECKBOX(XRCID("IDC_ITEMS_WAVEBEAM"), Frame::onItemChange)
03005 EVT_CHECKBOX(XRCID("IDC_ITEMS_SPAZER"), Frame::onItemChange)
03006 EVT_CHECKBOX(XRCID("IDC_ITEMS_PLASMA"), Frame::onItemChange)
03007 EVT_CHECKBOX(XRCID("IDC_ITEMS_XRAYSCOPE"), Frame::onItemChange)
03008 EVT_CHECKBOX(XRCID("IDC_ITEMS_GRAPPLINGBEAM"), Frame::onItemChange)
03009
03010 EVT_CHECKBOX(XRCID("IDC_ITEMS_MORPHINGBALL_EQUIPPED"),
03011 Frame::onItemEquippedChange)
03012 EVT_CHECKBOX(XRCID("IDC_ITEMS_BOMBS_EQUIPPED"),
03013 Frame::onItemEquippedChange)
03014 EVT_CHECKBOX(XRCID("IDC_ITEMS_SPRINGBALL_EQUIPPED"),
03015 Frame::onItemEquippedChange)
03016 EVT_CHECKBOX(XRCID("IDC_ITEMS_SCREWATTACK_EQUIPPED"),
03017 Frame::onItemEquippedChange)
03018 EVT_CHECKBOX(XRCID("IDC_ITEMS_VARIASUIT_EQUIPPED"),
03019 Frame::onItemEquippedChange)
03020 EVT_CHECKBOX(XRCID("IDC_ITEMS_GRAVITYSUIT_EQUIPPED"),
03021 Frame::onItemEquippedChange)
03022 EVT_CHECKBOX(XRCID("IDC_ITEMS_HJBOOTS_EQUIPPED"),
03023 Frame::onItemEquippedChange)
03024 EVT_CHECKBOX(XRCID("IDC_ITEMS_SPACEJUMP_EQUIPPED"),
03025 Frame::onItemEquippedChange)
03026 EVT_CHECKBOX(XRCID("IDC_ITEMS_SPEEDBOOSTER_EQUIPPED"),
03027 Frame::onItemEquippedChange)
03028 EVT_CHECKBOX(XRCID("IDC_ITEMS_CHARGEBEAM_EQUIPPED"),
03029 Frame::onItemEquippedChange)
03030 EVT_CHECKBOX(XRCID("IDC_ITEMS_ICEBEAM_EQUIPPED"),
03031 Frame::onItemEquippedChange)
03032 EVT_CHECKBOX(XRCID("IDC_ITEMS_WAVEBEAM_EQUIPPED"),
03033 Frame::onItemEquippedChange)
03034 EVT_CHECKBOX(XRCID("IDC_ITEMS_SPAZER_EQUIPPED"),
03035 Frame::onItemEquippedChange)
03036 EVT_CHECKBOX(XRCID("IDC_ITEMS_PLASMA_EQUIPPED"),
03037 Frame::onItemEquippedChange)
03038
03039 EVT_CHECKBOX(XRCID("IDC_ITEMS_ET_C1"), Frame::onEnergyTankChange)
03040 EVT_CHECKBOX(XRCID("IDC_ITEMS_ET_C2"), Frame::onEnergyTankChange)
03041 EVT_CHECKBOX(XRCID("IDC_ITEMS_ET_BS1"), Frame::onEnergyTankChange)
03042 EVT_CHECKBOX(XRCID("IDC_ITEMS_ET_BS2"), Frame::onEnergyTankChange)
03043 EVT_CHECKBOX(XRCID("IDC_ITEMS_ET_BS3"), Frame::onEnergyTankChange)
03044 EVT_CHECKBOX(XRCID("IDC_ITEMS_ET_BS4"), Frame::onEnergyTankChange)
03045 EVT_CHECKBOX(XRCID("IDC_ITEMS_ET_BS5"), Frame::onEnergyTankChange)
03046 EVT_CHECKBOX(XRCID("IDC_ITEMS_ET_NF1"), Frame::onEnergyTankChange)
03047 EVT_CHECKBOX(XRCID("IDC_ITEMS_ET_NF2"), Frame::onEnergyTankChange)
03048 EVT_CHECKBOX(XRCID("IDC_ITEMS_ET_NF3"), Frame::onEnergyTankChange)
03049 EVT_CHECKBOX(XRCID("IDC_ITEMS_ET_NF4"), Frame::onEnergyTankChange)
03050 EVT_CHECKBOX(XRCID("IDC_ITEMS_ET_WS"), Frame::onEnergyTankChange)
03051 EVT_CHECKBOX(XRCID("IDC_ITEMS_ET_M1"), Frame::onEnergyTankChange)
03052 EVT_CHECKBOX(XRCID("IDC_ITEMS_ET_M2"), Frame::onEnergyTankChange)
03053
03054 EVT_CHECKBOX(XRCID("IDC_ITEMS_RTANK_BS"), Frame::onReserveTankChange)
03055 EVT_CHECKBOX(XRCID("IDC_ITEMS_RTANK_NF"), Frame::onReserveTankChange)
03056 EVT_CHECKBOX(XRCID("IDC_ITEMS_RTANK_WS"), Frame::onReserveTankChange)
03057 EVT_CHECKBOX(XRCID("IDC_ITEMS_RTANK_M"), Frame::onReserveTankChange)
03058
03059 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_C1"), Frame::onMissilePackChange)
03060 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_C2"), Frame::onMissilePackChange)
03061 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_C3"), Frame::onMissilePackChange)
03062 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_C4"), Frame::onMissilePackChange)
03063 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_C5"), Frame::onMissilePackChange)
03064 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_C6"), Frame::onMissilePackChange)
03065 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_C7"), Frame::onMissilePackChange)
03066 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_C8"), Frame::onMissilePackChange)
03067
03068 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_BS1"), Frame::onMissilePackChange)
03069 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_BS2"), Frame::onMissilePackChange)
03070 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_BS3"), Frame::onMissilePackChange)
03071 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_BS4"), Frame::onMissilePackChange)
03072 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_BS5"), Frame::onMissilePackChange)
03073 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_BS6"), Frame::onMissilePackChange)
03074 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_BS7"), Frame::onMissilePackChange)
03075 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_BS8"), Frame::onMissilePackChange)
03076 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_BS9"), Frame::onMissilePackChange)
03077 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_BS10"), Frame::onMissilePackChange)
03078 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_BS11"), Frame::onMissilePackChange)
03079 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_BS12"), Frame::onMissilePackChange)
03080
03081 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF1"), Frame::onMissilePackChange)
03082 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF2"), Frame::onMissilePackChange)
03083 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF3"), Frame::onMissilePackChange)
03084 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF4"), Frame::onMissilePackChange)
03085 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF5"), Frame::onMissilePackChange)
03086 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF6"), Frame::onMissilePackChange)
03087 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF7"), Frame::onMissilePackChange)
03088 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF8"), Frame::onMissilePackChange)
03089 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF9"), Frame::onMissilePackChange)
03090 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF10"), Frame::onMissilePackChange)
03091 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF11"), Frame::onMissilePackChange)
03092 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF12"), Frame::onMissilePackChange)
03093 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF13"), Frame::onMissilePackChange)
03094 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF14"), Frame::onMissilePackChange)
03095 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_NF15"), Frame::onMissilePackChange)
03096
03097 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_WS1"), Frame::onMissilePackChange)
03098 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_WS2"), Frame::onMissilePackChange)
03099 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_WS3"), Frame::onMissilePackChange)
03100
03101 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_M1"), Frame::onMissilePackChange)
03102 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_M2"), Frame::onMissilePackChange)
03103 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_M3"), Frame::onMissilePackChange)
03104 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_M4"), Frame::onMissilePackChange)
03105 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_M5"), Frame::onMissilePackChange)
03106 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_M6"), Frame::onMissilePackChange)
03107 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_M7"), Frame::onMissilePackChange)
03108 EVT_CHECKBOX(XRCID("IDC_PICKUPS_MISSILE_M8"), Frame::onMissilePackChange)
03109
03110 EVT_CHECKBOX(XRCID("IDC_PICKUPS_SMISSILE_C"),
03111 Frame::onSuperMissilePackChange)
03112 EVT_CHECKBOX(XRCID("IDC_PICKUPS_SMISSILE_BS1"),
03113 Frame::onSuperMissilePackChange)
03114 EVT_CHECKBOX(XRCID("IDC_PICKUPS_SMISSILE_BS2"),
03115 Frame::onSuperMissilePackChange)
03116 EVT_CHECKBOX(XRCID("IDC_PICKUPS_SMISSILE_BS3"),
03117 Frame::onSuperMissilePackChange)
03118 EVT_CHECKBOX(XRCID("IDC_PICKUPS_SMISSILE_NF"),
03119 Frame::onSuperMissilePackChange)
03120 EVT_CHECKBOX(XRCID("IDC_PICKUPS_SMISSILE_WS1"),
03121 Frame::onSuperMissilePackChange)
03122 EVT_CHECKBOX(XRCID("IDC_PICKUPS_SMISSILE_WS2"),
03123 Frame::onSuperMissilePackChange)
03124 EVT_CHECKBOX(XRCID("IDC_PICKUPS_SMISSILE_M1"),
03125 Frame::onSuperMissilePackChange)
03126 EVT_CHECKBOX(XRCID("IDC_PICKUPS_SMISSILE_M2"),
03127 Frame::onSuperMissilePackChange)
03128 EVT_CHECKBOX(XRCID("IDC_PICKUPS_SMISSILE_M3"),
03129 Frame::onSuperMissilePackChange)
03130
03131 EVT_CHECKBOX(XRCID("IDC_PICKUPS_PBOMB_C"), Frame::onPowerBombPackChange)
03132 EVT_CHECKBOX(XRCID("IDC_PICKUPS_PBOMB_BS1"), Frame::onPowerBombPackChange)
03133 EVT_CHECKBOX(XRCID("IDC_PICKUPS_PBOMB_BS2"), Frame::onPowerBombPackChange)
03134 EVT_CHECKBOX(XRCID("IDC_PICKUPS_PBOMB_BS3"), Frame::onPowerBombPackChange)
03135 EVT_CHECKBOX(XRCID("IDC_PICKUPS_PBOMB_BS4"), Frame::onPowerBombPackChange)
03136 EVT_CHECKBOX(XRCID("IDC_PICKUPS_PBOMB_BS5"), Frame::onPowerBombPackChange)
03137 EVT_CHECKBOX(XRCID("IDC_PICKUPS_PBOMB_NF1"), Frame::onPowerBombPackChange)
03138 EVT_CHECKBOX(XRCID("IDC_PICKUPS_PBOMB_NF2"), Frame::onPowerBombPackChange)
03139 EVT_CHECKBOX(XRCID("IDC_PICKUPS_PBOMB_NF3"), Frame::onPowerBombPackChange)
03140 EVT_CHECKBOX(XRCID("IDC_PICKUPS_PBOMB_M"), Frame::onPowerBombPackChange)
03141
03142 EVT_CHECKBOX(XRCID("IDC_REDDOOR_C_MAP"), Frame::onRedDoorChange)
03143 EVT_CHECKBOX(XRCID("IDC_REDDOOR_C_BOMBS"), Frame::onRedDoorChange)
03144 EVT_CHECKBOX(XRCID("IDC_REDDOOR_C_TELEVATOR"), Frame::onRedDoorChange)
03145 EVT_CHECKBOX(XRCID("IDC_REDDOOR_BS1"), Frame::onRedDoorChange)
03146 EVT_CHECKBOX(XRCID("IDC_REDDOOR_BS2"), Frame::onRedDoorChange)
03147 EVT_CHECKBOX(XRCID("IDC_REDDOOR_BS3"), Frame::onRedDoorChange)
03148 EVT_CHECKBOX(XRCID("IDC_REDDOOR_BS4"), Frame::onRedDoorChange)
03149 EVT_CHECKBOX(XRCID("IDC_REDDOOR_BS5"), Frame::onRedDoorChange)
03150 EVT_CHECKBOX(XRCID("IDC_REDDOOR_BS6"), Frame::onRedDoorChange)
03151 EVT_CHECKBOX(XRCID("IDC_REDDOOR_BS_MAP"), Frame::onRedDoorChange)
03152 EVT_CHECKBOX(XRCID("IDC_REDDOOR_BS_RTANK"), Frame::onRedDoorChange)
03153 EVT_CHECKBOX(XRCID("IDC_REDDOOR_BS_SPORESPAWN"), Frame::onRedDoorChange)
03154 EVT_CHECKBOX(XRCID("IDC_REDDOOR_BS_XRAYSCOPE"), Frame::onRedDoorChange)
03155 EVT_CHECKBOX(XRCID("IDC_REDDOOR_NF1"), Frame::onRedDoorChange)
03156 EVT_CHECKBOX(XRCID("IDC_REDDOOR_NF2"), Frame::onRedDoorChange)
03157 EVT_CHECKBOX(XRCID("IDC_REDDOOR_NF3"), Frame::onRedDoorChange)
03158 EVT_CHECKBOX(XRCID("IDC_REDDOOR_NF4"), Frame::onRedDoorChange)
03159 EVT_CHECKBOX(XRCID("IDC_REDDOOR_NF_HJBOOTS"), Frame::onRedDoorChange)
03160 EVT_CHECKBOX(XRCID("IDC_REDDOOR_NF_SPEEDBOOSTER"), Frame::onRedDoorChange)
03161 EVT_CHECKBOX(XRCID("IDC_REDDOOR_NF_WAVEBEAM"), Frame::onRedDoorChange)
03162 EVT_CHECKBOX(XRCID("IDC_REDDOOR_WS_RTANK"), Frame::onRedDoorChange)
03163 EVT_CHECKBOX(XRCID("IDC_REDDOOR_M1"), Frame::onRedDoorChange)
03164 EVT_CHECKBOX(XRCID("IDC_REDDOOR_M2"), Frame::onRedDoorChange)
03165 EVT_CHECKBOX(XRCID("IDC_REDDOOR_M3"), Frame::onRedDoorChange)
03166 EVT_CHECKBOX(XRCID("IDC_REDDOOR_M4"), Frame::onRedDoorChange)
03167 EVT_CHECKBOX(XRCID("IDC_REDDOOR_M5"), Frame::onRedDoorChange)
03168 EVT_CHECKBOX(XRCID("IDC_REDDOOR_M6"), Frame::onRedDoorChange)
03169 EVT_CHECKBOX(XRCID("IDC_REDDOOR_M_MAP"), Frame::onRedDoorChange)
03170 EVT_CHECKBOX(XRCID("IDC_REDDOOR_T1"), Frame::onRedDoorChange)
03171 EVT_CHECKBOX(XRCID("IDC_REDDOOR_T_MB"), Frame::onRedDoorChange)
03172
03173 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_C1"), Frame::onGreenDoorChange)
03174 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_C_WS"), Frame::onGreenDoorChange)
03175 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_BS1"), Frame::onGreenDoorChange)
03176 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_BS2"), Frame::onGreenDoorChange)
03177 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_BS3"), Frame::onGreenDoorChange)
03178 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_BS4"), Frame::onGreenDoorChange)
03179 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_BS5"), Frame::onGreenDoorChange)
03180 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_BS6"), Frame::onGreenDoorChange)
03181 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_BS7"), Frame::onGreenDoorChange)
03182 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_BS8"), Frame::onGreenDoorChange)
03183 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_BS_SPAZER"), Frame::onGreenDoorChange)
03184 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_BS_SPORESPAWNEXIT"),
03185 Frame::onGreenDoorChange)
03186 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_NF1"), Frame::onGreenDoorChange)
03187 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_NF2"), Frame::onGreenDoorChange)
03188 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_NF3"), Frame::onGreenDoorChange)
03189 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_NF4"), Frame::onGreenDoorChange)
03190 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_NF_ICEBEAM"), Frame::onGreenDoorChange)
03191 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_NF_SPEEDBOOSTER"),
03192 Frame::onGreenDoorChange)
03193 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_WS"), Frame::onGreenDoorChange)
03194 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_M1"), Frame::onGreenDoorChange)
03195 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_M2"), Frame::onGreenDoorChange)
03196 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_M3"), Frame::onGreenDoorChange)
03197 EVT_CHECKBOX(XRCID("IDC_GREENDOOR_M_DRAYGON"), Frame::onGreenDoorChange)
03198
03199 EVT_CHECKBOX(XRCID("IDC_YELLOWDOOR_C1"), Frame::onYellowDoorChange)
03200 EVT_CHECKBOX(XRCID("IDC_YELLOWDOOR_C2"), Frame::onYellowDoorChange)
03201 EVT_CHECKBOX(XRCID("IDC_YELLOWDOOR_C3"), Frame::onYellowDoorChange)
03202 EVT_CHECKBOX(XRCID("IDC_YELLOWDOOR_C4"), Frame::onYellowDoorChange)
03203 EVT_CHECKBOX(XRCID("IDC_YELLOWDOOR_C5"), Frame::onYellowDoorChange)
03204 EVT_CHECKBOX(XRCID("IDC_YELLOWDOOR_C6"), Frame::onYellowDoorChange)
03205 EVT_CHECKBOX(XRCID("IDC_YELLOWDOOR_BS1"), Frame::onYellowDoorChange)
03206 EVT_CHECKBOX(XRCID("IDC_YELLOWDOOR_BS2"), Frame::onYellowDoorChange)
03207 EVT_CHECKBOX(XRCID("IDC_YELLOWDOOR_BS3"), Frame::onYellowDoorChange)
03208 EVT_CHECKBOX(XRCID("IDC_YELLOWDOOR_BS_XRAYSCOPE"),
03209 Frame::onYellowDoorChange)
03210 EVT_CHECKBOX(XRCID("IDC_YELLOWDOOR_NF1"), Frame::onYellowDoorChange)
03211 EVT_CHECKBOX(XRCID("IDC_YELLOWDOOR_NF2"), Frame::onYellowDoorChange)
03212 EVT_CHECKBOX(XRCID("IDC_YELLOWDOOR_NF_MAP"), Frame::onYellowDoorChange)
03213
03214 EVT_CHECKBOX(XRCID("IDC_EYEDOOR_KRAID"), Frame::onEyeDoorChange)
03215 EVT_CHECKBOX(XRCID("IDC_EYEDOOR_PHANTOON"), Frame::onEyeDoorChange)
03216 EVT_CHECKBOX(XRCID("IDC_EYEDOOR_DRAYGON"), Frame::onEyeDoorChange)
03217 EVT_CHECKBOX(XRCID("IDC_EYEDOOR_RIDLEY"), Frame::onEyeDoorChange)
03218 EVT_CHECKBOX(XRCID("IDC_EYEDOOR_T"), Frame::onEyeDoorChange)
03219
03220 EVT_CHECKBOX(XRCID("IDC_METALDOOR_C_BOMBSEXIT"), Frame::onMetalDoorChange)
03221 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS1"), Frame::onMetalDoorChange)
03222 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS2"), Frame::onMetalDoorChange)
03223 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS3"), Frame::onMetalDoorChange)
03224 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS4"), Frame::onMetalDoorChange)
03225 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS5"), Frame::onMetalDoorChange)
03226 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS6"), Frame::onMetalDoorChange)
03227 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS7"), Frame::onMetalDoorChange)
03228 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS8"), Frame::onMetalDoorChange)
03229 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS9"), Frame::onMetalDoorChange)
03230 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS_MAPEXIT"), Frame::onMetalDoorChange)
03231 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS_OLDTLEFT"), Frame::onMetalDoorChange)
03232 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS_OLDTRIGHT"), Frame::onMetalDoorChange)
03233 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS_MINIKRAIDLEFT"),
03234 Frame::onMetalDoorChange)
03235 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS_MINIKRAIDRIGHT"),
03236 Frame::onMetalDoorChange)
03237 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS_VARIASUIT"), Frame::onMetalDoorChange)
03238 EVT_CHECKBOX(XRCID("IDC_METALDOOR_BS_KRAIDEXIT"), Frame::onMetalDoorChange)
03239 EVT_CHECKBOX(XRCID("IDC_METALDOOR_NF_HJBOOTSEXIT"),
03240 Frame::onMetalDoorChange)
03241 EVT_CHECKBOX(XRCID("IDC_METALDOOR_NF_CROCOMIREEXIT"),
03242 Frame::onMetalDoorChange)
03243 EVT_CHECKBOX(XRCID("IDC_METALDOOR_NF_SCREWATTACK"),
03244 Frame::onMetalDoorChange)
03245 EVT_CHECKBOX(XRCID("IDC_METALDOOR_NF_GOLDSPACEPIRATES"),
03246 Frame::onMetalDoorChange)
03247 EVT_CHECKBOX(XRCID("IDC_METALDOOR_NF_RIDLEYLEFT"), Frame::onMetalDoorChange)
03248 EVT_CHECKBOX(XRCID("IDC_METALDOOR_NF_RIDLEYEXIT"), Frame::onMetalDoorChange)
03249 EVT_CHECKBOX(XRCID("IDC_METALDOOR_WS1"), Frame::onMetalDoorChange)
03250 EVT_CHECKBOX(XRCID("IDC_METALDOOR_WS2"), Frame::onMetalDoorChange)
03251 EVT_CHECKBOX(XRCID("IDC_METALDOOR_WS3"), Frame::onMetalDoorChange)
03252 EVT_CHECKBOX(XRCID("IDC_METALDOOR_WS4"), Frame::onMetalDoorChange)
03253 EVT_CHECKBOX(XRCID("IDC_METALDOOR_WS_PHANTOONEXIT"),
03254 Frame::onMetalDoorChange)
03255 EVT_CHECKBOX(XRCID("IDC_METALDOOR_M1"), Frame::onMetalDoorChange)
03256 EVT_CHECKBOX(XRCID("IDC_METALDOOR_M2"), Frame::onMetalDoorChange)
03257 EVT_CHECKBOX(XRCID("IDC_METALDOOR_M_BOTWOONEXIT"), Frame::onMetalDoorChange)
03258 EVT_CHECKBOX(XRCID("IDC_METALDOOR_M_SPACEJUMP"), Frame::onMetalDoorChange)
03259 EVT_CHECKBOX(XRCID("IDC_METALDOOR_M_DRAYGONEXIT"), Frame::onMetalDoorChange)
03260 EVT_CHECKBOX(XRCID("IDC_METALDOOR_M_PLASMA"), Frame::onMetalDoorChange)
03261 EVT_CHECKBOX(XRCID("IDC_METALDOOR_M_PLASMAEXIT"), Frame::onMetalDoorChange)
03262 EVT_CHECKBOX(XRCID("IDC_METALDOOR_T1"), Frame::onMetalDoorChange)
03263 EVT_CHECKBOX(XRCID("IDC_METALDOOR_T2"), Frame::onMetalDoorChange)
03264 EVT_CHECKBOX(XRCID("IDC_METALDOOR_T3"), Frame::onMetalDoorChange)
03265 EVT_CHECKBOX(XRCID("IDC_METALDOOR_T4"), Frame::onMetalDoorChange)
03266 EVT_CHECKBOX(XRCID("IDC_METALDOOR_T5"), Frame::onMetalDoorChange)
03267
03268 EVT_CHOICE(XRCID("IDC_MISC_DASH"), Frame::onControllerChange)
03269 EVT_CHOICE(XRCID("IDC_MISC_JUMP"), Frame::onControllerChange)
03270 EVT_CHOICE(XRCID("IDC_MISC_ITEMCANCEL"), Frame::onControllerChange)
03271 EVT_CHOICE(XRCID("IDC_MISC_SHOT"), Frame::onControllerChange)
03272 EVT_CHOICE(XRCID("IDC_MISC_ANGLEUP"), Frame::onControllerChange)
03273 EVT_CHOICE(XRCID("IDC_MISC_ANGLEDOWN"), Frame::onControllerChange)
03274 EVT_CHOICE(XRCID("IDC_MISC_ITEMSELECT"), Frame::onControllerChange)
03275
03276 EVT_CLOSE(Frame::onWindowClosing)
03277
03278 EVT_MENU(wxID_OPEN, Frame::onFileOpen)
03279 EVT_MENU(wxID_CLOSE, Frame::onFileClose)
03280 EVT_MENU(wxID_SAVE, Frame::onFileSave)
03281 EVT_MENU(wxID_SAVEAS, Frame::onFileSaveAs)
03282 EVT_MENU(wxID_EXIT, Frame::onFileExit)
03283
03284 EVT_MENU(XRCID("IDM_GAME_GAMEA"), Frame::onGame)
03285 EVT_MENU(XRCID("IDM_GAME_GAMEB"), Frame::onGame)
03286 EVT_MENU(XRCID("IDM_GAME_GAMEC"), Frame::onGame)
03287
03288 EVT_MENU(XRCID("IDM_GAME_ENDING1"), Frame::onGameEnding)
03289 EVT_MENU(XRCID("IDM_GAME_ENDING2"), Frame::onGameEnding)
03290 EVT_MENU(XRCID("IDM_GAME_ENDING3"), Frame::onGameEnding)
03291
03292 EVT_MENU(XRCID("IDM_GAME_GIVE_EVERYTHING"), Frame::onGameGiveEverything)
03293
03294 EVT_MENU(XRCID("IDM_GAME_GIVE_ENERGY"), Frame::onGameGiveEnergy)
03295 EVT_MENU(XRCID("IDM_GAME_GIVE_INVENTORY"), Frame::onGameGiveInventory)
03296
03297 EVT_MENU(XRCID("IDM_GAME_GIVE_BOSSES"), Frame::onGameGiveBosses)
03298 EVT_MENU(XRCID("IDM_GAME_GIVE_MINIBOSSES"), Frame::onGameGiveMiniBosses)
03299 EVT_MENU(XRCID("IDM_GAME_GIVE_METROIDROOMS"), Frame::onGameGiveMetroidRooms)
03300 EVT_MENU(XRCID("IDM_GAME_GIVE_ZEBETITES"), Frame::onGameGiveZebetites)
03301
03302 EVT_MENU(XRCID("IDM_GAME_GIVE_MAPS"), Frame::onGameGiveMaps)
03303
03304 EVT_MENU(XRCID("IDM_GAME_GIVE_ITEMS"), Frame::onGameGiveItems)
03305
03306 EVT_MENU(XRCID("IDM_GAME_GIVE_MISSILES"), Frame::onGameGiveMissilePacks)
03307 EVT_MENU(XRCID("IDM_GAME_GIVE_SMISSILES"),
03308 Frame::onGameGiveSuperMissilePacks)
03309 EVT_MENU(XRCID("IDM_GAME_GIVE_PBOMBS"), Frame::onGameGivePowerBombPacks)
03310
03311 EVT_MENU(XRCID("IDM_GAME_GIVE_ETANKS"), Frame::onGameGiveEnergyTanks)
03312 EVT_MENU(XRCID("IDM_GAME_GIVE_RTANKS"), Frame::onGameGiveReserveTanks)
03313
03314 EVT_MENU(XRCID("IDM_GAME_GIVE_REDDOORS"), Frame::onGameGiveRedDoors)
03315 EVT_MENU(XRCID("IDM_GAME_GIVE_GREENDOORS"), Frame::onGameGiveGreenDoors)
03316 EVT_MENU(XRCID("IDM_GAME_GIVE_YELLOWDOORS"), Frame::onGameGiveYellowDoors)
03317 EVT_MENU(XRCID("IDM_GAME_GIVE_EYEDOORS"), Frame::onGameGiveEyeDoors)
03318 EVT_MENU(XRCID("IDM_GAME_GIVE_METALDOORS"), Frame::onGameGiveMetalDoors)
03319
03320 EVT_MENU(XRCID("IDM_GAME_COPYAB"), Frame::onGameCopy)
03321 EVT_MENU(XRCID("IDM_GAME_COPYAC"), Frame::onGameCopy)
03322 EVT_MENU(XRCID("IDM_GAME_COPYBA"), Frame::onGameCopy)
03323 EVT_MENU(XRCID("IDM_GAME_COPYBC"), Frame::onGameCopy)
03324 EVT_MENU(XRCID("IDM_GAME_COPYCA"), Frame::onGameCopy)
03325 EVT_MENU(XRCID("IDM_GAME_COPYCB"), Frame::onGameCopy)
03326
03327 EVT_MENU(XRCID("IDM_GAME_CLEARA"), Frame::onGameClear)
03328 EVT_MENU(XRCID("IDM_GAME_CLEARB"), Frame::onGameClear)
03329 EVT_MENU(XRCID("IDM_GAME_CLEARC"), Frame::onGameClear)
03330
03331 EVT_MENU(wxID_ABOUT, Frame::onHelpAbout)
03332
03333 EVT_RADIOBOX(XRCID("IDRB_GAME_ZEBETITES"), Frame::onZebetitesChange)
03334 EVT_RADIOBOX(XRCID("IDRB_GAME_SAVEAREA"), Frame::onSaveAreaChange)
03335
03336 EVT_RADIOBOX(XRCID("IDRB_MISC_LANGUAGE"), Frame::onMiscConfigChange)
03337 EVT_RADIOBOX(XRCID("IDRB_MISC_MOONWALK"), Frame::onMiscConfigChange)
03338 EVT_RADIOBOX(XRCID("IDRB_MISC_ICONCANCEL"), Frame::onMiscConfigChange)
03339
03340 EVT_RADIOBUTTON(XRCID("IDR_GAME_SP1"), Frame::onSavePointChange)
03341 EVT_RADIOBUTTON(XRCID("IDR_GAME_SP2"), Frame::onSavePointChange)
03342 EVT_RADIOBUTTON(XRCID("IDR_GAME_SP3"), Frame::onSavePointChange)
03343 EVT_RADIOBUTTON(XRCID("IDR_GAME_SP4"), Frame::onSavePointChange)
03344 EVT_RADIOBUTTON(XRCID("IDR_GAME_SP5"), Frame::onSavePointChange)
03345 EVT_RADIOBUTTON(XRCID("IDR_GAME_SP6"), Frame::onSavePointChange)
03346
03347 EVT_SPIN(XRCID("IDSB_GAME_MISSILES"), Frame::onMissilesSpinner)
03348 EVT_SPIN(XRCID("IDSB_GAME_SMISSILES"), Frame::onSuperMissilesSpinner)
03349 EVT_SPIN(XRCID("IDSB_GAME_PBOMBS"), Frame::onPowerBombsSpinner)
03350
03351 EVT_TEXT(XRCID("IDT_GAME_ENERGY"), Frame::onEnergyChange)
03352 EVT_TEXT(XRCID("IDT_GAME_RESERVE"), Frame::onEnergyChange)
03353
03354 EVT_TEXT(XRCID("IDT_GAME_MISSILES"), Frame::onMissilesChange)
03355 EVT_TEXT(XRCID("IDT_GAME_SMISSILES"), Frame::onSuperMissilesChange)
03356 EVT_TEXT(XRCID("IDT_GAME_PBOMBS"), Frame::onPowerBombsChange)
03357
03358 EVT_TEXT(XRCID("IDT_MISC_GAMETIME"), Frame::onGameTimeChange)
03359
03360 EVT_TIMER(ID_SBTIMER, Frame::onStatusBarTimer)
03361
03362 EVT_UPDATE_UI(wxID_CLOSE, Frame::onFileCloseUpdate)
03363 EVT_UPDATE_UI(wxID_SAVE, Frame::onFileSaveUpdate)
03364 EVT_UPDATE_UI(wxID_SAVEAS, Frame::onFileSaveUpdate)
03365
03366 EVT_UPDATE_UI(XRCID("IDM_GAME_GAMEA"), Frame::onGameUpdate)
03367 EVT_UPDATE_UI(XRCID("IDM_GAME_GAMEB"), Frame::onGameUpdate)
03368 EVT_UPDATE_UI(XRCID("IDM_GAME_GAMEC"), Frame::onGameUpdate)
03369
03370 EVT_UPDATE_UI(XRCID("IDM_GAME_ENDING"), Frame::onGameEndingUpdate)
03371 EVT_UPDATE_UI(XRCID("IDM_GAME_GIVE"), Frame::onGameGiveUpdate)
03372
03373 EVT_UPDATE_UI(XRCID("IDM_GAME_COPY"), Frame::onGameCopyUpdate)
03374 EVT_UPDATE_UI(XRCID("IDM_GAME_COPYA"), Frame::onGameCopyUpdate)
03375 EVT_UPDATE_UI(XRCID("IDM_GAME_COPYB"), Frame::onGameCopyUpdate)
03376 EVT_UPDATE_UI(XRCID("IDM_GAME_COPYC"), Frame::onGameCopyUpdate)
03377
03378 EVT_UPDATE_UI(XRCID("IDM_GAME_CLEAR"), Frame::onGameClearUpdate)
03379 EVT_UPDATE_UI(XRCID("IDM_GAME_CLEARA"), Frame::onGameClearUpdate)
03380 EVT_UPDATE_UI(XRCID("IDM_GAME_CLEARB"), Frame::onGameClearUpdate)
03381 EVT_UPDATE_UI(XRCID("IDM_GAME_CLEARC"), Frame::onGameClearUpdate)
03382
03383 EVT_UPDATE_UI(XRCID("IDN_SMSE"), Frame::onNotebookUpdate)
03384
03385 EVT_UPDATE_UI(XRCID("IDC_GAME_STATUE_KRAID"), Frame::onStatueUpdate)
03386 EVT_UPDATE_UI(XRCID("IDC_GAME_STATUE_PHANTOON"), Frame::onStatueUpdate)
03387 EVT_UPDATE_UI(XRCID("IDC_GAME_STATUE_DRAYGON"), Frame::onStatueUpdate)
03388 EVT_UPDATE_UI(XRCID("IDC_GAME_STATUE_RIDLEY"), Frame::onStatueUpdate)
03389
03390 EVT_UPDATE_UI(XRCID("IDR_GAME_SP1"), Frame::onSavePointUpdate)
03391 EVT_UPDATE_UI(XRCID("IDR_GAME_SP2"), Frame::onSavePointUpdate)
03392 EVT_UPDATE_UI(XRCID("IDR_GAME_SP3"), Frame::onSavePointUpdate)
03393 EVT_UPDATE_UI(XRCID("IDR_GAME_SP4"), Frame::onSavePointUpdate)
03394 EVT_UPDATE_UI(XRCID("IDR_GAME_SP5"), Frame::onSavePointUpdate)
03395 EVT_UPDATE_UI(XRCID("IDR_GAME_SP6"), Frame::onSavePointUpdate)
03396
03397 EVT_UPDATE_UI(XRCID("IDC_ITEMS_MORPHINGBALL_EQUIPPED"),
03398 Frame::onItemEquippedUpdate)
03399 EVT_UPDATE_UI(XRCID("IDC_ITEMS_BOMBS_EQUIPPED"),
03400 Frame::onItemEquippedUpdate)
03401 EVT_UPDATE_UI(XRCID("IDC_ITEMS_SPRINGBALL_EQUIPPED"),
03402 Frame::onItemEquippedUpdate)
03403 EVT_UPDATE_UI(XRCID("IDC_ITEMS_SCREWATTACK_EQUIPPED"),
03404 Frame::onItemEquippedUpdate)
03405 EVT_UPDATE_UI(XRCID("IDC_ITEMS_VARIASUIT_EQUIPPED"),
03406 Frame::onItemEquippedUpdate)
03407 EVT_UPDATE_UI(XRCID("IDC_ITEMS_GRAVITYSUIT_EQUIPPED"),
03408 Frame::onItemEquippedUpdate)
03409 EVT_UPDATE_UI(XRCID("IDC_ITEMS_HJBOOTS_EQUIPPED"),
03410 Frame::onItemEquippedUpdate)
03411 EVT_UPDATE_UI(XRCID("IDC_ITEMS_SPACEJUMP_EQUIPPED"),
03412 Frame::onItemEquippedUpdate)
03413 EVT_UPDATE_UI(XRCID("IDC_ITEMS_SPEEDBOOSTER_EQUIPPED"),
03414 Frame::onItemEquippedUpdate)
03415 EVT_UPDATE_UI(XRCID("IDC_ITEMS_CHARGEBEAM_EQUIPPED"),
03416 Frame::onItemEquippedUpdate)
03417 EVT_UPDATE_UI(XRCID("IDC_ITEMS_ICEBEAM_EQUIPPED"),
03418 Frame::onItemEquippedUpdate)
03419 EVT_UPDATE_UI(XRCID("IDC_ITEMS_WAVEBEAM_EQUIPPED"),
03420 Frame::onItemEquippedUpdate)
03421 EVT_UPDATE_UI(XRCID("IDC_ITEMS_SPAZER_EQUIPPED"),
03422 Frame::onItemEquippedUpdate)
03423 EVT_UPDATE_UI(XRCID("IDC_ITEMS_PLASMA_EQUIPPED"),
03424 Frame::onItemEquippedUpdate)
03425 END_EVENT_TABLE()
03426
03427 IMPLEMENT_CLASS(Frame, wxFrame)
03428