Adds logic during the editor script initialization to let game modules have embedded tools
Changed setting to force prompt for target modules when creating things like datablocks to minimize confusion about where they save to
guiprofiles now have additional options: borderSEL and borderERR in keeping with the fillcolor variants. fontColors now also takes an optional ERR entry on the backend, though that remains unleveraged at time of writing.
guiiconbuttonctrl now uses the expanded list in conjunction with renderFilledBorder
asset browser profiles now contain a AssetBrowserProtoProfile that type-profiles derive from for consistency in border selection, highlight, (and down the line error) colors and border thickness while maintaining type-sepcific border color entries for general display
Fixes two issues:
-Bindings after the first page were not pointing to the correct remapping entries when actually remapping. Were populating the name and button image correctly, but first item on every page pointed to first item on first page.
-Keybinds were never being saved to file if your action maps all had long-form ("human readable") names defined.
Adds sanity check to default onNewDatablock function on the GameDatablock namespace in case the onAdd or onRemove functions aren't defined, we don't spam the console
utilize specialty case soundarray macros.
slim duplicate entries in vehicle already hand;ed by rigidshape.
create a gamebasedata::onnewdatablock which calls onremove and onadd for the db for those classes like wheeledvehicle that expect mounting logic to occur
Adjust the scaling of the options rows to be a consistent 50/50 divide between the options name and the actual options values to make the layout and scaling consistent
Fixes key remapping behavior to work properly
Added SubHeader text gui profile that is centered
Made the remapping gui control be stylistically consistent to messageboxes
Core_ClientServer.clearLoadStatus();
Core_ClientServer.inishMapLoad();
Core_ClientServer.FailMapLoad( %moduleName, %isFine);
Of special note: the postevent method must only take one entry, so we store off Core_ClientServer.failedModuleName = %moduleName; priorto triggering the event so that the failing module can be reported.
at time of writing:
Core_ClientServer.GetEventManager().postEvent( "mapLoadFail", false );
kicks players and closes the server
Core_ClientServer.GetEventManager().postEvent( "mapLoadFail", false );
proceeds to continue loading reguardless
leverages the EventManager and ScriptMsgListener() classes to set up a third mission load stage triggered by the following flow:
function <module>::onLoadMap(%this) starts an execution chain that leads to <module>::finishMapLoad()
each <module>::finishMapLoad() MUST contain the line
Core_ClientServer.GetEventManager().postEvent( "mapLoadComplete" );
once all have called back that they have finished thier tasks, players finish loading into a hosted mission
Adds sanity check so if no remappable binds are found for an actionMap, it isn't listed in the controls menu
Updates ExampleModule's keybinds to use new utility function