Pantalla de Opciones
La Pantalla de Opciones permite al jugador personalizar diversos aspectos del juego como la
velocidad del texto, el volumen del sonido, el estilo de combate y el tamaño de la pantalla. Se accede desde el
menú de pausa. Las preferencias se almacenan en el objeto $PokemonSystem.
Opciones estándar
Estas son las opciones disponibles por defecto en Pokémon Essentials v21.1:
| Opción | Valores posibles | Propiedad | Descripción |
|---|---|---|---|
| Velocidad del Texto | Lenta (1), Normal (2), Rápida (3) | $PokemonSystem.textspeed |
Velocidad a la que aparece el texto de los mensajes |
| Escena de Batalla | Activada (0), Desactivada (1) | $PokemonSystem.battlescene |
Si se muestran las animaciones de movimientos en combate |
| Estilo de Combate | Cambiar (0), Fijar (1) | $PokemonSystem.battlestyle |
Si se permite cambiar de Pokémon al derrotar al rival |
| Volumen de Música | 0 a 100 | $PokemonSystem.bgmvolume |
Volumen de la música de fondo |
| Volumen de Efectos | 0 a 100 | $PokemonSystem.sevolume |
Volumen de los efectos de sonido |
| Tamaño de Pantalla | 1x, 2x, 3x, Completa | $PokemonSystem.screensize |
Tamaño de la ventana del juego |
La clase $PokemonSystem
Todas las opciones se almacenan en una instancia de la clase PokemonSystem, accesible globalmente
como $PokemonSystem. Esta instancia se crea al iniciar el juego y se guarda con la partida.
# Leer una opción
velocidad = $PokemonSystem.textspeed # 0=Lenta, 1=Normal, 2=Rápida
# Cambiar una opción por script
$PokemonSystem.textspeed = 2 # Poner texto rápido
$PokemonSystem.battlescene = 1 # Desactivar animaciones de batalla
$PokemonSystem.battlestyle = 0 # Modo "Cambiar"
# Ajustar volúmenes
$PokemonSystem.bgmvolume = 80 # Música al 80%
$PokemonSystem.sevolume = 50 # Efectos al 50%
Opciones extra de La Base de Sky
La Base de Sky añade opciones adicionales que no existen en Essentials estándar:
| Opción | Valores | Descripción |
|---|---|---|
| Velocidad de Juego | x1, x2, x3 | Multiplicador de velocidad del juego (turbo) |
| Turbo en Combate | Activado/Desactivado | Permite acelerar los combates automáticamente |
| Saltar Animaciones | Activado/Desactivado | Omite las animaciones de movimientos en combate |
| Texto Instantáneo | Activado/Desactivado | El texto aparece inmediatamente en lugar de letra por letra |
Cómo añadir una opción personalizada
Para añadir una nueva opción al menú, necesitas hacer tres cosas:
1. Añadir la propiedad a PokemonSystem
# En un nuevo script o plugin
class PokemonSystem
attr_accessor :dificultad # 0=Fácil, 1=Normal, 2=Difícil
# Si necesitas un valor por defecto, modifica initialize:
alias _init_dificultad initialize
def initialize
_init_dificultad
@dificultad = 1 # Normal por defecto
end
end
2. Registrar la opción en el menú
# Registrar la nueva opción
MenuHandlers.add(:options_menu, :dificultad, {
"name" => _INTL("Dificultad"),
"order" => 50,
"type" => NumberOption,
"parameters" => [0, 2], # Rango de valores: 0 a 2
"descriptions" => [
_INTL("Fácil"), _INTL("Normal"), _INTL("Difícil")
],
"get_proc" => proc { next $PokemonSystem.dificultad },
"set_proc" => proc { |value|
$PokemonSystem.dificultad = value
}
})
3. Usar la opción en el juego
# En cualquier script donde necesites consultar la dificultad:
case $PokemonSystem.dificultad
when 0 # Fácil
multiplicador_exp = 1.5
when 1 # Normal
multiplicador_exp = 1.0
when 2 # Difícil
multiplicador_exp = 0.75
end
Tipos de opciones
El sistema de opciones soporta diferentes tipos de controles:
| Tipo | Clase | Descripción |
|---|---|---|
| Enumeración | EnumOption |
Una lista de valores predefinidos (ej: Lenta/Normal/Rápida) |
| Numérico | NumberOption |
Un rango numérico con descripciones para cada valor |
| Deslizador | SliderOption |
Un control deslizante para valores continuos (ej: volumen) |
| Booleano | BooleanOption |
Activado/Desactivado |
Ejemplo: Opción booleana
MenuHandlers.add(:options_menu, :mostrar_reloj, {
"name" => _INTL("Mostrar Reloj"),
"order" => 55,
"type" => BooleanOption,
"get_proc" => proc { next $PokemonSystem.mostrar_reloj },
"set_proc" => proc { |value|
$PokemonSystem.mostrar_reloj = value
}
})
Ejemplo: Opción de deslizador (volumen)
MenuHandlers.add(:options_menu, :volumen_voces, {
"name" => _INTL("Volumen de Voces"),
"order" => 35,
"type" => SliderOption,
"parameters" => [0, 100], # Mínimo 0, máximo 100
"get_proc" => proc { next $PokemonSystem.volumen_voces },
"set_proc" => proc { |value|
$PokemonSystem.volumen_voces = value
}
})
Abrir la pantalla de opciones por script
# Abrir las opciones directamente
pbFadeOutIn {
scene = PokemonOption_Scene.new
screen = PokemonOptionScreen.new(scene)
screen.pbStartScreen
}
Gráficos
Los gráficos de la pantalla de opciones se encuentran en Graphics/UI/Options/:
| Archivo | Descripción |
|---|---|
bg.png |
Fondo de la pantalla de opciones |
cursor.png |
Cursor de selección |
slider.png |
Control deslizante para opciones de volumen |
option_bar.png |
Barra de cada opción |
$PokemonSystem, ten en cuenta que las partidas
guardadas anteriormente no tendrán esa propiedad. Usa ||= o valores por defecto en el getter para
evitar errores con partidas antiguas.