public void UpdateMenu(InputManager input, PlayerStats userData, MusicManager musicManager)
        {
            m_menu.UpdateMe(input);
            m_volumeMenu.UpdateMe(input, userData);

            // Adjust volume control
            if (m_volumeMenu.Buttons[0].IsPressed && musicManager.VolumeMult > 0)
            {
                musicManager.VolumeMult -= 0.1f;
            }
            if (m_volumeMenu.Buttons[1].IsPressed && musicManager.VolumeMult < 1)
            {
                musicManager.VolumeMult += 0.1f;
            }
        }
Exemplo n.º 2
0
        public void UpdateMe(InputManager input, List <Tower> savedTowers, ContentManager content, GameTime gt, List <EnemyChar> enemies, List <BaseProjectile> projectiles, PlayerStats userData, EnemySpawnManager enemySpawnManager)
        {
            // Update the freeform menu component
            m_menu.UpdateMe(input, userData);

            // Modify the width of the source rectangle according to the time left before spawning
            m_spawnBarSrc.Width = (int)(m_spawnBarTex.Width * (enemySpawnManager.CurrTime / enemySpawnManager.WaveTime));

            // Recreate new set of buttons if the number of saved towers have changed
            if (savedTowers.Count != m_numberOfTowers)
            {
                m_towerOptions   = new List <TowerButton>();
                m_numberOfTowers = savedTowers.Count;

                for (int i = 0; i < savedTowers.Count; i++)
                {
                    TowerButton button = new TowerButton(content.Load <Texture2D>("Art\\PlaceholderArt\\GameplayGUI\\TowerHighlight"), new Vector2(180 + (72 * (i - m_minIndex)), 1044), Color.White, 2, 1, 1, 1, content, new ToolTip(content.Load <Texture2D>("Art\\GameArt\\ToolTipBacking"), Game1.debugFont, new Vector2(0, 0), Color.White, Color.Black, Vector2.Zero, "" + savedTowers[i].TowerName + "\nHealth: " + savedTowers[i].Health + "\nCost: " + savedTowers[i].TowerCost), i, "");
                    button.Tower = new Tower(content, savedTowers[i], new Vector2(216 + (144 * (i - m_minIndex)), 1008));
                    button.Tower.UpdateAllProps();
                    button.Tower.UpdatePosition();
                    m_towerOptions.Add(button);
                }
            }

            // Page switching logic
            if (m_menu.Buttons[1].IsPressed)
            {
                m_page++;
            }
            if (m_menu.Buttons[2].IsPressed)
            {
                m_page--;
            }

            // Since each page contains 5 tower buttons
            m_maxPages = m_towerOptions.Count / 5;

            // Lock the number of pages
            LockPages();

            // Set the lowest display index and max display index
            m_minIndex = m_page * 5;
            m_maxIndex = m_minIndex + 5;

            for (int i = 0; i < m_towerOptions.Count; i++)
            {
                m_towerOptions[i].Position = new Vector2(216 + (144 * (i - m_minIndex)), 1008);
                m_towerOptions[i].UpdateMe(input, gt, enemies, projectiles, content);

                // Make sure there is a tower to display
                if (m_towerOptions[i].Tower == null)
                {
                    m_towerOptions[i].Tower = new Tower(content, savedTowers[i], m_towerOptions[i].Position);
                }

                if (i >= m_minIndex && i < m_maxIndex)
                {
                    m_towerOptions[i].IsClickable = true;
                }
                else
                {
                    m_towerOptions[i].IsClickable = false;
                }
            }
        }