Ticket #3120: 3120.v5.patch
File 3120.v5.patch, 3.2 KB (added by , 8 years ago) |
---|
-
0ad/binaries/data/mods/public/gui/credits/texts/programming.json
134 134 {"nick": "njm"}, 135 135 {"nick": "NoMonkey", "name": "John Mena"}, 136 136 {"nick": "notpete", "name": "Rich Cross"}, 137 {"nick": "Offensive ePeen", "name": "Jared Ryan Bills"}, 137 138 {"nick": "Ols", "name": "Oliver Whiteman"}, 138 139 {"nick": "olsner", "name": "Simon Brenner"}, 139 140 {"nick": "otero"}, -
0ad/binaries/data/mods/public/gui/gamesetup/gamesetup.js
1034 1034 } 1035 1035 1036 1036 /** 1037 * Called when the map changes or the number of players changes 1038 */ 1039 function 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 /** 1037 1060 * Called when the host choses the number of players on a random map. 1038 1061 * @param {Number} num 1039 1062 */ … … 1042 1065 if (g_IsInGuiUpdate || !g_IsController || g_GameAttributes.mapType != "random") 1043 1066 return; 1044 1067 1045 // Unassign players from nonexistent slots1046 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 1054 1068 // 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); 1061 1070 1062 1071 updateGameAttributes(); 1063 1072 } … … 1165 1174 delete g_GameAttributes.settings.LastManStanding; 1166 1175 } 1167 1176 1177 // Persist player data settings on map change 1178 if (g_GameAttributes.mapType == "skirmish") 1179 mapSettings.PlayerData = resizePlayerData(mapSettings.PlayerData, mapSettings.PlayerData.length); 1180 1168 1181 if (mapSettings.PlayerData) 1169 1182 sanitizePlayerData(mapSettings.PlayerData); 1170 1183 … … 1184 1197 g_GameAttributes.settings.PlayerData[i].AIDiff = g_DefaultPlayerData[i].AIDiff; 1185 1198 } 1186 1199 1187 if (g_IsNetworked)1188 // Unassign excess players1189 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 else1196 g_PlayerAssignments = {1197 "local": {1198 "name": singleplayerName(),1199 "player": 11200 }1201 };1202 1203 1200 updateGameAttributes(); 1204 1201 } 1205 1202