I think you're showing some nice progress here.
Tnx Bjørn...
In terms of user interface I think a lot of the one-option cases can be left out. Probably a control system where right click spawns the menu and left click does a default action (target a monster, walk to location, talk with NPC, pick up item) would be best.
Indeed... Who never "killed" a buddy when attacking a monster together, while right click on buddy instead on monster... This will start several trade requests and a big trouble to buddy...
Well... I always desired that we can use left click for defaul actions (as you said) and right click for selective menu... Also, I guess we can handle left click in
game.cpp instead
gui/gui.cpp... Maybe it will be better keep all user input handler together...
Keep in mind though that the menu will also need keyboard input. In this regard, and also in regard to general functionality
I guess it will be a big problem create a menu that can handle keyboard input...Imho, we can create some slash commands (like: /addbuddy DareDevil or /trade Bjorn) for this task...
Also we can use some function keys (F2-F4,F8-F12) with a little range (5 tiles???) ahead our character... This way, we can execute an action (depends of slash comand or pressed key) with the first being in our range...
I'm wondering why you are not extending a Guichan ListBox.
In fact, the BrowserBox extends Guichan Widget directly... The PopupMenu extends Window, but without title bar... For handle links I've used a improved system (better then I'd made in In-game Help system... Now we can have: text and links in the same line, several links per line, highlighted links (I can implement the mouse change when over link if necessary)... For colors I've used just one single ImageFont and just four colors (black/red/green/blue/link color), but I can easily extend the widget to use all colors we want... Finally I discover how coloring the TMW texts without load several fonts... You will see how easy it is...
BTW, a screenshot showing the Chat using BrowserBox instead of TextBox:
