|Hacking the Infinity Preferences Dialogues|
|So guys, what are your preferences? Do you prefer to gather up your flimsy lace garments and swish into a room singing Japanese opera in a high piping falsetto or do you prefer to gather up your high power armaments, smash open the titanium hatch and blast horrified alien slavers to a Dantean Hell? [ Vote First Preference, Vote Second Preference ] Wow, the poll says 50-50... gosh... where do I go from here? I really expected something, er, a little more skewed in one direction guys. Well, while I digest that bit of info, you folks read the tutorial. Criminy. - gls|
This is something that's probably only of interest to TC-makers who want to better customize the Marathon Infinity engine to their needs (e.g. changing names, removing net play-related settings and info from solo-only projects, removing unused/unwanted controls/check boxes/menus). Note that this sort of thing has 'Kludge' written all over it; however, done correctly you'll get totally functional and professional-looking results. (Done wrongly you'll probably just get lots and lots of crashes.)
Obviously, these changes require that you distribute them as a patch (as with any engine mods, _don't_ distribute the entire engine, as that sort of thing tends to piss off the original author of the thing [i.e. Bungie, in this case]).
The first motto of this is "Don't Delete Anything", BTW. To be exact, you can move, hide, resize or disable stuff just fine, but if you delete anything be it a menu, check box or text field [note that you can alter/delete the _contents_ of static text fields just fine, as long as you don't delete the item itself] then you will _totally_ screw up the internal workings of the Marathon Infinity engine. All items in dialogue boxes are numbered in sequence, and the engine code refers to them by this, so if you do anything that changes that numbering the engine code will refer to all the wrong stuff and break.
Where the interesting stuff is
In the Marathon Infinity resource fork, you'll find various bits and pieces worth exploring:
ID#4000 — is the basic Preferences dialogue box. Not an awful lot you can do with this, other than resize it (if you so need) and jig the elements around. I have no idea why there doesn't appear to be an item present for the 'Preferences' graphic (not that this stops you altering the contents of that graphic - you'll find it in the PICT resource, naturally enough). The specifics that appear in this box are held in resources #4001-5.
ID#4001 — Graphics preferences. It's unlikely you'll feel the need to alter any of this. Personally, I've hidden the 'Number of Colors' menu for projects that have been designed as 256 colors only, but that would be another story...
ID#4002 — Player preferences. This might be worth modifying for Solo-only projects where there isn't and Shapes/Sounds/Map support for net play. You can remove all the text from the static text boxes and resize them so they don't get in the way. The Color and Team menus can be hidden by double-clicking on them to find out their CNTL resource IDs (#142, #136) and then going to those resources and setting 'Visible' to False. Hiding the player name Edit Text field is slightly more tricky, but what seems to work OK is to double-click on it, set it to a Static Text item and set height and width to 0.
ID#4003 — Sound preferences. You may want to hide/delete the text from the Static Text item at the bottom (or at least change 'Marathon' to that of your own project; but this text has gotten so _old_ anyway...). One other change that may be well worthwhile here is to hide the 'High-Quality' check box, which is a good idea if you are distributing a Sounds file that contains sounds only in the 8-bit slots and you wish to prevent folks foolishly selecting 16-bit sounds (in which case they'll note hear a damn thing). In this case, double-clicking the thing and setting its size to 0 should do the trick.
ID#4004 — Control preferences. It's unlikely there's anything you'd want to do here.
ID#4005 — Environment preferences. You may want to change/hide the text blurb at the bottom again. Also, if your TC is at least partially 'closed', you might want to hide some of the menus (e.g. Shapes, Sounds) to ensure that folks won't try to change these to use Shapes/Sounds that aren't yours.
ID#1000 — Team/Player colors. Useful if you start changing the Marine's CLUT in the Shapes file around so that different Player colors are used.
ID#2002 — Color depth. If you're creating a project that _isn't_ 256 Color-compatible, then it's a good idea to disable the '256' option in this menu. The only way to cleanly disable options under a menu that I know of is to open up the menu editing dialogue, select the entry in question and change its setting to 'separator line' (deleting the entry won't work, and merely unchecking 'enable' and/or deleting the text doesn't seem to disable the thing). Visually, it's not 100% beautiful, but it stops the option being selected by the user, which is the important thing.
ID#2004 — Difficulty. In case you've thought of much more interesting terminology to use.:)
The only other thing I've ever messed with in the Marathon Infinity Prefs is the Configure Keyboard preferences. However, since Marathon Infinity also has an option on InputSprockets, and at last some folks prefer to use this over keys, it's not worth messing with this dialogue unless you either figure out how to hack the Sprockets dialogues to keep them similar (unlikely), or are doing something really different that means you are seriously rearranging key attributes in Fux, etc. and can also afford to cut out the Sprockets option totally. AFAIK, I'm the only person [mad enough] to do this sort of thing, though just to give an idea of how far it's possible to modify the look and behavior of Marathon Infinity, I've included a screen shot of a modified dialogue below:
As you can see, just about anything's possible, once you know how. The trick though is to know the limits of what can and can't be done (and have a solid reason for doing it in the first place, of course).