diff options
author | Stijn Buys <ingar@osirion.org> | 2010-09-25 13:01:26 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2010-09-25 13:01:26 +0000 |
commit | aeef4449ce3c1bdc531fb90699fef68bd48ca644 (patch) | |
tree | 969c2ec24f382a6a75e01b1b3315dd9fe8f26d46 /src/client/trademenu.cc | |
parent | 158706fac974527436a3167cfa94a7ea82070d41 (diff) |
trading bugfixes: corrects client side screen update issues
Diffstat (limited to 'src/client/trademenu.cc')
-rw-r--r-- | src/client/trademenu.cc | 49 |
1 files changed, 36 insertions, 13 deletions
diff --git a/src/client/trademenu.cc b/src/client/trademenu.cc index 91724f7..8aa9a52 100644 --- a/src/client/trademenu.cc +++ b/src/client/trademenu.cc @@ -38,6 +38,12 @@ TradeMenu::TradeMenu(ui::Widget *parent, const char * label) : ui::Window(parent menu_slider = new ui::Slider(menu_tradewindow); menu_slider->set_background(false); menu_slider->set_border(true); + + menu_msgtext = new ui::Label(menu_tradewindow); + menu_msgtext->set_label("label"); + menu_msgtext->set_background(false); + menu_msgtext->set_border(false); + menu_msgtext->set_alignment(ui::AlignCenter); menu_namelabel = new ui::Label(menu_tradewindow); menu_namelabel->set_label("label"); @@ -113,11 +119,17 @@ void TradeMenu::set_itemtype(core::InfoType *item_type) void TradeMenu::set_item(ui::ListItem *item) { menu_infotext.clear(); + menu_namelabel->set_text("Trade"); + menu_tradertext->clear(); - menu_buybutton->hide(); + menu_msgtext->clear(); + menu_msgtext->hide(); menu_slider->hide(); + menu_buybutton->set_command(""); + menu_buybutton->hide(); // FIXME enable/disable button + if (item != menu_listitem) { menu_slider->set_range(0, 2); menu_slider->set_value(1); @@ -148,7 +160,7 @@ void TradeMenu::set_item(ui::ListItem *item) if (item->parent() == menu_inventorylistview) { // item in ship inventory selected (SELL) - + menu_buybutton->set_text("Sell"); menu_traderlistview->deselect(); const core::Item *trader_item = (menu_traderlistview->inventory() ? menu_traderlistview->inventory()->find(item->info()) : 0); @@ -164,14 +176,14 @@ void TradeMenu::set_item(ui::ListItem *item) std::ostringstream commandstr; commandstr << "remote sell " << item->info()->type()->label() << " " << item->info()->label() << " " << amount; menu_buybutton->set_command(commandstr.str()); - menu_buybutton->set_text("Sell"); + + menu_buybutton->enable(); menu_buybutton->show(); } - if (amount < 1) { - menu_buybutton->set_command(""); - menu_buybutton->set_text("^1Can not sell"); - menu_buybutton->show(); + if (amount < 1) { + menu_msgtext->set_text("^1Can not sell"); + menu_msgtext->show(); } std::ostringstream str; @@ -179,7 +191,8 @@ void TradeMenu::set_item(ui::ListItem *item) << "Volume: " << std::setw(12) << std::setprecision(2) << (float)(amount > 0 ? amount : 1) * trader_item->info()->volume(); menu_tradertext->set_text(str.str()); } else { - menu_tradertext->set_text(" ^1Can not sell here"); + menu_msgtext->set_text("^1Can not sell here"); + menu_msgtext->show(); } std::ostringstream labelstr; @@ -192,7 +205,7 @@ void TradeMenu::set_item(ui::ListItem *item) } else if (item->parent() == menu_traderlistview) { // item in trader inventory selected (BUY) - + menu_buybutton->set_text("Buy"); menu_inventorylistview->deselect(); if (menu_inventorylistview->inventory()) { @@ -213,14 +226,20 @@ void TradeMenu::set_item(ui::ListItem *item) std::ostringstream commandstr; commandstr << "remote buy " << item->info()->type()->label() << " " << item->info()->label() << " " << amount; menu_buybutton->set_command(commandstr.str()); - menu_buybutton->set_text("Buy"); + + menu_buybutton->enable(); menu_buybutton->show(); } if (amount < 1) { - menu_buybutton->set_command(""); - menu_buybutton->set_text("^1Can not buy"); - menu_buybutton->show(); + if (item_unit_price > core::localplayer()->credits()) { + menu_msgtext->set_text("^1Not enough credits"); + } else if (item_unit_volume > menu_inventorylistview->inventory()->capacity_available()) { + menu_msgtext->set_text("^1Not enough cargo space"); + } else { + menu_msgtext->set_text("^1Can not buy"); + } + menu_msgtext->show(); } std::ostringstream str; @@ -272,6 +291,10 @@ void TradeMenu::resize() // resize slider menu_slider->set_size(menu_modelview->width(), fontmargin); menu_slider->set_location(menu_modelview->left(), menu_modelview->bottom() - menu_slider->height()); + + // warning text + menu_msgtext->set_size(menu_slider->size()); + menu_msgtext->set_location(menu_slider->location()); // resize scrollpane menu_scrollpane->set_size(menu_tradewindow->width() - 2.0f * ui::UI::elementsize.width() - fontmargin * 4.0f, menu_inventorylistview->height() + 2.0f * fontmargin - ui::UI::elementsize.width()); |