I realize my updates aren't that often, so it looks like little goes on behind the scenes. So I wanted to post a typical release log that shows all the updates that get rolled into a release from a previous one. Generally releases are done every two weeks. So here is what that looks like. I realize I'm asking empty air, but I wanted to know if people were more interested in seeing the daily patch updates or not based on below:
MultiPlayer is Active! (Ship to Ship combat only!)
The New Factory Screen is mostly active.
Updated splash screen graphics
Ship to Ship Multiplayer now works!
Fixed issue with the Cockpit POV being wrong on the client.
Fixed infinite loop with giving players corporations on the client end.
Cleaned up OmniBall movements for the multiplayer screens.
Updated the graphics for the splash screen with the Hi Res version.
Fixed Issue with sound for weapons, along with other preps needed for ships
Network speed increased from .15 to .05 (ie. 20 times a second)
Fixed linking issues for clients for new ships (meaning, what they are driving must be in STORLIST)
Fixed (?) issue with clients not having a CORP behind them for display. Host was fine.
Better details in the server log
Camview now set when going into the game from the client end.
Fixed loop in Multiplayer Script
Cleaned up Location structures to handle network ships.
Updated scripting so that a Player can be checked to see if he is human
Host now also has "STORLIST" wiped clean to start fresh
Changed how weapons are loaded in
NetComStartGame actually is hooked up
RequestSil is used now instead of SHIPLOAD (so now has display lists correctly)
Fixed bug where squadrons weren't being assigned it's player
Fixed bug with server list that it would crash if there was no list yet.
Changed how weapons were loaded from the file because it used negative pointer math
First test of multiplayer with scenarios
CreateShip Script command now supports script strings
SendPlayerOverNetwork now will support send any player, not just the playerlist (the player at the individual computer)
Fixed issue with Omniball being immobile. (Splashscreenresult kept moving it to specific coordinates)
Added Deadzone to mouse control.
Fixed issue when mouse isn't active, that the ship would still rotate (this MIGHT interfere with joysticks)
Added NETCOMSTARTGAME command so the host can signal the other clients to go into the game itself. (such tracking is still experimental)
The host (and only the host) can hit the start button which will execute the senario script and force everyone into the game itself (still under testing)
Fixed issue with firepower text being too small (ie. buff overflow)
Can now change player names across the network
Player Name change signals the screen
Text Input now works with changing player names (and infrastructure there to handle other things)
Chat seems to be working. :)
Updated Player send code so it sends the player type (human or computer) (now testing)
Lobby interface updated so the chat window works.
Updated the Server code to write a processing log.
Fixed issues with the OmniGrids for DisplayAsChain and SLot Grids so that non-looping objects will behave correctly.
Looping has also been fixed to remove some graphical glitches.
Overall OmniGrid behavior has been improved.
OGO backdrop for the queue grids/details grid has been added. Queues are positioned correctly. Details grid is shifted left from where its Screen Maker position would indicate.
The skeleton of the new asset screen is up and running, and linked into the necessary places in gow-sp.c. It consists at this moment only of a screen backdrop, but it can be entered and exited via the OmniBall and is defined in a Screen Maker file which is brought in via script.
UpdateMaterialsDisplay() has been corrected so that the new factory screen displays a running count of RM and CM. Correctness has been confirmed via the same numbers on the old asset screen. (There does not currently appear to be a building in the player haven that creates component materials.)
Corrected bug in design OGO creation that caused mismatch between available designs and OGOs due to not defining the OGPrev parameter.
Moved position of ConfigureDroppedOGO() call to ensure that it's called for each dropped OGO.
Removed inappropriate use of GenCollection mem pointer to create ShipDetail structs in PopulateDesignGrid().
Changed calculation of materials to actually calculate each material type, instead of trying to grab it from the CORP struct. However, it appears that there are currently no ASSET structs defined for the player, so this number still isn't changing at present.
The ShipDetail->FileName field of the ShipDetails stored in the design OGO->USERDATA are being blown out, reliably, by the following line in DisplayOBEffects(): line 5326, glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
Added the city icon ,ship and .iff files.
Tried (but failed) to get the server to signal that a player is fully loaded.
Player Grid now updating with newer player information (but found bug in HighlightOmniGrid that needs to be fixed for OGSDISPASSLOTGRID)
Fixed issue with saving servers (hopefully)
CloneOGOOGT is now a function that will clone both the OGO and Attached OGT series (it will be moved to ListGadgets shortly)
Updated the Screen ratio so the main game does the "squish" for non-16:9 screen ratios
Added Support in the splash screen for chat and Player additions. Still testing
Chat Text actually is typable and responds to the enter key.
Fixed issues with OGSDISPASSLOTGRID|OGSDISPASCHAIN where next line not lining up to previous line
Added OmniGridObjText displays for total Refined Materials and total Component Materials.
Corrected bug where new queue grids were added to grid list at the end, instead of before the overarch grid.
Corrected bug where new queue grid Y coordinates were all set to the same value, due to ConfigureFactoryScreenOGO() being run too soon. Moving ConfigureFactoryScreenOGO() to the end of the setup function seems to have fixed this.
Corrected bug in IDs for design grid OGOs due to using the wrong slash for an end-of-string terminator, which added a 0 to the end of every design grid OGO ID, e.g. ID 20 instead of ID 2.
Corrected bug in design grid population due to the builder bot being added separately, resulting in a miscount when matching up the OGO list and the GenCollection. The builder bot is no longer being added to the grid separately; now it is only being added to the GenCollection before any other player ships, so that grid population proceeds solely from the contents of the GenCollection, avoiding the miscount in the first place.
Despite correcting the first two bugs listed, the queue grids are still not appearing based on the Screen Maker version of the factory screen.
Added new grid IDs to the grid ID enum for display of RM and CM.
Screen Maker crashing on reload after linking the two new grids to their OGO. Same line every time, in if ((OGO->Status & OGOSMOVEOMNIGRID) && (OGO->OGType & OGTOMNIGRID)) block, crashes on OGD = (struct OmniGrid*)OGO->USERDATA.
Screen Maker version of the factory screen is now appearing in all its glory, with OGO displays and everything. Screen scaling is off, but the elements are all there.
Added defaults in the script for server ports and foreign address.
Can now dynamically get the local IP
Can now using the join list join a selected server (not tested yet)
Text now active in splash screen (still testing)
Added #DECORATION hashtag at the decoration on/off lines.
Got linking working in Screen Maker, still have display problems.
Updated factory sort functions to use UpdateToggleStateofOB();
Screen Maker version of factory screen is in system, and part of it is showing up: the grid IDs that I was already working with. None of the new sub-window grids are appearing, nor are those sub-grids OGOs. Also, the new screen does not appear to be scaling correctly.
Grid 3152 has become non-responsive in Screen Maker.
Fixed issue when no ships exists but it wants to send updates
Basic joining code (hard coded) now hooked up.
Hosting is also hard coded, but it is talking to each other. :)
Converted details mode OB button to use UpdateToggleStateofOB().
Performed general cleanup, got rid of commented out code, TODO hashtags that had been handled.
Added ScreenMaker bug fix per Arthur.
Built new factory screen in ScreenMaker several times, broke it each time figuring out how it worked, currently in rebuild number 3. Keeping backups this time as I add various features.
Checking in so Laptop can act as network host. :)
Added Lobby (host) screen.
AddServerToList now more flexable, since you can send in strings or the "window"
Loading from server list now works.
BuildServerList now works, but just gets from the server list in the file for now. (This will be expanded as the networking expands)
Added appropriate externs for the server code
Fixed issue with infinite loop in screen maker if saved with no text
Forced loaded text structures to have a minimum of 100 character buffer for templates regardless of what comes in.
NEW OmniGrid display method. Use OGSDISPASCHAIN with OGSDISPASSLOTGRID and it will keep GROUPS of OGOs together on the same line. So like a chain, but with more than one OGO per line. So now true multicolumn/individually selectable list grids are possible. (See Lobby screen)
Config now loading screens with script variables (cleaner...ish)
Updated scripting engine so that loading functions can take string variables
Can now save (automatically) save favorited servers. This is so eventually passwords for known servers can also be stored.
Adding a server from the Add server button now works (and autosaves the result)
Backdrops are properly imported and preserved between the splash screen and the multiplayer.
Join screen visually loading correctly (extra windows not there)
Host/Lobby screen built but isn't showing up.
Screen make "click" counter now works. So you know which in the series you are on, and if you aren't on anything, it blanks out.
Fixed issue of crashing when doing a second load in Screen Maker. It seems to be clean again. (PurgeOmniGrid didn't handle loops right)
CreateOGOTextList now has bigger text and template buffers (100 characters minimum) to prevent strange crashes.
Updated PopulateFactoryGrid() to use new template and not suck anymore.
Updated OGOSOBJETSLOOP testing to unify block amongst all Populate functions.
Updated PopulateDesignGrid() to use new template and not suck anymore. New version uses a GenCollection to gather list of available ships. Arthur, please check to ensure the memory management here is correct.
Updated PopulateDetailGrid() to use CreateOGOTextList(). It works perfectly, except when OGOSINVERSEOGOS is active; then it does not display correctly.
Altered details view activation: now, clicking the details view button on the OmniBall activates details mode (signified by changing the color of the button to the highlight color), at which point clicking on any design grid OGO will open up the appropriate details view. However, clicking on the design OGO again does not activate OGOSNEWDEACTIVE, so the details grid never disappears. (I made this entire change as part of cleanup; I was calling SwapQueuesAndShipDetail() in three places, despite that function only having two possible states. Now, it's only called twice, as appropriate.)
Also, Arthur, is there a SetVector define that would make saving the colors easier? I only thought of that while I was writing these notes; I probably didn't need to do this manually.
While I was adding flags, I added flags for fighter sorting, freighter sorting, and cap ship sorting. These flags are used to ensure that if the OmniBall button is unclicked, that all the design OGOs will reappear.
OGTs can now be made invisible (OGTSINVISIBLE)
More work on Join and Lobby screens.
Added function to purge OGTs cleanly
CreateOGOTextList expanded to handle cloning multiple OGTs in series, and purging extra OGOs and OGTs.
Added new OGType: OGTSTRING, for saving particular ship detail char* to the details grid OGOs.
Rewrote PopulateCityGrid() to use new template and therefore not suck anymore.
Eliminated DisableOneOrMoreGrids(). This function never worked the way I wanted it to, since only half the grids worked in an easily handleable way. After a couple hours trying to get it to work, I just eliminated it. Instead, the handling for OGOSNEWDEACTIVE turns off the appropriate grids one at a time, excepting the few instances where I need to turn off all the queues at once, in which case I have a new function, TurnOffAllQueues(), that does exactly and only what it says. This new situation is drastically simpler, so even if it still isn't Arthur-level, at least it will be easy to fix.
As a result of the preceding, grids are now all turning on and off at the appropriate and expected times, as handled at OGOSNEWACTIVE and OGOSNEWDEACTIVE.
PopulateDetailsGrid() now seems to be moving the appropriate data into the OGOTs, if I step through the code. However, the details grid OGOs are still not showing up.
As mentioned above, PopulateDetailGrid() now saves a reference in USERDATA to the particular ShipDetail->Detail string that we want to display in the associated OGOT. Also, detail grid OGO ids now match the array position that the string is being taken from, e.g. OGO->ID == 0 will match ShipDetail->Details, etc.
Draggable objects now have a small deadzone that if the mouse isn't dragging past is considered a click rather than drag.
Changed location of networking headers from BList to gow-networking.h and gow-server.h. Moved multiplayer specific code to gow-server from frontscreen.
Hooked up "add server" button to show hidden requester for further information. Actually adding a server doesn't work yet.
Turned off looping in the details grid, which was crashing the whole thing.
Removed line that exited PopulateDetailGrid() prematurely.
HighlightOmniGrid() currently crashing somehow due to the details grid.
Quick check in to fix (kinda) issue that a drag clone of an object won't set active if you are just trying to click. More work needs to be done to make it perfect.
Rewrote PopulatePlanetGrid() to reflect template use for UpdateQueueGridFromFactoryQueue();
Extracted function to configure OGOs dropped on a queue: ConfigureDroppedOGO(). OGOs dropped on a queue grid will now trigger a FACTORYQUEUE update prior to a queue grid update.
Extracted function to find and return PERSONEL struct based on ID, FindPersonelByID(), so it could be used repeatedly while updating the FACTORYQUEUE chain.
Added a couple tests when seeing if we should move to the next FACTORYQUEUE in UpdateFactoryQueueFromOGOList().
Rewrote SwapQueuesAndShipDetail() to not suck so very much.
Wrote what should be the most basic possible PopulateDetailGrid() version. Currently testing and expanding.