$Id: TODO,v 1.12 2003/09/26 15:51:27 sketch Exp $

In this file planned new features, changes and fixes to known bugs are
listed, in no particular order within their categories.


Known bugs
==========

Note that architectural limitations and features caused by them are not
listed here; check the next section in case you're wondering.

- scroll in chat window breaks with long lines
- closing one of the dialogs with the window manager's 'Close' function
  makes the whole program shut down
- bugs in card handling; the infamous 'Greenland card' and getting stuck
  in exchanging cards
- if a client is disconnected after it has registered a player but the
  game has not been started, the 'dead' player is left into the player
  list


"Nice to have" things
=====================

- Replace all #define SOME_CONSTANT groups with enumerations
- Clean up the Doxygen documentation mess (\tag vs. \arg)


New features / major changes
============================

Note that some of these will mean major architectural changes to the
game, if ever implemented, while others are little more than fancy ideas
thrown in the air.

Items marked with an asterisk (*) impact the client-server protocol,
breaking backward compatibility and causing major changes on both sides
when implemented.

- General
    * Rewrite in C++. In itself a major change to the programs ;-)
    - Fix all reported bugs
    - Clean code up and add function explanations (in progress)
    - Add the SO_NODELAY option
    - Man pages for the programs
    - Add compiler-specific rpath to avoid relying on OS dynamic linker

- Client-server protocol
    * Voting (for restarting game and the like)
    * Change "Repeat Attack" to "Repeat Action"
    * Better mission support
    * In case a player doesn't reconnect after disappearing, assign
      a computer player to continue the game.
    * Let newly joined clients take over for dead players, or perhaps
      also let already existing players take over (In general, this
      is allowing Player Migration).
    * Incorporate message ID into message itself.
    * Improve message set to reduce bandwidth (a PlaceArmy action takes
      4 messages currently, and there is overlap).
    * Update the MSG_TURNNOTIFY message to just take the player.
    * Choosing defense die?

- Server
    - GUI for server
    - Make it so that client allocation is handled the same way as
      player allocation.

- Client
    - Complete haul to Qt toolkit
    - New dialogs/views
    - Statistics view
    - New card view
    - New registration dialog (for computer players)
    - Logging view
    - Feedback view
    - Graphical toolbar similar to Microsoft apps. Tooltips.
    - Connect/disconnect to server
    * New Game
    - Dynamic and optionally persistant color editing
    * Game options (through server)
    - Better font handling (75 DPI/100 DPI)
    - Bitmaps for cards
    - Mouse movement over a country displays name and continent
    - Have a larger version (not 800x600)
    - Drag'n Drop for armies like MAC Risk (from dice window)
    - Menu bar
    - Icon for the game (tiny world map?)
    - Acknowlege the world gif??
    - Limit size of buttons in Popup dialog, center them.
    - Fix so that 1 bit X servers work (still relevant?)
    - Use intro fonts for end of game message.
    - Display values of the continents.

Feel free to submit your suggestions to the Xfrisk mailing list.
