This wiki is archived and useful information is being migrated to the main bzflag.org website
Enhanced Server Listing
Contents
Overview[edit]
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.
Design[edit]
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
Milestones[edit]
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
Links[edit]
Mock-ups[edit]
- Full Resolution Mock-up
- Resized Mock-up
- Bastardized Full Resolution Mock-up
- Resized Bastardized Mock-up