This is the crowning feature: the whole point of this exercise. You can
now update redists from the client launcher itself. To activate this
functionality, you will need to flag the file 0x10 in the manifest. I
recommend listing your redists in the patcher manifests.
This adds a license-stopgap "feature" ... You can now update only the game
data by using the -Repair argument on the launcher. You'll need to specify
a stripped down MOULa server.ini with the GateKeeperSrv keys/host.
This argument works just like it does in Guild Wars. It checks all the
files (using Cyan's evil "Internal" and "External" manifests) for changes.
Expect this to take a decent amount of time.
Two of the big nasties, according to profiling, are the TnL enum and
creation of Direct3D objects. It turned out we were doing these things
several times (3 and 4 respectively) during the init process. So, now we
have an hsGDirect3D namespace and some smart pointers to manage them!
Remove detection for cards that are don't support at LEAST DirectX 8.
There's no way they would even be able to get past Direct3DCreate9, so we
shouldn't need to worry about them... I hope.
If you have less than 11MB VRAM or need to use the ref implementation,
then you are using a dinosaur and have no business even attempting to play
this game.
We already link against it, so that's just a waste of time. Also, cleanup
some unneeded ddraw includes. Remember that in Direct3D9, all devices can
render in windowed mode.
ONE PATCH! This commit brings us to half of the patching goal: on launch
of the client, we only show ONE "Updating..." message before we enter the
game proper. Go us!
Now we render titles above the progress bar and the status below (in the
same color as the progress bar!). Also, introduce a new info field that is
guaranteed to be right justified.