Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/trademenu.cc')
-rw-r--r--src/client/trademenu.cc49
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());