From 75906b43ecb9a04fdab365bd8b1a00fbdbc66918 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 3 Oct 2010 19:57:17 +0000 Subject: ui updates, removed impulse and jumpgte g_devel conditions, jumpdrive crash bugfix --- src/client/playerview.cc | 89 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 79 insertions(+), 10 deletions(-) (limited to 'src/client/playerview.cc') 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()) { -- cgit v1.2.3