예제 #1
0
        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();
        }
예제 #2
0
 private void Panel_OnPanelClosed(IPanel panel)
 {
     OnPanelToggled?.Invoke(panel);
 }