Ticket #3120: 3120.v8.patch

File 3120.v8.patch, 3.3 KB (added by Jared Ryan Bills, 8 years ago)

Moved sanitizePlayerData above resizePlayerData.

  • 0ad/binaries/data/mods/public/gui/credits/texts/programming.json

     
    134134            {"nick": "njm"},
    135135            {"nick": "NoMonkey", "name": "John Mena"},
    136136            {"nick": "notpete", "name": "Rich Cross"},
     137            {"nick": "Offensive ePeen", "name": "Jared Ryan Bills"},
    137138            {"nick": "Ols", "name": "Oliver Whiteman"},
    138139            {"nick": "olsner", "name": "Simon Brenner"},
    139140            {"nick": "otero"},
  • 0ad/binaries/data/mods/public/gui/gamesetup/gamesetup.js

     
    10401040}
    10411041
    10421042/**
     1043 * Called when the map changes or the number of players changes
     1044 */
     1045function resizePlayerData(defPData, ply)
     1046{
     1047    if (g_IsNetworked)
     1048        // Unassign excess players
     1049        for (let guid in g_PlayerAssignments)
     1050        {
     1051            let player = g_PlayerAssignments[guid].player;
     1052            if (player > ply)
     1053                Engine.AssignNetworkPlayer(player, "");
     1054        }
     1055    else
     1056        // Reassign player 1
     1057        g_PlayerAssignments = {
     1058            "local": {
     1059                "name": singleplayerName(),
     1060                "player": 1
     1061            }
     1062        };
     1063    let pData = g_GameAttributes.settings.PlayerData;
     1064    return ply > pData.length ?
     1065        pData.concat(defPData.slice(pData.length, ply)) :
     1066        pData.slice(0, ply);
     1067}
     1068
     1069/**
    10431070 * Called when the host choses the number of players on a random map.
    10441071 * @param {Number} num
    10451072 */
     
    10481075    if (g_IsInGuiUpdate || !g_IsController || g_GameAttributes.mapType != "random")
    10491076        return;
    10501077
    1051     // Unassign players from nonexistent slots
    1052     if (g_IsNetworked)
    1053     {
    1054         for (let i = g_MaxPlayers; i > num; --i)
    1055             Engine.AssignNetworkPlayer(i, "");
    1056     }
    1057     else if (g_PlayerAssignments.local.player > num)
    1058         g_PlayerAssignments.local.player = 1;
    1059 
    10601078    // Update player data
    1061     let pData = g_GameAttributes.settings.PlayerData;
    1062     if (num < pData.length)
    1063         g_GameAttributes.settings.PlayerData = pData.slice(0, num);
    1064     else
    1065         for (let i = pData.length; i < num; ++i)
    1066             g_GameAttributes.settings.PlayerData.push(g_DefaultPlayerData[i]);
     1079    g_GameAttributes.settings.PlayerData = resizePlayerData(g_DefaultPlayerData, num);
    10671080
    10681081    updateGameAttributes();
    10691082}
     
    11741187    if (mapSettings.PlayerData)
    11751188        sanitizePlayerData(mapSettings.PlayerData);
    11761189
     1190    // Persist player data settings on map change
     1191    if (g_GameAttributes.mapType == "skirmish")
     1192        mapSettings.PlayerData = resizePlayerData(mapSettings.PlayerData, mapSettings.PlayerData.length);
     1193
    11771194    // Copy any new settings
    11781195    g_GameAttributes.map = name;
    11791196    g_GameAttributes.script = mapSettings.Script;
     
    11901207            g_GameAttributes.settings.PlayerData[i].AIDiff = g_DefaultPlayerData[i].AIDiff;
    11911208    }
    11921209
    1193     if (g_IsNetworked)
    1194         // Unassign excess players
    1195         for (let guid in g_PlayerAssignments)
    1196         {
    1197             let player = g_PlayerAssignments[guid].player;
    1198             if (player > g_GameAttributes.settings.PlayerData.length)
    1199                 Engine.AssignNetworkPlayer(player, "");
    1200         }
    1201     else
    1202         g_PlayerAssignments = {
    1203             "local": {
    1204                 "name": singleplayerName(),
    1205                 "player": 1
    1206             }
    1207         };
    1208 
    12091210    updateGameAttributes();
    12101211}
    12111212