Beispiel #1
0
        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;
        }
Beispiel #2
0
        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;
        }