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