Merge remote-tracking branch 'mathewv/master'
This commit is contained in:
commit
2119b1919d
|
|
@ -86,6 +86,21 @@ RB_METHOD(audio_##entity##Fade) \
|
||||||
return rb_float_new(shState->audio().entity##Pos()); \
|
return rb_float_new(shState->audio().entity##Pos()); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define DEF_AUD_PROP_I(PropName) \
|
||||||
|
RB_METHOD(audio##Get##PropName) \
|
||||||
|
{ \
|
||||||
|
RB_UNUSED_PARAM; \
|
||||||
|
return rb_fix_new(shState->audio().get##PropName()); \
|
||||||
|
} \
|
||||||
|
RB_METHOD(audio##Set##PropName) \
|
||||||
|
{ \
|
||||||
|
RB_UNUSED_PARAM; \
|
||||||
|
int value; \
|
||||||
|
rb_get_args(argc, argv, "i", &value RB_ARG_END); \
|
||||||
|
shState->audio().set##PropName(value); \
|
||||||
|
return rb_fix_new(value); \
|
||||||
|
}
|
||||||
|
|
||||||
DEF_PLAY_STOP_POS( bgm )
|
DEF_PLAY_STOP_POS( bgm )
|
||||||
DEF_PLAY_STOP_POS( bgs )
|
DEF_PLAY_STOP_POS( bgs )
|
||||||
|
|
||||||
|
|
@ -97,6 +112,9 @@ DEF_FADE( me )
|
||||||
|
|
||||||
DEF_PLAY_STOP( se )
|
DEF_PLAY_STOP( se )
|
||||||
|
|
||||||
|
DEF_AUD_PROP_I(BGM_Volume)
|
||||||
|
DEF_AUD_PROP_I(SFX_Volume)
|
||||||
|
|
||||||
RB_METHOD(audioReset)
|
RB_METHOD(audioReset)
|
||||||
{
|
{
|
||||||
RB_UNUSED_PARAM;
|
RB_UNUSED_PARAM;
|
||||||
|
|
@ -121,6 +139,11 @@ RB_METHOD(audioReset)
|
||||||
#define BIND_POS(entity) \
|
#define BIND_POS(entity) \
|
||||||
_rb_define_module_function(module, #entity "_pos", audio_##entity##Pos);
|
_rb_define_module_function(module, #entity "_pos", audio_##entity##Pos);
|
||||||
|
|
||||||
|
#define INIT_AUD_PROP_BIND(PropName, prop_name_s) \
|
||||||
|
{ \
|
||||||
|
_rb_define_module_function(module, prop_name_s, audio##Get##PropName); \
|
||||||
|
_rb_define_module_function(module, prop_name_s "=", audio##Set##PropName); \
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
audioBindingInit()
|
audioBindingInit()
|
||||||
|
|
@ -140,4 +163,7 @@ audioBindingInit()
|
||||||
BIND_PLAY_STOP( se )
|
BIND_PLAY_STOP( se )
|
||||||
|
|
||||||
_rb_define_module_function(module, "__reset__", audioReset);
|
_rb_define_module_function(module, "__reset__", audioReset);
|
||||||
|
|
||||||
|
INIT_AUD_PROP_BIND( BGM_Volume, "bgm_volume" );
|
||||||
|
INIT_AUD_PROP_BIND( SFX_Volume, "sfx_volume" );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -202,6 +202,7 @@ DEF_GRA_PROP_I(Brightness)
|
||||||
DEF_GRA_PROP_B(Fullscreen)
|
DEF_GRA_PROP_B(Fullscreen)
|
||||||
DEF_GRA_PROP_B(ShowCursor)
|
DEF_GRA_PROP_B(ShowCursor)
|
||||||
DEF_GRA_PROP_B(Smooth)
|
DEF_GRA_PROP_B(Smooth)
|
||||||
|
DEF_GRA_PROP_B(Frameskip)
|
||||||
|
|
||||||
#define INIT_GRA_PROP_BIND(PropName, prop_name_s) \
|
#define INIT_GRA_PROP_BIND(PropName, prop_name_s) \
|
||||||
{ \
|
{ \
|
||||||
|
|
@ -244,4 +245,5 @@ void graphicsBindingInit()
|
||||||
INIT_GRA_PROP_BIND( Fullscreen, "fullscreen" );
|
INIT_GRA_PROP_BIND( Fullscreen, "fullscreen" );
|
||||||
INIT_GRA_PROP_BIND( ShowCursor, "show_cursor" );
|
INIT_GRA_PROP_BIND( ShowCursor, "show_cursor" );
|
||||||
INIT_GRA_PROP_BIND( Smooth, "smooth" );
|
INIT_GRA_PROP_BIND( Smooth, "smooth" );
|
||||||
|
INIT_GRA_PROP_BIND( Frameskip, "frameskip" );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,11 @@ class Game_Player < Game_Character
|
||||||
unless $game_system.map_interpreter.running? or @move_route_forcing or
|
unless $game_system.map_interpreter.running? or @move_route_forcing or
|
||||||
$game_temp.message_window_showing or $game_temp.menus_visible
|
$game_temp.message_window_showing or $game_temp.menus_visible
|
||||||
# Adjust move speed
|
# Adjust move speed
|
||||||
|
if $game_switches[251] == false
|
||||||
@move_speed = Input.press?(Input::RUN) ? 4 : 3
|
@move_speed = Input.press?(Input::RUN) ? 4 : 3
|
||||||
|
else
|
||||||
|
@move_speed = Input.press?(Input::RUN) ? 3 : 4
|
||||||
|
end
|
||||||
unless moving?
|
unless moving?
|
||||||
# Move player in the direction the directional button is being pressed
|
# Move player in the direction the directional button is being pressed
|
||||||
case Input.dir4
|
case Input.dir4
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ class Game_Temp
|
||||||
attr_accessor :menu_calling # menu calling flag
|
attr_accessor :menu_calling # menu calling flag
|
||||||
attr_accessor :item_menu_calling # item menu calling flag
|
attr_accessor :item_menu_calling # item menu calling flag
|
||||||
attr_accessor :travel_menu_calling # fast travel menu calling flag
|
attr_accessor :travel_menu_calling # fast travel menu calling flag
|
||||||
|
attr_accessor :window_settings_calling # fast travel menu calling flag
|
||||||
attr_accessor :menu_beep # menu: play sound effect flag
|
attr_accessor :menu_beep # menu: play sound effect flag
|
||||||
attr_accessor :save_calling # save calling flag
|
attr_accessor :save_calling # save calling flag
|
||||||
attr_accessor :debug_calling # debug calling flag
|
attr_accessor :debug_calling # debug calling flag
|
||||||
|
|
@ -102,6 +103,7 @@ class Game_Temp
|
||||||
@menu_calling = false
|
@menu_calling = false
|
||||||
@item_menu_calling = false
|
@item_menu_calling = false
|
||||||
@travel_menu_calling = false
|
@travel_menu_calling = false
|
||||||
|
@window_settings_calling = false
|
||||||
@menu_beep = false
|
@menu_beep = false
|
||||||
@save_calling = false
|
@save_calling = false
|
||||||
@debug_calling = false
|
@debug_calling = false
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,9 @@ def fake_save
|
||||||
end
|
end
|
||||||
|
|
||||||
def save
|
def save
|
||||||
|
if ($game_variables[3] == 0) #don't save if intro variable isn't set
|
||||||
|
return
|
||||||
|
end
|
||||||
File.open(SAVE_FILE_NAME, 'wb') do |file|
|
File.open(SAVE_FILE_NAME, 'wb') do |file|
|
||||||
# Wrire frame count for measuring play time
|
# Wrire frame count for measuring play time
|
||||||
Marshal.dump(Graphics.frame_count, file)
|
Marshal.dump(Graphics.frame_count, file)
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ class Scene_Map
|
||||||
@item_icon_flash_wait = 100
|
@item_icon_flash_wait = 100
|
||||||
# Make fast travel menu
|
# Make fast travel menu
|
||||||
@fast_travel = FastTravel.new
|
@fast_travel = FastTravel.new
|
||||||
|
@window_settings = Window_Settings.new
|
||||||
# Fade to black transition
|
# Fade to black transition
|
||||||
@blackfade = Sprite.new
|
@blackfade = Sprite.new
|
||||||
@blackfade.bitmap = Bitmap.new(640, 480)
|
@blackfade.bitmap = Bitmap.new(640, 480)
|
||||||
|
|
@ -76,6 +77,7 @@ class Scene_Map
|
||||||
@menu.dispose
|
@menu.dispose
|
||||||
@item_menu.dispose
|
@item_menu.dispose
|
||||||
@fast_travel.dispose
|
@fast_travel.dispose
|
||||||
|
@window_settings.dispose
|
||||||
# Dispose of item icon
|
# Dispose of item icon
|
||||||
@item_icon.dispose
|
@item_icon.dispose
|
||||||
@item_icon_flash.dispose
|
@item_icon_flash.dispose
|
||||||
|
|
@ -118,7 +120,7 @@ class Scene_Map
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
$game_system.map_interpreter.update
|
$game_system.map_interpreter.update
|
||||||
$game_temp.menus_visible = @menu.visible || @item_menu.visible || @fast_travel.visible
|
$game_temp.menus_visible = @menu.visible || @item_menu.visible || @fast_travel.visible || @window_settings.visible
|
||||||
$game_player.update
|
$game_player.update
|
||||||
$game_followers.each{|f| f.update}
|
$game_followers.each{|f| f.update}
|
||||||
# Update system (timer), screen
|
# Update system (timer), screen
|
||||||
|
|
@ -233,6 +235,7 @@ class Scene_Map
|
||||||
end
|
end
|
||||||
# Update fast travel
|
# Update fast travel
|
||||||
@fast_travel.update
|
@fast_travel.update
|
||||||
|
@window_settings.update
|
||||||
|
|
||||||
if Input.trigger?(Input::F8) && !$game_switches[123]
|
if Input.trigger?(Input::F8) && !$game_switches[123]
|
||||||
if Graphics.fullscreen == true
|
if Graphics.fullscreen == true
|
||||||
|
|
@ -242,6 +245,11 @@ class Scene_Map
|
||||||
Graphics.fullscreen = true
|
Graphics.fullscreen = true
|
||||||
$console = true
|
$console = true
|
||||||
end
|
end
|
||||||
|
sleep(0.500)
|
||||||
|
if @window_settings.visible
|
||||||
|
@window_settings.redraw_setting_index(2)
|
||||||
|
sleep(0.500)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
# If showing message window
|
# If showing message window
|
||||||
if $game_temp.message_window_showing || @ed_message.visible || @doc_message.visible || @desktop_message.visible || @credits_message.visible
|
if $game_temp.message_window_showing || @ed_message.visible || @doc_message.visible || @desktop_message.visible || @credits_message.visible
|
||||||
|
|
@ -250,7 +258,7 @@ class Scene_Map
|
||||||
# Process menu opening
|
# Process menu opening
|
||||||
unless $game_system.map_interpreter.running? ||
|
unless $game_system.map_interpreter.running? ||
|
||||||
$game_system.menu_disabled ||
|
$game_system.menu_disabled ||
|
||||||
@fast_travel.visible
|
@fast_travel.visible || @window_settings.visible || $game_temp.menu_calling == true || $game_temp.item_menu_calling == true
|
||||||
if !@menu.visible && Input.trigger?(Input::MENU)
|
if !@menu.visible && Input.trigger?(Input::MENU)
|
||||||
$game_temp.menu_calling = true
|
$game_temp.menu_calling = true
|
||||||
$game_temp.menu_beep = true
|
$game_temp.menu_beep = true
|
||||||
|
|
@ -288,6 +296,8 @@ class Scene_Map
|
||||||
call_item_menu
|
call_item_menu
|
||||||
elsif $game_temp.travel_menu_calling
|
elsif $game_temp.travel_menu_calling
|
||||||
call_travel_menu
|
call_travel_menu
|
||||||
|
elsif $game_temp.window_settings_calling
|
||||||
|
call_window_settings
|
||||||
elsif $game_temp.save_calling
|
elsif $game_temp.save_calling
|
||||||
call_save
|
call_save
|
||||||
elsif $game_temp.debug_calling
|
elsif $game_temp.debug_calling
|
||||||
|
|
@ -379,6 +389,14 @@ class Scene_Map
|
||||||
# Open the menu
|
# Open the menu
|
||||||
@fast_travel.open
|
@fast_travel.open
|
||||||
end
|
end
|
||||||
|
def call_window_settings
|
||||||
|
# Clear menu call flag
|
||||||
|
$game_temp.window_settings_calling = false
|
||||||
|
# Straighten player position
|
||||||
|
$game_player.straighten
|
||||||
|
# Open the menu
|
||||||
|
@window_settings.open
|
||||||
|
end
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
# * Save Call
|
# * Save Call
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ class Scene_Title
|
||||||
$scene = Scene_Map.new
|
$scene = Scene_Map.new
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
Window_Settings.load_settings
|
||||||
# Make title graphic
|
# Make title graphic
|
||||||
@sprite = Sprite.new
|
@sprite = Sprite.new
|
||||||
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
|
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
|
||||||
|
|
|
||||||
|
|
@ -287,6 +287,8 @@ module Script
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
rescue Errno::EACCES => e
|
||||||
|
#this probably means the clover.exe already exists and is running, so no need to create it again
|
||||||
end
|
end
|
||||||
if File.exists?("README.txt")
|
if File.exists?("README.txt")
|
||||||
File.open("README.txt", "rb") do |input|
|
File.open("README.txt", "rb") do |input|
|
||||||
|
|
|
||||||
|
|
@ -134,9 +134,9 @@ class Window_MainMenu < Window_Selectable
|
||||||
$game_temp.common_event_id = 15
|
$game_temp.common_event_id = 15
|
||||||
@fade_out = true
|
@fade_out = true
|
||||||
else
|
else
|
||||||
$game_system.se_play($data_system.buzzer_se)
|
$game_system.se_play($data_system.decision_se)
|
||||||
self.active = true
|
$game_temp.window_settings_calling = true
|
||||||
self.opacity = 255
|
@fade_out = true
|
||||||
end
|
end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,381 @@
|
||||||
|
class Window_Settings
|
||||||
|
MARGIN = 30
|
||||||
|
TITLE_TOP_MARGIN = 32
|
||||||
|
TITLE_MARGIN = 100
|
||||||
|
ITEM_SPACING = 28
|
||||||
|
ACTIVE_MARGIN = MARGIN * 2 + 20
|
||||||
|
SETTINGS_FILE_NAME = Oneshot::SAVE_PATH + '/settings.conf'
|
||||||
|
|
||||||
|
def save_settings
|
||||||
|
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('frameskip=' + Graphics.frameskip.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 "frameskip"
|
||||||
|
if vals[1] == "true"
|
||||||
|
Graphics.frameskip = true
|
||||||
|
elsif vals[1] == "false"
|
||||||
|
Graphics.frameskip = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
@viewport = Viewport.new(0, 0, 640, 480)
|
||||||
|
@bg = Sprite.new(@viewport)
|
||||||
|
@bg.bitmap = Bitmap.new(640, 480)
|
||||||
|
@bg.bitmap.fill_rect(0, 0, 640, 480, Color.new(0, 0, 0, 128))
|
||||||
|
@title = Sprite.new(@viewport)
|
||||||
|
@title.bitmap = Bitmap.new(320, TITLE_MARGIN)
|
||||||
|
@title.bitmap.font.size = 40
|
||||||
|
@title.y = TITLE_TOP_MARGIN
|
||||||
|
@title.x = MARGIN
|
||||||
|
@data_sprites = []
|
||||||
|
@viewport.z = 9998
|
||||||
|
|
||||||
|
@left_hold_timer = 0
|
||||||
|
@right_hold_timer = 0
|
||||||
|
|
||||||
|
self.visible = false
|
||||||
|
@index = 0
|
||||||
|
@fade_in = false
|
||||||
|
@fade_out = false
|
||||||
|
|
||||||
|
@transfer_player = nil
|
||||||
|
@visible = false
|
||||||
|
end
|
||||||
|
|
||||||
|
def dispose
|
||||||
|
@bg.dispose
|
||||||
|
@title.dispose
|
||||||
|
@data_sprites.each do |spr|
|
||||||
|
spr.dispose
|
||||||
|
end
|
||||||
|
@viewport.dispose
|
||||||
|
end
|
||||||
|
|
||||||
|
def open
|
||||||
|
self.visible = true
|
||||||
|
self.opacity = 0
|
||||||
|
@fade_in = true
|
||||||
|
@data = [
|
||||||
|
tr('BGM Volume'),
|
||||||
|
tr('SFX Volume'),
|
||||||
|
tr('Fullscreen'),
|
||||||
|
tr('Default movement'),
|
||||||
|
tr('Colorblind mode'),
|
||||||
|
tr('Frameskip'),
|
||||||
|
tr('Configure Controls (Press F1)'),
|
||||||
|
]
|
||||||
|
|
||||||
|
@index = 0
|
||||||
|
|
||||||
|
# Create title
|
||||||
|
@title.bitmap.clear
|
||||||
|
@title.bitmap.draw_text(0, 0, @title.bitmap.width, @title.bitmap.height, tr("Settings"))
|
||||||
|
|
||||||
|
# Create menu options
|
||||||
|
@data.each_with_index do |item, i|
|
||||||
|
spr = Sprite.new(@viewport)
|
||||||
|
spr.bitmap = Bitmap.new(320, ITEM_SPACING)
|
||||||
|
spr.x = MARGIN
|
||||||
|
spr.y = TITLE_MARGIN + TITLE_TOP_MARGIN + ITEM_SPACING * i
|
||||||
|
spr.opacity = 0
|
||||||
|
redraw_setting(spr, i)
|
||||||
|
|
||||||
|
@data_sprites << spr
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def redraw_setting(spr, i)
|
||||||
|
if @visible == false
|
||||||
|
return
|
||||||
|
end
|
||||||
|
spr.bitmap.clear
|
||||||
|
spr.bitmap.draw_text(0, 0, spr.bitmap.width, spr.bitmap.height, @data[i])
|
||||||
|
spr.bitmap.draw_text(0, 0, spr.bitmap.width, spr.bitmap.height, @data[i])
|
||||||
|
case i
|
||||||
|
when 0
|
||||||
|
spr.bitmap.draw_text(260, 0, spr.bitmap.width, spr.bitmap.height, Audio.bgm_volume.to_s)
|
||||||
|
when 1
|
||||||
|
spr.bitmap.draw_text(260, 0, spr.bitmap.width, spr.bitmap.height, Audio.sfx_volume.to_s)
|
||||||
|
when 2 #fullscreen
|
||||||
|
if(Graphics.fullscreen == true)
|
||||||
|
spr.bitmap.draw_text(260, 0, spr.bitmap.width, spr.bitmap.height, tr("ON"))
|
||||||
|
else
|
||||||
|
spr.bitmap.draw_text(260, 0, spr.bitmap.width, spr.bitmap.height, tr("OFF"))
|
||||||
|
end
|
||||||
|
when 3 #default movement
|
||||||
|
if($game_switches[251] == true)
|
||||||
|
spr.bitmap.draw_text(260, 0, spr.bitmap.width, spr.bitmap.height, tr("RUN"))
|
||||||
|
else
|
||||||
|
spr.bitmap.draw_text(260, 0, spr.bitmap.width, spr.bitmap.height, tr("WALK"))
|
||||||
|
end
|
||||||
|
when 4 #colorblind mode
|
||||||
|
if($game_switches[252] == true)
|
||||||
|
spr.bitmap.draw_text(260, 0, spr.bitmap.width, spr.bitmap.height, tr("ON"))
|
||||||
|
else
|
||||||
|
spr.bitmap.draw_text(260, 0, spr.bitmap.width, spr.bitmap.height, tr("OFF"))
|
||||||
|
end
|
||||||
|
when 5 #frameskip
|
||||||
|
if(Graphics.frameskip == true)
|
||||||
|
spr.bitmap.draw_text(260, 0, spr.bitmap.width, spr.bitmap.height, tr("ON"))
|
||||||
|
else
|
||||||
|
spr.bitmap.draw_text(260, 0, spr.bitmap.width, spr.bitmap.height, tr("OFF"))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def redraw_setting_index(i)
|
||||||
|
if !@data_sprites.kind_of?(Array)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if @data_sprites.length - 1 < i
|
||||||
|
return
|
||||||
|
end
|
||||||
|
redraw_setting(@data_sprites[i], i)
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
if @fade_in
|
||||||
|
self.opacity += 20
|
||||||
|
active_spr = nil
|
||||||
|
@data_sprites.each do |spr|
|
||||||
|
spr.opacity += 10
|
||||||
|
spr.opacity = 128 if spr.opacity > 128
|
||||||
|
active_spr = spr if !active_spr && spr.x < MARGIN * 2
|
||||||
|
end
|
||||||
|
if active_spr
|
||||||
|
active_spr.x += 6
|
||||||
|
active_spr.x = MARGIN * 2 if active_spr.x > MARGIN * 2
|
||||||
|
elsif self.opacity == 255
|
||||||
|
@fade_in = false
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if @fade_out
|
||||||
|
self.opacity -= 20
|
||||||
|
@data_sprites.each do |spr|
|
||||||
|
spr.opacity -= 10
|
||||||
|
end
|
||||||
|
if self.opacity == 0
|
||||||
|
@fade_out = false
|
||||||
|
self.visible = false
|
||||||
|
@data_sprites.each do |spr|
|
||||||
|
spr.dispose
|
||||||
|
end
|
||||||
|
@data_sprites = []
|
||||||
|
|
||||||
|
if @transfer_player
|
||||||
|
$game_temp.player_transferring = true
|
||||||
|
$game_temp.player_new_map_id = @transfer_player.id
|
||||||
|
$game_temp.player_new_x = @transfer_player.x
|
||||||
|
$game_temp.player_new_y = @transfer_player.y
|
||||||
|
$game_temp.player_new_direction = @transfer_player.dir
|
||||||
|
Graphics.freeze
|
||||||
|
$game_temp.transition_processing = true
|
||||||
|
$game_temp.transition_name = "black"
|
||||||
|
@transfer_player = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
return if !self.visible
|
||||||
|
|
||||||
|
# Adjust position and visibility
|
||||||
|
@data_sprites.each_with_index do |spr, i|
|
||||||
|
if i == @index
|
||||||
|
if spr.x < ACTIVE_MARGIN
|
||||||
|
spr.x += 6
|
||||||
|
spr.x = ACTIVE_MARGIN if spr.x > ACTIVE_MARGIN
|
||||||
|
end
|
||||||
|
spr.opacity += 10 if spr.opacity < 255
|
||||||
|
else
|
||||||
|
if spr.x > MARGIN * 2
|
||||||
|
spr.x -= 6
|
||||||
|
spr.x = MARGIN * 2 if spr.x < MARGIN * 2
|
||||||
|
end
|
||||||
|
spr.opacity -= 10 if spr.opacity > 128
|
||||||
|
spr.opacity = 128 if spr.opacity < 128
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if Input.trigger?(Input::UP)
|
||||||
|
@index = (@index - 1) % @data.size
|
||||||
|
$game_system.se_play($data_system.cursor_se)
|
||||||
|
end
|
||||||
|
if Input.trigger?(Input::DOWN)
|
||||||
|
@index = (@index + 1) % @data.size
|
||||||
|
$game_system.se_play($data_system.cursor_se)
|
||||||
|
end
|
||||||
|
|
||||||
|
if Input.press?(Input::LEFT)
|
||||||
|
@left_hold_timer += 1
|
||||||
|
else
|
||||||
|
@left_hold_timer = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
if Input.press?(Input::RIGHT)
|
||||||
|
@right_hold_timer += 1
|
||||||
|
else
|
||||||
|
@right_hold_timer = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
case @index
|
||||||
|
when 0 #bgm vol
|
||||||
|
old_vol = Audio.bgm_volume
|
||||||
|
if Input.trigger?(Input::LEFT) || (Input.press?(Input::LEFT) && (@left_hold_timer >= 15))
|
||||||
|
@left_hold_timer -= 2
|
||||||
|
Audio.bgm_volume -= 1
|
||||||
|
if old_vol > 1
|
||||||
|
Audio.se_play("Audio/SE/text_robot.wav", 70, (Audio.bgm_volume/2) + 75)
|
||||||
|
end
|
||||||
|
elsif Input.trigger?(Input::RIGHT) || (Input.press?(Input::RIGHT) && (@right_hold_timer >= 15))
|
||||||
|
@right_hold_timer -= 2
|
||||||
|
Audio.bgm_volume += 1
|
||||||
|
if old_vol < 100
|
||||||
|
Audio.se_play("Audio/SE/text_robot.wav", 70, (Audio.bgm_volume/2) + 75)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
redraw_setting_index(0)
|
||||||
|
|
||||||
|
when 1 #sfx vol
|
||||||
|
old_vol = Audio.sfx_volume
|
||||||
|
if Input.trigger?(Input::LEFT) || (Input.press?(Input::LEFT) && (@left_hold_timer >= 15))
|
||||||
|
@left_hold_timer -= 2
|
||||||
|
Audio.sfx_volume -= 1
|
||||||
|
if old_vol > 1
|
||||||
|
Audio.se_play("Audio/SE/text_robot.wav", 70, (Audio.sfx_volume/2) + 75)
|
||||||
|
end
|
||||||
|
elsif Input.trigger?(Input::RIGHT) || (Input.press?(Input::RIGHT) && (@right_hold_timer >= 15))
|
||||||
|
@right_hold_timer -= 2
|
||||||
|
Audio.sfx_volume += 1
|
||||||
|
if old_vol < 100
|
||||||
|
Audio.se_play("Audio/SE/text_robot.wav", 70, (Audio.sfx_volume/2) + 75)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
redraw_setting_index(1)
|
||||||
|
|
||||||
|
when 2 #fullscreen
|
||||||
|
if Input.trigger?(Input::ACTION) || Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT)
|
||||||
|
|
||||||
|
$game_system.se_play($data_system.decision_se)
|
||||||
|
if Graphics.fullscreen == true
|
||||||
|
Graphics.fullscreen = false
|
||||||
|
$console = false
|
||||||
|
else
|
||||||
|
Graphics.fullscreen = true
|
||||||
|
$console = true
|
||||||
|
end
|
||||||
|
sleep(0.500)
|
||||||
|
redraw_setting_index(2)
|
||||||
|
sleep(0.500)
|
||||||
|
end
|
||||||
|
|
||||||
|
when 3 #default movement
|
||||||
|
if Input.trigger?(Input::ACTION) || Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT)
|
||||||
|
|
||||||
|
$game_system.se_play($data_system.decision_se)
|
||||||
|
if $game_switches[251] == true
|
||||||
|
$game_switches[251] = false
|
||||||
|
else
|
||||||
|
$game_switches[251] = true
|
||||||
|
end
|
||||||
|
redraw_setting_index(3)
|
||||||
|
end
|
||||||
|
|
||||||
|
when 4 #colorblind mode
|
||||||
|
if Input.trigger?(Input::ACTION) || Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT)
|
||||||
|
|
||||||
|
$game_system.se_play($data_system.decision_se)
|
||||||
|
if $game_switches[252] == true
|
||||||
|
$game_switches[252] = false
|
||||||
|
else
|
||||||
|
$game_switches[252] = true
|
||||||
|
end
|
||||||
|
redraw_setting_index(4)
|
||||||
|
end
|
||||||
|
|
||||||
|
when 5 #frameskip
|
||||||
|
if Input.trigger?(Input::ACTION) || Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT)
|
||||||
|
|
||||||
|
$game_system.se_play($data_system.decision_se)
|
||||||
|
if Graphics.frameskip == true
|
||||||
|
Graphics.frameskip = false
|
||||||
|
else
|
||||||
|
Graphics.frameskip = true
|
||||||
|
end
|
||||||
|
redraw_setting_index(5)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if Input.trigger?(Input::CANCEL)
|
||||||
|
$game_system.se_play($data_system.cancel_se)
|
||||||
|
@fade_out = true
|
||||||
|
save_settings
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Attributes
|
||||||
|
def visible
|
||||||
|
return @visible
|
||||||
|
end
|
||||||
|
def visible=(val)
|
||||||
|
@viewport.visible = val
|
||||||
|
@visible = val
|
||||||
|
end
|
||||||
|
def opacity=(val)
|
||||||
|
@bg.opacity = val
|
||||||
|
@title.opacity = val
|
||||||
|
end
|
||||||
|
def opacity
|
||||||
|
@bg.opacity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -56,6 +56,7 @@ Window_EquipRight
|
||||||
Window_EquipItem
|
Window_EquipItem
|
||||||
Window_Status
|
Window_Status
|
||||||
Window_SaveFile
|
Window_SaveFile
|
||||||
|
Window_Settings
|
||||||
Window_ShopCommand
|
Window_ShopCommand
|
||||||
Window_ShopBuy
|
Window_ShopBuy
|
||||||
Window_ShopSell
|
Window_ShopSell
|
||||||
|
|
|
||||||
|
|
@ -34,10 +34,17 @@
|
||||||
|
|
||||||
struct AudioPrivate
|
struct AudioPrivate
|
||||||
{
|
{
|
||||||
|
int bgm_volume;
|
||||||
|
int sfx_volume;
|
||||||
|
|
||||||
AudioStream bgm;
|
AudioStream bgm;
|
||||||
AudioStream bgs;
|
AudioStream bgs;
|
||||||
AudioStream me;
|
AudioStream me;
|
||||||
|
|
||||||
|
int current_bgm_volume;
|
||||||
|
int current_bgs_volume;
|
||||||
|
int current_me_volume;
|
||||||
|
|
||||||
SoundEmitter se;
|
SoundEmitter se;
|
||||||
|
|
||||||
SyncPoint &syncPoint;
|
SyncPoint &syncPoint;
|
||||||
|
|
@ -69,6 +76,11 @@ struct AudioPrivate
|
||||||
se(rtData.config),
|
se(rtData.config),
|
||||||
syncPoint(rtData.syncPoint)
|
syncPoint(rtData.syncPoint)
|
||||||
{
|
{
|
||||||
|
bgm_volume = 100;
|
||||||
|
sfx_volume = 100;
|
||||||
|
current_bgm_volume = 100;
|
||||||
|
current_bgs_volume = 100;
|
||||||
|
current_me_volume = 100;
|
||||||
meWatch.state = MeNotPlaying;
|
meWatch.state = MeNotPlaying;
|
||||||
meWatch.thread = createSDLThread
|
meWatch.thread = createSDLThread
|
||||||
<AudioPrivate, &AudioPrivate::meWatchFun>(this, "audio_mewatch");
|
<AudioPrivate, &AudioPrivate::meWatchFun>(this, "audio_mewatch");
|
||||||
|
|
@ -246,7 +258,8 @@ void Audio::bgmPlay(const char *filename,
|
||||||
int pitch,
|
int pitch,
|
||||||
float pos)
|
float pos)
|
||||||
{
|
{
|
||||||
p->bgm.play(filename, volume, pitch, pos);
|
p->current_bgm_volume = volume;
|
||||||
|
p->bgm.play(filename, (volume*p->bgm_volume)/100, pitch, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Audio::bgmStop()
|
void Audio::bgmStop()
|
||||||
|
|
@ -265,7 +278,8 @@ void Audio::bgsPlay(const char *filename,
|
||||||
int pitch,
|
int pitch,
|
||||||
float pos)
|
float pos)
|
||||||
{
|
{
|
||||||
p->bgs.play(filename, volume, pitch, pos);
|
p->current_bgs_volume = volume;
|
||||||
|
p->bgs.play(filename, (volume*p->sfx_volume)/100, pitch, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Audio::bgsStop()
|
void Audio::bgsStop()
|
||||||
|
|
@ -283,7 +297,8 @@ void Audio::mePlay(const char *filename,
|
||||||
int volume,
|
int volume,
|
||||||
int pitch)
|
int pitch)
|
||||||
{
|
{
|
||||||
p->me.play(filename, volume, pitch);
|
p->current_me_volume = volume;
|
||||||
|
p->me.play(filename, (volume*p->bgm_volume)/100, pitch);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Audio::meStop()
|
void Audio::meStop()
|
||||||
|
|
@ -301,7 +316,7 @@ void Audio::sePlay(const char *filename,
|
||||||
int volume,
|
int volume,
|
||||||
int pitch)
|
int pitch)
|
||||||
{
|
{
|
||||||
p->se.play(filename, volume, pitch);
|
p->se.play(filename, (volume*p->sfx_volume)/100, pitch);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Audio::seStop()
|
void Audio::seStop()
|
||||||
|
|
@ -327,4 +342,44 @@ void Audio::reset()
|
||||||
p->se.stop();
|
p->se.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Audio::getBGM_Volume() const
|
||||||
|
{
|
||||||
|
return p->bgm_volume;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Audio::setBGM_Volume(int value)
|
||||||
|
{
|
||||||
|
if(value > 100){
|
||||||
|
value = 100;
|
||||||
|
}else if(value < 0){
|
||||||
|
value = 0;
|
||||||
|
}
|
||||||
|
p->bgm_volume = value;
|
||||||
|
p->bgm.lockStream();
|
||||||
|
p->bgm.setVolume(AudioStream::Base, ((float)(p->bgm_volume * p->current_bgm_volume))/10000.0f );
|
||||||
|
p->bgm.unlockStream();
|
||||||
|
p->me.lockStream();
|
||||||
|
p->me.setVolume(AudioStream::Base, ((float)(p->bgm_volume * p->current_me_volume))/10000.0f );
|
||||||
|
p->me.unlockStream();
|
||||||
|
}
|
||||||
|
|
||||||
|
int Audio::getSFX_Volume() const
|
||||||
|
{
|
||||||
|
return p->sfx_volume;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Audio::setSFX_Volume(int value)
|
||||||
|
{
|
||||||
|
if(value > 100){
|
||||||
|
value = 100;
|
||||||
|
}else if(value < 0){
|
||||||
|
value = 0;
|
||||||
|
}
|
||||||
|
p->sfx_volume = value;
|
||||||
|
p->bgs.lockStream();
|
||||||
|
p->bgs.setVolume(AudioStream::Base, ((float)(p->sfx_volume * p->current_bgs_volume))/10000.0f );
|
||||||
|
p->bgs.unlockStream();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Audio::~Audio() { delete p; }
|
Audio::~Audio() { delete p; }
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@
|
||||||
#ifndef AUDIO_H
|
#ifndef AUDIO_H
|
||||||
#define AUDIO_H
|
#define AUDIO_H
|
||||||
|
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
/* Concerning the 'pos' parameter:
|
/* Concerning the 'pos' parameter:
|
||||||
* RGSS3 actually doesn't specify a format for this,
|
* RGSS3 actually doesn't specify a format for this,
|
||||||
* it's only implied that it is a numerical value
|
* it's only implied that it is a numerical value
|
||||||
|
|
@ -68,6 +70,10 @@ public:
|
||||||
|
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
|
/* Non-standard extension */
|
||||||
|
DECL_ATTR( BGM_Volume, int)
|
||||||
|
DECL_ATTR( SFX_Volume, int)
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Audio(RGSSThreadData &rtData);
|
Audio(RGSSThreadData &rtData);
|
||||||
~Audio();
|
~Audio();
|
||||||
|
|
|
||||||
|
|
@ -1047,6 +1047,16 @@ void Graphics::setSmooth(bool value)
|
||||||
p->threadData->config.smoothScaling = value;
|
p->threadData->config.smoothScaling = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Graphics::getFrameskip() const
|
||||||
|
{
|
||||||
|
return p->threadData->config.frameSkip;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Graphics::setFrameskip(bool value)
|
||||||
|
{
|
||||||
|
p->threadData->config.frameSkip = value;
|
||||||
|
}
|
||||||
|
|
||||||
bool Graphics::getShowCursor() const
|
bool Graphics::getShowCursor() const
|
||||||
{
|
{
|
||||||
return p->threadData->ethread->getShowCursor();
|
return p->threadData->ethread->getShowCursor();
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,7 @@ public:
|
||||||
DECL_ATTR( Fullscreen, bool )
|
DECL_ATTR( Fullscreen, bool )
|
||||||
DECL_ATTR( ShowCursor, bool )
|
DECL_ATTR( ShowCursor, bool )
|
||||||
DECL_ATTR( Smooth, bool )
|
DECL_ATTR( Smooth, bool )
|
||||||
|
DECL_ATTR( Frameskip, bool )
|
||||||
|
|
||||||
/* <internal> */
|
/* <internal> */
|
||||||
Scene *getScreen() const;
|
Scene *getScreen() const;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue