示例#1
0
        private void DrawPlayersPanel(IEnumerable <BasePlayer> players, PanelSetup setup, UpdateEnum updateEnum)
        {
            HiddenPanelInfo info = _hiddenPanels[setup.PanelReg.Name];

            if (info.All)
            {
                return;
            }

            foreach (BasePlayer player in players)
            {
                PanelRegistration     reg       = setup.PanelReg;
                Hash <string, object> panelData = reg.Plugin.Call(reg.GetPanelMethod, player, reg.Name) as Hash <string, object>;
                if (panelData == null)
                {
                    PrintError($"DrawPlayersPanel: {reg.Plugin.Name} returned no data from {reg.GetPanelMethod} method");
                    return;
                }

                Panel panel = new Panel(panelData);
                foreach (PanelUpdate update in CreatePanel(panel, setup, updateEnum))
                {
                    CuiHelper.DestroyUi(player, update.PanelName);
                    if (!info.PlayerHidden.Contains(player.userID))
                    {
                        CuiHelper.AddUi(player, update.Container);
                    }
                }
            }
        }
示例#2
0
        private void DrawPanel(IEnumerable <BasePlayer> players, PanelRegistration registeredPanel, UpdateEnum updateEnum)
        {
            if (!_init)
            {
                return;
            }

            players = players
                      .Where(p => _storedData.Settings[p.userID]?.Enabled ?? true &&
                             (string.IsNullOrEmpty(registeredPanel.Permission) ||
                              permission.UserHasPermission(p.UserIDString, registeredPanel.Permission)))
                      .ToList();
            if (!players.Any())
            {
                return;
            }

            PanelSetup setup = new PanelSetup
            {
                Pos           = _pluginConfig.Docks[registeredPanel.Dock].Position,
                PanelColor    = registeredPanel.BackgroundColor,
                StartPos      = _panelPositions[registeredPanel.Dock][registeredPanel.Name],
                UiParentPanel = GetPanelUiName(registeredPanel.Name),
                PanelReg      = registeredPanel,
            };

            if (registeredPanel.PanelType == PanelTypeEnum.Global)
            {
                DrawGlobalPanel(players, setup, updateEnum);
            }
            else if (registeredPanel.PanelType == PanelTypeEnum.Player)
            {
                DrawPlayersPanel(players, setup, updateEnum);
            }
        }
示例#3
0
        private void RegisterPanel(Plugin plugin, string name, string panelData, string getMethodName, PanelTypeEnum type, string permission)
        {
            PanelRegistration panel = JsonConvert.DeserializeObject <PanelRegistration>(panelData);

            panel.Plugin          = plugin;
            panel.PanelType       = type;
            panel.GetPanelMethod  = getMethodName;
            panel.Name            = name;
            panel.BackgroundColor = Ui.Color(panel.BackgroundColor);
            panel.Permission      = permission;

            if (string.IsNullOrEmpty(panel.Name))
            {
                PrintError("A registered panel must have a name");
                return;
            }

            if (!_pluginConfig.Docks.ContainsKey(panel.Dock))
            {
                PrintError($"Dock '{panel.Dock}' does not exist for panel '{panel.Name}'");
                return;
            }

            if (!_pluginConfig.Docks[panel.Dock].Enabled)
            {
                PrintError($"Dock '{panel.Dock}' is not enabled and can't have panels assigned to it");
                return;
            }

            _registeredPanels[panel.Name] = panel;
            _hiddenPanels[panel.Name]     = new HiddenPanelInfo();
            RecalculatePositions(panel.Dock);
            DrawDock(BasePlayer.activePlayerList);
        }
示例#4
0
        private void DrawPanel(List <BasePlayer> players, PanelRegistration registeredPanel, UpdateEnum updateEnum)
        {
            if (!_init)
            {
                return;
            }

            players = players
                      .Where(p => _storedData.Settings[p.userID]?.Enabled ?? true)
                      .ToList();
            if (players.Count == 0)
            {
                return;
            }

            PanelSetup setup = new PanelSetup
            {
                Pos           = _pluginConfig.Docks[registeredPanel.Dock].Position,
                PanelColor    = registeredPanel.BackgroundColor,
                StartPos      = _panelPositions[registeredPanel.Dock][registeredPanel.Name],
                UiParentPanel = GetPanelUiName(registeredPanel.Name),
                PanelReg      = registeredPanel,
            };

            if (registeredPanel.PanelType == PanelTypeEnum.Global)
            {
                DrawGlobalPanel(players, setup, updateEnum);
            }
            else if (registeredPanel.PanelType == PanelTypeEnum.Player)
            {
                DrawPlayersPanel(players, setup, updateEnum);
            }
        }
示例#5
0
        private void UnregisterPanel(PanelRegistration panel)
        {
            if (!_registeredPanels.ContainsKey(panel.Name))
            {
                return;
            }

            _registeredPanels.Remove(panel.Name);

            string panelUiName = GetPanelUiName(panel.Name);

            foreach (BasePlayer player in BasePlayer.activePlayerList)
            {
                CuiHelper.DestroyUi(player, panelUiName);
            }

            _hiddenPanels[panel.Name] = null;
            RecalculatePositions(panel.Dock);
            DrawDock(BasePlayer.activePlayerList);
        }