public MiniPanel(IRenderWindow renderWindow, Func <IGameHUD> getGameHud, IMouseInfoProvider mouseInfoProvider, IEnumerable <IPanel> panels, Func <eButtonType, IButton> createButton) { this.renderWindow = renderWindow; this.mouseInfoProvider = mouseInfoProvider; this._getGameHud = getGameHud; this.panels = panels; sprite = renderWindow.LoadSprite(ResourcePaths.MinipanelSmall, Palettes.Units, true); buttons = panelButtons.Select((x, i) => { var newBtn = createButton(x); var panel = panels.SingleOrDefault(o => o.PanelType == x.GetPanelType()); if (panel != null) { newBtn.OnActivate = () => OnPanelToggled?.Invoke(panel); panel.OnPanelClosed += Panel_OnPanelClosed; } return(newBtn); }).ToList().AsReadOnly(); }
private void Panel_OnPanelClosed(IPanel panel) { OnPanelToggled?.Invoke(panel); }