[crossfire] Client proposal: redo inventory/look widgets

Mark Wedel mwedel at sonic.net
Sun Aug 5 01:42:46 CDT 2007


Lalo Martins wrote:
> On the quest to "ungeekify" the client... ;-)

  Just a note - I doubt there will be any single answer that everyone will like. 
  So the idea of using libglade so multiple layouts can easily be defined I 
think will be a very good idea.  There are just too many variations - a client 
that works on a 800x600 resolution display (which some people seem to want) is 
not likely to be all the interesting/useful for someone like me with a 1920x1200 
display (I actually don't play the client full screen, but one reason is that 
making it full screen doesn't get me much at some point - wider inventory and 
text areas isn't useful).

> 
> Based on recent discussions and a comment from Mwedel, I'd like to 
> propose a revision of the inventory and "look" areas, and the 
> introduction of three new things.  (Of course I'm volunteering to write 
> the code for this.)
> 
> The question being: do people really *USE* all those 10 tabs?  Very 
> occasionally I use "unlocked" to sell stuff, but most of the time I use 
> "icons" and the first one.  And really, neither is the ideal UI for what 
> I actually want to do.

  Probably not.  I do often use the unlocked to see what stuff I've picked up 
that I need to sell.  Sometimes I'll use the unpaid item tag if I accidentally 
pick something up in the store - makes it find that item.

> 
> So here's the proposal: Currently we have an inventory notebook and a 
> "look" table.  I propose to replace them with two other widgets: what I 
> call the "stuff notebook", and the "shortcut area".

  Are you combind what is currently the two separate look & inventory areas into 
1 widge, that you are then subdividing into these 2 new widgets?  I'm just 
having troubles visualizing the layout here.

> 
> The "shortcut area" is really Mwedel's idea.  It would be a 10x2 or 10x3 
> (or even 10x4) table, and you drag either equippable items or spells to 
> that area.  Each "slot" essentially manages one keybinding; so if I put 
> my axe on 1,1 and small fireball in 2,1, then pressing "1" does "apply 
> axe" (well not really, but you get the point), and "shift 1" does "cast 
> small fireball".  The rows correspond to no mod, shift, ctrl, and alt.

  That seems reasonable.  Note that dealing with numbers requires a little bit 
of extra work - currently, whenever you enter a number into the client, it 
presumes that is the count of how many items you want to drop or pick up.

  Realistically, that probably isn't used very often, and even for cases when it 
is, require characters at that point to specify the number is reasonable (I do 
notice that right now, the count is a spinwheel, which makes it annoying if you 
want to drop 1000 of something, as spinning up that far would take a while). 
But it could be changed to a text box.

  I also wonder if there is some practical limit to number of useful quick item 
keys - at some level, you'd get so many, that it could be a pain to remember 
what is there.  I'd think that because of space constraints, those quick items 
would have to be just icon views, and not names (unless you hover the mouse) - 
but if you have to hover the mouse, that sort of looses the ability for it to be 
a quick view.

  If it is icon view, then it doesn't take much space - one thing to look at 
would be width - I think you would want it 4 rows and 10 columns - in this way, 
the columns effectively line up nicely with the numbers at the top of the 
keyboard (1 at left, then 2, etc), making it visually easier to see 
associations.  But there may not be space for all 10, but if the number was 
lower (like 8), that would still be an improvement.

> 
> Then the "stuff notebook"; I imagine it has a control (checkbox or toggle 
> button) that chooses between "details" and "icons" mode, regardless of 
> tab (I think the choice applies to all tabs).

  Reasonable.
> 
> First tab is "look"; the objects on the floor near you.  Second is the 
> plain, unfiltered inventory.  Yes, the filters are occasionally useful, 
> but IMO, not often enough to justify polluting the UI.  Fourth tab is the 
> spell list; this is an awesome addition to the game, IMO it's about time 
> it gets a more permanent space in the UI (and it's somewhat necessary in 
> order for the shortcut area to be useful for mages).

  I'd have to play around a bit to see if having to switch back and forth 
between ground view and inventory view would be OK, or if it would be annoying. 
  The GTK2 client contains different support for containers (displayed inside 
normal inventory, not look area), so that may not be quite so bad.

  I'd probably suggest another tab there, which is filtered inventory, but let 
the character define the filter how they want - probably simple checkboxes (like 
the newpickup) - unpaid, magical, etc.  This is probably better than current 
system, as it is more flexible, and matches my current method of play better - 
go to dungeon, get loads of crap, come back, do detect curse, drop that, do 
detect magic, drop non magical, then do identify, drop unlocked stuff I don't want.

  If I can filter on unlocked/non magical, makes it easier to filter out.  And 
adding in client side dropall based on currently selected tab and filter view 
would also be nice.

> 
> The third tab deserves its own paragraph :-) what I'm proposing here is a 
> "body diagram" similar to what many computer adventure games have.  Yes, 
> it would require some tinkering, since we have IIRC 3 or 4 different 
> combinations of body parts... but I have an idea how to do it and I'm 
> willing to write the code.  Here, you'd have a rough outline of a body, 
> and for each "body slot" your character has, there would be a space where 
> an icon can be drawn; if you equip an item on that slot, the 
> corresponding icon appears there.  Clicking a slot (with or without an 
> equipped item) would bring up a menu with the items that can be equipped 
> there.
> 
> Since it's a notebook widget, it would be hard to drag items from the 
> inventory to the body diagram; but then again, I have no idea why you'd 
> want to do that, since you can double-click it on the inventory :-)
> 
> I think hovering an icon on any of those widgets, if you are on "icon" 
> view, would display the rest of the information (what you would have on 
> "detail" view) on a tooltip.

  It would seem to me that the only purpose of such a body view if you can't 
