Improved UI 2011

From PSwiki
Jump to navigation Jump to search

(Go back to the main GSoC 2011 page)

UI In PlaneShift : PAWS

The UI in PlaneShift is managed by a library called PAWS (PlaneShift Alternate Windowing System or PlaneShift Acraig Windowing System), where acraig is the creator of the system.

The library is made of C++ classes to define a widget and an associated XML file which describes the layout and formatting.

Read more about the syntax and usage here.

Skills needed

For this project C++ knowledge is needed, and basic knowledge of XML. No MySQL knowledge is required.

Improvements needed

  • Help system: add capability to incorporate pictures/3d objects in the help widget, make it more configurable and context sentitive.(easy)
  • Active magic window: today whenever you cast a buff spell on yourself, or when someone casts a debuff spell on you, the magic window opens showing all the buffs and debuffs, that's very annoying and clutters the screen. We want to remove this window and just have a series of icons on the top right corner with all the active buff and debuffs. This is a kind of toolbar, but just with the icon. Mouseovering on the icons will tell you the type of spell and the duration.
  • Crafting books: Today the crafting techniques are special items which you can read like a book. Those allow you to complete crafting tasks, so for example to smelt and refine iron you need the "working with stock" crafting book. When you read this special book, the text displayed is the list of all possible combinations and transformations you can do with stocks. Even if it's simple to generate by the code, it's very hard to read and very hard to understand. We should show the books as ordered recipes and not only as a bunch of operations without any connection (needs to resolve a graph, also this needs to be cached somehow)(medium, graph algorithm knownledge is suggested)
  • Chat window: today the chat window has 2 settings: basic and full. The basic is used for new players to avoid showing elements like alliance or guild, since they will not use it for some time. The issue is that the chat window cannot change at runtime, and so when we want to switch between the basic and the full, we need to ask a restart of the client. The idea is to make the tabs configurable at runtime, so we can drive with an in game event the addition and removal of certain tabs. For example adding the guilds tab only when a player belongs to a guild. The list of tabs visible should be configurable in the options menu.
  • Images in books: Add the ability to include images in books, for example, an image of a creature could be included in the bestiary books.
  • Duplicate pawsWidget by copy constructor: Currently, all paws widgets are load from xml files. Even if we want to duplicate a paws widget, xml parsing is also a must. That is inefficient. By adding copy construction methods to the base paws widget classes, we won’t need to parse xml any more.
  • Rendering widget by RTT: It may be a little expensive to render windows by using RTT. But Planeshift will also benefit if we use it at the right place such rendering the paws sketch window. The first step for this idea is to enable drawing windows by RTT. The second step is to make the way of rendering windows configurable.
  • Hot bar for spells and items, with support for multiple rows, which can be resized and hidden.
  • General: fixes to the interface (focus issues for example, support for animated textures, render to texture), support to copy constructor in all the classes in order to create duplicate objects in paws easily without parsing again the xml each time, conversion to plugin. (easy to hard depending on the parts which are picked up)
  • Container System: Generalize the code so it's possible for the client to request to the server to be listening to a set of containers arbitrarily big and allow moving objects from the various open able container windows (medium)

Design

1. Improve the Help system.

2. Improve the chat window.

3. Images in books

4. Color selector

5. Duplicate pawsWidget by copy constructor

6. Rendering widget by RTT

7. Improve crafting book

Additional ideas

  • allow changing of skin from in game
  • allow changing of language from in game
  • New spell casting widget
  • making all windows resizable without glitches, and more configurable
  • Split the items in the options window in game to be divided in basic and advanced. This will simplify readability.

Progress