Ticket #3120: 3120.v5.patch

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

Cleaned up code and moved player (un)assignment into function.

  • 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

     
    10341034}
    10351035
    10361036/**
     1037 * Called when the map changes or the number of players changes
     1038 */
     1039function resizePlayerData(newPData, len)
     1040{
     1041    if (g_IsNetworked)
     1042        // Unassign excess players
     1043        for (let ply = g_PlayerAssignments.length-1; ply > len; --ply)
     1044            Engine.AssignNetworkPlayer(g_PlayerAssignments[ply].player, "");
     1045    else
     1046        //Reassign player 1
     1047        g_PlayerAssignments = {
     1048            "local": {
     1049                "name": singleplayerName(),
     1050                "player": 1
     1051            }
     1052        };
     1053    let pData = g_GameAttributes.settings.PlayerData;
     1054    return len > pData.length ?
     1055        pData.concat(newPData.slice(pData.length, len)) :
     1056        pData.slice(0, len);
     1057}
     1058
     1059/**
    10371060 * Called when the host choses the number of players on a random map.
    10381061 * @param {Number} num
    10391062 */
     
    10421065    if (g_IsInGuiUpdate || !g_IsController || g_GameAttributes.mapType != "random")
    10431066        return;
    10441067
    1045     // Unassign players from nonexistent slots
    1046     if (g_IsNetworked)
    1047     {
    1048         for (let i = g_MaxPlayers; i > num; --i)
    1049             Engine.AssignNetworkPlayer(i, "");
    1050     }
    1051     else if (g_PlayerAssignments.local.player > num)
    1052         g_PlayerAssignments.local.player = 1;
    1053 
    10541068    // Update player data
    1055     let pData = g_GameAttributes.settings.PlayerData;
    1056     if (num < pData.length)
    1057         g_GameAttributes.settings.PlayerData = pData.slice(0, num);
    1058     else
    1059         for (let i = pData.length; i < num; ++i)
    1060             g_GameAttributes.settings.PlayerData.push(g_DefaultPlayerData[i]);
     1069    g_GameAttributes.settings.PlayerData = resizePlayerData(g_DefaultPlayerData, num);
    10611070
    10621071    updateGameAttributes();
    10631072}
     
    11651174        delete g_GameAttributes.settings.LastManStanding;
    11661175    }
    11671176
     1177    // Persist player data settings on map change
     1178    if (g_GameAttributes.mapType == "skirmish")
     1179        mapSettings.PlayerData = resizePlayerData(mapSettings.PlayerData, mapSettings.PlayerData.length);
     1180
    11681181    if (mapSettings.PlayerData)
    11691182        sanitizePlayerData(mapSettings.PlayerData);
    11701183
     
    11841197            g_GameAttributes.settings.PlayerData[i].AIDiff = g_DefaultPlayerData[i].AIDiff;
    11851198    }
    11861199
    1187     if (g_IsNetworked)
    1188         // Unassign excess players
    1189         for (let guid in g_PlayerAssignments)
    1190         {
    1191             let player = g_PlayerAssignments[guid].player;
    1192             if (player > g_GameAttributes.settings.PlayerData.length)
    1193                 Engine.AssignNetworkPlayer(player, "");
    1194         }
    1195     else
    1196         g_PlayerAssignments = {
    1197             "local": {
    1198                 "name": singleplayerName(),
    1199                 "player": 1
    1200             }
    1201         };
    1202 
    12031200    updateGameAttributes();
    12041201}
    12051202