Ticket #3120: 3120.v7.patch
File 3120.v7.patch, 3.4 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
1040 1040 } 1041 1041 1042 1042 /** 1043 * Called when the map changes or the number of players changes 1044 */ 1045 function 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 /** 1043 1070 * Called when the host choses the number of players on a random map. 1044 1071 * @param {Number} num 1045 1072 */ … … 1048 1075 if (g_IsInGuiUpdate || !g_IsController || g_GameAttributes.mapType != "random") 1049 1076 return; 1050 1077 1051 // Unassign players from nonexistent slots1052 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 1060 1078 // 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); 1067 1080 1068 1081 updateGameAttributes(); 1069 1082 } … … 1171 1184 delete g_GameAttributes.settings.LastManStanding; 1172 1185 } 1173 1186 1187 // Persist player data settings on map change 1188 if (g_GameAttributes.mapType == "skirmish") 1189 { 1190 let bGaiaSet = (mapSettings.PlayerData[0] == null); 1191 if (bGaiaSet) 1192 mapSettings.PlayerData.shift(); 1193 mapSettings.PlayerData = resizePlayerData(mapSettings.PlayerData, mapSettings.PlayerData.length); 1194 if (bGaiaSet) 1195 mapSettings.PlayerData.unshift(null); 1196 } 1197 1174 1198 if (mapSettings.PlayerData) 1175 1199 sanitizePlayerData(mapSettings.PlayerData); 1176 1200 … … 1190 1214 g_GameAttributes.settings.PlayerData[i].AIDiff = g_DefaultPlayerData[i].AIDiff; 1191 1215 } 1192 1216 1193 if (g_IsNetworked)1194 // Unassign excess players1195 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 else1202 g_PlayerAssignments = {1203 "local": {1204 "name": singleplayerName(),1205 "player": 11206 }1207 };1208 1209 1217 updateGameAttributes(); 1210 1218 } 1211 1219