/// <summary> /// Show player's selected units stat and activate command for the units /// </summary> /// <param name="holder"></param> /// <param name="e"></param> private void showUnitStatAndCommand(SameSizeChildrenFlowLayout holder, SelectionStateChangedArgs e, BuildLargePreviewPictureBoxVisitor visitor) { int count = e.SelectedEntities.Count; // Only non-zombie stat being displayed if (!((UnitComponent)e.SelectedEntities[0]).IsZombie) { // Individual unit if (count == 1 && holder != null) { // Use the holder to show unit stats. DisplaySelectedEntityStatsVisitor visitor2 = new DisplaySelectedEntityStatsVisitor(); visitor2.Game = (XnaUITestGame)Game; visitor2.Layout = holder; e.SelectedEntities[0].Accept(visitor2); } e.SelectedEntities[0].Accept(visitor); PictureBox bigImage = visitor.PictureBox; bigImage.DrawBox = new Rectangle(25, 25, 150, 150); AddChild(bigImage); bool containsNonBuilders = true; for (int i = 0; i < e.SelectedEntities.Count; i++) { if (!((UnitComponent)e.SelectedEntities[0]).CanBuild) { containsNonBuilders = false; break; } } commandBar.activateButtons(containsNonBuilders); // show commandView if selected } // only non zombie }
/// <summary> /// Update and refresh holder every time multiple new units are selected /// </summary> /// <param name="holder"></param> /// <param name="e"></param> private void updateHolder(SameSizeChildrenFlowLayout holder, SelectionStateChangedArgs e) { int count = e.SelectedEntities.Count; if (holder != null) { holder.Clear(); if (count > 1) { holder.Visible = true; foreach (ModelComponent component in e.SelectedEntities) { BuildSelectedEntityUIVisitor visitor = new BuildSelectedEntityUIVisitor(); if (component is UnitComponent) { UnitComponent temp = (UnitComponent)component; component.Accept(visitor); if (visitor.UI != null) { holder.AddChild(visitor.UI); } } } //for } //if } //if }
/// <summary> /// Event handler when selection of units has changed /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void onSelectionChanged(Object sender, SelectionStateChangedArgs e) { int count = e.SelectedEntities.Count; SameSizeChildrenFlowLayout holder = getSelectedEntityUIHolder(); updateHolder(holder, e); // Update the holder flushStatPanel(); // Clear all stat panels updateStatAndCommandPanels(holder, e); // Update panel and activate new command menu }
/// <summary> /// Select an entity to allow for the giving of commands. /// </summary> /// <param name="component">The Entity to select</param> public void SelectEntity(ModelComponent component) { if (component is UnitComponent || component is Building) { selectedEntities.Add(component); component.Selected = true; if (SelectionStateChanged != null) { SelectionStateChangedArgs e = new SelectionStateChangedArgs(); e.SelectedEntities = selectedEntities; SelectionStateChanged(this, e); } } }
/// <summary> /// Refreshes the selection state. /// </summary> public void ClearSelectionState() { foreach (ModelComponent m in selectedEntities) { m.Selected = false; } selectedEntities = new List <ModelComponent>(); if (SelectionStateChanged != null) { SelectionStateChangedArgs e = new SelectionStateChangedArgs(); e.SelectedEntities = new List <ModelComponent>(); SelectionStateChanged(this, e); } }
/// <summary> /// Refreshes the selection state. /// </summary> public void ClearSelectionState() { foreach (ModelComponent m in selectedEntities) { m.Selected = false; } selectedEntities = new List<ModelComponent>(); if (SelectionStateChanged != null) { SelectionStateChangedArgs e = new SelectionStateChangedArgs(); e.SelectedEntities = new List<ModelComponent>(); SelectionStateChanged(this, e); } }
/// <summary> /// Update Stat panel and activate command panel for selected units /// </summary> /// <param name="holder"></param> /// <param name="e"></param> private void updateStatAndCommandPanels(SameSizeChildrenFlowLayout holder, SelectionStateChangedArgs e) { int count = e.SelectedEntities.Count; if (count > 0) { BuildLargePreviewPictureBoxVisitor visitor = new BuildLargePreviewPictureBoxVisitor(); if (e.SelectedEntities[0] is UnitComponent) { showUnitStatAndCommand(holder, e, visitor); } // unit else if (e.SelectedEntities[0] is Building) { Building y = (Building)e.SelectedEntities[0]; commandBar.activateProduceUnitButtons(y.Type); } } else { commandBar.disableButtons(); } }
public static void OnIsSelectingChanged(object sender, SelectionStateChangedArgs e) { SetIsSelecting(e.Owner, e.IsSelecting); }
/// <summary> /// Update and refresh holder every time multiple new units are selected /// </summary> /// <param name="holder"></param> /// <param name="e"></param> private void updateHolder(SameSizeChildrenFlowLayout holder, SelectionStateChangedArgs e) { int count = e.SelectedEntities.Count; if (holder != null) { holder.Clear(); if (count > 1) { holder.Visible = true; foreach (ModelComponent component in e.SelectedEntities) { BuildSelectedEntityUIVisitor visitor = new BuildSelectedEntityUIVisitor(); if (component is UnitComponent) { UnitComponent temp = (UnitComponent)component; component.Accept(visitor); if (visitor.UI != null) { holder.AddChild(visitor.UI); } } }//for }//if }//if }
/// <summary> /// Event handler when selection of units has changed /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void onSelectionChanged(Object sender, SelectionStateChangedArgs e) { int count = e.SelectedEntities.Count; SameSizeChildrenFlowLayout holder = getSelectedEntityUIHolder(); updateHolder(holder, e); // Update the holder flushStatPanel(); // Clear all stat panels updateStatAndCommandPanels(holder,e); // Update panel and activate new command menu }