Предыдущая Следующая
220 Создаем игровое меню
cursorPositionGame = new Vector2(850, 380); cursorPositionExit = new Vector2(900, 500);
Заметьте, что верхняя табличка с командой Игра изначально сдвинута влево по отношению к нижней табличке. Это говорит о том, что при входе в меню команда Игра будет активироваться первой. Впоследствии, естественно, мы добавим код для этой команды меню в классе Gamel, а также закрасим активную команду желтым цветом.
Затем в методе Load() класса Menu происходит загрузка всех трех графических изображений в игру, которые предварительно явно добавляются в каталог проекта в папку Content\Textures. И в самом конце исходного кода класса Menu создается метод DrawMenu() для вывода графики на экран телевизора.
public void DrawMenu(SpriteBatch spriteBatch, int state) {
spriteBatch.Draw(menuTexture, menuPosition, Color.White); switch(state)
{
case l:
spriteBatch.Draw(cursorGame, cursorPositionGame, Color.Yellow); spriteBatch.Draw(cursorExit, cursorPositionExit, Color.White);
break;
case 2:
spriteBatch.Draw(cursorGame, cursorPositionGame, Color.White); spriteBatch.Draw(cursorExit, cursorPositionExit, Color.Yellow);
break;
Принцип работы метода DrawMenu() следующий. Вызывая этот метод в классе Gamel, в качестве второго параметра мы будем передавать в метод переменную cursorState, которая, как вы помните, показывает, какая из команд в текущий момент выбрана. Затем на базе оператора switch происходит отбор нужного ветвления для выполнения исходного кода метода DrawMenu().
Если переменная cursorState равна 1, то это значит, что в данный момент активна команда Игра и выбрана верхняя табличка. Поэтому эту табличку необходимо подкрасить желтым цветом. Как только состояние переменной cursorState изменяется на двойку, то работает блок кода case 2 - и так до бесконечности, пока одна из команд не будет выбрана (кнопка А).
В качестве цвета, закрашивающего табличку, был выбран желтый, и мы закрашиваем именно активную в данный момент команду, но можно делать и наоборот, выделять неактивную команду цветом. Дополнительно рассмотренный механизм
Проект Menu 221
закрашивания спрайтов цветом можно использовать прямо в игровом процессе, накладывая на текстуры различные оттенки, гаммы цветов и даже новые текстуры.
12.2.2. Загружаем в игру меню
С исходным классом Menu мы разобрались, переходим к основному коду игры и классу Gamel. Начнем с того, что объявим в области глобальных переменных класса Gamel объект класса Menu и создадим две переменные menuState и cursorState для отслеживания состояния меню и выбранной пользователем команды. Предыдущая Следующая
|