#============================================================================== # ■ XP-RGSS-53 バトル背景変更 [Ver.1.0.0] by Claimh #------------------------------------------------------------------------------ # バトル背景をフルスクリーン化します。 #============================================================================== #============================================================================== # ■ Spriteset_Battle #============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # ● オブジェクト初期化 [再定義] #-------------------------------------------------------------------------- def initialize # ビューポートを作成 @viewport1 = Viewport.new(0, 0, 640, 480) @viewport2 = Viewport.new(0, 0, 640, 480) @viewport3 = Viewport.new(0, 0, 640, 480) @viewport4 = Viewport.new(0, 0, 640, 480) @viewport2.z = 101 @viewport3.z = 200 @viewport4.z = 5000 # バトルバックスプライトを作成 @battleback_sprite = BattleBackSprite.new(@viewport1) # エネミースプライトを作成 @enemy_sprites = [] for enemy in $game_troop.enemies.reverse @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy)) end # アクタースプライトを作成 @actor_sprites = [] @actor_sprites.push(Sprite_Battler.new(@viewport2)) @actor_sprites.push(Sprite_Battler.new(@viewport2)) @actor_sprites.push(Sprite_Battler.new(@viewport2)) @actor_sprites.push(Sprite_Battler.new(@viewport2)) # 天候を作成 @weather = RPG::Weather.new(@viewport1) # ピクチャスプライトを作成 @picture_sprites = [] for i in 51..100 @picture_sprites.push(Sprite_Picture.new(@viewport3, $game_screen.pictures[i])) end # タイマースプライトを作成 @timer_sprite = Sprite_Timer.new # フレーム更新 update end #-------------------------------------------------------------------------- # ● フレーム更新 [再定義] #-------------------------------------------------------------------------- def update # アクタースプライトの内容を更新 (アクターの入れ替えに対応) @actor_sprites[0].battler = $game_party.actors[0] @actor_sprites[1].battler = $game_party.actors[1] @actor_sprites[2].battler = $game_party.actors[2] @actor_sprites[3].battler = $game_party.actors[3] # バトルバックのファイル名が現在のものと違う場合 if @battleback_name != $game_temp.battleback_name @battleback_name = $game_temp.battleback_name @battleback_sprite.restore(@battleback_name) end # バトラースプライトを更新 for sprite in @enemy_sprites + @actor_sprites sprite.update end # 天候グラフィックを更新 @weather.type = $game_screen.weather_type @weather.max = $game_screen.weather_max @weather.update # ピクチャスプライトを更新 for sprite in @picture_sprites sprite.update end # タイマースプライトを更新 @timer_sprite.update # 画面の色調とシェイク位置を設定 @viewport1.tone = $game_screen.tone @viewport1.ox = $game_screen.shake # 画面のフラッシュ色を設定 @viewport4.color = $game_screen.flash_color # ビューポートを更新 @viewport1.update @viewport2.update @viewport4.update end end #============================================================================== # ■ BattleBackSprite #============================================================================== class BattleBackSprite < Sprite # 背景の画面サイズ WIDTH = 640.00 HEIGHT = 480.00 #-------------------------------------------------------------------------- # ● バトル背景の再構築 #-------------------------------------------------------------------------- def restore(battleback_name) self.bitmap.dispose unless self.bitmap.nil? self.bitmap = RPG::Cache.battleback(battleback_name) # 画像サイズに合わせてズームをする @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