mkxp-sunshine/scripts/Data_Settings.rb
2026-07-04 14:13:27 +03:00

368 lines
12 KiB
Ruby

module Settings
class << self
def reset!
@data = {
# Audio
:bgm_volume => 100,
:sfx_volume => 100,
# Video
:fullscreen => false,
:colorblind => false,
:frameskip => true,
:twm_shader => true,
:light => true,
:light_shadows => true,
# UI
:in_game_timer => false,
:language => 0,
:fasttravel_ui => 0,
# Gameplay
:movement => 0,
:skip_text => false,
:en_purple_messagebox => true,
:enforce_april_fools => false,
:true_memory_mode => false,
:pre_solstice_update_content => false,
:dejavu_mode => false,
:demo => false,
:oneshot_mode => false,
# Advanced
#controls
:gamepad_led => true,
:gamepad_deadzone => 5,
# Debug
:debug => false,
:debug_character => false,
:debug_text => false,
:debug_text_scene_title => true,
:debug_picture_names => false,
}
reset_controls!
end
def reset_controls!
@data.merge!({
:controls_walk_down => [
KeyBind.key(Input::key_from_name("Down")),
KeyBind.caxis(Input::c_axis_from_name("LeftY"), KeyBind::Positive),
KeyBind.cbutton(Input::c_button_from_name("DpDown"))
],
:controls_walk_left => [
KeyBind.key(Input::key_from_name("Left")),
KeyBind.caxis(Input::c_axis_from_name("LeftX"), KeyBind::Negative),
KeyBind.cbutton(Input::c_button_from_name("DpLeft"))
],
:controls_walk_right => [
KeyBind.key(Input::key_from_name("Right")),
KeyBind.caxis(Input::c_axis_from_name("LeftX"), KeyBind::Positive),
KeyBind.cbutton(Input::c_button_from_name("DpRight"))
],
:controls_walk_up => [
KeyBind.key(Input::key_from_name("Up")),
KeyBind.caxis(Input::c_axis_from_name("LeftY"), KeyBind::Negative),
KeyBind.cbutton(Input::c_button_from_name("DpUp"))
],
:controls_run => [
KeyBind.key(Input::key_from_name("Left Shift")),
KeyBind.caxis(Input::c_axis_from_name("righttrigger"), KeyBind::Positive),
KeyBind.cbutton(Input::c_button_from_name("x"))
],
# -----------------------------------------------------------------------------------------------------------
:controls_action => [
KeyBind.key(Input::key_from_name("Z")),
KeyBind.key(Input::key_from_name("Space")),
KeyBind.cbutton(Input::c_button_from_name("a")),
],
:controls_deactivate => [
KeyBind.key(Input::key_from_name("Left Shift")),
KeyBind.cbutton(Input::c_button_from_name("back")),
KeyBind.caxis(Input::c_axis_from_name("lefttrigger"), KeyBind::Positive),
],
:controls_cancel => [
KeyBind.key(Input::key_from_name("X")),
KeyBind.key(Input::key_from_name("Escape")),
KeyBind.cbutton(Input::c_button_from_name("b")),
],
:controls_menu => [
KeyBind.key(Input::key_from_name("A")),
KeyBind.key(Input::key_from_name("Return")),
KeyBind.cbutton(Input::c_button_from_name("start")),
],
:controls_items => [
KeyBind.key(Input::key_from_name("S")),
KeyBind.cbutton(Input::c_button_from_name("y")),
],
:controls_nav_left => [
KeyBind.key(Input::key_from_name("Q")),
KeyBind.cbutton(Input::c_button_from_name("leftshoulder")),
],
:controls_nav_right => [
KeyBind.key(Input::key_from_name("W")),
KeyBind.cbutton(Input::c_button_from_name("rightshoulder")),
],
# -----------------------------------------------------------------------------------------------------------
:controls_debug => [
KeyBind.key(Input::key_from_name("Left Ctrl")),
KeyBind.cbutton(Input::c_button_from_name("rightstick")),
],
})
end
end
end
class Window_Settings
# if parameter is linked to data in class Settings, then default value in this structure is ignored
DATA = {
tr("Audio") => [
{
:type => :slider,
:name => tr('BGM Volume'),
:parameter => :bgm_volume,
:min => 0,
:max => 100
},
{
:type => :slider,
:name => tr('SFX Volume'),
:parameter => :sfx_volume,
:min => 0,
:max => 100
},
],
tr("Video") => [
{
:type => :bool,
:name => tr('Fullscreen'),
:parameter => :fullscreen
},
{
:type => :bool,
:name => tr('Colorblind mode'),
:parameter => :colorblind
},
{
:type => :bool,
:name => tr('Frameskip'),
:parameter => :frameskip
},
{
:type => :bool,
:name => tr('World machine shader'),
:parameter => :twm_shader
},
{ :type => :sep, :name => tr("Lighting")},
{
:type => :bool,
:name => tr('Dynamic Light'),
:parameter => :light,
},
#{
# :type => :bool,
# :name => tr('Shadows'),
# :parameter => :light_shadows
#},
],
tr("UI") => [
{
:type => :bool,
:name => tr('In-Game Timer'),
:parameter => :in_game_timer
},
{
:type => :enum,
:name => tr('Language'),
:parameter => :language,
:values => Language::LANGUAGES
},
{
:type => :enum,
:name => tr('FastTravel UI'),
:parameter => :fasttravel_ui,
:values => [tr("Original"), tr("WME")]
},
],
tr("Gameplay") => [
{
:type => :bool,
:name => tr('Skip Text (R)'),
:parameter => :skip_text
},
{
:type => :bool,
:name => tr('Purple message box for Entity(WIP)'),
:parameter => :en_purple_messagebox
},
{
:type => :bool,
:name => tr('Enforce april fools(WIP)'),
:parameter => :enforce_april_fools
},
{
:type => :bool,
:name => tr('True Memory Mode(WIP)'),
:parameter => :true_memory_mode
},
{
:type => :bool,
:name => tr('Enable Pre-Solstice update content(WIP)'),
:parameter => :pre_solstice_update_content
},
{
:type => :bool,
:name => tr('Dejavu mode(WIP)'),
:parameter => :dejavu_mode
},
{
:type => :bool,
:name => tr('Demo mode(WIP)'),
:parameter => :demo
},
{
:type => :bool,
:name => tr('Freeware Mode(!)'),
:parameter => :oneshot_mode
},
],
tr("Controls") => [
{
:type => :bool,
:name => tr('Control LED lighting on gamepads'),
:parameter => :gamepad_led
},
#{
# :type => :slider,
# :name => tr("Gamepad deadzone"),
# :parameter => :gamepad_deadzone,
# :min => 0,
# :max => 10
#},
{ :type => :sep, :name => tr("Walk") },
{
:type => :key,
:name => tr("Walk Down"),
:parameter => :controls_walk_down,
:bind => Input::DOWN
},
{
:type => :key,
:name => tr("Walk Left"),
:parameter => :controls_walk_left,
:bind => Input::LEFT
},
{
:type => :key,
:name => tr("Walk Right"),
:parameter => :controls_walk_right,
:bind => Input::RIGHT
},
{
:type => :key,
:name => tr("Walk Up"),
:parameter => :controls_walk_up,
:bind => Input::UP
},
{
:type => :key,
:name => tr("Run"),
:parameter => :controls_run,
:bind => Input::RUN
},
{ :type => :sep, :name => tr("Actions") },
{
:type => :key,
:name => tr("Action"),
:parameter => :controls_action,
:bind => Input::ACTION
},
{
:type => :key,
:name => tr("Deactivate"),
:parameter => :controls_deactivate,
:bind => Input::DEACTIVATE
},
{
:type => :key,
:name => tr("Cancel"),
:parameter => :controls_cancel,
:bind => Input::CANCEL
},
{
:type => :key,
:name => tr("Menu"),
:parameter => :controls_menu,
:bind => Input::MENU
},
{
:type => :key,
:name => tr("Items"),
:parameter => :controls_items,
:bind => Input::ITEMS
},
{
:type => :key,
:name => tr("Nav Left"),
:parameter => :controls_nav_left,
:bind => Input::L
},
{
:type => :key,
:name => tr("Nav Right"),
:parameter => :controls_nav_right,
:bind => Input::R
},
#{ :type => :sep, :name => tr("Other") },
{
:type => :action,
:name => tr("Reset Controls"),
:action => Settings.method(:reset_controls!)
},
],
tr("Advanced") => [
{
:type => :bool,
:name => tr('useless option:3'),
:default => false
},
],
tr("Debug") => [
{
:type => :bool,
:name => tr('Debug mode(!)'),
:parameter => :debug
},
{
:type => :bool,
:name => tr('Show debug character'),
:parameter => :debug_character
},
{
:type => :bool,
:name => tr('Draw debug text in main menu'),
:parameter => :debug_text_scene_title
},
{
:type => :bool,
:name => tr('Show debug text'),
:parameter => :debug_text
},
{
:type => :bool,
:name => tr('Show picture names'),
:parameter => :debug_picture_names
},
{ :type => :sep },
{
:type => :key,
:name => tr("Debug"),
:parameter => :controls_debug,
:bind => Input::DEBUGACTION
},
],
}
end