public PlayerInfo(int playerIndex, bool offlineUser) { if (!offlineUser) { this.player = HEROsModNetwork.Network.Players[playerIndex]; } this.playerIndex = playerIndex; this.UpdateWhenOutOfBounds = true; Width = 350; UIImage bClose = new UIImage(closeTexture); UILabel lGroup = new UILabel("Group:"); UIButton bBan = new UIButton("Ban"); UIButton bKick = new UIButton("Kick"); UILabel label = new UILabel(); SnoopWindow snoopWindow = new SnoopWindow(); snoopWindow.SetPlayer(Main.player[0]); dropdown = new UIDropdown(); UIButton bTeleport = new UIButton("Teleport To"); UIButton bRestore = new UIButton("Restore Changes Made by this Player"); bTeleport.AutoSize = false; bTeleport.Width = 150; bRestore.AutoSize = false; // if logged in if (player != null && player.Username.Length > 0) { dropdown.AddItem(HEROsModNetwork.Network.AdminGroup.Name); for (int i = 0; i < HEROsModNetwork.Network.Groups.Count; i++) { dropdown.AddItem(HEROsModNetwork.Network.Groups[i].Name); if (player.Group.Name == HEROsModNetwork.Network.Groups[i].Name) { dropdown.SelectedItem = i + 1; } } } else if (player == null) { HEROsModNetwork.UserWithID user = HEROsModNetwork.Network.RegisteredUsers[playerIndex]; dropdown.AddItem(HEROsModNetwork.Network.AdminGroup.Name); for (int i = 0; i < HEROsModNetwork.Network.Groups.Count; i++) { dropdown.AddItem(HEROsModNetwork.Network.Groups[i].Name); if (user.groupID == HEROsModNetwork.Network.Groups[i].ID) { dropdown.SelectedItem = i + 1; } } } dropdown.selectedChanged += dropdown_selectedChanged; bClose.Y = spacing; lGroup.Scale = .5f; lGroup.X = spacing; lGroup.Y = spacing; dropdown.X = lGroup.X + lGroup.Width + 4; dropdown.Y = lGroup.Y; dropdown.Width = 200; dropdown.UpdateWhenOutOfBounds = true; if (player != null && player.Username.Length > 0) { label.Text = "Logged in as " + player.Username; } else { label.Text = "Not Logged In"; } label.X = spacing; label.Y = dropdown.Y + dropdown.Height + spacing; label.Scale = .35f; bBan.X = label.X; bBan.Y = label.Y + label.Height + spacing; bKick.X = bBan.X + bBan.Width + spacing; bKick.Y = bBan.Y; bTeleport.X = Width - bTeleport.Width - spacing; bTeleport.Y = bBan.Y; bRestore.X = Spacing; bRestore.Y = bTeleport.Y + bTeleport.Height + spacing; snoopWindow.X = bRestore.X; snoopWindow.Y = bRestore.Y + bRestore.Height + spacing; Width = bTeleport.X + bTeleport.Width + spacing; Height = bRestore.Y + bRestore.Height + spacing; bRestore.Width = Width - spacing * 2; AddChild(bClose); AddChild(label); HEROsModNetwork.Group myGroup = HEROsModNetwork.LoginService.MyGroup; if (!offlineUser) { if (myGroup.HasPermission("TeleportToPlayers")) { AddChild(bTeleport); } if (myGroup.HasPermission("Ban")) { AddChild(bBan); } if (myGroup.HasPermission("Kick")) { AddChild(bKick); } if (myGroup.HasPermission("Snoop")) { snoopWindow.SetPlayer(Main.player[playerIndex]); AddChild(snoopWindow); Width = snoopWindow.X + snoopWindow.Width + spacing * 2; Height = snoopWindow.Y + snoopWindow.Height + spacing * 2; } } if (myGroup.IsAdmin) { AddChild(lGroup); AddChild(dropdown); if (offlineUser || player != null && player.Username.Length > 0) { //AddChild(bRestore); } } bBan.Tag = Main.player[playerIndex].name; bKick.Tag = Main.player[playerIndex].name; bClose.X = Width - bClose.Width - spacing; bKick.onLeftClick += bKick_onLeftClick; bBan.onLeftClick += bBan_onLeftClick; bClose.onLeftClick += bClose_onLeftClick; bTeleport.onLeftClick += bTeleport_onLeftClick; bRestore.onLeftClick += bRestore_onLeftClick; }
public void UpdateList() { scrollView.ClearContent(); float yPos = spacing; for (int i = 0; i < Main.player.Length; i++) { Player player = Main.player[i]; if (player.active) { UIPlayerHead playerHead = new UIPlayerHead(player); playerHead.X = 8; playerHead.Y = yPos; yPos += playerHead.Height; UILabel label = new UILabel(player.name); label.Scale = .5f; label.Anchor = AnchorPosition.Left; label.X = playerHead.X + playerHead.Width + 8; label.Y = playerHead.Y + playerHead.Width / 2 + 8; label.onLeftClick += label_onLeftClick; label.Tag = i; scrollView.AddChild(playerHead); scrollView.AddChild(label); } } // TODO changes to offline users might not prop to all admin? if (HEROsModNetwork.LoginService.MyGroup.IsAdmin) { UILabel lOfflinePlayers = new UILabel("Offline Users"); lOfflinePlayers.Scale = .6f; lOfflinePlayers.X = Spacing; lOfflinePlayers.Y = yPos + Spacing; lOfflinePlayers.ForegroundColor = Microsoft.Xna.Framework.Color.Yellow; yPos = lOfflinePlayers.Y + lOfflinePlayers.Height; scrollView.AddChild(lOfflinePlayers); for (int i = 0; i < HEROsModNetwork.Network.RegisteredUsers.Count; i++) { HEROsModNetwork.UserWithID user = HEROsModNetwork.Network.RegisteredUsers[i]; //ErrorLogger.Log("? " + user.ID); //foreach (var item in HEROsModNetwork.Network.Players) //{ // ErrorLogger.Log("U" + item.ID); //} if (HEROsModNetwork.Network.Players.Any(x => x.ID == user.ID)) { // ErrorLogger.Log("Continue on " + user.ID); continue; } UILabel lUser = new UILabel(user.Username); lUser.Scale = .5f; lUser.X = 40 + Spacing * 2; lUser.Y = yPos; lUser.ForegroundColor = new Microsoft.Xna.Framework.Color(200, 200, 200); yPos += lUser.Height; lUser.onLeftClick += lUser_onLeftClick; lUser.Tag = user.ID; scrollView.AddChild(lUser); } } scrollView.ContentHeight = yPos + spacing; }