I've started working on a "point release" for my previous release, and have decided that this will become the new codebase. The other work during this week isn't wasted, as it can all be ported eventually. But I think it's important to focus more on completing the basic functionality and bugfixes, and to move forward with that engine, rather than to have a mess of two concurrent codebases with different levels of fixes and functionality, one of which seems to be moving away from trad Quake in certain areas, the other of which is trad Quake with a lot of the stuff you wish wasn't broken being fixed.
I've added in quite a bit so far, so here's the list:
- Renamed to "DirectQ" to avoid confusion over the name.
- Reverted to Visual C++ 2003 to (hopefully) prevent PF_VarString crash on changelevel.
- Fixed crash in video menu when more than 27 modes are available.
- Removed all "ChangeDisplaySettings" calls to fix crash when Alt-Tabbing (kinda didn't work - see below).
- Added splash screen so that you know which version you have.
- Fixed crash on dedicated server startup.
- Made DirectInput the default, use -nodinput to disable.
- Rewrote DirectInput code to use C++ style.
- Rewrote mouse code to use immediate mode rather than buffered mode.
- Added mousewheel support to DirectInput.
- Added 8-button mouse support to DirectInput.
- Added m_look cvar to give mouse looking (default 1).
- Changed m_forward default to 0.
- Added m_boost cvar to give additional boost to DirectInput without affecting sensitivity value (default 1.5).
- Renamed K_AUX buttons to K_JOY (it's what they are for, after all).
- Added 4 K_POV buttons to keep POV hats separate from the joystick buttons.
- Added previous weapon option to keys menu.
- Removed _windowed_mouse cvar.
- Added "colour" command (same as "color").
- Fixed team colours are greyscale.
- Adjusted all projections to the correct aspect for the selected resolution.
- Added scalable 2D widget drawing (gl_conscale, 0 to 1).
- Fixed widescreen FOV.
I have a serious bug when Alt-Tabbing fullscreen modes, which is annoying me a little. Right now it doesn't crash (I kinda wish it would, as I could at least examine what's going on in the debugger) but instead forces the desktop to the top of the Z-order when you Alt-Tab back (in front of every other window), and keeps it there even if you try to Alt-Tab away again - no way out!!!
I more than half suspect that this is either a HWND gone bad or something inherited from legacy gl_vidnt.c code, and that a lot of the old Alt-Tab code that was needed under OpenGL just ain't necessary with Direct3D, so I need to investigate correct ways of implementing Alt-Tab functionality under Direct3D.