https://gfycat.com/DizzyEnergeticCygnet
I will make it prettier.
(Also: stristr. Since the Windows (and others?) standard library doesn't have it for some reason, I modified code someone put on StackExchange as a stopgap; once I'm ready to get on IRC for the day, we'll discuss attribution/rewriting.)
* M_StartMessages when file loading goes wrong! (Determined by CONS_Alerts of warning level CONS_WARNING and CONS_ERROR happening after W_LoadWadFile has been called.)
* Now actively tries to keep your place on the menu if files are deleted between calls to preparefilemenu().
* More enums! DIR_ (for if you want to try embed more metadata in the dirmenu strings) and REFRESHDIR_ (for refreshing the menu and handling warnings).
* Handle changing size menu between calls to opendir() better.
* Don't crash on draw/enter attempt if one of the dirmenu's is null.
* Moved the addons menu to OP_MainMenu instead of MainMenu for now so it can be tested in MP without needing to mess with several menus.
* Display the amount of space used for serverinfo_pak's fileneeded on the addons menu, both visually and with a percentage.
.gitignore stuff
The following changes have been made to `.gitignore` files in the objs/ and bin/ folders:
* All the `.gitignore`s living in subfolders of objs/ have been done away with and replaced with a single `objs/.gitignore`, covering all the things that the subfolders ignored before (including depend.ped, if anyone is like me and has to remove that file manually)
* All the `.gitignore`s living in subfolders of `bin/Mingw` ignore .exes of any name, not just srb2win/srb2dd/srb2sdl. en.mo is also ignored now... or rather any .mo file (just in case). This is mostly for my own sanity and that of anyone else who uses EXENAME=[name.exe] when compiling with MinGW.
If you're not sure what `.gitignore` does exactly, as far as I'm aware it literally just tells Git what to "ignore" (or rather, not track), so anyone using Git GUI or some other Git program etc doesn't have to see changes certain files and can't accidentally commit the files or whatever.
See merge request !174
* Instead of needing to press backspace, going back is now handled via an "(up arrow) UP..." entry in the table.
* Maximum depth is now #define'd instead of dotted around everywhere.
* Enums!
* Exec for .txt (with confirmation dialog) and .cfg (without)!
* Complaints about folders and etc now mention the folder names.
* A shrinking folder now prevents dir_on[] from going beyond its end.
Basic as fuck UI, and the controls for manipulating it suck, but the basic elements of the feature set I'm looking for have been implemented in some form or another. More at a later time.
MI, be glad I didn't do this in deeznux ;P
Skybox improvements
Some improvements to skyboxes and new features for them:
* *The Thing's Z position now determines the relative z position of a skybox viewpoint from the ground, the Thing's angle no longer affects the Z position at all.* This should also fix objectplace breaking skyboxes after you place a Thing, and allow Z heights to be more easily controlled by custom skybox mobjs set by Lua's `P_SetSkyboxMobj`.
* The skybox viewpoint Thing's "Parameter" value (or the multiple of 4096 added to the Thing type, if you're still using SRB2DB) determines the ID number for a viewpoint or centerpoint, a value between 0 and 15. By default the game uses the viewpoint and centerpoint using ID 0. Note: this ID system does not apply to custom skybox mobjs set by Lua, only to `MT_SKYBOX` mobjs spawned by Things for a map.
* **Linedef type 448** has been added as a linedef executor special for changing the skybox viewpoint and/or centerpoint used, making use of the new ID system mentioned above:
* By default, only the *viewpoint* will be changed. The front x offsets set the ID of the new viewpoint to use; if the number is out of range (numbers accepted are 0 to 15), the game will simply not use any viewpoint at all.
* If the "*Block Enemies*" flag is set, the centerpoint will be changed as well. In this case the front y offsets set the new centerpoint ID to use.
* If the "*Solid Midtexture*" flag is set, the viewpoint will **not** be changed at all. Combine this with Block Enemies to make the linedef type change only the centerpoint if needed (otherwise the linedef will do nothing lol).
* By default, only the player who triggered the linedef will see the skybox being changed. If a player did not trigger the linedef executor directly, no change will be seen by anyone. If the "*Not Climbable*" flag is set, the skybox change will be "global", i.e. it will be seen by all players in the map.
In my folder on the FTP I've made a subfolder called "skybox improvements", and in it are the following files:
* srb2win-skyboximprov.exe - the test exe for this branch I've compiled myself
* skyboxchange-test.wad - an edit of my test map for my skybox change Lua script release on the MB, to test out the new skybox change linedef type.
See merge request !89
-Moved the MD5 check for added files up so it avoids unnecessary work when you mess up and re-add a file.
-Using compression enum for compressed lumps now.
-Vastly improved central directory seeking algorithm, big files are read fine now. Thanks a lot JTE!
-Improved remaining central directory navigation algorithm, we know and expect what data is coming from now on, after all.
-TX_ textures and sounds are replaced, but textures crash the game on mapload, and sounds are simply mute when replaced. Might have to do something with caching, I don't know yet.
Admin ban fix
Okay, THIS time admin bans should work properly. Turns out the relevant code for banning did not properly consider the case of admins doing the banning, at least until now.
Unlike my last attempt at fixing admin bans (!165), this one would require both host and admin to have the fix exe assuming everyone else would be using 2.1.17, so I'm merging to next instead of master.
See merge request !167
Allowteamchange fix
Fixes "allowteamchange no" to actually work properly and NOT desync you from the game in most cases. You can now switch TO spectator freely (as intended it turns out), and switching FROM spectator is prohibited. The "Enter Game" menu option in Match/Tag now displays one of those blue window notices just like with "Change Teams" in CTF/Team Match if you cannot change teams right now. Everything else works as you'd expect.
The de-sync issue was originally reported here https://mb.srb2.org/showthread.php?p=789965#85
See merge request !168
Used instead of pLocalPalette when attempting to determine objective truths, such as "the colours of this gif without color profile modification" and "what indicies should this colormap remap to".
Also, made f_wipe.c's paldiv only get calculated once.
-Removed a redundant boolean related to texture loading in P_AddWadFile.
-Started working on handling PK3s differently, except that I'm not sure about what I'm doing.
I don't know what to do from now on for today, so I'll leave it here for now.
-PK3 files are now properly loaded as files.
-PK3 lumps are still being treated the same way as WAD files. It means they're dependant on markers, if that makes any sense in the context of a ZIP file (it doesn't). I haven't worked out this part yet but I obviously intend to do so.
-I don't know if the lumps' position address is correct, we'll figure out when I fix the thing from above.
-Tweaked compression conditional to a switch-case format, looking towards adding several comrpession algorithms; haven't removed the previous "compressed" boolean yet.
-Added dynamically allocated name strings for lumps; haven't removed the previous name field.
-Added rudimentary PK3 central directory recognition; nothing is actually loaded in the end.