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>2010-09-18 13:25:37 +0000
committerStijn Buys <ingar@osirion.org>2010-09-18 13:25:37 +0000
commitfc4809e41bc5694231046eb2fd4c324c4daba13f (patch)
tree02f183a0779aa0457e13f42037f3631ea28b7b65 /src/client/trademenu.cc
parent8c6a1a404ac8d1589a37d54b3b7ce0d776fe4751 (diff)
cosmetic updates in engine list functions, trade menu updates
Diffstat (limited to 'src/client/trademenu.cc')
-rw-r--r--src/client/trademenu.cc113
1 files changed, 64 insertions, 49 deletions
diff --git a/src/client/trademenu.cc b/src/client/trademenu.cc
index 7e9be4f..e96f1a6 100644
--- a/src/client/trademenu.cc
+++ b/src/client/trademenu.cc
@@ -4,6 +4,9 @@
the terms of the GNU General Public License version 2
*/
+#include "core/application.h"
+#include "core/info.h"
+#include "core/inventory.h"
#include "ui/button.h"
#include "ui/paint.h"
#include "ui/ui.h"
@@ -34,13 +37,22 @@ TradeMenu::TradeMenu(ui::Widget *parent, const char * label) : ui::Window(parent
menu_namelabel->set_alignment(ui::AlignCenter);
menu_namelabel->show();
- menu_inventorylistview = new ui::ListView(menu_tradewindow);
+ menu_inventorylistview = new InventoryListView(menu_tradewindow);
menu_inventorylistview->set_label("inventorylistview");
menu_inventorylistview->set_background(false);
menu_inventorylistview->set_border(true);
+ menu_modelview = new ui::ModelView(menu_tradewindow);
+ menu_modelview->set_label("modelview");
+ menu_modelview->set_background(false);
+ menu_modelview->set_border(false);
+
+ menu_scrollpane = new ui::ScrollPane(menu_tradewindow, menu_infotext);
+ menu_scrollpane->set_background(false);
+ menu_scrollpane->set_border(false);
+ menu_scrollpane->set_alignment(ui::AlignTop);
- menu_traderlistview = new ui::ListView(menu_tradewindow);
+ menu_traderlistview = new InventoryListView(menu_tradewindow);
menu_traderlistview->set_label("traderlistview");
menu_traderlistview->set_background(false);
menu_traderlistview->set_border(true);
@@ -48,7 +60,7 @@ TradeMenu::TradeMenu(ui::Widget *parent, const char * label) : ui::Window(parent
menu_closebutton = new ui::Button(menu_tradewindow, "Return", "view hide");
std::string test("test");
- set_item_type(test);
+ set_item_type(0);
hide();
}
@@ -58,54 +70,55 @@ TradeMenu::~TradeMenu()
}
-void TradeMenu::set_item_type(std::string const & itemtype)
+void TradeMenu::set_item_type(core::InfoType *item_type)
{
- ui::ListItem *item_label = 0;
-
+ // reset
menu_namelabel->set_text(0);
+ menu_infotext.clear();
- // update inventorylistview
- menu_inventorylistview->remove_children();
-
- //core::Inventory *inventory = 0;
-
-
- item_label = new ui::ListItem(menu_inventorylistview, "Inventory item 1");
- item_label->set_height(item_label->font()->height() * 2.0f);
-
- item_label = new ui::ListItem(menu_inventorylistview, "Inventory item 2");
- item_label->set_height(item_label->font()->height() * 2.0f);
+ core::Inventory *inventory_player = 0;
+ core::Inventory *inventory_view = 0;
- item_label = new ui::ListItem(menu_inventorylistview, "Inventory item 3");
- item_label->set_height(item_label->font()->height() * 2.0f);
+ if (core::localcontrol())
+ inventory_player = core::localcontrol()->inventory();
- item_label = new ui::ListItem(menu_inventorylistview, "Inventory item 4");
- item_label->set_height(item_label->font()->height() * 2.0f);
+ if(core::localplayer()->view())
+ inventory_view = core::localplayer()->view()->inventory();
- item_label = new ui::ListItem(menu_inventorylistview, "Inventory item 5");
- item_label->set_height(item_label->font()->height() * 2.0f);
+ menu_inventorylistview->set_inventory(inventory_player, item_type);
+ menu_traderlistview->set_inventory(inventory_view, item_type);
- menu_inventorylistview->event_resize();
-
- // update traderlistview
- menu_traderlistview->remove_children();
-
- item_label = new ui::ListItem(menu_traderlistview, "Shop item 1");
- item_label->set_height(item_label->font()->height() * 2.0f);
-
- item_label = new ui::ListItem(menu_traderlistview, "Shop item 2");
- item_label->set_height(item_label->font()->height() * 2.0f);
-
- item_label = new ui::ListItem(menu_traderlistview, "Shop item 3");
- item_label->set_height(item_label->font()->height() * 2.0f);
-
- item_label = new ui::ListItem(menu_traderlistview, "Shop item 4");
- item_label->set_height(item_label->font()->height() * 2.0f);
+ set_item(0);
+}
+
+void TradeMenu::set_item(ui::ListItem *item)
+{
+ menu_namelabel->clear();
- item_label = new ui::ListItem(menu_traderlistview, "Shop item 5");
- item_label->set_height(item_label->font()->height() * 2.0f);
+ if (!item || !item->info()) {
+ menu_scrollpane->hide();
+ menu_modelview->hide();
+ return;
+ }
- menu_traderlistview->event_resize();
+ if (item->parent() == menu_inventorylistview) {
+ // item in ship inventory selected (SELL)
+ menu_namelabel->set_text("Sell " + item->text());
+
+ } else if (item->parent() == menu_traderlistview) {
+ // item in trader inventory selected (BUY)
+ menu_namelabel->set_text("Buy " + item->text());
+ }
+
+ if (item->info()) {
+ for (core::Info::Text::const_iterator it = item->info()->text().begin(); it != item->info()->text().end(); it++) {
+ menu_infotext.push_back((*it));
+ }
+ menu_scrollpane->show();
+
+ menu_modelview->set_modelname(item->info()->modelname());
+ menu_modelview->show();
+ }
}
void TradeMenu::resize()
@@ -128,6 +141,14 @@ void TradeMenu::resize()
menu_inventorylistview->set_size(ui::UI::elementsize.width(), menu_tradewindow->height() - smallmargin * 2.0f - fontmargin * 3.0f);
menu_inventorylistview->set_location(fontmargin, fontmargin * 3.0f);
+ // 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 scrollpane
+ menu_scrollpane->set_size(menu_tradewindow->width() - 2.0f * ui::UI::elementsize.width() - fontmargin * 4.0f, menu_inventorylistview->height() - 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 * 3.0f);
menu_traderlistview->set_location(menu_tradewindow->width() - menu_traderlistview->width() - fontmargin, fontmargin * 3.0f);
@@ -140,13 +161,7 @@ void TradeMenu::resize()
bool TradeMenu::on_emit(Widget *sender, const Event event, void *data)
{
if (event == ui::Widget::EventListItemClicked) {
- if (sender->parent() == menu_inventorylistview) {
- // item from inventory selected
- menu_namelabel->set_text("SELL " + static_cast<ui::ListItem *>(sender)->text());
- } else if (sender->parent() == menu_traderlistview) {
- // item from trader selected
- menu_namelabel->set_text("BUY " + static_cast<ui::ListItem *>(sender)->text());
- }
+ set_item(static_cast<ui::ListItem *>(sender));
return true;
}