public GameHUD( IRenderWindow renderWindow, IGameState gameState, IMouseInfoProvider mouseInfoProvider, Func <IMiniPanel> createMiniPanel, Func <eButtonType, IButton> createButton, Func <ePanelFrameType, IPanelFrame> createPanelFrame) { this.renderWindow = renderWindow; this.gameState = gameState; this.mouseInfoProvider = mouseInfoProvider; minipanel = createMiniPanel(); minipanel.OnPanelToggled += TogglePanel; leftPanelFrame = createPanelFrame(ePanelFrameType.Left); rightPanelFrame = createPanelFrame(ePanelFrameType.Right); runButton = createButton(eButtonType.Run); runButton.Location = new Point(256, 570); runButton.OnToggle = OnRunToggle; menuButton = createButton(eButtonType.Menu); menuButton.Location = new Point(393, 561); menuButton.OnToggle = minipanel.OnMenuToggle; menuButton.Toggle(); addStatButton = createButton(eButtonType.Skill); addStatButton.Location = new Point(207, 562); addStatButton.Enabled = addNewAttribute; addStatButton.OnActivate = () => TogglePanel(ePanelType.Character); addSkillButton = createButton(eButtonType.Skill); addSkillButton.Location = new Point(564, 562); addSkillButton.Enabled = addNewSkill; panelSprite = renderWindow.LoadSprite(ResourcePaths.GamePanels, Palettes.Act1, true); healthManaSprite = renderWindow.LoadSprite(ResourcePaths.HealthMana, Palettes.Act1, true); gameGlobeOverlapSprite = renderWindow.LoadSprite(ResourcePaths.GameGlobeOverlap, Palettes.Act1, true); }