mirror of
https://forgejo.xatacraft.ru/Sunshine/mkxp-sunshine.git
synced 2026-08-19 13:29:54 +00:00
113 lines
No EOL
3 KiB
Ruby
113 lines
No EOL
3 KiB
Ruby
module Settings
|
|
FILE_PATH = [Oneshot::SAVE_PATH, 'settings.sunshine.dat'].join '/'
|
|
|
|
class << self
|
|
|
|
def reset!
|
|
@data = {
|
|
:debug => false,
|
|
:oneshot_mode => false
|
|
}
|
|
end
|
|
|
|
def [](k)
|
|
@data[k]
|
|
end
|
|
|
|
def []=(k, v)
|
|
if @data[k] == false or @data[k] == true
|
|
if not (v == false or v == true)
|
|
return
|
|
end
|
|
elsif @data[k] == NilClass
|
|
return
|
|
elsif @data[k].class != v.class
|
|
return
|
|
end
|
|
|
|
@data[k] = v;
|
|
end
|
|
|
|
def load!
|
|
Settings::Legacy.load!
|
|
Settings.reset!
|
|
|
|
if FileTest.exist?(Settings::FILE_PATH)
|
|
File.open(Settings::FILE_PATH, "r") do |f|
|
|
settings = Marshal.load(f) rescue return
|
|
if settings.class == Hash
|
|
settings.each do |key, value|
|
|
Settings[key] = value;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
Settings.save!
|
|
end
|
|
|
|
def save!
|
|
Settings::Legacy.save!
|
|
|
|
if @data
|
|
File.write(Settings::FILE_PATH, Marshal.dump(@data))
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
module Legacy
|
|
FILE_PATH = [Oneshot::SAVE_PATH, 'settings.conf'].join '/'
|
|
|
|
def self.load!
|
|
if not FileTest.exist?(Settings::Legacy::FILE_PATH)
|
|
Settings::Legacy.save!
|
|
return
|
|
end
|
|
|
|
File.foreach(Settings::Legacy::FILE_PATH) do |line|
|
|
if not line.include? "="
|
|
next
|
|
end
|
|
|
|
key, value = line.strip.split("=", 2)
|
|
puts ([key, value].join '=')
|
|
case key
|
|
when "bgm_volume"
|
|
Audio.bgm_volume = value.to_i
|
|
when "sfx_volume"
|
|
Audio.sfx_volume = value.to_i
|
|
when "fullscreen"
|
|
Graphics.fullscreen = (value.casecmp "true") == 0
|
|
when "default_run"
|
|
$game_switches[251] = (value.casecmp "true") == 0
|
|
when "colorblind_mode"
|
|
$game_switches[252] = (value.casecmp "true") == 0
|
|
when "automash_enabled"
|
|
$game_switches[253] = (value.casecmp "true") == 0
|
|
when "frameskip"
|
|
Graphics.frameskip = (value.casecmp "true") == 0
|
|
when "in_game_timer"
|
|
$game_temp.igt_timer_visible = (value.casecmp "true") == 0
|
|
$scene.in_game_timer.visible = $game_temp.igt_timer_visible if $scene.is_a?(Scene_Map)
|
|
end
|
|
end
|
|
end
|
|
|
|
def self.save!
|
|
$persistent.save
|
|
File.open(Settings::Legacy::FILE_PATH, 'w') do |f|
|
|
f.puts (["bgm_volume", Audio.bgm_volume].join '=')
|
|
f.puts (["sfx_volume", Audio.sfx_volume].join '=')
|
|
f.puts (["fullscreen", Graphics.fullscreen].join '=')
|
|
f.puts (["default_run", ($game_switches[251])].join '=')
|
|
f.puts (["colorblind_mode", ($game_switches[252])].join '=')
|
|
f.puts (["automash_enabled", ($game_switches[253])].join '=')
|
|
f.puts (["frameskip", Graphics.frameskip].join '=')
|
|
f.puts (["in_game_timer", $game_temp.igt_timer_visible].join '=')
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
end |