Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2011-07-30 22:21:31 +0000
committerStijn Buys <ingar@osirion.org>2011-07-30 22:21:31 +0000
commit14d406cdcfabf77b6fc1fbce0d381bcdecbb0e94 (patch)
treebb91be328c0a12310de51180f593ca4062da19be /src/client/trademenu.cc
parent483bd5dc4e3ecafee54ff608674eb7e6361622b3 (diff)
Improved trade menu.
Diffstat (limited to 'src/client/trademenu.cc')
-rw-r--r--src/client/trademenu.cc147
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()) {