mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
287 lines
7.4 KiB
Ruby
287 lines
7.4 KiB
Ruby
#==============================================================================
|
|
# ** Game_System
|
|
#------------------------------------------------------------------------------
|
|
# This class handles data surrounding the system. Backround music, etc.
|
|
# is managed here as well. Refer to "$game_system" for the instance of
|
|
# this class.
|
|
#==============================================================================
|
|
class Game_System
|
|
attr_reader :map_interpreter # map event interpreter
|
|
attr_reader :battle_interpreter # battle event interpreter
|
|
attr_accessor :timer # timer
|
|
attr_accessor :timer_working # timer working flag
|
|
attr_accessor :save_disabled # save forbidden
|
|
attr_accessor :menu_disabled # menu forbidden
|
|
attr_accessor :encounter_disabled # encounter forbidden
|
|
attr_accessor :message_position # text option: positioning
|
|
attr_accessor :message_frame # text option: window frame
|
|
attr_accessor :save_count # save count
|
|
attr_accessor :magic_number # magic number
|
|
attr_accessor :autoscroll_x_speed
|
|
attr_accessor :autoscroll_y_speed
|
|
attr_accessor :bgm_position
|
|
|
|
def initialize
|
|
@map_interpreter = Interpreter.new(0, true)
|
|
@battle_interpreter = Interpreter.new(0, false)
|
|
@timer = 0
|
|
@timer_working = false
|
|
@save_disabled = false
|
|
@menu_disabled = false
|
|
@encounter_disabled = false
|
|
@message_position = 2
|
|
@message_frame = 0
|
|
@save_count = 0
|
|
@magic_number = 0
|
|
@autoscroll_x_speed = 0
|
|
@autoscroll_y_speed = 0
|
|
@bgm_position = 0
|
|
@bgs_position = 0
|
|
end
|
|
|
|
################################################################################
|
|
|
|
def bgm_play(bgm)
|
|
old_pos = @bgm_position
|
|
@bgm_position = 0
|
|
bgm_play_internal(bgm,0)
|
|
@bgm_position = old_pos
|
|
end
|
|
|
|
def bgm_play_internal2(name,volume,pitch,position) # :nodoc:
|
|
vol = volume
|
|
vol *= $PokemonSystem.bgmvolume/100.0
|
|
vol = vol.to_i
|
|
begin
|
|
Audio.bgm_play(name,vol,pitch,position)
|
|
rescue ArgumentError
|
|
Audio.bgm_play(name,vol,pitch)
|
|
end
|
|
end
|
|
|
|
def bgm_play_internal(bgm,position) # :nodoc:
|
|
@bgm_position = position if !@bgm_paused
|
|
@playing_bgm = (bgm==nil) ? nil : bgm.clone
|
|
if bgm!=nil && bgm.name!=""
|
|
if FileTest.audio_exist?("Audio/BGM/"+bgm.name)
|
|
bgm_play_internal2("Audio/BGM/"+bgm.name,
|
|
bgm.volume,bgm.pitch,@bgm_position) if !@defaultBGM
|
|
end
|
|
else
|
|
@bgm_position = position if !@bgm_paused
|
|
@playing_bgm = nil
|
|
Audio.bgm_stop if !@defaultBGM
|
|
end
|
|
if @defaultBGM
|
|
bgm_play_internal2("Audio/BGM/"+@defaultBGM.name,
|
|
@defaultBGM.volume,@defaultBGM.pitch,@bgm_position)
|
|
end
|
|
Graphics.frame_reset
|
|
end
|
|
|
|
def bgm_pause(fadetime=0.0) # :nodoc:
|
|
pos = Audio.bgm_pos rescue 0
|
|
self.bgm_fade(fadetime) if fadetime>0.0
|
|
@bgm_position = pos
|
|
@bgm_paused = true
|
|
end
|
|
|
|
def bgm_unpause # :nodoc:
|
|
@bgm_position = 0
|
|
@bgm_paused = false
|
|
end
|
|
|
|
def bgm_resume(bgm) # :nodoc:
|
|
if @bgm_paused
|
|
self.bgm_play_internal(bgm,@bgm_position)
|
|
@bgm_position = 0
|
|
@bgm_paused = false
|
|
end
|
|
end
|
|
|
|
def bgm_stop # :nodoc:
|
|
@bgm_position = 0 if !@bgm_paused
|
|
@playing_bgm = nil
|
|
Audio.bgm_stop if !@defaultBGM
|
|
end
|
|
|
|
def bgm_fade(time) # :nodoc:
|
|
@bgm_position = 0 if !@bgm_paused
|
|
@playing_bgm = nil
|
|
Audio.bgm_fade((time*1000).floor) if !@defaultBGM
|
|
end
|
|
|
|
def playing_bgm
|
|
return @playing_bgm
|
|
end
|
|
|
|
# Saves the currently playing background music for later playback.
|
|
def bgm_memorize
|
|
@memorized_bgm = @playing_bgm
|
|
end
|
|
|
|
# Plays the currently memorized background music
|
|
def bgm_restore
|
|
bgm_play(@memorized_bgm)
|
|
end
|
|
|
|
# Returns an RPG::AudioFile object for the currently playing background music
|
|
def getPlayingBGM
|
|
return (@playing_bgm) ? @playing_bgm.clone : nil
|
|
end
|
|
|
|
def setDefaultBGM(bgm,volume=80,pitch=100)
|
|
bgm = RPG::AudioFile.new(bgm,volume,pitch) if bgm.is_a?(String)
|
|
if bgm!=nil && bgm.name!=""
|
|
@defaultBGM = nil
|
|
self.bgm_play(bgm)
|
|
@defaultBGM = bgm.clone
|
|
else
|
|
@defaultBGM = nil
|
|
self.bgm_play(@playing_bgm)
|
|
end
|
|
end
|
|
|
|
################################################################################
|
|
|
|
def me_play(me)
|
|
me = RPG::AudioFile.new(me) if me.is_a?(String)
|
|
if me!=nil && me.name!=""
|
|
if FileTest.audio_exist?("Audio/ME/"+me.name)
|
|
vol = me.volume
|
|
vol *= $PokemonSystem.bgmvolume/100.0
|
|
vol = vol.to_i
|
|
Audio.me_play("Audio/ME/"+me.name,vol,me.pitch)
|
|
end
|
|
else
|
|
Audio.me_stop
|
|
end
|
|
Graphics.frame_reset
|
|
end
|
|
|
|
################################################################################
|
|
|
|
def bgs_play(bgs)
|
|
@playing_bgs = (bgs==nil) ? nil : bgs.clone
|
|
if bgs!=nil && bgs.name!=""
|
|
if FileTest.audio_exist?("Audio/BGS/"+bgs.name)
|
|
vol = bgs.volume
|
|
vol *= $PokemonSystem.sevolume/100.0
|
|
vol = vol.to_i
|
|
Audio.bgs_play("Audio/BGS/"+bgs.name,vol,bgs.pitch)
|
|
end
|
|
else
|
|
@bgs_position = 0
|
|
@playing_bgs = nil
|
|
Audio.bgs_stop
|
|
end
|
|
Graphics.frame_reset
|
|
end
|
|
|
|
def bgs_pause(fadetime=0.0) # :nodoc:
|
|
if fadetime>0.0
|
|
self.bgs_fade(fadetime)
|
|
else
|
|
self.bgs_stop
|
|
end
|
|
@bgs_paused = true
|
|
end
|
|
|
|
def bgs_unpause # :nodoc:
|
|
@bgs_paused = false
|
|
end
|
|
|
|
def bgs_resume(bgs) # :nodoc:
|
|
if @bgs_paused
|
|
self.bgs_play(bgs)
|
|
@bgs_paused = false
|
|
end
|
|
end
|
|
|
|
def bgs_stop
|
|
@bgs_position = 0
|
|
@playing_bgs = nil
|
|
Audio.bgs_stop
|
|
end
|
|
|
|
def bgs_fade(time)
|
|
@bgs_position = 0
|
|
@playing_bgs = nil
|
|
Audio.bgs_fade((time*1000).floor)
|
|
end
|
|
|
|
def playing_bgs
|
|
return @playing_bgs
|
|
end
|
|
|
|
def bgs_memorize
|
|
@memorized_bgs = @playing_bgs
|
|
end
|
|
|
|
def bgs_restore
|
|
bgs_play(@memorized_bgs)
|
|
end
|
|
|
|
def getPlayingBGS
|
|
return (@playing_bgs) ? @playing_bgs.clone : nil
|
|
end
|
|
|
|
################################################################################
|
|
|
|
def se_play(se)
|
|
se = RPG::AudioFile.new(se) if se.is_a?(String)
|
|
if se!=nil && se.name!="" && FileTest.audio_exist?("Audio/SE/"+se.name)
|
|
vol = se.volume
|
|
vol *= $PokemonSystem.sevolume/100.0
|
|
vol = vol.to_i
|
|
Audio.se_play("Audio/SE/"+se.name,vol,se.pitch)
|
|
end
|
|
end
|
|
|
|
def se_stop
|
|
Audio.se_stop
|
|
end
|
|
|
|
################################################################################
|
|
|
|
def battle_bgm
|
|
return (@battle_bgm) ? @battle_bgm : $data_system.battle_bgm
|
|
end
|
|
|
|
def battle_bgm=(battle_bgm)
|
|
@battle_bgm = battle_bgm
|
|
end
|
|
|
|
def battle_end_me
|
|
return (@battle_end_me) ? @battle_end_me : $data_system.battle_end_me
|
|
end
|
|
|
|
def battle_end_me=(battle_end_me)
|
|
@battle_end_me = battle_end_me
|
|
end
|
|
|
|
################################################################################
|
|
|
|
def windowskin_name
|
|
if @windowskin_name==nil
|
|
return $data_system.windowskin_name
|
|
else
|
|
return @windowskin_name
|
|
end
|
|
end
|
|
|
|
def windowskin_name=(windowskin_name)
|
|
@windowskin_name = windowskin_name
|
|
end
|
|
|
|
def update
|
|
@timer -= 1 if @timer_working && @timer>0
|
|
if Input.trigger?(Input::SPECIAL) && pbCurrentEventCommentInput(1,"Cut Scene")
|
|
event = @map_interpreter.get_character(0)
|
|
@map_interpreter.pbSetSelfSwitch(event.id,"A",true)
|
|
@map_interpreter.command_end
|
|
event.start
|
|
end
|
|
end
|
|
end
|