void RefreshUserList() { int counter = 0; foreach (VirtualPlayerManager.VirtualPlayerInfo player in virtualPlayerManager.EnumerateVirtualPlayers()) { if (counter + 1 > playerList.Count) { PlayerListItem newItem = Instantiate(multiplayerMenuUI.playerListTemplate, multiplayerMenuUI.playerListObject.transform); newItem.Setup(virtualPlayerManager); newItem.onReportOrKick = OnReportOrKick; playerList.Add(newItem); newItem.gameObject.SetActive(true); } playerList[counter].SetVirtualPlayerInfo(player, /* isYou */ playerControlsManager.GetMyPlayerNumber() == player.slotNumber); counter++; } if (counter < playerList.Count) { for (int i = counter; i < playerList.Count; i++) { playerList[i].RequestDestroy(); } playerList.RemoveRange(counter, playerList.Count - counter); } foreach (PlayerListItem item in playerList) { item.UpdateEditToggle(); } // if(counter ) }
private void UpdateBuildPermissionsForNewUsers() { HashSet <string> newIds = new HashSet <string>(); foreach (VirtualPlayerManager.VirtualPlayerInfo player in virtualPlayerManager.EnumerateVirtualPlayers()) { if (VirtualIDsWithSetBuildPermissions.Contains(player.virtualId)) { continue; } newIds.Add(player.virtualId); } foreach (string id in newIds) { VirtualIDsWithSetBuildPermissions.Add(id); virtualPlayerManager.SetPlayerCanEdit(id, headerMenu.multiplayerGameMenu.GetNewUsersCanBuild()); } }
public void Show(VoosActor actor) { // Start with player 0 to avoid warnings/etc. AssignPlayerToActor(0, actor.GetName()); string name = actor.GetDisplayName(); List <PopupButton.Params> buttons = new List <PopupButton.Params>(); int myPlayerNumber = playerControlsManager.GetMyPlayerNumber(); int maxPlayerSlotNumber = 4; // Show at least player 1-4, unless there are more players. foreach (VirtualPlayerManager.VirtualPlayerInfo player in virtualPlayerManager.EnumerateVirtualPlayers()) { maxPlayerSlotNumber = Mathf.Max(player.slotNumber, maxPlayerSlotNumber); } for (int i = 1; i <= maxPlayerSlotNumber; i++) { int thisNumber = i; // For closures below buttons.Add(new PopupButton.Params { getLabel = () => $"Player {thisNumber}" + ((thisNumber == myPlayerNumber) ? " (myself)" : ""), onClick = () => OnClickedPlayerNumber(actor, thisNumber) }); } buttons.Add(new PopupButton.Params { getLabel = () => "Nobody for now", onClick = () => OnClickedPlayerNumber(actor, 0) }); buttons.Add(new PopupButton.Params { getLabel = () => "It's an NPC", onClick = () => OnClickedIsNpc(actor) }); popups.Show(new DynamicPopup.Popup { getMessage = () => $"Who will control this {name}?", buttons = buttons, }); }