#===============================================================================
# ■ 战斗播放地图音乐脚本
#-------------------------------------------------------------------------------
#    当战斗时地图音乐保持并战斗继续播放地图设置好的音乐。
#
#===============================================================================
#  说明:已经放在BATTLE_BGM_MAP的地图ID会不断的播放地图设置好的音乐,当开关号码
#        为关闭时该地图的战斗胜利音乐不会播放,打开时则播放,其他没放在BATTLE_BGM
#        _MAP的地图ID开关号码会自动打开,放在那的地图ID需要自己动手设置该地图,
#        该地图也会战斗关闭开关号码。
#  
#  使用方法:当需要设置战斗时播放地图音乐的地图ID放到BATTLE_BGM_MAP的[]里,默认
#            系统里的战斗音乐放在DEFAULT_BGM里,控制战斗胜利音乐的开关,当该开关
#            打开时播放战斗胜利音乐,关闭时则不播放战斗胜利音乐。
#
#  作者:uuiio797
#
#===============================================================================
module Battle_Bgm
 
  BATTLE_BGM_MAP = [1] # 战斗时播放地图音乐的地图ID
 
  DEFAULT_BGM = ["Battle2" ,100 , 100] # 系统设置的默认战斗音乐(音乐名字,音量,音调)
 
  SWICTH_ME = 1 # 控制播放战斗胜利音乐的开关号码,该开关打开时播放默认胜利音乐,关闭时不播放胜利音乐
 
end
 
#==============================================================================
# ■ BattleManager
#------------------------------------------------------------------------------
#  戰鬥過程的管理器。
#==============================================================================
module BattleManager
 
  #--------------------------------------------------------------------------
  # ● 勝利時的處理 【再定义】
  #--------------------------------------------------------------------------
  def self.process_victory
    case $game_switches[Battle_Bgm::SWICTH_ME] # 开关号码
    when true # 默认,播放胜利音乐
      play_battle_end_me
      replay_bgm_and_bgs
      $game_message.add(sprintf(Vocab::Victory, $game_party.name))
      display_exp
      gain_gold
      gain_drop_items
      gain_exp
      SceneManager.return
      battle_end(0)
      return true
    when false # 不播放胜利音乐
      replay_bgm_and_bgs
      $game_message.add(sprintf(Vocab::Victory, $game_party.name))
      display_exp
      gain_gold
      gain_drop_items
      gain_exp
      SceneManager.return
      battle_end(0)
      return true
    end
  end
end
 
#=============================================================================
# ▼ Scene_Map
#-----------------------------------------------------------------------------
#    战斗保持地图音乐的场景
#=============================================================================
class Scene_Map < Scene_Base
 
  #---------------------------------------------------------------------------
  # ● 开始处理【再定义】
  #---------------------------------------------------------------------------
  def start
    super
    SceneManager.clear
    $game_player.straighten
    $game_map.refresh
    $game_message.visible = false
    create_spriteset
    create_all_windows
    @menu_calling = false
  end
 
  #--------------------------------------------------------------------------
  # ● 更新畫面 【再定义】
  #--------------------------------------------------------------------------
  def update
    super
    $game_map.update(true)
    $game_player.update
    $game_timer.update
    @spriteset.update
    update_scene if scene_change_ok?
    # 切换地图时开关1号自动开启(播放地图为战斗音乐的地图)
    $game_switches[Battle_Bgm::SWICTH_ME] = true unless is_map_bgm? 
    # 当你不要自动关闭该开关时再该代码前面加个#注释掉
    $game_switches[Battle_Bgm::SWICTH_ME] = false if is_map_bgm? 
  end
 
  #--------------------------------------------------------------------------
  # ● 切換戰鬥畫面前的處理 【再定义】
  #--------------------------------------------------------------------------
  def pre_battle_scene
    Graphics.update
    Graphics.freeze
    @spriteset.dispose_characters
    BattleManager.save_bgm_and_bgs
    play_map_bgm if is_map_bgm? # 该地图ID战斗时播放地图音乐
    play_default_bgm unless is_map_bgm? # 其他地图播放默认战斗音乐
    BattleManager.play_battle_bgm    
    Sound.play_battle_start
  end
 
  #---------------------------------------------------------------------------
  # ● 保持地图ID的音乐
  #---------------------------------------------------------------------------
  def is_map_bgm?
    return Battle_Bgm::BATTLE_BGM_MAP.include?($game_map.map_id)
  end
 
  #--------------------------------------------------------------------------
  # ● 播放地图音乐
  #--------------------------------------------------------------------------
  def play_map_bgm
    BattleManager.replay_bgm_and_bgs
    $game_system.battle_bgm = BattleManager.replay_bgm_and_bgs # 战斗时播放地图音乐
  end
 
  #--------------------------------------------------------------------------
  # ● 播放默认战斗音乐
  #--------------------------------------------------------------------------
  def play_default_bgm 
    filename = Battle_Bgm::DEFAULT_BGM[0]
    volume = Battle_Bgm::DEFAULT_BGM[1]
    pitch = Battle_Bgm::DEFAULT_BGM[2]
    Audio.bgm_play("/Audio/BGM/" + filename, volume, pitch) 
    $game_system.battle_bgm = Audio.bgm_play("/Audio/BGM/" + filename, volume, pitch) 
  end
end