After looking at the PAMM and Uber code all the infrastructure is already in place for server mods to use scenes in the new game lobby and live game user interface. https://github.com/pamods/pamm-atom/pull/15 Once merged I'll be updating Display Rank and Unit Selector to use server mod scenes removing the THERE CAN ONLY BE ONE constraint and all the hackery of shadowing js files. @cola_colin A server mod version of PA Stats could be created to automatically load PA Stats for all players in a game. eg tournaments Code: { "author": "mikeyh", "build": "79380", "context": "server", "date": "2015/03/20", "description": "Display 1v1 rank for players. Hosts need to refresh with F5 to load the server mod user interface in the game lobby (known Uber issue).", "display_name": "Display Rank", "forum": "", "identifier": "com.pa.mikeyh.gDisplayRank", "signature": "not yet implemented", "version": "1.0.0", "category": ["server-mod", "ui", "lobby"], "priority": 100, "scenes": { "new_game": ["https://palobby.com/mods/gDisplayRank/ui/mods/gDisplayRank/new_game.js"] }, "enabled": true }
how do you make it that you don't need to shadow stuff? Also yeah I was thinking about such a version of PA Stats, but it would need some extra code to work, as usually PA Stats needs to load code in more scenes than just live_game and new_game.
Here's how it works... There are no changes for local client mods and how ui_mod_list.js is managed except that a shadow copy is created as ui_mod_list_for_server.js which can be reloaded by the PA Server Mod Manager server mod (see below). The PA Server Mod Manager uses the same approach as the PA Client Mod Manager to manage a server mods version of ui_mod_list.js with scenes from all enabled server mods. When a server mod is enabled the new PA Server Mod Manager server mod is also enabled. Below is an example of what the PA Server Mod Manager outputs for the server mods version of ui_mod_list.js with the following server mods enabled: display rank unit selector When a host creates a game with server mods enabled the PA engine will send a copy of all the server mods files to the server. As each player joins, the server sends all of the server mods files to each players local machine. When PA loads the server mods version of ui_mod_list.js for each player it replaces their local client mods version of ui_mod_list.js which temporarily clears the players local list of client mods. The PA Server Mod Manager code pushed to each player then reloads their local ui_mod_list_for_server.js shadow copy created by the players local copy of PAMM (see above) to restore the players local client mods. Finally the server mod scenes are merged with the scenes for the players local client mods. Code: var global_server_mod_list = []; var scene_server_mod_list = { "new_game": [ "https://palobby.com/mods/gDisplayRank/ui/mods/gDisplayRank/new_game.js", "https://palobby.com/mods/gUnitSelector/ui/mods/gUnitSelector/new_game.js" ], "live_game": [ "https://palobby.com/mods/gUnitSelector/ui/mods/gUnitSelector/live_game.js" ] }; try { loadScript('coui://ui/mods/ui_mod_list_for_server.js'); try { global_mod_list = _.union( global_mod_list, global_server_mod_list ) } catch (e) { console.log(e); } ; try { _.forOwn( scene_server_mod_list, function( value, key ) { if ( scene_mod_list[ key ] ) { scene_mod_list[ key ] = _.union( scene_mod_list[ key ], value ) } else { scene_mod_list[ key ] = value } } ); } catch (e) { console.log(e); } } catch (e) { console.log(e); var global_mod_list = global_server_mod_list; var scene_mod_list = scene_server_mod_list; }
We need some testers who are willing to replace their PAMM app/assets/js/pamm-api.js with this version: https://raw.githubusercontent.com/m...af0a10c0d846be87121/app/assets/js/pamm-api.js Then contact me on global chat.
Oh, just change this Code: var PAMM_SERVER_MOD_IDENTIFIER = "com.pa.deathbydenim.dpamm.server"; to Code: var PAMM_SERVER_MOD_IDENTIFIER = "com.pa.mikeyh.pamm.server"; I feel bad enough that I'm still in there even though I have had nothing to do with the Atom-shell version of PAMM. (Also, this it pretty neat!)
We did another round of testing with PRoeleert and found a typo: scene__mod_list vs scene_mod_list https://github.com/pamods/pamm-atom/pull/16
The PA Server Mod Manager server mod logic in ui_mod_list.js for server mods is now: initialise global_server_mod_list initialise scene_server_mod_list try to load players client mods list from shadow copy ui_mod_list_for_server.js created by PAMM (if installed) merge global_server_mod_list into global_mod_list merge scene_server_mod_list into scene_mod_list if any exceptions use global_server_mod_list and scene_server_mod_list
I need some people to test a change to how the PA Server Mod Manager is enabled. To test the changes replace pamm/resources/app/assets/js/pamm-api.js in your PA directory with the following: https://github.com/mikeyh/pamm-atom/blob/master/app/assets/js/pamm-api.js With this change the PA Server Mod Manager should only be enabled when there are server mods using scenes.