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