- No need to call CV_RegisterVar
- Cvar definitions live in only one file, easier to locate
- Organized into sections -- netvars, cheats, etc.
- Use builder pattern to initialize cvars
- Still need to extern if you want to read the cvar value
The directory functions this was built on are capable of converting Unix paths to Windows internally, but the paths generated by the search can sometimes be processed by the game afterwards, which relies on system-specific character comparison.
Notably fixes WADNAME failing via the console on Windows.
Search finally works again!
- Now uses a cvar which is copied into static memory to uppercase it, instead of a weird static string uppercased into zone memory.
- You have to scroll to the top of the menu to use it, one entry above the previous first file/folder/"UP...".
- Don't play menu sound if you've reached the end of an un-looping menu.
- m_menu.c and m_menu.h are dead. Everything has now been moved to k_menudef.c, k_menufunc.c, k_menudraw.c, and k_menu.h.
- Expanded menu_t and menuitem_t to add transitions and tooltips
- Early character select screen
- Removed almost all menu definitions, I'll be reimporting them as they are needed
* Kill addonsresponselimit, which was a hacky solution to a stupid problem. Instead...
* Allocate and consistently handle memory to store the name of an added file so we can reference it directly.
* Replace the choice between ./ and a custom folder with the full, standard assortment of Default (usehome ? SRB2HOME : SRB2PATH), HOME (SRB2HOME), SRB2 (SRB2PATH) or Custom (cv_addons_folder.string).
* Make these render as the name plus folder, since you can't go UP... from the top level.
* Make the path seperators consistently system-based re PATHSEP. (Quite frankly, I'm surprised it even worked in the first place...)
* Instead of iterating through the folder every time you change the search query by one letter, iterate through the "coredirmenu" (the game's interpretation of the folder) instead. MUCH, much less likely to lag to fuck and back.
* Hide a bit of complexity in filesrch.c instead of having the entire thing exposed to mess with. For example, closefilemenu() instead of manually freeing the struct each time.
* Refactor some stuff.
* Search case is now handled via cvar instead of assumed based on system.
* filemenusearch (previously strsystemstr) uses static char[] to prevent stack suffering.
* New cvar for searching from start of string instead of anywhere in it!
* Menu tweaked for the above.
* Reverted slash from pathsep.
* Improved layout of addons menu.
* Disabled input for 5 tics after a console-touching enter key command on the menu, so that weird stuff doesn't happen.
* Added Add-on options.
* cv_addons_option - chooses save location. A little smaller in scope than the weird Default/HOME/SRB2/Custom thing for screenshots - now it's SRB2 Folder and Custom.
* cv_addons_folder - goes with Custom for above.
* cv_addons_md5 - chooses whether to identify files on the addons menu with name comparison only, or with checksum comparison as well (more intensive hence not default).
* cv_addons_showall - chooses whether to show just supported file extensions, or all
* Some minor other refactors.
Bad:
* Screenshot options menu crashes on access for some reason (to do with itemOn not being valid?????) looking into