private void setPanel(PanelType panelType) { // Don't do anything if it is trying to switch to the same panel if (this.selectedPanelType == panelType) { return; } this.removeSelectedPanel(); // Construct new panel component and add it to the scene BasePanel panel = null; switch (panelType) { case PanelType.Combat: CombatControlPanel combatControlPanel = new CombatControlPanel(); combatControlPanel.WindowMessageInvoked += this.OnMessage; panel = combatControlPanel; break; case PanelType.MapNavigation: MapNavigatorPanel mapNavigator = new MapNavigatorPanel(this.mapModel); this.mapModel.StepMoved += mapNavigator.OnStepMoved; mapNavigator.WindowMessageInvoked += this.OnMessage; mapNavigator.Init(); panel = mapNavigator; break; } this.AddChild(panel); // Adjugst priority and positions panel.LocalPriority = -0.2f; panel.LocalPixelPosition = new Vector2(-80, 20); this.selectedPanel = panel; this.selectedPanelType = panelType; }
private void removeSelectedPanel() { switch (this.selectedPanelType) { case PanelType.Combat: CombatControlPanel combatControlPanel = (CombatControlPanel)this.selectedPanel; combatControlPanel.WindowMessageInvoked -= this.OnMessage; break; case PanelType.MapNavigation: MapNavigatorPanel mapNavigator = (MapNavigatorPanel)this.selectedPanel; this.mapModel.StepMoved -= mapNavigator.OnStepMoved; mapNavigator.WindowMessageInvoked -= this.OnMessage; break; } if (this.selectedPanel != null) { this.RemoveChild(this.selectedPanel); this.selectedPanel = null; } }