diff options
author | Björn Steinbrink <B.Steinbrink@gmx.de> | 2006-02-01 10:32:43 +0000 |
---|---|---|
committer | Björn Steinbrink <B.Steinbrink@gmx.de> | 2006-02-01 10:32:43 +0000 |
commit | 6bff53b318937999a70d775bb6ecea2b18576e0f (patch) | |
tree | 66092571b605344a34c7360bccda50e86bc90b30 /src/gui | |
parent | 0e6385c12f325fa77ad57eba9b578de10d505ff7 (diff) | |
download | mana-6bff53b318937999a70d775bb6ecea2b18576e0f.tar.gz mana-6bff53b318937999a70d775bb6ecea2b18576e0f.tar.bz2 mana-6bff53b318937999a70d775bb6ecea2b18576e0f.tar.xz mana-6bff53b318937999a70d775bb6ecea2b18576e0f.zip |
Simplified button creation code in some windows. Fixed a bug where the game crashes if there's a message dialog from a npc that no longer exists. Reverted properties to private.
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/buysell.cpp | 47 | ||||
-rw-r--r-- | src/gui/menuwindow.cpp | 51 | ||||
-rw-r--r-- | src/gui/npc_text.cpp | 3 |
3 files changed, 37 insertions, 64 deletions
diff --git a/src/gui/buysell.cpp b/src/gui/buysell.cpp index 6547a849..f443e237 100644 --- a/src/gui/buysell.cpp +++ b/src/gui/buysell.cpp @@ -30,42 +30,35 @@ BuySellDialog::BuySellDialog(): Window("Shop") { - gcn::Button *buyButton = new Button("Buy"); - gcn::Button *sellButton = new Button("Sell"); - gcn::Button *cancelButton = new Button("Cancel"); + Button *buyButton = 0; + char *buttonNames[] = { + "Buy", "Sell", "Cancel", 0 + }; + int x = 10, y = 10, h; - buyButton->setPosition(10, 10); - sellButton->setPosition( - buyButton->getX() + buyButton->getWidth() + 10, 10); - cancelButton->setPosition( - sellButton->getX() + sellButton->getWidth() + 10, 10); - setContentSize(cancelButton->getX() + cancelButton->getWidth() + 10, - cancelButton->getY() + cancelButton->getHeight() + 10); - - buyButton->setEventId("buy"); - sellButton->setEventId("sell"); - cancelButton->setEventId("cancel"); - - buyButton->addActionListener(this); - sellButton->addActionListener(this); - cancelButton->addActionListener(this); - - add(buyButton); - add(sellButton); - add(cancelButton); + for (char **curBtn = buttonNames; *curBtn; curBtn++) + { + Button *btn = new Button(*curBtn); + if (!buyButton) buyButton = btn; // For focus request + btn->setEventId(*curBtn); + btn->addActionListener(this); + btn->setPosition(x, y); + add(btn); + x += btn->getWidth() + 10; + } + buyButton->requestFocus(); + setContentSize(x, 2 * y + buyButton->getHeight()); setLocationRelativeTo(getParent()); - buyButton->requestFocus(); } void BuySellDialog::action(const std::string& eventId) { - if (eventId == "buy") { + if (eventId == "Buy") { current_npc->buy(); - } - else if (eventId == "sell") { + } else if (eventId == "Sell") { current_npc->sell(); - } else if (eventId == "cancel") { + } else if (eventId == "Cancel") { current_npc = 0; } setVisible(false); diff --git a/src/gui/menuwindow.cpp b/src/gui/menuwindow.cpp index ed32f61d..b243cd57 100644 --- a/src/gui/menuwindow.cpp +++ b/src/gui/menuwindow.cpp @@ -53,43 +53,22 @@ MenuWindow::MenuWindow(): // Buttons // ------------ - gcn::Button *statusButton, *equipmentButton, *skillsButton, - *inventoryButton, *setupButton; - - statusButton = new Button("Status"); - statusButton->setEventId("Status"); - statusButton->addActionListener(&menuWindowListener); - statusButton->setPosition(0, 3); - add(statusButton); - - equipmentButton = new Button("Equipment"); - equipmentButton->setEventId("Equipment"); - equipmentButton->addActionListener(&menuWindowListener); - equipmentButton->setPosition(statusButton->getX() + statusButton->getWidth() + 3, statusButton->getY()); - add(equipmentButton); - - inventoryButton = new Button("Inventory"); - inventoryButton->setEventId("Inventory"); - inventoryButton->addActionListener(&menuWindowListener); - inventoryButton->setPosition(equipmentButton->getX() + equipmentButton->getWidth() + 3, statusButton->getY()); - add(inventoryButton); - - skillsButton = new Button("Skills"); - skillsButton->setEventId("Skills"); - skillsButton->addActionListener(&menuWindowListener); - skillsButton->setPosition(inventoryButton->getX() + inventoryButton->getWidth() + 3, statusButton->getY()); - add(skillsButton); - - setupButton = new Button("Setup"); - setupButton->setEventId("Setup"); - setupButton->addActionListener(&menuWindowListener); - setupButton->setPosition(skillsButton->getX() + skillsButton->getWidth() + 3, statusButton->getY()); - add(setupButton); + char *buttonNames[] = { + "Status", "Equipment", "Inventory", "Skills", "Setup", 0 + }; + int x = 0, y = 3, h = 0; + + for (char **curBtn = buttonNames; *curBtn; curBtn++) { + gcn::Button *btn = new Button(*curBtn); + btn->setEventId(*curBtn); + btn->addActionListener(&menuWindowListener); + btn->setPosition(x, y); + add(btn); + x += btn->getWidth() + 3; + h = btn->getHeight(); + } - int menuWidth = setupButton->getX() + setupButton->getWidth(); - setDefaultSize((graphics->getWidth() - menuWidth - 5), 0, - menuWidth, - (setupButton->getY() + setupButton->getHeight())); + setDefaultSize((graphics->getWidth() - x - 2), 0, x, (y + h)); } void MenuWindow::draw(gcn::Graphics *g) diff --git a/src/gui/npc_text.cpp b/src/gui/npc_text.cpp index 0769021e..27232f3b 100644 --- a/src/gui/npc_text.cpp +++ b/src/gui/npc_text.cpp @@ -76,7 +76,8 @@ NpcTextDialog::action(const std::string& eventId) { setText(""); setVisible(false); - current_npc->nextDialog(); + if (current_npc) + current_npc->nextDialog(); current_npc = 0; } } |