Kian Ni пишет:
А вот с первым пунктом я не совсем понял о чем ты, так как там идет 0 - загрузка, 1 - новая игра, 2 - закрыть, и индекс для пунктов меню никак не меняется.
С утра внимательно посмотрел, как там все устроено, вот он кусок скрипта, от него и будем плясать для наглядности:
def to_select
to_up if Input.repeat?(:UP)
to_down if Input.repeat?(:DOWN)
command_continue if Input.press?(:C) && @index == 0
command_new_game if Input.press?(:C) && @index == 1
command_shutdown if Input.press?(:C) && @index == 2
end
Смотри, допустим у нас нет сейва.
Меню начинается с активного New_Game (индекс 1). Я жму ВНИЗ, оно перескакивает на Shutdown (индекс 2). Все правильно: перескакиваем ВНИЗ с первой строчки на третью, пропуская "отсутствующую вторую".
Но если с New_Game (индекс 1) я нажму ВВЕРХ, оно перескакивает на Continue (индекс 0), то есть ВНИЗ с первой строчки меню на вторую. Это неправильно, тем более, что сейва у нас никакого нет.
Теперь смотрим, если у нас есть сейв.
Меню начинается с активного Continue (индекс 0), я жму ВНИЗ и оно перескакивает на New_Game (индекс 1), но это со второй строчки меню на первую, то есть ВВЕРХ. Это неправильно. Если я нажму ВНИЗ еще раз, то перескакивает на Shutdown (индекс 2) - опять неправильно, потому что вместо того чтобы спуститься ВНИЗ (с первой строчки на вторую, раз уж у нас есть сейв) оно поднялось ВВЕРХ (с первой строчки на третью).
При этом когда Меню начинается с активного Continue (индекс 0), то сразу нажать ВВЕРХ, чтобы перейти на строчку New_Game, вообще нельзя.