Предыдущая Следующая
menuPosition
new Vector2(0, 0);
Для дощечек с командами Игра и Выход позиции задаются в правой части экрана и чуть ближе к его нижней кромке. Эти значения были вычислены еще на этапе проектирования меню, но их всегда можно подкорректировать в исходном коде, если вам вдруг не понравилось их расположение.
case 1:
spriteBatch.Draw(cursorGame, cursorPositionGame, Color.White); spriteBatch.Draw(cursorExit, cursorPositionExit, Color.Yellow); break;
case 2:
spriteBatch.Draw(cursorGame, cursorPositionGame, Color.Yellow); spriteBatch.Draw(cursorExit, cursorPositionExit, Color.White); break;
Принцип работы метода DrawMenu() следующий. Вызывая этот метод в классе Game1, в качестве второго параметра мы будем передавать в метод переменную cursorState, которая, как вы помните, показывает, какая из команд в текущий момент выбрана. Затем на базе оператора switch происходит отбор нужного ветвления для выполнения исходного кода метода DrawMenu().
Если переменная cursorState равна 1, то это значит, что в данный момент активна команда Игра и выбрана верхняя табличка. Поэтому нижнюю табличку необходимо подкрасить цветом, а верхнюю - красим белым цветом. Как только состояние переменной cursorState изменяется на двойку, то работает блок кода case 2, и так до бесконечности, пока одна из команд не будет выбрана (команда Enter).
В качестве цвета, закрашивающего табличку, был выбран желтый цвет, и мы закрашиваем именно не активную в данный момент команду, но можно делать и наоборот, выделять активную команду цветом. В следующем проекте мы так и
172 Создаем игровое меню
Проект Menu 173
сделаем - будем выделять цветом уже активную команду. Дополнительно рассмотренный механизм закрашивания спрайтов цветом можно использовать прямо в игровом процессе, накладывая на текстуры различные оттенки, гаммы цветов и даже новые текстуры.
С исходным классом Menu мы разобрались, переходим к основному коду игры и классу Gamel. По традиции все нововведения в исходном коде выделены жирным шрифтом для облегчения чтения произошедших изменений.
12.2.2. Загружаем в игру меню
Начнем с того, что объявим в области глобальных переменных класса Gamel объект класса Menu и создадим две переменные menuState и cursorState для отслеживания состояния меню и выбранной пользователем команды.
Menu menu;
private bool menuState; private int cursorState;
После этих объявлений переходим в конструктор класса Gamel, где создаем полноценный объект menu класса Menu и инициализируем обе переменные. Предыдущая Следующая
|