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-10-01 22:07:45 +0000
committerStijn Buys <ingar@osirion.org>2010-10-01 22:07:45 +0000
commit25af16fac3127523d532d4b4797eec7947ed5a72 (patch)
treee0a1f59452f16c100ceaca3050f0b369d32b6e18
parent8b67219f7de2971114a81c5476dae578ac29e989 (diff)
Initial inventory window
-rw-r--r--doc/STORYLINE31
-rw-r--r--src/client/Makefile.am4
-rw-r--r--src/client/client.cc10
-rw-r--r--src/client/client.h1
-rw-r--r--src/client/inventory.cc191
-rw-r--r--src/client/inventory.h57
-rw-r--r--src/client/inventorylistview.cc33
-rw-r--r--src/client/inventorylistview.h2
-rw-r--r--src/client/inventorymenu.cc19
-rw-r--r--src/client/inventorymenu.h26
-rw-r--r--src/client/keyboard.cc2
-rw-r--r--src/client/playerview.cc64
-rw-r--r--src/client/playerview.h8
-rw-r--r--src/client/worldview.cc10
-rw-r--r--src/client/worldview.h1
15 files changed, 357 insertions, 102 deletions
diff --git a/doc/STORYLINE b/doc/STORYLINE
index 22c29e8..7bc30e0 100644
--- a/doc/STORYLINE
+++ b/doc/STORYLINE
@@ -69,7 +69,7 @@
- Antwerp system
starbase Helianthos (guards the border)
Buccaneer's Den pirate base
- planet Hoboken
+ planet Hoboken?
BORDERWORLDS (not claimed by any lawfull faction)
@@ -229,14 +229,11 @@ The Alliance
the Imperial Flagship, primary target of the assault, had taken massive damage and was
burning in the flames of explosive decompression. It was at the heart of the fleet
when it exploded, and most of the heavy fighters and cruisers were hit by the shockwave
- and the massive rain of high-speed metallic debris following it. Some managed to retreat
+ and the massive rain of high-speed metallic debris behind it. Some managed to retreat
to Tsu-Khan space, most fell victim to the united firepower of the Alliance fleet.
News of the victory spread through the Colonies like fire, and the battle became legendary
- even before the Alliance fleet had returned home. The heroic tales of the fleet plowing
- through the Emperial forces like a knight with his spear, gave birth to the name
- "Battle of The Lance".
-
+ before the Alliance fleet had even returned home.
------------------------------------------------------------------
@@ -312,16 +309,16 @@ I. Business
to the point.
Brent was the business type. "The rising star of the Regula mining operations,
- overseeing all shipments of karpax ore in the Ghant system", to quote his words.
+ overseeing all shipments of niobium ore in the Ghant system", to quote his words.
His phrases like "A smart man could make a fortune" sounded rather hollow to me,
but he did have a point. 500 runs to Regula to pay the loan for the ship.
Another 1500 more to get myself a ship big enough to hold a small cabin with all the
luxuries a simple life would need.
Repetetive? Boring? Perfect! Add an autopilot and this life could be more relaxing
- then a luxury vacantion on Lantania. With this simple business but rock-solid plan
- laid out in front of me I managed to convince the manager of the local planetairy
- bank to provide me with the necessary funds for my operation which were quickly
+ then a luxury vacation on an exotic planet. With this simple business but rock-solid plan
+ laid out in front of me I managed to convince the manager of the local planetary
+ bank to provide me with the necessary funds for my operation, which I quickly
exchanged for Micron Corporation's latest Vector model. It's a small ship:
the cockpit, a living compartment with a sleeping corner and a cargo hold
just big enough to hold a few metric tons of whatever the owner had in mind.
@@ -342,12 +339,11 @@ I. Business
CM-2542. It must have jumped in when I was docked at Regula.
Curious. While the Ghant system was officialy under the jurisdiction of the
- Outer Colonies, nobody had any real business here. Karpax was without doubt
- a valuable commodity. With proper processing it can be used to produce alloys harder
- then plasteel and lighter then aluminox. Since there was no real shortage of the ore
- my guess was that the military's interests would lie elsewhere. For now, I decided
- to ignore the matter. I wasn't about to meddle into military affairs and let unfortunate
- circumstances ruin my life again.
+ colonies, nobody had any real business here. Niobium was without doubt a valuable
+ commodity, but since there was no real shortage of the oremy guess was that the
+ military's interests would lie elsewhere. For now, I decided to ignore the matter.
+ I wasn't about to meddle into military affairs and let unfortunate circumstances ruin
+ my life again.
Nevertheless it was hard to ignore the massive battleship looming over the outpost,
but I docked and went straight to the bar. The bartender looked at me as I walked in
@@ -437,4 +433,5 @@ III. The suit
I turned around, walked to the elevator at the end of the corridor and pressed the button.
After a few seconds the doors opened with a joyfull chime and I stepped inside. "Level 6".
The elevator seemed to consider my request when the doors finaly closed and it started
- moving upward.
+ moving upward. Casually I leaned against the back wall, my right hand trying to catch the
+ yawn escaping my mouth. 
diff --git a/src/client/Makefile.am b/src/client/Makefile.am
index ddc78a6..8edef84 100644
--- a/src/client/Makefile.am
+++ b/src/client/Makefile.am
@@ -8,7 +8,7 @@ noinst_LTLIBRARIES = libclient.la
endif
libclient_la_SOURCES = action.cc buymenu.cc chat.cc client.cc clientext.cc \
- entitymenu.cc hud.cc infowidget.cc input.cc inventorylistview.cc inventorymenu.cc joystick.cc key.cc \
+ entitymenu.cc hud.cc infowidget.cc input.cc inventorylistview.cc inventory.cc joystick.cc key.cc \
keyboard.cc map.cc notifications.cc playerview.cc soundext.cc targeticonbutton.cc \
targets.cc trademenu.cc video.cc worldview.cc
@@ -17,7 +17,7 @@ libclient_la_CFLAGS = $(LIBSDL_CFLAGS) $(GL_CFLAGS)
libclient_la_LDFLAGS = -avoid-version -no-undefined $(GL_LIBS) $(LIBSDL_LIBS)
noinst_HEADERS = action.h chat.h client.h clientext.h hud.h entitymenu.h \
- input.h inventorylistview.h inventorymenu.h joystick.h key.h keyboard.h map.h notifications.h soundext.h \
+ input.h inventorylistview.h inventory.h joystick.h key.h keyboard.h map.h notifications.h soundext.h \
targets.h video.h infowidget.h playerview.h worldview.h trademenu.h buymenu.h \
targeticonbutton.h
diff --git a/src/client/client.cc b/src/client/client.cc
index 5bf783a..a40023b 100644
--- a/src/client/client.cc
+++ b/src/client/client.cc
@@ -144,6 +144,9 @@ void Client::init(int count, char **arguments)
func = core::Func::add("ui_chatbar", Client::func_ui_chatbar);
func->set_info("toggle chat bar");
+
+ func = core::Func::add("ui_inventory", Client::func_ui_inventory);
+ func->set_info("toggle inventory");
func = core::Func::add("ui_map", Client::func_ui_map);
func->set_info("toggle map");
@@ -488,6 +491,13 @@ void Client::func_ui_chatbar(std::string const &args)
}
}
+void Client::func_ui_inventory(std::string const &args)
+{
+ if (client()->connected() && client()->worldview()->playerview()->visible()) {
+ client()->worldview()->playerview()->toggle_inventory();
+ }
+}
+
void Client::func_ui_map(std::string const &args)
{
if (client()->connected() && client()->worldview()->playerview()->visible()) {
diff --git a/src/client/client.h b/src/client/client.h
index 2de731d..288e9fa 100644
--- a/src/client/client.h
+++ b/src/client/client.h
@@ -85,6 +85,7 @@ private:
static void func_ui(std::string const &args);
static void func_ui_chat(std::string const &args);
static void func_ui_chatbar(std::string const &args);
+ static void func_ui_inventory(std::string const &args);
static void func_ui_map(std::string const &args);
static void func_ui_menu(std::string const &args);
diff --git a/src/client/inventory.cc b/src/client/inventory.cc
new file mode 100644
index 0000000..5837a17
--- /dev/null
+++ b/src/client/inventory.cc
@@ -0,0 +1,191 @@
+/*
+ client/inventory.cc
+ This file is part of the Osirion project and is distributed under
+ the terms and conditions of the GNU General Public License version 2
+*/
+
+#include "core/application.h"
+#include "client/inventory.h"
+#include "ui/label.h"
+#include "ui/listitem.h"
+#include "ui/paint.h"
+#include "ui/ui.h"
+
+#include <iomanip>
+
+namespace client {
+
+Inventory::Inventory(ui::Widget *parent) : ui::Window(parent)
+{
+ menu_infotimestamp = 0;
+ menu_inventorytimestamp = 0;
+
+ menu_namelabel = new ui::Label(this);
+ menu_namelabel->set_label("label");
+ menu_namelabel->set_background(false);
+ menu_namelabel->set_border(false);
+ menu_namelabel->set_font(ui::root()->font_large());
+ menu_namelabel->set_alignment(ui::AlignCenter);
+ menu_namelabel->set_text("Inventory");
+
+ menu_listview = new ui::ListView(this);
+ menu_listview->set_label("listview");
+ menu_listview->set_background(false);
+ menu_listview->set_border(true);
+
+ menu_inventorytext = new ui::PlainText(this);
+ menu_inventorytext->set_label("inventorytext");
+ menu_inventorytext->set_background(false);
+ menu_inventorytext->set_border(false);
+ menu_inventorytext->set_font(ui::root()->font_small());
+
+ hide();
+}
+
+Inventory::~Inventory()
+{
+}
+
+void Inventory::toggle()
+{
+ if (visible())
+ hide();
+ else
+ show();
+}
+void Inventory::update_inventory()
+{
+ menu_listview->clear();
+ menu_infotimestamp = 0;
+ menu_inventorytimestamp = 0;
+
+ if (!core::localcontrol() || !core::localcontrol()->inventory()) {
+ return;
+ }
+ const core::Item *selecteditem = (menu_listview->selected() ? menu_listview->selected()->item() : 0);
+
+ for (core::Inventory::Items::const_iterator it = core::localcontrol()->inventory()->items().begin(); it != core::localcontrol()->inventory()->items().end(); it++) {
+ core::Item *item = (*it);
+
+ if (!item->info()) {
+ continue;
+ }
+
+ // this makes sure inventory info gets requested from the server
+ core::game()->request_info(item->info()->id());
+
+ if (item->info()->timestamp() > menu_infotimestamp) {
+ menu_infotimestamp = item->info()->timestamp();
+ }
+
+ if (item->amount() != 0) {
+ ui::ListItem *listitem = 0;
+
+ std::ostringstream str;
+ str << item->info()->name().c_str();
+ if (item->amount() > 0) {
+ str << " (" << item->amount() << ")";
+ }
+ listitem = new ui::ListItem(menu_listview, str.str().c_str());
+ listitem->set_height(listitem->font()->height() * 2.0f);
+ listitem->set_item(item);
+ listitem->set_info(item->info());
+
+ // preserve previous selection during update
+ if (item == selecteditem) {
+ menu_listview->select(listitem);
+ }
+ }
+ }
+ menu_listview->event_resize();
+ menu_inventorytimestamp = core::localcontrol()->inventory()->timestamp();
+}
+
+void Inventory::update_selection()
+{
+}
+
+bool Inventory::verify() const
+{
+ if (!core::localcontrol() || !core::localcontrol()->inventory()) {
+
+ }
+
+ if (menu_inventorytimestamp != core::localcontrol()->inventory()->timestamp()) {
+ return false;
+ }
+
+ for (core::Inventory::Items::const_iterator it = core::localcontrol()->inventory()->items().begin(); it != core::localcontrol()->inventory()->items().end(); it++) {
+ core::Item *item = (*it);
+
+ if (!item->info()) {
+ continue;
+ }
+ if (item->info()->timestamp() > menu_infotimestamp) {
+ return false;
+ }
+ }
+ return true;
+}
+
+void Inventory::resize()
+{
+ const float smallmargin = ui::UI::elementsize.height();
+ const float fontmargin = ui::root()->font_large()->height();
+
+ // resize label
+ menu_namelabel->set_size(width() - fontmargin * 2.0f, menu_namelabel->font()->height());
+ menu_namelabel->set_location(fontmargin, fontmargin);
+
+ // resize inventory listview
+ menu_listview->set_size(ui::UI::elementsize.width(), height() - smallmargin * 2.0f - fontmargin * 6.0f);
+ menu_listview->set_location(fontmargin, fontmargin * 3.0f);
+
+ menu_inventorytext->set_size(menu_listview->width(), fontmargin * 2.0f);
+ menu_inventorytext->set_location(menu_listview->left(), menu_listview->bottom() + fontmargin);
+}
+
+void Inventory::draw()
+{
+ if (!verify()) {
+ update_inventory();
+ }
+
+ std::stringstream str;
+ str << "Credits: " << std::setw(12) << core::localplayer()->credits();
+
+ if (core::localcontrol() && core::localcontrol()->inventory()) {
+ core::Inventory *inventory = core::localcontrol()->inventory();
+
+ std::stringstream cargostr;
+ cargostr << inventory->capacity_used() << " of " << inventory->capacity();
+
+ str << '\n' << "Cargo: " << aux::pad_left(cargostr.str(),12);
+ }
+ menu_inventorytext->set_text(str.str());
+
+ Window::draw();
+}
+
+bool Inventory::on_emit(Widget *sender, const Event event, void *data)
+{
+ return Window::on_emit(sender, event, data);
+}
+
+bool Inventory::on_keypress(const int key, const unsigned int modifier)
+{
+ switch (key) {
+
+ case SDLK_ESCAPE:
+ this->hide();
+ return true;
+ break;
+ default:
+ break;
+ }
+
+ return Window::on_keypress(key, modifier);
+}
+
+
+} // namespace client
diff --git a/src/client/inventory.h b/src/client/inventory.h
new file mode 100644
index 0000000..f66ec56
--- /dev/null
+++ b/src/client/inventory.h
@@ -0,0 +1,57 @@
+/*
+ client/inventory.h
+ This file is part of the Osirion project and is distributed under
+ the terms of the GNU General Public License version 2
+*/
+
+#ifndef __INCLUDED_CLIENT_INVENTORY_H__
+#define __INCLUDED_CLIENT_INVENTORY_H__
+
+#include "core/info.h"
+#include "core/inventory.h"
+#include "ui/listview.h"
+#include "ui/plaintext.h"
+#include "ui/window.h"
+
+namespace client {
+
+/**
+ * @brief an inventory window widget
+ */
+class Inventory : public ui::Window
+{
+public:
+ Inventory(ui::Widget *parent = 0);
+ ~Inventory();
+
+ void toggle();
+protected:
+ /// resize event handler
+ virtual void resize();
+
+ /// draw event handler
+ virtual void draw();
+
+ /// emit event handler
+ virtual bool on_emit(Widget *sender, const Event event, void *data);
+
+ /// keypress event handler
+ virtual bool on_keypress(const int key, const unsigned int modifier);
+
+private:
+ void update_inventory();
+
+ void update_selection();
+
+ bool verify() const;
+
+ unsigned long menu_inventorytimestamp;
+ unsigned long menu_infotimestamp;
+ ui::ListView *menu_listview;
+ ui::Label *menu_namelabel;
+ ui::PlainText *menu_inventorytext;
+
+}; // class Inventory
+
+}
+#endif // __INCLUDED_CLIENT_INVENTORY_H__
diff --git a/src/client/inventorylistview.cc b/src/client/inventorylistview.cc
index 87cc367..a8d98f3 100644
--- a/src/client/inventorylistview.cc
+++ b/src/client/inventorylistview.cc
@@ -80,8 +80,16 @@ void InventoryListView::set_inventory(core::Inventory *inventory, core::InfoType
emit(EventListViewChanged);
}
-bool InventoryListView::verify_inventory()
+bool InventoryListView::verify() const
{
+ if (!listview_inventory || !listview_infotype) {
+ return true;
+ }
+
+ if (listview_timestamp != listview_inventory->timestamp()) {
+ return false;
+ }
+
for (core::Inventory::Items::const_iterator it = listview_inventory->items().begin(); it != listview_inventory->items().end(); it++) {
core::Item *item = (*it);
if (item->info() && (item->info()->timestamp() > listview_infotimestamp)) {
@@ -93,28 +101,9 @@ bool InventoryListView::verify_inventory()
void InventoryListView::draw()
{
- if (listview_inventory && listview_infotype) {
- // inventory was updated
- if (listview_timestamp != listview_inventory->timestamp()) {
- //con_debug << "CLIENT inventory update from " << listview_timestamp << " to " << listview_inventory->timestamp() << std::endl;
- set_inventory(listview_inventory, listview_infotype);
- // inventory info was updated
- } else if (!verify_inventory()) {
- //con_debug << "CLIENT inventory info update" << std::endl;
- set_inventory(listview_inventory, listview_infotype);
- }
- }
-
- /*
- * DEBUG
- std::ostringstream str;
- if (listview_inventory && listview_infotype) {
- str << listview_timestamp << " " << listview_inventory->timestamp() << " " << listview_infotimestamp;
- } else {
- str << "EMPTY";
+ if (!verify()) {
+ set_inventory(listview_inventory, listview_infotype);
}
- ui::Paint::draw_label(global_location(), size(), font(), str.str() , ui::AlignBottom) ;
- */
ListView::draw();
}
diff --git a/src/client/inventorylistview.h b/src/client/inventorylistview.h
index 5d5a85f..1688560 100644
--- a/src/client/inventorylistview.h
+++ b/src/client/inventorylistview.h
@@ -30,7 +30,7 @@ protected:
virtual void draw();
private:
- bool verify_inventory();
+ bool verify() const;
unsigned long listview_timestamp;
unsigned long listview_infotimestamp;
diff --git a/src/client/inventorymenu.cc b/src/client/inventorymenu.cc
deleted file mode 100644
index 435c3b2..0000000
--- a/src/client/inventorymenu.cc
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- client/inventorymenu.cc
- This file is part of the Osirion project and is distributed under
- the terms and conditions of the GNU General Public License version 2
-*/
-
-#include "client/inventorymenu.h"
-
-namespace client {
-
-InventoryWindow::InventoryWindow(ui::Widget *parent) : ui::Window(parent)
-{
-}
-
-InventoryWindow::~InventoryWindow()
-{
-}
-
-} // namespace client
diff --git a/src/client/inventorymenu.h b/src/client/inventorymenu.h
deleted file mode 100644
index 7d4809a..0000000
--- a/src/client/inventorymenu.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- client/inventorymenu.h
- This file is part of the Osirion project and is distributed under
- the terms of the GNU General Public License version 2
-*/
-
-#ifndef __INCLUDED_CLIENT_INVENTORYWINDOW_H__
-#define __INCLUDED_CLIENT_INVENTORYWINDOW_H__
-
-#include "ui/window.h"
-
-namespace client {
-
-/**
- * @brief an inventory window widget
- */
-class InventoryWindow : public ui::Window
-{
-public:
- InventoryWindow(ui::Widget *parent = 0);
- ~InventoryWindow();
-
-}; // class InventoryWindow
-
-}
-#endif // __INCLUDED_CLIENT_INVENTORYWINDOW_H__
diff --git a/src/client/keyboard.cc b/src/client/keyboard.cc
index f3d2181..e617c59 100644
--- a/src/client/keyboard.cc
+++ b/src/client/keyboard.cc
@@ -180,7 +180,7 @@ Keyboard::Keyboard()
#ifdef _WIN32
key->assign(Key::Alt, "quit");
#endif
- add_key("f5", SDLK_F5);
+ add_key("f5", SDLK_F5, 0, "ui_inventory");
add_key("f6", SDLK_F6, 0, "ui_map");
add_key("f7", SDLK_F7);
add_key("f8", SDLK_F8);
diff --git a/src/client/playerview.cc b/src/client/playerview.cc
index 7791a2a..159371c 100644
--- a/src/client/playerview.cc
+++ b/src/client/playerview.cc
@@ -36,6 +36,7 @@ PlayerView::PlayerView(ui::Widget *parent) : ui::Widget(parent)
view_entitymenu = new EntityMenu(this);
view_buymenu = new BuyMenu(this);
view_trademenu = new TradeMenu(this);
+ view_inventory = new Inventory(this);
//view_hud->set_focus();
//view_hud->raise();
@@ -68,11 +69,17 @@ void PlayerView::toggle_map()
{
if (!map()->visible()) {
- if (chat()->visible() && !chat()->small_view())
+ if (chat()->visible() && !chat()->small_view()) {
chat()->hide();
+ }
- if (view_entitymenu->visible())
+ if (inventory()->visible()) {
+ inventory()->hide();
+ }
+
+ if (view_entitymenu->visible()) {
view_entitymenu->hide();
+ }
}
map()->toggle();
@@ -83,11 +90,40 @@ void PlayerView::toggle_map()
}
}
+void PlayerView::toggle_inventory()
+{
+
+ if (!inventory()->visible()) {
+ if (chat()->visible() && !chat()->small_view()) {
+ chat()->hide();
+ }
+
+ if (map()->visible()) {
+ map()->hide();
+ }
+
+ if (view_entitymenu->visible()) {
+ view_entitymenu->hide();
+ }
+ }
+
+ inventory()->toggle();
+ audio::play("ui/menu");
+
+ if (inventory()->visible() && chat()->visible() && chat()->small_view()) {
+ chat()->raise();
+ }
+}
+
void PlayerView::toggle_chat()
{
if (!chat()->visible()) {
if (map()->visible())
map()->hide();
+
+ if (inventory()->visible()) {
+ inventory()->hide();
+ }
if (view_entitymenu->visible())
view_entitymenu->hide();
@@ -189,7 +225,11 @@ void PlayerView::resize()
// reposition map
view_map->set_size(width() - smallmargin * 2, height() - smallmargin * 4);
view_map->set_location(smallmargin, smallmargin * 2);
-
+
+ // reposition inventory
+ view_inventory->set_size(width() - smallmargin * 2, height() - smallmargin * 4);
+ view_inventory->set_location(smallmargin, smallmargin * 2);
+
// reposition notifications
view_notify->set_geometry(view_map->location(), view_map->size());
@@ -228,7 +268,7 @@ void PlayerView::draw()
audio::play("ui/menu");
} else if (!view_entitymenu->visible() && !view_buymenu->visible() && !view_trademenu->visible() &&
- !map()->visible() && (!chat()->visible() || chat()->small_view())) {
+ !inventory()->visible() && !map()->visible() && (!chat()->visible() || chat()->small_view())) {
// show the menu if there's no other window open
view_entitymenu->show();
@@ -270,7 +310,7 @@ void PlayerView::draw()
label_viewname->hide();
}
- if (!map()->visible() && !chat()->visible()) {
+ if (!map()->visible() && !chat()->visible() && !inventory()->visible()) {
view_hud->set_focus();
}
@@ -278,13 +318,15 @@ void PlayerView::draw()
}
// reposition chat widget
- if (view_chat->small_view()) {
- view_chat->set_size(width() - smallmargin * 2, font()->height() * 2);
- view_chat->set_location(smallmargin, height() - smallmargin *2 - view_chat->height());
- } else {
- view_chat->set_geometry(view_map->location(), view_map->size());
+ if (chat()->visible()) {
+ if (view_chat->small_view()) {
+ view_chat->set_size(width() - smallmargin * 2, font()->height() * 2);
+ view_chat->set_location(smallmargin, height() - smallmargin *2 - view_chat->height());
+ } else {
+ view_chat->set_geometry(view_map->location(), view_map->size());
+ }
+ view_chat->event_resize();
}
- view_chat->event_resize();
}
}
diff --git a/src/client/playerview.h b/src/client/playerview.h
index 300e9e5..66672cf 100644
--- a/src/client/playerview.h
+++ b/src/client/playerview.h
@@ -10,6 +10,7 @@
#include "client/chat.h"
#include "client/buymenu.h"
#include "client/entitymenu.h"
+#include "client/inventory.h"
#include "client/trademenu.h"
#include "client/hud.h"
#include "client/map.h"
@@ -33,6 +34,9 @@ public:
/// toggle map window
void toggle_map();
+
+ /// toggle inventory window
+ void toggle_inventory();
/// togge chat window
void toggle_chat();
@@ -52,6 +56,9 @@ public:
inline Chat *chat() {
return view_chat;
}
+ inline Inventory *inventory() {
+ return view_inventory;
+ }
inline Notifications *notify() {
return view_notify;
}
@@ -68,6 +75,7 @@ private:
HUD *view_hud;
Chat *view_chat;
Map *view_map;
+ Inventory *view_inventory;
EntityMenu *view_entitymenu;
BuyMenu *view_buymenu;
diff --git a/src/client/worldview.cc b/src/client/worldview.cc
index 684e08e..265277f 100644
--- a/src/client/worldview.cc
+++ b/src/client/worldview.cc
@@ -36,6 +36,7 @@ WorldView::WorldView(ui::Widget *parent) : ui::Widget(parent)
view_chatbutton = new ui::IconButton(this, "bitmaps/icons/button_chat", "ui_chat");
view_mapbutton = new ui::IconButton(this, "bitmaps/icons/button_map", "ui_map");
+ view_inventorybutton = new ui::IconButton(this, "bitmaps/icons/button_inventory", "ui_inventory");
}
WorldView::~WorldView()
@@ -69,7 +70,7 @@ void WorldView::resize()
// icons
const float icon_margin = 4.0f;
const float icon_size = 48.0f;
- const float icon_count = 6;
+ const float icon_count = 7;
const float l = (width() - ((icon_count + 1) * icon_margin) - (icon_count * icon_size)) * 0.5f;
view_menubutton->set_geometry(l, icon_margin, icon_size, icon_size);
@@ -77,8 +78,9 @@ void WorldView::resize()
view_dockbutton->set_geometry(l + 2.0f *(icon_margin + icon_size), icon_margin, icon_size, icon_size);
view_launchbutton->set_geometry(l + 2.0f *(icon_margin + icon_size), icon_margin, icon_size, icon_size);
// spacer
- view_chatbutton->set_geometry(l + 4.0f *(icon_margin + icon_size), icon_margin, icon_size, icon_size);
- view_mapbutton->set_geometry(l + 5.0f *(icon_margin + icon_size), icon_margin, icon_size, icon_size);
+ view_inventorybutton->set_geometry(l + 4.0f *(icon_margin + icon_size), icon_margin, icon_size, icon_size);
+ view_chatbutton->set_geometry(l + 5.0f *(icon_margin + icon_size), icon_margin, icon_size, icon_size);
+ view_mapbutton->set_geometry(l + 6.0f *(icon_margin + icon_size), icon_margin, icon_size, icon_size);
}
void WorldView::clear()
@@ -107,6 +109,7 @@ void WorldView::draw()
view_launchbutton->hide();
view_chatbutton->hide();
view_mapbutton->hide();
+ view_inventorybutton->hide();
} else {
view_playerview->show();
view_playerview->set_focus();
@@ -122,6 +125,7 @@ void WorldView::draw()
view_menubutton->show();
view_chatbutton->show();
view_mapbutton->show();
+ view_inventorybutton->show();
}
}
diff --git a/src/client/worldview.h b/src/client/worldview.h
index 11473f8..266d3eb 100644
--- a/src/client/worldview.h
+++ b/src/client/worldview.h
@@ -48,6 +48,7 @@ private:
ui::IconButton *view_chatbutton;
ui::IconButton *view_mapbutton;
+ ui::IconButton *view_inventorybutton;
};
}