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

Menú paginado: Desde la v1.2.0, el menú de opciones está organizado por páginas (Gameplay, Audio, Gráficos, Plugins). Para más detalles sobre el sistema de páginas, consulta Opciones por Páginas.

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
Nota: Al añadir nuevas opciones a $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.