really interact with it (or at least equip items directly on it) is somewhat 
limited.  Its informative to tell you where you have open spots, and another way 
to see what stuff you have equipped (but the show equipped items filter would 
probably give a more detailed information).

  It always seems to me the value of such body diagrams is 'ah, I have nothing 
on my feet - let me drag some boots there' type of thing, and/or as an easy way 
to equip/unequip items and see overall effect.  It is graphically nicer than 
having to use the body command to see what stuff I could equip, but would still 
seem to be of limited usefulness.

  So I think it would be useful if it could be displayed while also displaying 
inventory - just not sure if there is space to do that on low res setups.  If 
the look (ground) area remained its own widget, it could be done as a tab there, 
but that might also be odd.  It could perhaps also be done/overdrawn in the map 
area, but that gets messy since different drawing logic is used there.  I don't 
have a really good solution - the body view is good, I'm just trying to think 
how to make it more useful.

  One thing quickly off the top of my head, is if you click on an empty spot 
(say your finger where a ring goes), it could be nice to have an option for it 
to make a filter so that it only displays objects that go there.  Thus, you see 
an empty spot and you could quickly see if/what you have to put there.  This 
does require more information that client currently has (client currently 
doesn't get body info data for objects).

  Other unrelated imrpovements I never got around to:
- Use drag and drop for containers - if I drag something (either from inventory 
to ground) on top of a container, it should go into that container if at all 
possible.  Likewise, this could be used as a way to move stuff directly from 
container to ground.  Also, drag & drop should be used for complex items task 
(remove need to mark items) - eg, drag a torch to flint and steel, and it does 
the correct thing (some for weapons and weapon improvement scrolls, etc) - the 
use of mark items is a bit of a hack, but that fixes a hack before that.

- Change meaning of mouse buttons - left is currently examine, middle is apply 
(must be annoying to play crossfire if you have 2 button mouse), and right is 
pickup/drop.  My suggestions:

Left remains examine- nice about this is that it is 'safe' - nothing bad can 
happen if you left click on the time.

Double click left is apply (double click logic can be handled by GTK IIRC).

left + drag & drop works as desribed above

middle is pickup/drop, but could be bound to other things

Right brings up context menu, with things like lock item, mark (but that should 
go away), examine, not sure whatever item actions there are, but what there is, 
it would be here

  It would also be nice to make mouse buttons bindable/redefinable just like 
keys are.  So I could rebind middle button to something different, or right 
button, whatever.

  I choose the meaning of mouse buttons above as I think it matches what is 
GTK/gnome standard - right normally brings up a menu of things to do, left is 
normally select, but doing examine isn't bad.  Double click normally activates 
something, hence apply here.

  Note that if you have spells listed as a tab with objects, you do have to 
think about what different mouse buttons do there - one would be something like 
'cast', one would be something like invoke, etc.





More information about the crossfire mailing list