#============================================================================== # ■ XP-RGSS-44-V3 サイドビュー戦闘[Spriteset_Battle] by Claimh #------------------------------------------------------------------------------ # 背景画像の伸縮機能とかを追加 #------------------------------------------------------------------------------ #【再定義】Spriteset_Battle : 全て #============================================================================== #============================================================================== # ■ BattleBackSprite #============================================================================== class BattleBackSprite < Sprite BACK_W = 640.00 BACK_H = 320.00 #-------------------------------------------------------------------------- # ● ピクチャ変更 #-------------------------------------------------------------------------- def pict_set self.bitmap = RPG::Cache.battleback(@battleback_name) # 画像サイズに合わせてズームをする @x_zoom = BACK_W / self.bitmap.width @y_zoom = BACK_H / self.bitmap.height @zoom = @x_zoom > @y_zoom ? @x_zoom : @y_zoom end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # バトルバックのファイル名が現在のものと違う場合 if @battleback_name != $game_temp.battleback_name @battleback_name = $game_temp.battleback_name pict_set end end end #============================================================================== # ■ Spriteset_Battle #------------------------------------------------------------------------------ #  バトル画面のスプライトをまとめたクラスです。このクラスは Scene_Battle クラ # スの内部で使用されます。 #============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_reader :viewport1 # アクター/エネミーのビューポート #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize # ビューポートを作成 @viewport1 = Viewport.new(0, 0, 640, 480) @viewport3 = Viewport.new(0, 0, 640, 480) @viewport4 = Viewport.new(0, 0, 640, 480) @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 = [] update_actor_sprite # 天候を作成 @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 dispose # バトルバックスプライトを解放 @battleback_sprite.dispose # エネミースプライト、アクタースプライトを解放 for sprite in @enemy_sprites + @actor_sprites sprite.dispose end # 天候を解放 @weather.dispose # ピクチャスプライトを解放 for sprite in @picture_sprites sprite.dispose end # タイマースプライトを解放 @timer_sprite.dispose # ビューポートを解放 @viewport1.dispose @viewport3.dispose @viewport4.dispose end #-------------------------------------------------------------------------- # ● エフェクト表示中判定 #-------------------------------------------------------------------------- def effect? # エフェクトが一つでも表示中なら true を返す for sprite in @enemy_sprites + @actor_sprites return true if sprite.effect? end return false end #-------------------------------------------------------------------------- # ● アクタースプライト更新 #-------------------------------------------------------------------------- def update_actor_sprite for i in 0...$game_party.actors.size if @actor_sprites[i].nil? @actor_sprites[i] = Sprite_Battler.new(@viewport1, $game_party.actors[i]) end end if @actor_sprites.size > $game_party.actors.size for i in $game_party.actors.size...@actor_sprites.size @actor_sprites[i].dispose @actor_sprites[i] = nil end end end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # バトルバックを更新 @battleback_sprite.update # アクタースプライトの内容を更新 (アクターの入れ替えに対応) update_actor_sprite # バトラースプライトを更新 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 end end