diff options
author | Stijn Buys <ingar@osirion.org> | 2011-07-30 22:21:31 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2011-07-30 22:21:31 +0000 |
commit | 14d406cdcfabf77b6fc1fbce0d381bcdecbb0e94 (patch) | |
tree | bb91be328c0a12310de51180f593ca4062da19be /src/client/trademenu.cc | |
parent | 483bd5dc4e3ecafee54ff608674eb7e6361622b3 (diff) |
Improved trade menu.
Diffstat (limited to 'src/client/trademenu.cc')
-rw-r--r-- | src/client/trademenu.cc | 147 |
1 files changed, 99 insertions, 48 deletions
diff --git a/src/client/trademenu.cc b/src/client/trademenu.cc index 20117c7..d86a04a 100644 --- a/src/client/trademenu.cc +++ b/src/client/trademenu.cc @@ -36,11 +36,16 @@ TradeMenu::TradeMenu(ui::Widget *parent, const char * label) : ui::Window(parent menu_modelview->set_background(false); menu_modelview->set_border(false); - menu_slider = new ui::Slider(menu_tradewindow); + menu_slider = new ui::Slider(menu_modelview); //menu_slider->set_background(false); //menu_slider->set_border(true); - menu_msgtext = new ui::Label(menu_tradewindow); + menu_modellabel = new ui::Label(menu_modelview); + menu_modellabel->set_background(false); + menu_modellabel->set_border(false); + menu_modellabel->set_alignment(ui::AlignCenter); + + menu_msgtext = new ui::Label(menu_modelview); menu_msgtext->set_label("label"); menu_msgtext->set_background(false); menu_msgtext->set_border(false); @@ -61,8 +66,8 @@ TradeMenu::TradeMenu(ui::Widget *parent, const char * label) : ui::Window(parent menu_inventorytext = new ui::PlainText(menu_tradewindow); menu_inventorytext->set_label("inventorytext"); - menu_inventorytext->set_background(false); - menu_inventorytext->set_border(false); + menu_inventorytext->set_background(true); + menu_inventorytext->set_border(true); menu_inventorytext->set_font(ui::root()->font_small()); menu_scrollpane = new ui::ScrollPane(menu_tradewindow, menu_infotext); @@ -78,11 +83,12 @@ TradeMenu::TradeMenu(ui::Widget *parent, const char * label) : ui::Window(parent menu_tradertext = new ui::PlainText(menu_tradewindow); menu_tradertext->set_label("tradertext"); - menu_tradertext->set_background(false); - menu_tradertext->set_border(false); + menu_tradertext->set_background(true); + menu_tradertext->set_border(true); menu_tradertext->set_font(ui::root()->font_small()); menu_closebutton = new ui::Button(menu_tradewindow, "Return", "view hide"); + menu_closebutton->hide(); menu_buybutton = new ui::Button(menu_tradewindow, "Buy"); menu_listitem = 0; @@ -101,7 +107,7 @@ TradeMenu::~TradeMenu() void TradeMenu::set_itemtype(core::InfoType *item_type) { // reset - menu_namelabel->set_text(0); + menu_modellabel->set_text(0); menu_itemtype = item_type; core::Inventory *inventory_player = 0; @@ -122,9 +128,17 @@ void TradeMenu::set_item(ui::ListItem *item) { menu_infotext.clear(); - menu_namelabel->set_text("TRADE"); + std::string title; + if (core::localplayer()->view()) { + title.assign(core::localplayer()->view()->name()); + title += ' '; + } + + title.append ("TRADER"); + aux::to_uppercase(title); + menu_namelabel->set_text(title); - menu_tradertext->clear(); + menu_tradertext->set_text("TRADER"); menu_msgtext->clear(); menu_msgtext->hide(); menu_slider->hide(); @@ -162,7 +176,6 @@ 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); @@ -178,6 +191,8 @@ 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(); @@ -189,6 +204,7 @@ void TradeMenu::set_item(ui::ListItem *item) } std::ostringstream str; + str << "TRADER" << '\n' << '\n'; str << "Price: " << std::setw(12) << (amount > 0 ? amount : 1) * trader_item->price() << '\n' << "Volume: " << std::setw(12) << (float)(amount > 0 ? amount : 1) * trader_item->info()->volume(); menu_tradertext->set_text(str.str()); @@ -197,17 +213,11 @@ void TradeMenu::set_item(ui::ListItem *item) menu_msgtext->show(); } - std::ostringstream labelstr; - labelstr << "Sell " << item->info()->name(); - if (amount) - labelstr << " (" << amount << ")"; - menu_namelabel->set_text(labelstr.str()); - + menu_modellabel->set_text(item->info()->name()); } else if (item->parent() == menu_traderlistview) { // item in trader inventory selected (BUY) - menu_buybutton->set_text("Buy"); menu_inventorylistview->deselect(); if (menu_inventorylistview->inventory()) { @@ -229,6 +239,8 @@ void TradeMenu::set_item(ui::ListItem *item) 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(); } @@ -247,17 +259,15 @@ void TradeMenu::set_item(ui::ListItem *item) } std::ostringstream str; - str << "Price: " << std::setw(12) << (amount > 0 ? amount : 1) * item->item()->price() << '\n' - << "Volume: " << std::setw(12) << (float) (amount > 0 ? amount : 1) * item->info()->volume(); + str << "TRADER" << '\n' << '\n'; + str << "Price: " << std::setw(12) << (amount > 0 ? (float) amount : 1.0f) * item->item()->price() << '\n' + << "Volume: " << std::setw(12) << (amount > 0 ? (float) amount : 1.0f) * item->info()->volume() << '\n'; + menu_tradertext->set_text(str.str()); } - - std::ostringstream labelstr; - labelstr << "Buy " << item->info()->name(); - if (amount > 0) - labelstr << " (" << amount << ")"; - menu_namelabel->set_text(labelstr.str()); + + menu_modellabel->set_text(item->info()->name()); } else { menu_traderlistview->deselect(); @@ -281,42 +291,80 @@ void TradeMenu::resize() menu_namelabel->set_size(menu_tradewindow->width() - fontmargin * 2.0f, menu_namelabel->font()->height()); menu_namelabel->set_location(fontmargin, fontmargin); - // resize inventory listview - menu_inventorylistview->set_size(ui::UI::elementsize.width(), menu_tradewindow->height() - smallmargin * 2.0f - fontmargin * 6.0f); - menu_inventorylistview->set_location(fontmargin, fontmargin * 3.0f); + // resize player inventory text + menu_inventorytext->set_size( + ui::UI::elementsize.width(), + fontmargin * 3.0f + ); + menu_inventorytext->set_location(fontmargin, menu_namelabel->bottom() + fontmargin); + + // resize player inventory listview + menu_inventorylistview->set_size( + ui::UI::elementsize.width(), + menu_tradewindow->height() - menu_inventorytext->bottom() - 2.0f * fontmargin + ); + menu_inventorylistview->set_location( + fontmargin, + menu_inventorytext->bottom() + fontmargin + ); - menu_inventorytext->set_size(menu_inventorylistview->width(), fontmargin * 2.0f); - menu_inventorytext->set_location(menu_inventorylistview->left(), menu_inventorylistview->bottom() + fontmargin); // resize modelview menu_modelview->set_size(menu_tradewindow->width() - 2.0f * ui::UI::elementsize.width() - fontmargin * 4.0f, ui::UI::elementsize.width()); menu_modelview->set_location(fontmargin * 2.0f + ui::UI::elementsize.width(), fontmargin * 3.0f); - // resize slider - menu_slider->set_size(menu_modelview->width(), fontmargin); - menu_slider->set_location(menu_modelview->left(), menu_modelview->bottom() - menu_slider->height()); + // resize modelview title label + menu_modellabel->set_location(0, 0); + menu_modellabel->set_size(menu_modelview->width(), menu_modellabel->font()->height()); + // resize slider + menu_slider->set_size(menu_modelview->width(), menu_slider->font()->height()); + menu_slider->set_location(0, menu_modelview->height() - 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()); - menu_scrollpane->set_location(fontmargin * 2.0f + ui::UI::elementsize.width(), fontmargin * 4.0f + ui::UI::elementsize.width()); - - // resize trader listview - menu_traderlistview->set_size(ui::UI::elementsize.width(), menu_tradewindow->height() - smallmargin * 2.0f - fontmargin * 6.0f); - menu_traderlistview->set_location(menu_tradewindow->width() - menu_traderlistview->width() - fontmargin, fontmargin * 3.0f); - menu_tradertext->set_size(menu_traderlistview->width(), fontmargin * 2.0f); - menu_tradertext->set_location(menu_traderlistview->left(), menu_traderlistview->bottom() + fontmargin); - + // resize trader inventory text + menu_tradertext->set_size( + ui::UI::elementsize.width(), + fontmargin * 3.0f + ); + menu_tradertext->set_location( + menu_tradewindow->width() - ui::UI::elementsize.width() - fontmargin, + menu_namelabel->bottom() + fontmargin + ); + + // resize trader inventory listview + menu_traderlistview->set_size( + ui::UI::elementsize.width(), + menu_tradewindow->height() - menu_tradertext->bottom() - 2.0f * fontmargin + ); + menu_traderlistview->set_location( + menu_tradewindow->width() - ui::UI::elementsize.width() - fontmargin, + menu_tradertext->bottom() + fontmargin + ); + // resize buttons menu_buybutton->set_size(ui::UI::elementsize); - menu_buybutton->set_location(menu_tradewindow->width() * 0.5f - ui::UI::elementsize.width() - smallmargin * 2.0f, menu_tradewindow->height() - smallmargin * 1.5f); - - menu_closebutton->set_size(ui::UI::elementsize); - menu_closebutton->set_location(menu_tradewindow->width() * 0.5f + smallmargin * 2.0f, menu_tradewindow->height() - smallmargin * 1.5f); + menu_buybutton->set_location( + menu_modelview->left() + (menu_modelview->width() - menu_buybutton->width()) * 0.5f, + menu_modelview->bottom() + fontmargin + ); + + // resize infotext scrollpane + menu_scrollpane->set_size( + menu_tradewindow->width() - 2.0f * ui::UI::elementsize.width() - fontmargin * 4.0f, + menu_tradewindow->height() - menu_buybutton->bottom() - fontmargin * 2.0f + ); + + menu_scrollpane->set_location( + fontmargin * 2.0f + ui::UI::elementsize.width(), + menu_buybutton->bottom() + fontmargin + ); + + //menu_closebutton->set_size(ui::UI::elementsize); + //menu_closebutton->set_location(menu_tradewindow->width() * 0.5f + smallmargin * 2.0f, menu_tradewindow->height() - smallmargin * 1.5f); } bool TradeMenu::on_emit(Widget *sender, const Event event, void *data) @@ -357,6 +405,9 @@ void TradeMenu::draw() creditstr << core::localplayer()->credits(); std::stringstream str; + + str << "INVENTORY" << '\n' << '\n'; + str << "Credits: " << aux::pad_left(creditstr.str(),12); if (core::localcontrol() && core::localcontrol()->inventory()) { |