Added another quality setting (VERY HIGH) and mapped all
combinations of platform + the old quality value to the new
4 value quality option, as follows:
desktop + mid/high quality => 3
mobile + high quality => 2
mobile + mid quality, desktop + low quality => 1
mobile + low quality => 0
All choice points in the code which enabled/disabled
graphics features, based on platform + quality,
were mapped onto a table. This showed which features were
disabled or enabled depending on the platform/quality
combination.
It turned out that mid and high quality resulted in the same
settings on desktop, so they could be captured in a single
value (3).
The only change made to the decision points was that desktop +
low quality previously turned off the booster lighting effect,
whereas that effect is now on for desktop + low quality. This was
done so that mobile + mid quality was equivalent to
desktop + low quality.
By doing this, the "mobile" property can be removed. I also
removed the "half" property, and set it based on quality in the
HexGL class (basically, it's enabled for mobile + low quality,
which is new quality value 0).
Remove the mobile property and set it locally in each location
where it is used (preparation for iterating the different
platform+quality combinations which affect the graphics).
Mark each point where a decision is made based on platform+quality
with a plain English version of the combinations which take
effect and when.
Add an explicit hud property which is set from the start screen
and which is independent of the platform.