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); } } } }
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); } }
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); }
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); } }
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); }