Videos
YouTube - Some early videos of the new client.
To-Do
Hm. Things to do at present:
Get libSDL up and running for graphics.
Subclass ImageBuffer for video memory buffers.
Decide on whether or not to convert PC1s to PC2s at load time.
If so, make some sort of video memory caching scheme for PC2s.
...and make them _much_ more lightweight.
Extricate PC2Image from PC2ImageChain.
Get PC2 saves working again, since doing that will break it.
Add PC2AlphaBuffer and PC2SolidBuffer ImageBuffers so that FreeType can be integrated easily.
Implement a Pick function for PC2 images.
Write timing code and have it deal with Alt-Tab properly.
Get libSDL input working and have it raise events.
Find a good library for displaying text.
Integrate FreeType.
See what can be salvaged from a couple months ago's GUI code.
Get events throwing for the new GUI code.
Code up a few basic GUI controls.
A Picture control...
...and a Button control (very similar)...
...and lastly, a Label control.
Finish the text layout routines in Font.
Hm. Do a CheckBox for good measure.
A RadioBox wouldn't hurt either...
Start on the more complex controls.
ScrollableControl
ListBox
Add keyboard support.
Code up events for double-click/Enter key selection.
Differentiate active focus (keyboard caret in the listbox) on items from passive focus.
EditBox
Get keyboard events throwing.
- Implement selection and Cut and Paste (can wait).
Switcher
Create an object manager and an object class, for widget art properties, etc. Make it hierarchical for later reuse on the server rewrite.
Use TinyXml for serialization and deserialization.
Implement a C++ stream abstraction over CommonCode.Apr's FileHandle class.
Find a clean way to allow PC2Images requested by widgets to come from both ordinary bitmaps and PC2 archives.
Write XML GUI form deserialization code.
Get the very basics done.
Give it proper exception handling.
Program some cookie-cutter event handlers and make it so they can be hooked up via XML tags.
- Add window docking support (can wait).
Add a CommandLine control: a TextBox with a command history.
Customize ListBox slightly so that it doesn't slow down or use a lot of RAM with 1K+ items.
- Make Label inherit from Element instead of Control, since ListBox uses Label and the overhead is >200 bytes/entry (can wait).
- Upgrade DocumentCache (can wait).
- Make the document height retrievable without doing much layout (to reduce ListBox load time).
Support multiple blitters in one string of text, to allow different colors within a line.
Fix the TextSpan issue which causes scrolling up and down to not work exactly the same way in a TextBox.
See what can be salvaged from the network code of a few months ago.
Write new, shiny network code.
Get chat working.
Write game GUI controls (for Z-sorted drawing and picking).
GameElement
GameControl
GameContainerControl
GameManager
...and debug them.
- Anticipating character animation, make animation playback code.
Develop pathfinding code sufficient for finding routes between animations.
Add an event to the GUI Manager class to allow objects to receive per-frame callbacks.
Give the animation playback code events for animation change, frame change, and animation completion.
Allow replays of animations that have already been completed.
- Fix Faldon character art - the walk animation isn't set as looping.
- Make specialized controls for an isometric 2.5D game.
Tile
GroundTile
WallTile
- Entity
- Creature
- Object
- Projectile
- Find a way to implement key-remapping support well.
- The main problem is getting a good mapping between the key names and the SDL key constants.
- SDL's built in function won't work right on any non-US keyboard.
- Add in movement (splines? linear interpolation?) for monsters, players, etc.
- Capture MouseEnter/MouseLeave events from the GUI to get player highlighting up and running.
Decide on the behavior of the status text area (where 'GM Thunder' goes).
Implement the status text area.
In the short term
There are a lot of things that need to be completed before the client will
be useable. For my own reference, and because it's kind of fun to look at,
I've made a dependency graph of what needs to be done for various features
(PNG,
SVG).
Really there's an awful lot more than this to do, but the graph has all
the major points that need to be done in the short term to have a working
client.
Comments?
If you have comments, suggestions, etc. please post them in the
Development Journal forum. Thanks!
Copyright © 2007-2016 James F. Bellinger