00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifdef HAVE_CONFIG_H
00025 #include <config.h>
00026 #endif
00027
00028 #include <wx/wxprec.h>
00029
00030 #ifndef WX_PRECOMP
00031 #include <wx/wx.h>
00032 #endif
00033
00034 #include <wx/spinctrl.h>
00035 #include <wx/xrc/xmlres.h>
00036
00037 #include "model/sramfile.hh"
00038 #include "res/icon32x32.xpm"
00039 #include "view/mainframe.hh"
00040 #include "view/sramfiletarget.hh"
00041
00042 using namespace dwsrame;
00043
00044 MainFrame::MainFrame() : sram(0), enableEvents(true) {
00045 SetParent(NULL);
00046
00047 loadXRC();
00048 GetSizer()->SetSizeHints(this);
00049 Centre();
00050
00051
00052 SetDropTarget(new SRAMFileTarget(this));
00053
00054
00055 wxTextValidator validator(wxFILTER_INCLUDE_CHAR_LIST);
00056 wxArrayString letters;
00057
00058 letters.Add(wxT("0")); letters.Add(wxT("1")); letters.Add(wxT("2"));
00059 letters.Add(wxT("3")); letters.Add(wxT("4")); letters.Add(wxT("5"));
00060 letters.Add(wxT("6")); letters.Add(wxT("7")); letters.Add(wxT("8"));
00061 letters.Add(wxT("9"));
00062
00063 validator.SetIncludes(letters);
00064
00065 XRCCTRL(*this, "IDT_HERO_HP", wxTextCtrl)->SetValidator(validator);
00066 XRCCTRL(*this, "IDT_HERO_MP", wxTextCtrl)->SetValidator(validator);
00067 XRCCTRL(*this, "IDT_HERO_EXP", wxTextCtrl)->SetValidator(validator);
00068 XRCCTRL(*this, "IDT_HERO_GOLD", wxTextCtrl)->SetValidator(validator);
00069 XRCCTRL(*this, "IDS_HERO_HERBS", wxTextCtrl)->SetValidator(validator);
00070 XRCCTRL(*this, "IDS_HERO_KEYS", wxTextCtrl)->SetValidator(validator);
00071
00072 letters.Add(wxT("a")); letters.Add(wxT("b")); letters.Add(wxT("c"));
00073 letters.Add(wxT("d")); letters.Add(wxT("e")); letters.Add(wxT("f"));
00074 letters.Add(wxT("g")); letters.Add(wxT("h")); letters.Add(wxT("i"));
00075 letters.Add(wxT("j")); letters.Add(wxT("k")); letters.Add(wxT("l"));
00076 letters.Add(wxT("m")); letters.Add(wxT("n")); letters.Add(wxT("o"));
00077 letters.Add(wxT("p")); letters.Add(wxT("q")); letters.Add(wxT("r"));
00078 letters.Add(wxT("s")); letters.Add(wxT("t")); letters.Add(wxT("u"));
00079 letters.Add(wxT("v")); letters.Add(wxT("w")); letters.Add(wxT("x"));
00080 letters.Add(wxT("y")); letters.Add(wxT("z")); letters.Add(wxT("A"));
00081 letters.Add(wxT("B")); letters.Add(wxT("C")); letters.Add(wxT("D"));
00082 letters.Add(wxT("E")); letters.Add(wxT("F")); letters.Add(wxT("G"));
00083 letters.Add(wxT("H")); letters.Add(wxT("I")); letters.Add(wxT("J"));
00084 letters.Add(wxT("K")); letters.Add(wxT("L")); letters.Add(wxT("M"));
00085 letters.Add(wxT("N")); letters.Add(wxT("O")); letters.Add(wxT("P"));
00086 letters.Add(wxT("Q")); letters.Add(wxT("R")); letters.Add(wxT("S"));
00087 letters.Add(wxT("T")); letters.Add(wxT("U")); letters.Add(wxT("V"));
00088 letters.Add(wxT("W")); letters.Add(wxT("X")); letters.Add(wxT("Y"));
00089 letters.Add(wxT("Z")); letters.Add(wxT("-")); letters.Add(wxT("'"));
00090 letters.Add(wxT("!")); letters.Add(wxT("?")); letters.Add(wxT("("));
00091 letters.Add(wxT(")")); letters.Add(wxT(" ")); letters.Add(wxT(","));
00092 letters.Add(wxT("."));
00093
00094 validator.SetIncludes(letters);
00095 XRCCTRL(*this, "IDT_HERO_NAME", wxTextCtrl)->SetValidator(validator);
00096
00097
00098 XRCCTRL(*this, "IDN_DWSRAME", wxNotebook)->Show(false);
00099 }
00100
00101 bool MainFrame::closeSRAM() {
00102 if (sram) {
00103 if (sram->isModified()) {
00104 int answer = wxMessageBox(wxT("Save file before closing?"),
00105 wxT("Warning: SRAM Modified"),
00106 wxYES_NO | wxCANCEL | wxICON_QUESTION, this);
00107
00108 if (answer == wxYES) {
00109 if (!saveSRAM()) {
00110 return false;
00111 }
00112 } else if (answer == wxCANCEL) {
00113 return false;
00114 }
00115 }
00116
00117 delete sram;
00118 sram = 0;
00119 }
00120
00121 XRCCTRL(*this, "IDN_DWSRAME", wxNotebook)->Show(false);
00122
00123 return true;
00124 }
00125
00126 void MainFrame::loadGame(int game) {
00127 wxASSERT(sram);
00128 wxASSERT(sram->isValid(game));
00129
00130 sram->setGame(game);
00131
00132
00133 enableEvents = false;
00134
00135
00136 XRCCTRL(*this, "IDT_HERO_NAME", wxTextCtrl)->SetValue(sram->getName());
00137 XRCCTRL(*this, "IDT_HERO_HP", wxTextCtrl)->
00138 SetValue(wxString::Format("%u", sram->getHP()));
00139 XRCCTRL(*this, "IDT_HERO_MP", wxTextCtrl)->
00140 SetValue(wxString::Format("%u", sram->getMP()));
00141 XRCCTRL(*this, "IDT_HERO_EXP", wxTextCtrl)->
00142 SetValue(wxString::Format("%u", sram->getExperience()));
00143 XRCCTRL(*this, "IDT_HERO_GOLD", wxTextCtrl)->
00144 SetValue(wxString::Format("%u", sram->getGold()));
00145
00146
00147 XRCCTRL(*this, "IDS_HERO_HERBS", wxSpinCtrl)->SetValue(sram->getHerbs());
00148 XRCCTRL(*this, "IDS_HERO_KEYS", wxSpinCtrl)->SetValue(sram->getKeys());
00149
00150 XRCCTRL(*this, "IDC_HERO_INVENTORY1", wxChoice)->
00151 SetSelection(sram->getItem(0));
00152 XRCCTRL(*this, "IDC_HERO_INVENTORY2", wxChoice)->
00153 SetSelection(sram->getItem(1));
00154 XRCCTRL(*this, "IDC_HERO_INVENTORY3", wxChoice)->
00155 SetSelection(sram->getItem(2));
00156 XRCCTRL(*this, "IDC_HERO_INVENTORY4", wxChoice)->
00157 SetSelection(sram->getItem(3));
00158 XRCCTRL(*this, "IDC_HERO_INVENTORY5", wxChoice)->
00159 SetSelection(sram->getItem(4));
00160 XRCCTRL(*this, "IDC_HERO_INVENTORY6", wxChoice)->
00161 SetSelection(sram->getItem(5));
00162 XRCCTRL(*this, "IDC_HERO_INVENTORY7", wxChoice)->
00163 SetSelection(sram->getItem(6));
00164 XRCCTRL(*this, "IDC_HERO_INVENTORY8", wxChoice)->
00165 SetSelection(sram->getItem(7));
00166
00167
00168 XRCCTRL(*this, "IDC_HERO_WEAPON", wxChoice)->
00169 SetSelection(sram->getWeapon() / 0x20);
00170 XRCCTRL(*this, "IDC_HERO_ARMOR", wxChoice)->
00171 SetSelection(sram->getArmor() / 0x4);
00172 XRCCTRL(*this, "IDC_HERO_SHIELD", wxChoice)->
00173 SetSelection(sram->getShield());
00174
00175 XRCCTRL(*this, "IDN_DWSRAME", wxNotebook)->Show(true);
00176
00177
00178 XRCCTRL(*this, "IDC_QUEST_LORIKSCHAMBER", wxCheckBox)->
00179 SetValue(sram->getQuestMarker(DW_LORIKSCHAMBER));
00180
00181 XRCCTRL(*this, "IDC_QUEST_DRAGONSSCALE", wxCheckBox)->
00182 SetValue(sram->getQuestMarker(DW_USINGDRAGONSSCALE));
00183 XRCCTRL(*this, "IDC_QUEST_FIGHTERSRING", wxCheckBox)->
00184 SetValue(sram->getQuestMarker(DW_USINGFIGHTERSRING));
00185 XRCCTRL(*this, "IDC_QUEST_CURSEDBELT", wxCheckBox)->
00186 SetValue(sram->getQuestMarker(DW_USINGCURSEDBELT));
00187 XRCCTRL(*this, "IDC_QUEST_DEATHNECKLACE", wxCheckBox)->
00188 SetValue(sram->getQuestMarker(DW_USINGDEATHNECKLACE));
00189
00190 if (sram->getQuestMarker(DW_GWAELINONTHRONE)) {
00191 XRCCTRL(*this, "IDC_QUEST_GWAELIN", wxChoice)->SetSelection(2);
00192 } else if (sram->getQuestMarker(DW_HOLDINGGWAELIN)) {
00193 XRCCTRL(*this, "IDC_QUEST_GWAELIN", wxChoice)->SetSelection(1);
00194 } else {
00195 XRCCTRL(*this, "IDC_QUEST_GWAELIN", wxChoice)->SetSelection(0);
00196 }
00197
00198 XRCCTRL(*this, "IDC_QUEST_RAINBOWBRIDGE", wxCheckBox)->
00199 SetValue(sram->getQuestMarker(DW_RAINBOWBRIDGE));
00200 XRCCTRL(*this, "IDC_QUEST_HIDDENSTAIRS", wxCheckBox)->
00201 SetValue(sram->getQuestMarker(DW_HIDDENSTAIRS));
00202
00203 XRCCTRL(*this, "IDC_QUEST_GREENDRAGON", wxCheckBox)->
00204 SetValue(sram->getQuestMarker(DW_GREENDRAGONDEAD));
00205 XRCCTRL(*this, "IDC_QUEST_GOLEM", wxCheckBox)->
00206 SetValue(sram->getQuestMarker(DW_GOLEMDEAD));
00207 XRCCTRL(*this, "IDC_QUEST_DRAGONLORD", wxCheckBox)->
00208 SetValue(sram->getQuestMarker(DW_DRAGONLORDDEAD));
00209
00210
00211 enableEvents = true;
00212 }
00213
00214 void MainFrame::loadXRC() {
00215 wxXmlResource::Get()->LoadFrame(this, GetParent(), wxT("IDF_DWSRAME"));
00216 SetIcon(wxIcon(icon32x32_xpm));
00217 }
00218
00219 void MainFrame::openSRAM(const wxString &filename) {
00220 if (!closeSRAM()) {
00221 return;
00222 }
00223
00224 try {
00225 sram = new SRAMFile(filename);
00226 sramFile = filename;
00227
00228 if (sram->isValid(0)) {
00229 GetMenuBar()->FindItem(XRCID("IDM_GAME_GAME1"))->Check(true);
00230 loadGame(0);
00231 } else if (sram->isValid(1)) {
00232 GetMenuBar()->FindItem(XRCID("IDM_GAME_GAME2"))->Check(true);
00233 loadGame(1);
00234 } else {
00235 GetMenuBar()->FindItem(XRCID("IDM_GAME_GAME3"))->Check(true);
00236 loadGame(2);
00237 }
00238 } catch (InvalidSRAMFileException &e) {
00239 wxString error;
00240
00241 switch (e.getError()) {
00242 case ISFE_FILENOTFOUND:
00243 error = wxT("File Not Found");
00244 break;
00245 case ISFE_INVALIDSIZE:
00246 error = wxT("Invalid SRAM File Size");
00247 break;
00248 case ISFE_NOVALIDGAMES:
00249 error = wxT("No Games Exist");
00250 break;
00251 }
00252
00253 wxMessageBox(error,
00254 wxT("Error: Invalid SRAM file"),
00255 wxOK | wxICON_ERROR);
00256 }
00257 }
00258
00259 bool MainFrame::saveSRAM() {
00260 wxASSERT(sram);
00261
00262 if (!hasValidData()) {
00263 return false;
00264 }
00265
00266 if (!sram->save(sramFile)) {
00267 wxMessageBox(wxT("Unable to save SRAM file"),
00268 wxT("File I/O Error"), wxOK | wxICON_ERROR);
00269
00270 return false;
00271 }
00272
00273 return true;
00274 }
00275
00276 bool MainFrame::hasValidData() {
00277 wxString string;
00278 long number = 0;
00279
00280 XRCCTRL(*this, "IDT_HERO_HP", wxTextCtrl)->GetValue().ToLong(&number);
00281
00282 if ((number < 0) || (number > 255)) {
00283 wxMessageBox(wxT("Hero's HP must be in the range 0-255"),
00284 wxT("Invalid HP"), wxOK | wxICON_ERROR);
00285
00286 return false;
00287 }
00288
00289 XRCCTRL(*this, "IDT_HERO_MP", wxTextCtrl)->GetValue().ToLong(&number);
00290
00291 if ((number < 0) || (number > 255)) {
00292 wxMessageBox(wxT("Hero's MP must be in the range 0-255"),
00293 wxT("Invalid MP"), wxOK | wxICON_ERROR);
00294
00295 return false;
00296 }
00297
00298 XRCCTRL(*this, "IDT_HERO_GOLD", wxTextCtrl)->GetValue().ToLong(&number);
00299
00300 if ((number < 0) || (number > 65535)) {
00301 wxMessageBox(wxT("Hero's Gold must be in the range 0-65535"),
00302 wxT("Invalid Gold"), wxOK | wxICON_ERROR);
00303
00304 return false;
00305 }
00306
00307 XRCCTRL(*this, "IDT_HERO_EXP", wxTextCtrl)->GetValue().ToLong(&number);
00308
00309 if ((number < 0) || (number > 65535)) {
00310 wxMessageBox(wxT("Hero's Experience must be in the range 0-65535"),
00311 wxT("Invalid Experience"), wxOK | wxICON_ERROR);
00312
00313 return false;
00314 }
00315
00316
00317
00318 return true;
00319 }
00320
00321 void MainFrame::onArmorChange(wxCommandEvent &) {
00322 sram->setArmor(static_cast<enum dw_armor>
00323 (XRCCTRL(*this, "IDC_HERO_ARMOR", wxChoice)->GetSelection() * 0x4));
00324 }
00325
00326 void MainFrame::onClose(wxCloseEvent &event) {
00327 if (event.CanVeto()) {
00328 if (!closeSRAM()) {
00329 event.Veto();
00330 return;
00331 }
00332 }
00333
00334 Destroy();
00335 }
00336
00337 void MainFrame::onExperienceEdit(wxCommandEvent &) {
00338 if (!enableEvents) {
00339 return;
00340 }
00341
00342 long temp;
00343
00344 if (XRCCTRL(*this, "IDT_HERO_EXP", wxTextCtrl)->GetValue().ToLong(&temp)) {
00345 sram->setExperience(temp);
00346 }
00347 }
00348
00349 void MainFrame::onFileMenuUpdate(wxUpdateUIEvent &event) {
00350 if (sram) {
00351 if (event.GetId() == wxID_SAVE) {
00352 event.Enable(sram->isModified());
00353 } else {
00354 event.Enable(true);
00355 }
00356 } else {
00357 event.Enable(false);
00358 }
00359 }
00360
00361 void MainFrame::onFileOpen(wxCommandEvent &) {
00362 wxFileDialog dlg(this, wxT("Select a Dragon Warrior (NES) SRAM file"),
00363 wxEmptyString, wxEmptyString,
00364 wxT("SRAM Files (*.sav)|*.sav"), wxOPEN);
00365
00366 if (dlg.ShowModal() == wxID_OK) {
00367 openSRAM(dlg.GetPath());
00368 }
00369 }
00370
00371 void MainFrame::onFileSaveAs(wxCommandEvent &) {
00372 wxFileDialog dlg(this, wxT("Select a filename"),
00373 wxEmptyString, wxEmptyString,
00374 wxT("SRAM Files (*.sav)|*.sav"),
00375 wxSAVE | wxOVERWRITE_PROMPT);
00376
00377 if (dlg.ShowModal() == wxID_OK) {
00378 sramFile = dlg.GetPath();
00379 saveSRAM();
00380 }
00381 }
00382
00383 void MainFrame::onGameMenuUpdate(wxUpdateUIEvent &event) {
00384 if (sram) {
00385 if (event.GetId() == XRCID("IDM_GAME_GAME1")) {
00386 event.Enable(sram->isValid(0));
00387 } else if (event.GetId() == XRCID("IDM_GAME_GAME2")) {
00388 event.Enable(sram->isValid(1));
00389 } else {
00390 wxASSERT(event.GetId() == XRCID("IDM_GAME_GAME3"));
00391
00392 event.Enable(sram->isValid(2));
00393 }
00394 } else {
00395 event.Enable(false);
00396 }
00397 }
00398
00399 void MainFrame::onGameSelect(wxCommandEvent &event) {
00400 if (event.GetId() == XRCID("IDM_GAME_GAME1")) {
00401 loadGame(0);
00402 } else if (event.GetId() == XRCID("IDM_GAME_GAME2")) {
00403 loadGame(1);
00404 } else {
00405 wxASSERT(event.GetId() == XRCID("IDM_GAME_GAME3"));
00406
00407 loadGame(2);
00408 }
00409 }
00410
00411 void MainFrame::onGoldEdit(wxCommandEvent &) {
00412 if (!enableEvents) {
00413 return;
00414 }
00415
00416 long temp;
00417
00418 if (XRCCTRL(*this, "IDT_HERO_GOLD", wxTextCtrl)->GetValue().ToLong(&temp)) {
00419 sram->setGold(temp);
00420 }
00421 }
00422
00423 void MainFrame::onGwaelinChange(wxCommandEvent &) {
00424 int value = XRCCTRL(*this, "IDC_QUEST_GWAELIN", wxChoice)->GetSelection();
00425
00426 switch (value) {
00427 case 0:
00428 sram->setQuestMarker(DW_HOLDINGGWAELIN, false);
00429 sram->setQuestMarker(DW_GWAELINONTHRONE, false);
00430 break;
00431
00432 case 1:
00433 sram->setQuestMarker(DW_HOLDINGGWAELIN, true);
00434 sram->setQuestMarker(DW_GWAELINONTHRONE, false);
00435 break;
00436
00437 case 2:
00438 sram->setQuestMarker(DW_HOLDINGGWAELIN, false);
00439 sram->setQuestMarker(DW_GWAELINONTHRONE, true);
00440 break;
00441 }
00442 }
00443
00444 void MainFrame::onHelpAbout(wxCommandEvent &) {
00445 wxMessageBox(wxT("dwsrame 0.90 - Dragon Warrior SRAM Editor\n"
00446 "Copyright (C) 2006-2007 emuWorks\n"
00447 "http://games.technoplaza.net/"),
00448 wxT("About dwsrame..."), wxOK | wxICON_INFORMATION);
00449 }
00450
00451 void MainFrame::onHerbsEdit(wxCommandEvent &) {
00452 if (!enableEvents) {
00453 return;
00454 }
00455
00456 sram->setHerbs(XRCCTRL(*this, "IDS_HERO_HERBS", wxSpinCtrl)->GetValue());
00457 }
00458
00459 void MainFrame::onHPEdit(wxCommandEvent &) {
00460 if (!enableEvents) {
00461 return;
00462 }
00463
00464 long temp;
00465
00466 if (XRCCTRL(*this, "IDT_HERO_HP", wxTextCtrl)->GetValue().ToLong(&temp)) {
00467 sram->setHP(temp);
00468 }
00469 }
00470
00471 void MainFrame::onInventoryChange(wxCommandEvent &event) {
00472 int item;
00473
00474 if (event.GetId() == XRCID("IDC_HERO_INVENTORY1")) {
00475 item = 0;
00476 } else if (event.GetId() == XRCID("IDC_HERO_INVENTORY2")) {
00477 item = 1;
00478 } else if (event.GetId() == XRCID("IDC_HERO_INVENTORY3")) {
00479 item = 2;
00480 } else if (event.GetId() == XRCID("IDC_HERO_INVENTORY4")) {
00481 item = 3;
00482 } else if (event.GetId() == XRCID("IDC_HERO_INVENTORY5")) {
00483 item = 4;
00484 } else if (event.GetId() == XRCID("IDC_HERO_INVENTORY6")) {
00485 item = 5;
00486 } else if (event.GetId() == XRCID("IDC_HERO_INVENTORY7")) {
00487 item = 6;
00488 } else {
00489 wxASSERT(event.GetId() == XRCID("IDC_HERO_INVENTORY8"));
00490
00491 item = 7;
00492 }
00493
00494 sram->setItem(static_cast<enum dw_item>(event.GetSelection()), item);
00495 }
00496
00497 void MainFrame::onKeysEdit(wxCommandEvent &) {
00498 if (!enableEvents) {
00499 return;
00500 }
00501
00502 sram->setKeys(XRCCTRL(*this, "IDS_HERO_KEYS", wxSpinCtrl)->GetValue());
00503 }
00504
00505 void MainFrame::onMPEdit(wxCommandEvent &) {
00506 if (!enableEvents) {
00507 return;
00508 }
00509
00510 long temp;
00511
00512 if (XRCCTRL(*this, "IDT_HERO_MP", wxTextCtrl)->GetValue().ToLong(&temp)) {
00513 sram->setMP(temp);
00514 }
00515 }
00516
00517 void MainFrame::onNameEdit(wxCommandEvent &) {
00518 if (!enableEvents) {
00519 return;
00520 }
00521
00522 sram->setName(XRCCTRL(*this, "IDT_HERO_NAME", wxTextCtrl)->GetValue());
00523 }
00524
00525 void MainFrame::onQuestMarkerChange(wxCommandEvent &event) {
00526 enum dw_quest marker;
00527
00528 if (event.GetId() == XRCID("IDC_QUEST_LORIKSCHAMBER")) {
00529 marker = DW_LORIKSCHAMBER;
00530 } else if (event.GetId() == XRCID("IDC_QUEST_DRAGONSSCALE")) {
00531 marker = DW_USINGDRAGONSSCALE;
00532 } else if (event.GetId() == XRCID("IDC_QUEST_FIGHTERSRING")) {
00533 marker = DW_USINGFIGHTERSRING;
00534 } else if (event.GetId() == XRCID("IDC_QUEST_CURSEDBELT")) {
00535 marker = DW_USINGCURSEDBELT;
00536 } else if (event.GetId() == XRCID("IDC_QUEST_DEATHNECKLACE")) {
00537 marker = DW_USINGDEATHNECKLACE;
00538 } else if (event.GetId() == XRCID("IDC_QUEST_RAINBOWBRIDGE")) {
00539 marker = DW_RAINBOWBRIDGE;
00540 } else if (event.GetId() == XRCID("IDC_QUEST_HIDDENSTAIRS")) {
00541 marker = DW_HIDDENSTAIRS;
00542 } else if (event.GetId() == XRCID("IDC_QUEST_GREENDRAGON")) {
00543 marker = DW_GREENDRAGONDEAD;
00544 } else if (event.GetId() == XRCID("IDC_QUEST_GOLEM")) {
00545 marker = DW_GOLEMDEAD;
00546 } else {
00547 wxASSERT(event.GetId() == XRCID("IDC_QUEST_DRAGONLORD"));
00548
00549 marker = DW_DRAGONLORDDEAD;
00550 }
00551
00552 sram->setQuestMarker(marker, event.IsChecked());
00553 }
00554
00555 void MainFrame::onShieldChange(wxCommandEvent &) {
00556 sram->setShield(static_cast<enum dw_shield>
00557 (XRCCTRL(*this, "IDC_HERO_SHIELD", wxChoice)->GetSelection()));
00558 }
00559
00560 void MainFrame::onWeaponChange(wxCommandEvent &) {
00561 sram->setWeapon(static_cast<enum dw_weapon>
00562 (XRCCTRL(*this, "IDC_HERO_WEAPON", wxChoice)->GetSelection() * 0x20));
00563 }
00564
00565 IMPLEMENT_CLASS(MainFrame, wxFrame)
00566
00567 BEGIN_EVENT_TABLE(MainFrame, wxFrame)
00568 EVT_CHECKBOX(XRCID("IDC_QUEST_LORIKSCHAMBER"),
00569 MainFrame::onQuestMarkerChange)
00570 EVT_CHECKBOX(XRCID("IDC_QUEST_DRAGONSSCALE"),
00571 MainFrame::onQuestMarkerChange)
00572 EVT_CHECKBOX(XRCID("IDC_QUEST_FIGHTERSRING"),
00573 MainFrame::onQuestMarkerChange)
00574 EVT_CHECKBOX(XRCID("IDC_QUEST_CURSEDBELT"),
00575 MainFrame::onQuestMarkerChange)
00576 EVT_CHECKBOX(XRCID("IDC_QUEST_DEATHNECKLACE"),
00577 MainFrame::onQuestMarkerChange)
00578 EVT_CHECKBOX(XRCID("IDC_QUEST_RAINBOWBRIDGE"),
00579 MainFrame::onQuestMarkerChange)
00580 EVT_CHECKBOX(XRCID("IDC_QUEST_HIDDENSTAIRS"),
00581 MainFrame::onQuestMarkerChange)
00582 EVT_CHECKBOX(XRCID("IDC_QUEST_GREENDRAGON"),
00583 MainFrame::onQuestMarkerChange)
00584 EVT_CHECKBOX(XRCID("IDC_QUEST_GOLEM"),
00585 MainFrame::onQuestMarkerChange)
00586 EVT_CHECKBOX(XRCID("IDC_QUEST_DRAGONLORD"),
00587 MainFrame::onQuestMarkerChange)
00588
00589 EVT_CHOICE(XRCID("IDC_HERO_INVENTORY1"), MainFrame::onInventoryChange)
00590 EVT_CHOICE(XRCID("IDC_HERO_INVENTORY2"), MainFrame::onInventoryChange)
00591 EVT_CHOICE(XRCID("IDC_HERO_INVENTORY3"), MainFrame::onInventoryChange)
00592 EVT_CHOICE(XRCID("IDC_HERO_INVENTORY4"), MainFrame::onInventoryChange)
00593 EVT_CHOICE(XRCID("IDC_HERO_INVENTORY5"), MainFrame::onInventoryChange)
00594 EVT_CHOICE(XRCID("IDC_HERO_INVENTORY6"), MainFrame::onInventoryChange)
00595 EVT_CHOICE(XRCID("IDC_HERO_INVENTORY7"), MainFrame::onInventoryChange)
00596 EVT_CHOICE(XRCID("IDC_HERO_INVENTORY8"), MainFrame::onInventoryChange)
00597
00598 EVT_CHOICE(XRCID("IDC_HERO_WEAPON"), MainFrame::onWeaponChange)
00599 EVT_CHOICE(XRCID("IDC_HERO_ARMOR"), MainFrame::onArmorChange)
00600 EVT_CHOICE(XRCID("IDC_HERO_SHIELD"), MainFrame::onShieldChange)
00601
00602 EVT_CHOICE(XRCID("IDC_QUEST_GWAELIN"), MainFrame::onGwaelinChange)
00603
00604 EVT_CLOSE(MainFrame::onClose)
00605
00606 EVT_MENU(wxID_OPEN, MainFrame::onFileOpen)
00607 EVT_MENU(wxID_CLOSE, MainFrame::onFileClose)
00608 EVT_MENU(wxID_SAVE, MainFrame::onFileSave)
00609 EVT_MENU(wxID_SAVEAS, MainFrame::onFileSaveAs)
00610 EVT_MENU(wxID_EXIT, MainFrame::onFileExit)
00611
00612 EVT_MENU(XRCID("IDM_GAME_GAME1"), MainFrame::onGameSelect)
00613 EVT_MENU(XRCID("IDM_GAME_GAME2"), MainFrame::onGameSelect)
00614 EVT_MENU(XRCID("IDM_GAME_GAME3"), MainFrame::onGameSelect)
00615
00616 EVT_MENU(wxID_ABOUT, MainFrame::onHelpAbout)
00617
00618 EVT_TEXT(XRCID("IDT_HERO_NAME"), MainFrame::onNameEdit)
00619 EVT_TEXT(XRCID("IDT_HERO_HP"), MainFrame::onHPEdit)
00620 EVT_TEXT(XRCID("IDT_HERO_MP"), MainFrame::onMPEdit)
00621 EVT_TEXT(XRCID("IDT_HERO_EXP"), MainFrame::onExperienceEdit)
00622 EVT_TEXT(XRCID("IDT_HERO_GOLD"), MainFrame::onGoldEdit)
00623
00624 EVT_TEXT(XRCID("IDS_HERO_HERBS"), MainFrame::onHerbsEdit)
00625 EVT_TEXT(XRCID("IDS_HERO_KEYS"), MainFrame::onKeysEdit)
00626
00627 EVT_UPDATE_UI(wxID_CLOSE, MainFrame::onFileMenuUpdate)
00628 EVT_UPDATE_UI(wxID_SAVE, MainFrame::onFileMenuUpdate)
00629 EVT_UPDATE_UI(wxID_SAVEAS, MainFrame::onFileMenuUpdate)
00630
00631 EVT_UPDATE_UI(XRCID("IDM_GAME_GAME1"), MainFrame::onGameMenuUpdate)
00632 EVT_UPDATE_UI(XRCID("IDM_GAME_GAME2"), MainFrame::onGameMenuUpdate)
00633 EVT_UPDATE_UI(XRCID("IDM_GAME_GAME3"), MainFrame::onGameMenuUpdate)
00634 END_EVENT_TABLE()
00635