Esempio n. 1
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();
            }
        }
        /// <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
        }