mirror of
https://forgejo.xatacraft.ru/Sunshine/mkxp-sunshine.git
synced 2026-08-20 13:59:57 +00:00
settings in a separate ruby source file and some code changes, going to rewrite settings menu next
This commit is contained in:
parent
1419293295
commit
8c274448cf
6 changed files with 156 additions and 135 deletions
|
|
@ -106,7 +106,9 @@ set(scripts
|
|||
Window_Target.rb
|
||||
i18n_English.rb
|
||||
i18n_Japanese.rb
|
||||
i18n_Language.rb)
|
||||
i18n_Language.rb
|
||||
|
||||
Settings.rb)
|
||||
|
||||
find_program(RUBY_EXE ruby
|
||||
DOC "Location of the Ruby executable")
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ class Scene_Map
|
|||
EdText.info(tr("You cannot perform this action during cutscenes."))
|
||||
return
|
||||
else
|
||||
if Window_Settings.OneShotMode == true
|
||||
if Settings[:oneshot_mode] == true
|
||||
File.new("badend.lock", "w")
|
||||
$game_temp.common_event_id = 35
|
||||
else
|
||||
|
|
|
|||
|
|
@ -9,36 +9,33 @@ class Scene_Title
|
|||
MENU_Y = Graphics.height - 100
|
||||
SDLVer = "#{Sunshine::SDLVersion_major}.#{Sunshine::SDLVersion_minor}.#{Sunshine::SDLVersion_micro}"
|
||||
SunshineVer = "0.1-dev"
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
# * Main Processing
|
||||
#--------------------------------------------------------------------------
|
||||
def main
|
||||
# Load database
|
||||
$data_actors = load_data("Data/Actors.rxdata")
|
||||
#$data_classes = load_data("Data/Classes.rxdata")
|
||||
#$data_skills = load_data("Data/Skills.rxdata")
|
||||
$data_items = load_data("Data/Items.rxdata")
|
||||
#$data_weapons = load_data("Data/Weapons.rxdata")
|
||||
$data_armors = load_data("Data/Armors.rxdata")
|
||||
#$data_enemies = load_data("Data/Enemies.rxdata")
|
||||
#$data_troops = load_data("Data/Troops.rxdata")
|
||||
#$data_states = load_data("Data/States.rxdata")
|
||||
$data_animations = load_data("Data/Animations.rxdata")
|
||||
$data_tilesets = load_data("Data/Tilesets.rxdata")
|
||||
$data_common_events = load_data("Data/CommonEvents.rxdata")
|
||||
$data_system = load_data("Data/System.rxdata")
|
||||
|
||||
Language.initialize_database
|
||||
# Load save game/initialize data
|
||||
|
||||
$game_temp = Game_Temp.new
|
||||
new_game #unless load
|
||||
# Make system object
|
||||
new_game
|
||||
$game_system = Game_System.new
|
||||
|
||||
Settings.load! # loading settings
|
||||
|
||||
load_perma_flags
|
||||
Window_Settings.load_settings
|
||||
Oneshot.allow_exit true
|
||||
|
||||
@window_settings_title = Window_Settings.new
|
||||
|
||||
# Make title graphic
|
||||
@sprite = Sprite.new
|
||||
|
||||
|
|
@ -61,15 +58,13 @@ class Scene_Title
|
|||
end
|
||||
end
|
||||
end
|
||||
# check for debug file to add debug items
|
||||
if Window_Settings.DebugIsEnabled
|
||||
# debug save
|
||||
$game_party.gain_item(54, 1)
|
||||
# plight skip
|
||||
$game_party.gain_item(82, 1)
|
||||
#George reroler
|
||||
$game_party.gain_item(81, 1)
|
||||
end
|
||||
|
||||
# check for debug file to add debug items
|
||||
if Settings[:debug]
|
||||
$game_party.gain_item(54, 1) # debug save
|
||||
$game_party.gain_item(82, 1) # plight skip
|
||||
$game_party.gain_item(81, 1) #George reroler
|
||||
end
|
||||
|
||||
@sprite.zoom_x = 2.0
|
||||
@sprite.zoom_y = 2.0
|
||||
|
|
@ -80,14 +75,18 @@ class Scene_Title
|
|||
@menu.bitmap.draw_text(MENU_X, MENU_Y, 150, 24, tr("Start"))
|
||||
@menu.bitmap.draw_text(MENU_X, MENU_Y + 25, 150, 24, tr("Settings"))
|
||||
@menu.bitmap.draw_text(MENU_X, MENU_Y + 50, 150, 24, tr("Exit"))
|
||||
#Debug info like in minecraft Forge :P
|
||||
|
||||
#Debug info like in minecraft Forge :P
|
||||
@menu.bitmap.draw_text(5, 5, 150, 20, tr("Ruby #{RUBY_VERSION}"))
|
||||
@menu.bitmap.draw_text(5, 25, 150, 20, tr("SDL #{SDLVer}"))
|
||||
@menu.bitmap.draw_text(5, 45, 150, 20, tr("Sunshine #{SunshineVer}"))
|
||||
if $game_switches[160] && $game_switches[152]
|
||||
@menu.bitmap.draw_text(MENU_X, MENU_Y + 75, 150, 24, tr("..."))
|
||||
end
|
||||
Language.register_text_sprite(self.class.name + "_contents", @menu.bitmap)
|
||||
|
||||
if $game_switches[160] && $game_switches[152]
|
||||
@menu.bitmap.draw_text(MENU_X, MENU_Y + 75, 150, 24, tr("..."))
|
||||
end
|
||||
|
||||
Language.register_text_sprite(self.class.name + "_contents", @menu.bitmap)
|
||||
|
||||
# Make cursor graphic
|
||||
@cursor = Sprite.new
|
||||
@cursor.zoom_x = @cursor.zoom_y = 2
|
||||
|
|
@ -96,8 +95,10 @@ class Scene_Title
|
|||
@cursor.bitmap = RPG::Cache.menu('cursor')
|
||||
@cursor.x = MENU_X - 12
|
||||
@cursor.y = MENU_Y + (22 - @cursor.bitmap.height) / 2
|
||||
|
||||
# Initialize cursor position
|
||||
@cursor_pos = 0
|
||||
|
||||
# Play title BGM
|
||||
if File.exist?("badend.lock")
|
||||
#TODO: fix audio values
|
||||
|
|
@ -108,6 +109,7 @@ class Scene_Title
|
|||
# Stop playing ME and BGS
|
||||
Audio.me_stop
|
||||
Audio.bgs_stop
|
||||
|
||||
# Execute transition
|
||||
Graphics.transition(40)
|
||||
# Main loop
|
||||
|
|
@ -118,7 +120,7 @@ class Scene_Title
|
|||
Input.update
|
||||
# Frame update
|
||||
update
|
||||
@window_settings_title.update
|
||||
@window_settings_title.update
|
||||
# Abort loop if screen is changed
|
||||
if $scene != self
|
||||
break
|
||||
|
|
@ -133,7 +135,7 @@ class Scene_Title
|
|||
@menu.dispose
|
||||
@cursor.bitmap.dispose
|
||||
@cursor.dispose
|
||||
@window_settings_title.dispose
|
||||
@window_settings_title.dispose
|
||||
Audio.bgm_fade(60)
|
||||
Graphics.transition(60)
|
||||
# Run automatic change for BGM and BGS set with map
|
||||
|
|
@ -233,7 +235,6 @@ class Scene_Title
|
|||
$game_screen = Game_Screen.new
|
||||
$game_actors = Game_Actors.new
|
||||
$game_party = Game_Party.new
|
||||
#$game_troop = Game_Troop.new
|
||||
$game_map = Game_Map.new
|
||||
$game_player = Game_Player.new
|
||||
$game_followers = []
|
||||
|
|
@ -257,7 +258,7 @@ class Scene_Title
|
|||
# Play decision SE
|
||||
Audio.se_play('Audio/SE/title_decision.wav')
|
||||
# Update map (run parallel process event)
|
||||
Oneshot.allow_exit false
|
||||
Oneshot.allow_exit false
|
||||
$game_map.update
|
||||
# Switch to map screen
|
||||
$scene = Scene_Map.new
|
||||
|
|
|
|||
113
scripts/Settings.rb
Normal file
113
scripts/Settings.rb
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
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
|
||||
|
|
@ -5,105 +5,7 @@ class Window_Settings
|
|||
ITEM_SPACING = 20
|
||||
VALUE_MARGIN = 270
|
||||
ACTIVE_MARGIN = MARGIN * 2 + 20
|
||||
SETTINGS_FILE_NAME = Oneshot::SAVE_PATH + '/settings.conf'
|
||||
class << self
|
||||
attr_accessor :DebugIsEnabled
|
||||
attr_accessor :OneShotMode
|
||||
def OneShotMode?
|
||||
!!@OneShotMode
|
||||
end
|
||||
def DebugIsEnabled?
|
||||
!!@DebugIsEnabled
|
||||
end
|
||||
end
|
||||
@DebugIsEnabled = false
|
||||
#You have only ONE shot!
|
||||
@OneShotMode = false
|
||||
def save_settings
|
||||
$persistent.save
|
||||
File.open(SETTINGS_FILE_NAME, 'w') do |file|
|
||||
file.puts('bgm_volume=' + Audio.bgm_volume.to_s)
|
||||
file.puts('sfx_volume=' + Audio.sfx_volume.to_s)
|
||||
file.puts('fullscreen=' + Graphics.fullscreen.to_s)
|
||||
file.puts('default_run=' + $game_switches[251].to_s)
|
||||
file.puts('colorblind_mode=' + $game_switches[252].to_s)
|
||||
file.puts('automash_enabled=' + $game_switches[253].to_s)
|
||||
file.puts('frameskip=' + Graphics.frameskip.to_s)
|
||||
file.puts('in_game_timer=' + $game_temp.igt_timer_visible.to_s)
|
||||
file.puts('debug=' + Window_Settings.DebugIsEnabled.to_s)
|
||||
file.puts('oneshotmode=' + Window_Settings.OneShotMode.to_s)
|
||||
end
|
||||
end
|
||||
|
||||
def self.load_settings
|
||||
return false if !FileTest.exist?(SETTINGS_FILE_NAME)
|
||||
File.foreach(SETTINGS_FILE_NAME).with_index do |line, line_num|
|
||||
if !line.include? "="
|
||||
next
|
||||
end
|
||||
vals = line.strip.split("=")
|
||||
case vals[0]
|
||||
when "bgm_volume"
|
||||
if !!(vals[1] =~ /\A[-+]?[0-9]+\z/) #is a number
|
||||
number = vals[1].to_i
|
||||
Audio.bgm_volume = number
|
||||
end
|
||||
when "sfx_volume"
|
||||
if !!(vals[1] =~ /\A[-+]?[0-9]+\z/) #is a number
|
||||
number = vals[1].to_i
|
||||
Audio.sfx_volume = number
|
||||
end
|
||||
when "fullscreen"
|
||||
if vals[1] == "true"
|
||||
Graphics.fullscreen = true
|
||||
$console = true
|
||||
elsif vals[1] == "false"
|
||||
Graphics.fullscreen = false
|
||||
$console = false
|
||||
end
|
||||
when "default_run"
|
||||
if vals[1] == "true"
|
||||
$game_switches[251] = true
|
||||
elsif vals[1] == "false"
|
||||
$game_switches[251] = false
|
||||
end
|
||||
when "colorblind_mode"
|
||||
if vals[1] == "true"
|
||||
$game_switches[252] = true
|
||||
elsif vals[1] == "false"
|
||||
$game_switches[252] = false
|
||||
end
|
||||
when "automash_enabled"
|
||||
if vals[1] == "true"
|
||||
$game_switches[253] = true
|
||||
elsif vals[1] == "false"
|
||||
$game_switches[253] = false
|
||||
end
|
||||
when "in_game_timer"
|
||||
timer_enabled = vals[1] == "true"
|
||||
$game_temp.igt_timer_visible = timer_enabled
|
||||
$scene.in_game_timer.visible = timer_enabled if $scene.is_a?(Scene_Map)
|
||||
when "frameskip"
|
||||
if vals[1] == "true"
|
||||
Graphics.frameskip = true
|
||||
elsif vals[1] == "false"
|
||||
Graphics.frameskip = false
|
||||
end
|
||||
when "debug"
|
||||
if vals[1] == "true"
|
||||
Window_Settings.DebugIsEnabled = true
|
||||
elsif vals[1] == "false"
|
||||
Window_Settings.DebugIsEnabled = false
|
||||
end
|
||||
when "oneshotmode"
|
||||
if vals[1] == "true"
|
||||
Window_Settings.OneShotMode = true
|
||||
elsif vals[1] == "false"
|
||||
Window_Settings.OneShotMode = false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
def initialize
|
||||
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
|
||||
@bg = Sprite.new(@viewport)
|
||||
|
|
@ -243,13 +145,13 @@ class Window_Settings
|
|||
l = Language::LANGUAGES[@lang_index] rescue Language::LANGUAGES[0]
|
||||
spr.bitmap.draw_text(VALUE_MARGIN, 0, spr.bitmap.width, spr.bitmap.height, tr(l))
|
||||
when 10
|
||||
if(Window_Settings.DebugIsEnabled == true)
|
||||
if(Settings[:debug] == true)
|
||||
spr.bitmap.draw_text(VALUE_MARGIN, 0, spr.bitmap.width, spr.bitmap.height, tr("ON"))
|
||||
else
|
||||
spr.bitmap.draw_text(VALUE_MARGIN, 0, spr.bitmap.width, spr.bitmap.height, tr("OFF"))
|
||||
end
|
||||
when 11
|
||||
if(Window_Settings.OneShotMode == true)
|
||||
if(Settings[:oneshot_mode] == true)
|
||||
spr.bitmap.draw_text(VALUE_MARGIN, 0, spr.bitmap.width, spr.bitmap.height, tr("ON"))
|
||||
else
|
||||
spr.bitmap.draw_text(VALUE_MARGIN, 0, spr.bitmap.width, spr.bitmap.height, tr("OFF"))
|
||||
|
|
@ -509,13 +411,13 @@ class Window_Settings
|
|||
when 10
|
||||
if Input.trigger?(Input::ACTION) || Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT)
|
||||
$game_system.se_play($data_system.decision_se)
|
||||
Window_Settings.DebugIsEnabled = !Window_Settings.DebugIsEnabled
|
||||
Settings[:debug] = !Settings[:debug]
|
||||
redraw_all_settings()
|
||||
end
|
||||
when 11
|
||||
if Input.trigger?(Input::ACTION) || Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT)
|
||||
$game_system.se_play($data_system.decision_se)
|
||||
Window_Settings.OneShotMode = !Window_Settings.OneShotMode
|
||||
Settings[:oneshot_mode] = !Settings[:oneshot_mode]
|
||||
redraw_all_settings()
|
||||
end
|
||||
end
|
||||
|
|
@ -523,7 +425,8 @@ class Window_Settings
|
|||
if Input.trigger?(Input::CANCEL)
|
||||
$game_system.se_play($data_system.cancel_se)
|
||||
@fade_out = true
|
||||
save_settings
|
||||
|
||||
Settings.save!
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -543,5 +446,4 @@ class Window_Settings
|
|||
def opacity
|
||||
@bg.opacity
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -27,6 +27,9 @@ Game_Oneshot
|
|||
Game_Follower
|
||||
Game_FastTravel
|
||||
|
||||
# yes.
|
||||
Settings
|
||||
|
||||
Sprite_Character
|
||||
Sprite_Battler
|
||||
Sprite_Picture
|
||||
|
|
|
|||
Loading…
Reference in a new issue