From a95028547981614e06ea7a6d22b853b85418cea3 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Wed, 15 Apr 2009 17:08:51 +0000 Subject: added info registry, list_info added network info transfer added info based buy menu and related game changes --- src/client/playerview.cc | 79 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 63 insertions(+), 16 deletions(-) (limited to 'src/client/playerview.cc') diff --git a/src/client/playerview.cc b/src/client/playerview.cc index 54d444d..e4a889a 100644 --- a/src/client/playerview.cc +++ b/src/client/playerview.cc @@ -4,6 +4,9 @@ the terms and conditions of the GNU General Public License version 2 */ +#include +#include + #include "audio/audio.h" #include "client/playerview.h" #include "ui/ui.h" @@ -32,10 +35,11 @@ PlayerView::PlayerView(ui::Widget *parent) : ui::Widget(parent) view_chat = new Chat(this); view_map = new Map(this); view_hud = new HUD(this); - view_menu = new EntityMenu(this); + view_entitymenu = new EntityMenu(this); + view_buymenu = new BuyMenu(this); view_hud->lower(); - view_menu->raise(); + view_entitymenu->raise(); } PlayerView::~PlayerView() @@ -49,7 +53,7 @@ void PlayerView::clear() view_chat->hide(); view_map->hide(); - view_menu->hide(); + view_entitymenu->hide(); view_lastentity = 0; } @@ -67,8 +71,8 @@ void PlayerView::toggle_map() if(chat()->visible() && !chat()->small_view()) chat()->hide(); - if (view_menu->visible()) - view_menu->hide(); + if (view_entitymenu->visible()) + view_entitymenu->hide(); } map()->toggle(); @@ -85,8 +89,8 @@ void PlayerView::toggle_chat() if(map()->visible()) map()->hide(); - if (view_menu->visible()) - view_menu->hide(); + if (view_entitymenu->visible()) + view_entitymenu->hide(); } chat()->set_small_view(false); chat()->toggle(); @@ -99,16 +103,47 @@ void PlayerView::toggle_chatbar() chat()->toggle(); } -void PlayerView::show_menu(const std::string & label) +void PlayerView::show_menu(const std::string & args) { + if (!args.size()) + return; + if (!core::localplayer()->view()) return; if (!core::localplayer()->view()->menus().size()) return; - view_menu->generate(core::localplayer()->view(), label.c_str()); - view_menu->show(); + std::stringstream argstr(args); + std::string label; + if (!(argstr >> label)) + return; + + if (label.compare("buy") == 0) { + // buy menu, single item + std::string itemtype; + std::string itemname; + + if ((argstr >> itemtype) && (argstr >> itemname)) { + view_buymenu->set_item(itemtype, itemname); + view_buymenu->show(); + view_entitymenu->hide(); + } else { + con_print << "usage: view buy [string] [string] buy menu for item type and name" << std::endl; + } + + } else if (label.compare("trade") == 0) { + // trade menu, multiple items + + } else if (label.compare("hide") == 0) { + view_buymenu->hide(); + view_entitymenu->hide(); + + } else { + view_entitymenu->generate(core::localplayer()->view(), label.c_str()); + view_entitymenu->show(); + view_buymenu->hide(); + } if (chat()->visible() && chat()->small_view()) chat()->raise(); @@ -121,6 +156,9 @@ void PlayerView::resize() set_size(parent()->size()); + // reposition buy menu + view_buymenu->event_resize(); + // set hud geometry view_hud->set_geometry(0,0, width(), height()); view_hud->event_resize(); @@ -142,6 +180,8 @@ void PlayerView::resize() void PlayerView::draw() { + const float smallmargin = ui::UI::elementsize.height(); + if (core::localplayer()->view()) { // hide hide when a view is set @@ -164,12 +204,17 @@ void PlayerView::draw() audio::play("ui/menu"); view_lastentity = core::localplayer()->view(); - } else if (!view_menu->visible() && !map()->visible() && (!chat()->visible() || chat()->small_view()) ) { + } else if (!view_entitymenu->visible() && !view_buymenu->visible() && + !map()->visible() && (!chat()->visible() || chat()->small_view()) ) { + // show the menu if there's no other window open menu()->show(); audio::play("ui/menu"); } + view_notify->set_size(width() - smallmargin * 3.0f - ui::UI::elementsize.width() * 1.5f, height() - smallmargin * 4.0f); + view_notify->set_location(smallmargin * 2.0f + ui::UI::elementsize.width() * 1.5f, smallmargin * 2.0f); + } else { // entity without menus, plain view view_lastentity = 0; @@ -179,8 +224,13 @@ void PlayerView::draw() } } else { - if (view_menu->visible()) { - view_menu->hide(); + view_notify->set_geometry(view_map->location(), view_map->size()); + + if (view_entitymenu->visible()) { + view_entitymenu->hide(); + } + if (view_buymenu->visible()) { + view_buymenu->hide(); } label_viewname->hide(); @@ -193,9 +243,6 @@ void PlayerView::draw() label_zonename->set_text(core::localplayer()->zone()->name()); } - //const float largemargin = ui::UI::elementsize.width() * 0.25; - const float smallmargin = ui::UI::elementsize.height(); - // reposition chat widget if (view_chat->small_view()) { view_chat->set_size(width() - smallmargin * 2, font()->height() * 2); -- cgit v1.2.3