#============================================================================== # ■ VX-RGSS2-7 バトル背景変更 [Ver.1.1.0] by Claimh #------------------------------------------------------------------------------ # バトル背景を変更します。 #============================================================================== module BattleBack # バトル背景の選択 # 0:ウェーブさせたマップをバトル背景にする(VXデフォルト) # 1:マップをそのままバトル背景にする # 2:一枚絵をバトル背景にする(マップ単位) # 3:一枚絵をバトル背景にする(エリア単位) BB_TYPE = 2 # バトルフロアを表示する BT_FLOOR = false # マップごとの一枚絵(BB_TYPE = 2, 3の場合のみ必要) M_B_BACK = { # マップID => "バトル背景のピクチャファイル名(Graphics/System)" 0 => "001-Grassland01", # 0⇒その他、戦闘テストなど 1 => "001-Grassland01" } # エリアごとの一枚絵(BB_TYPE = 3の場合のみ必要) # ※マップ上にエリアが存在しない場合、M_B_BACKの設定が適応されます # エリアIDの設定がない(nil)の場合もM_B_BACKの設定が適応されます # エリア範囲が重複する場合、重複するエリアのどれかにランダムで決まります。 A_B_BACK = { # エリアID => "バトル背景のピクチャファイル名(Graphics/System)" 0 => "001-Grassland01", # 0⇒その他、戦闘テストなど 1 => "007-Swamp01", 2 => "008-Snowfield01" } end #============================================================================== # ■ Spriteset_Battle #============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # ● バトルバックスプライトの作成 #-------------------------------------------------------------------------- def create_battleback case BattleBack::BB_TYPE when 0 source = $game_temp.background_bitmap bitmap = Bitmap.new(640, 480) bitmap.stretch_blt(bitmap.rect, source, source.rect) bitmap.radial_blur(90, 12) @battleback_sprite = Sprite.new(@viewport1) @battleback_sprite.bitmap = bitmap @battleback_sprite.ox = 320 @battleback_sprite.oy = 240 @battleback_sprite.x = 272 @battleback_sprite.y = 176 @battleback_sprite.wave_amp = 8 @battleback_sprite.wave_length = 240 @battleback_sprite.wave_speed = 120 when 1 source = $game_temp.background_bitmap bitmap = Bitmap.new(640, 480) bitmap.stretch_blt(bitmap.rect, source, source.rect) @battleback_sprite = Sprite.new(@viewport1) @battleback_sprite.bitmap = bitmap @battleback_sprite.ox = 320 @battleback_sprite.oy = 240 @battleback_sprite.x = 272 @battleback_sprite.y = 176 when 2, 3 @battleback_sprite = BattleBackSprite.new(@viewport1) end end #-------------------------------------------------------------------------- # ● バトルフロアスプライトの作成 #-------------------------------------------------------------------------- alias create_battlefloor_mbb create_battlefloor def create_battlefloor create_battlefloor_mbb if BattleBack::BT_FLOOR end #-------------------------------------------------------------------------- # ● バトルフロアスプライトの解放 #-------------------------------------------------------------------------- alias dispose_battlefloor_mbb dispose_battlefloor def dispose_battlefloor dispose_battlefloor_mbb if BattleBack::BT_FLOOR end #-------------------------------------------------------------------------- # ● バトルフロアの更新 #-------------------------------------------------------------------------- alias update_battlefloor_mbb update_battlefloor def update_battlefloor update_battlefloor_mbb if BattleBack::BT_FLOOR end end #============================================================================== # ■ BattleBackSprite #============================================================================== class BattleBackSprite < Sprite # 背景の画面サイズ WIDTH = 544.00 HEIGHT = 288.00 #-------------------------------------------------------------------------- # ● 背景ファイル(マップ単位) #-------------------------------------------------------------------------- def map_bitmap if $BTEST or BattleBack::M_B_BACK[$game_map.map_id].nil? self.bitmap = Cache.system(BattleBack::M_B_BACK[0]) else self.bitmap = Cache.system(BattleBack::M_B_BACK[$game_map.map_id]) end end #-------------------------------------------------------------------------- # ● 背景ファイル(エリア単位) #-------------------------------------------------------------------------- def area_bitmap if $BTEST self.bitmap = Cache.system(BattleBack::A_B_BACK[0]) else area_ids = [] for area in $data_areas.values if $game_player.in_area?(area) area_ids.push(area.id) unless BattleBack::A_B_BACK[area.id].nil? end end if area_ids.empty? # 該当エリアなし map_bitmap else id = area_ids[rand(area_ids.size)] self.bitmap = Cache.system(BattleBack::A_B_BACK[id]) end end end #-------------------------------------------------------------------------- # ● 背景ファイル読み込み #-------------------------------------------------------------------------- def load_bitmap case BattleBack::BB_TYPE when 2; map_bitmap when 3; area_bitmap end end #-------------------------------------------------------------------------- # ● オブジェクト初期化 # viewport : ビューポート #-------------------------------------------------------------------------- def initialize(viewport = nil) super(viewport) load_bitmap # 画像サイズに合わせてズームをする @x_zoom = WIDTH / self.bitmap.width @y_zoom = HEIGHT / self.bitmap.height @zoom = @x_zoom > @y_zoom ? @x_zoom : @y_zoom # ズームする self.zoom_x = @zoom self.zoom_y = @zoom # 中央表示にする self.ox = self.bitmap.width / 2 self.oy = self.bitmap.height / 2 self.x = (self.bitmap.width / 2) * @zoom self.y = (self.bitmap.height / 2) * @zoom end end