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/playerview.cc')
-rw-r--r--src/client/playerview.cc89
1 files changed, 79 insertions, 10 deletions
diff --git a/src/client/playerview.cc b/src/client/playerview.cc
index 159371c..5cbd408 100644
--- a/src/client/playerview.cc
+++ b/src/client/playerview.cc
@@ -10,8 +10,10 @@
#include "core/info.h"
#include "core/application.h"
#include "audio/audio.h"
-#include "client/playerview.h"
#include "ui/ui.h"
+#include "client/targeticonbutton.h"
+#include "client/playerview.h"
+
namespace client
{
@@ -31,16 +33,23 @@ PlayerView::PlayerView(ui::Widget *parent) : ui::Widget(parent)
label_viewname->set_background(true);
label_viewname->set_font(ui::root()->font_large());
- view_chat = new Chat(this);
+ // sub menus
view_map = new Map(this);
view_entitymenu = new EntityMenu(this);
view_buymenu = new BuyMenu(this);
view_trademenu = new TradeMenu(this);
view_inventory = new Inventory(this);
+ view_chat = new Chat(this);
- //view_hud->set_focus();
- //view_hud->raise();
- //view_entitymenu->raise();
+ // icon buttons
+ view_menubutton = new ui::IconButton(this, "bitmaps/icons/button_menu", "ui_menu");
+
+ view_launchbutton = new ui::IconButton(this, "bitmaps/icons/button_launch", "launch");
+ view_dockbutton = new TargetIconButton(this, "bitmaps/icons/button_dock", "dock", core::Entity::Dockable);
+
+ 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");
}
PlayerView::~PlayerView()
@@ -80,14 +89,23 @@ void PlayerView::toggle_map()
if (view_entitymenu->visible()) {
view_entitymenu->hide();
}
+
+ if (view_buymenu->visible()) {
+ view_buymenu->hide();
+ }
+
+ if (view_trademenu->visible()) {
+ view_trademenu->hide();
+ }
}
map()->toggle();
audio::play("ui/menu");
- if (map()->visible() && chat()->visible() && chat()->small_view()) {
+/* if (map()->visible() && chat()->visible() && chat()->small_view()) {
chat()->raise();
}
+*/
}
void PlayerView::toggle_inventory()
@@ -105,18 +123,31 @@ void PlayerView::toggle_inventory()
if (view_entitymenu->visible()) {
view_entitymenu->hide();
}
+
+ if (view_buymenu->visible()) {
+ view_buymenu->hide();
+ }
+
+ if (view_trademenu->visible()) {
+ view_trademenu->hide();
+ }
}
inventory()->toggle();
audio::play("ui/menu");
- if (inventory()->visible() && chat()->visible() && chat()->small_view()) {
+/* if (inventory()->visible() && chat()->visible() && chat()->small_view()) {
chat()->raise();
}
+*/
}
void PlayerView::toggle_chat()
{
+ if (chat()->small_view()) {
+ chat()->hide();
+ }
+
if (!chat()->visible()) {
if (map()->visible())
map()->hide();
@@ -125,9 +156,19 @@ void PlayerView::toggle_chat()
inventory()->hide();
}
- if (view_entitymenu->visible())
+ if (view_entitymenu->visible()) {
view_entitymenu->hide();
+ }
+
+ if (view_buymenu->visible()) {
+ view_buymenu->hide();
+ }
+
+ if (view_trademenu->visible()) {
+ view_trademenu->hide();
+ }
}
+
chat()->set_small_view(false);
chat()->toggle();
audio::play("ui/menu");
@@ -135,6 +176,10 @@ void PlayerView::toggle_chat()
void PlayerView::toggle_chatbar()
{
+ if (!chat()->small_view()) {
+ chat()->hide();
+ }
+
chat()->set_small_view(true);
chat()->toggle();
}
@@ -167,7 +212,7 @@ void PlayerView::show_menu(const std::string & args)
// requesting the info through game makes sure it is retreived from the server
view_buymenu->set_item( core::game()->request_info(id));
// show buy menu
- view_buymenu->show();
+ view_buymenu->show();
} else {
con_print << "usage: view buy [info id] show the buy menu for this kind of item" << std::endl;
}
@@ -203,8 +248,9 @@ void PlayerView::show_menu(const std::string & args)
view_entitymenu->show();
}
- if (chat()->visible() && chat()->small_view())
+/* if (chat()->visible() && chat()->small_view())
chat()->raise();
+*/
}
void PlayerView::resize()
@@ -213,6 +259,21 @@ void PlayerView::resize()
set_size(parent()->size());
+ // icons
+ const float icon_margin = 4.0f;
+ const float icon_size = 48.0f;
+ 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);
+ // spacer
+ 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_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);
+
// reposition buy menu
view_buymenu->event_resize();
// reposition trade menu
@@ -241,6 +302,14 @@ void PlayerView::resize()
void PlayerView::draw()
{
const float smallmargin = ui::UI::elementsize.height();
+
+ if (core::localcontrol()->state() == core::Entity::Docked) {
+ view_launchbutton->show();
+ view_dockbutton->hide();
+ } else {
+ view_launchbutton->hide();
+ view_dockbutton->show();
+ }
if (core::localplayer()->view()) {