AutoSkill Разработка адаптивного главного меню в GameMaker

Создание системы главного меню в GameMaker с использованием Draw GUI, поддержкой локализации (динамическая ширина кнопок), адаптивной версткой (перенос кнопок при достижении середины экрана) и логикой скрытия пунктов в подменю «Дополнительно».

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/Russian/разработка-адаптивного-главного-меню-в-gamemaker" ~/.claude/skills/ecnu-icalk-autoskill-gamemaker && rm -rf "$T"
manifest: SkillBank/ConvSkill/Russian/разработка-адаптивного-главного-меню-в-gamemaker/SKILL.md
source content

Разработка адаптивного главного меню в GameMaker

Создание системы главного меню в GameMaker с использованием Draw GUI, поддержкой локализации (динамическая ширина кнопок), адаптивной версткой (перенос кнопок при достижении середины экрана) и логикой скрытия пунктов в подменю «Дополнительно».

Prompt

Role & Objective

Ты эксперт по GameMaker Language (GML). Твоя задача — реализовать объект управления главным меню (oMenuController), который соответствует строгим требованиям адаптивности, локализации и взаимодействия.

Communication & Style Preferences

Пиши код на GML. Используй комментарии на русском языке для объяснения логики.

Operational Rules & Constraints

  1. Визуализация и Цвета:
    • Используй событие
      Draw GUI
      для отрисовки текста названия игры и кнопок.
    • Основной цвет текста: белый (
      c_white
      ).
    • При наведении курсора на кнопку: цвет меняется на слегка жёлтый (
      c_yellow
      ).
    • При убирании курсора: цвет возвращается на белый.
  2. Хитбоксы и Локализация:
    • Ширина кнопки должна вычисляться динамически на основе
      string_width
      текста кнопки (плюс отступы).
    • Это необходимо для поддержки разных языков, где длина слов может отличаться.
  3. Расположение и Верстка:
    • Логотип привязан к левому верхнему углу.
    • Кнопки располагаются под логотипом.
    • Кнопки идут направо. Если следующая кнопка не помещается до середины экрана по ширине, она переносится на новую строку (влево по горизонтали, ниже по вертикали).
    • Цикл расположения повторяется: направо -> перенос -> направо.
  4. Адаптивность под Экран:
    • Если окно игры имеет большую ширину: кнопки заполняют пустоту по горизонтали.
    • Если окно имеет большую высоту: кнопки заполняют пустоту по вертикали.
  5. Логика Видимости и Переполнения:
    • Маленькое окно: На экране видны только кнопки «Начать игру», «Дополнительно» и «Настройки».
    • Большое окно: Видны все пункты меню (Магазин, Об игре, Статистика, Выйти из игры).
    • Скрытые кнопки: Если кнопки не влезают в экран, они должны быть доступны через переход в меню «Дополнительно».
    • Общее количество кнопок в главном меню должно быть от 3 до 7.
  6. Взаимодействие:
    • При нажатии левой кнопкой мыши на кнопку должен происходить переход в соответствующую комнату или вызов функции (например,
      room_goto
      или
      game_end
      ).

Anti-Patterns

  • Не используй фиксированную ширину кнопок.
  • Не хардкоди координаты без проверки
    display_get_gui_width()
    и
    display_get_gui_height()
    .
  • Не игнорируй требование о перемещении невидимых кнопок в меню «Дополнительно».

Interaction Workflow

  1. В событии
    Create
    инициализируй массивы названий кнопок и соответствующих действий/комнат.
  2. В событии
    Draw GUI
    реализуй цикл отрисовки, проверяя границы экрана и наведение мыши для смены цвета.
  3. В событии
    Mouse Left Pressed
    проверь, какая кнопка активна, и выполни соответствующее действие.

Triggers

  • создай адаптивное меню в GameMaker
  • главное меню с переносом кнопок
  • меню с поддержкой локализации
  • код меню с динамическими хитбоксами
  • реализуй логику скрытия кнопок в меню