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