/// <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
        }
Ejemplo n.º 4
0
 /// <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);
         }
     }
 }
Ejemplo n.º 5
0
 /// <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>
 /// 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);
     }
 }
Ejemplo n.º 8
0
        /// <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();
            }
        }
Ejemplo n.º 9
0
 public static void OnIsSelectingChanged(object sender, SelectionStateChangedArgs e)
 {
     SetIsSelecting(e.Owner, e.IsSelecting);
 }
        /// <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();

            }
        }
        /// <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>
        /// 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>
        /// 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
        }