Menú de Opciones por Páginas
Descripción
A partir de La Base de Sky v1.2.0, el menú de opciones utiliza un sistema de páginas que organiza las opciones en pestañas navegables. Este nuevo sistema reemplaza la pantalla de opciones de una sola lista que existía en Pokémon Essentials v21.1.
El sistema está implementado en 048_UI/020_UI_Options_v22.rb y emplea
PageHandlers para registrar cada página y OptionHandlers para registrar las opciones
individuales dentro de ellas. Está diseñado con compatibilidad con Essentials v22 en mente.
Cada opción tiene un campo "page" que determina en qué página aparece. El jugador puede navegar
entre las páginas usando los botones laterales o las teclas de dirección.
Páginas por defecto
La Base de Sky v1.2.0 incluye cuatro páginas predefinidas:
| Identificador | Nombre | Orden | Contenido |
|---|---|---|---|
:gameplay |
Juego | 10 | Velocidad del texto, estilo de combate, escena de batalla, etc. |
:audio |
Audio | 20 | Volumen de música (BGM), volumen de efectos de sonido (SE), etc. |
:graphics |
Gráficos | 30 | Tamaño de pantalla, VSync, etc. |
:plugins |
Plugins | 40 | Opciones específicas de plugins (velocidad turbo, texto instantáneo, etc.) |
El valor de orden determina la posición de la página en el menú. Las páginas con un orden menor aparecen primero.
Cómo agregar una nueva página
Para registrar una nueva página en el menú de opciones, usa PageHandlers.add con el menú
:options_menu, un identificador único y un hash de configuración:
PageHandlers.add(:options_menu, :mi_pagina, {
"name" => _INTL("Mi Página"),
"order" => 50
})
| Campo | Tipo | Descripción |
|---|---|---|
"name" |
String | Nombre visible de la página, envuelto en _INTL para soporte de idiomas. |
"order" |
Integer | Posición de la página en el menú. Valores más bajos aparecen primero. |
:mi_pagina) es el valor que usarás en
el campo "page" de cada opción para asignarla a esta página.
Cómo agregar opciones a una página
Cada opción se registra con MenuHandlers.add (u OptionHandlers) e incluye un campo
"page" que indica en qué página debe aparecer:
Ejemplo: Opción en la página de Juego
MenuHandlers.add(:options_menu, :dificultad, {
"name" => _INTL("Dificultad"),
"order" => 50,
"page" => :gameplay,
"type" => NumberOption,
"parameters" => [0, 2],
"descriptions" => [
_INTL("Fácil"), _INTL("Normal"), _INTL("Difícil")
],
"get_proc" => proc { next $PokemonSystem.dificultad },
"set_proc" => proc { |value|
$PokemonSystem.dificultad = value
}
})
Ejemplo: Opción en una página personalizada
Si ya creaste la página :mi_pagina como se mostró arriba, puedes añadir opciones a ella
indicando su identificador en el campo "page":
MenuHandlers.add(:options_menu, :opcion_custom, {
"name" => _INTL("Mi Opción"),
"order" => 10,
"page" => :mi_pagina,
"type" => BooleanOption,
"get_proc" => proc { next $PokemonSystem.opcion_custom },
"set_proc" => proc { |value|
$PokemonSystem.opcion_custom = value
}
})
"page", la opción aparecerá en la primera
página (:gameplay) por defecto.
Recuerda añadir la propiedad a PokemonSystem
Toda opción personalizada necesita una propiedad correspondiente en PokemonSystem:
class PokemonSystem
attr_accessor :opcion_custom
alias _init_opcion_custom initialize
def initialize
_init_opcion_custom
@opcion_custom = false
end
end
||= o valores por defecto en el getter para evitar errores al cargar partidas antiguas.
Abrir el menú por script
Puedes abrir la pantalla de opciones paginada directamente desde un evento o script:
pbFadeOutIn {
scene = PokemonOption_Scene.new
screen = PokemonOptionScreen.new(scene)
screen.pbStartScreen
}
Artículos relacionados
- Interfaz — Visión general de las pantallas de interfaz del juego.
- Configuración — Ajustes generales y constantes del proyecto.
- Pantalla de Opciones — Referencia de la pantalla de opciones clásica de Essentials v21.1.