This wiki is archived and useful information is being migrated to the main website

Enhanced Server Listing

From BZFlagWiki
Jump to: navigation, search
Picture Frame.png This page contains the design document for an enhancement or feature. It is a work of collaborative development, and may not represent the final design. If you are not part of the development or design group, please post comments and suggestions on the talk page and not in the middle of the design.


This design document is for the enhancement of BZFlag's current server listing. These enhancements will include refactoring the current C++ code to make it easier to read, and more modular so that new features can easily be integrated in the future. New features will be also be added, such as the ability to filter the server list, sort the server list, and switch between a favorites and recent server list in addition to the regular server list.


Proposed Changes[edit]

Here's a list of all the proposed changes to the current server listing:

  • Refactoring
    • Create a HUDServerList class which provides the HUD functionality for the ServerLists
    • Create a HUDServerInfo class which provides the HUD functionality for ServerItems
  • Sort Options
    • Sort by Domain Name
    • Sort by Server Name
    • Sort by Number of Players
    • Sort by Sever Ping
  • Filter Options
    • Master On/Off Switch for Filters
    • Filter Out Empty Servers
    • Filter Out Full Servers
    • Filter by Ricochet (On/Off/Either)
    • Filter by Jumping (On/Off/Either)
    • Filter by Super Flags (On/Off/Either)
    • Filter by Server Name (Including Wildcards)
  • Recent Servers List

Keyboard Accessibility[edit]

The following requires a key press from the end user to activate/use:

  • Sorting
    • Sort By Domain Name
    • Sort By Server Name
    • Sort By Player Count
    • Sort By Server Ping
  • Filtering
  • Switching Between Favorites/Recent/Normal
  • Adding a Server to Favorites


1. Refactor and Comment Current ServerMenu Code

  • Move the HUD drawing code for ServerLists into a new HUDServerList class
  • Move the HUD drawing code for ServerItems into a new HUDServerInfo class

2. Implement Sorting Options on ServerLists

  • Display the HUDServerList with columns
  • Allow lists to be sorted by different information columns
  • Lists retain sorting when switching between favorites, recent, and normal

3. Implement Filtering Options

Remaining Things to Do[edit]

  • Display server pings
  • Finish off the create new tab control
  • Finalize column sizes
  • Tweak drawing
  • Finalize what information to display in server information
  • Get recent servers working correctly
  • Custom tabs should save between sessions
  • Implement an update function for the list