#============================================================================== # □ エネミー情報表示(2014/03/30) #------------------------------------------------------------------------------ #  エネミーの情報を表示します。 #============================================================================== #============================================================================== # □ Game_Enemy #------------------------------------------------------------------------------ #  敵キャラを扱うクラスです。このクラスは Game_Troop クラス($game_troop)の # 内部で使用されます。 #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # ○ 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :width # バトル画面 X 座標 attr_accessor :height # バトル画面 Y 座標 #-------------------------------------------------------------------------- # ○ オブジェクト初期化 #-------------------------------------------------------------------------- alias cc_enemy_info_initialize initialize def initialize(index, enemy_id) cc_enemy_info_initialize(index, enemy_id) @width = 0 @height = 0 end end #============================================================================== # □ Sprite_Battler #------------------------------------------------------------------------------ #  バトラー表示用のスプライトです。Game_Battler クラスのインスタンスを監視し、 # スプライトの状態を自動的に変化させます。 #============================================================================== class Sprite_Battler < Sprite_Base #-------------------------------------------------------------------------- # ○ 転送元ビットマップの更新 #-------------------------------------------------------------------------- alias cc_enemy_info_update_bitmap update_bitmap def update_bitmap cc_enemy_info_update_bitmap if(@battler.width != bitmap.width || @battler.height != bitmap.height) @battler.width = bitmap.width @battler.height = bitmap.height end end end #============================================================================== # □ Spriteset_Battle #------------------------------------------------------------------------------ #  バトル画面のスプライトをまとめたクラスです。このクラスは Scene_Battle クラ # スの内部で使用されます。 #============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # ○ ビューポートの作成 #-------------------------------------------------------------------------- alias cc_enemy_info_create_viewports create_viewports def create_viewports cc_enemy_info_create_viewports @viewport4 = Viewport.new @viewport4.z = 0 end #-------------------------------------------------------------------------- # ○ 敵キャラスプライトの作成 #-------------------------------------------------------------------------- def create_enemies @enemy_sprites = $game_troop.members.reverse.collect do |enemy| Sprite_Battler.new(@viewport4, enemy) end end #-------------------------------------------------------------------------- # ○ アクタースプライトの作成 # デフォルトではアクター側の画像は表示しないが、便宜上、敵と味方を同じ # ように扱うためにダミーのスプライトを作成する。 #-------------------------------------------------------------------------- def create_actors @actor_sprites = Array.new(4) { Sprite_Battler.new(@viewport4) } end #-------------------------------------------------------------------------- # ○ ビューポートの更新 #-------------------------------------------------------------------------- alias cc_enemy_info_update_viewports update_viewports def update_viewports cc_enemy_info_update_viewports @viewport4.tone.set($game_troop.screen.tone) @viewport4.ox = $game_troop.screen.shake @viewport4.update end end #============================================================================== # □ Window_BattleEnemy #------------------------------------------------------------------------------ #  バトル画面で、行動対象の敵キャラを選択するウィンドウです。 #============================================================================== class Window_BattleEnemy < Window_Selectable #-------------------------------------------------------------------------- # ○ オブジェクト初期化 # info_viewport : 情報表示用ビューポート #-------------------------------------------------------------------------- def initialize(info_viewport) super(-272-standard_padding, -296-standard_padding, window_width, window_height) refresh self.visible = true self.opacity = 0 @info_viewport = info_viewport self.z = 0 end #-------------------------------------------------------------------------- # ○ ウィンドウ幅の取得 #-------------------------------------------------------------------------- def window_width 544 * 2 + standard_padding * 2 end #-------------------------------------------------------------------------- # ○ ウィンドウ高さの取得 #-------------------------------------------------------------------------- def window_height 296 * 2 + standard_padding * 2 end #-------------------------------------------------------------------------- # ○ ウィンドウ内容の高さを計算 #-------------------------------------------------------------------------- def contents_height height - standard_padding * 2 end #-------------------------------------------------------------------------- # ○ 桁数の取得 #-------------------------------------------------------------------------- def col_max return 1 end #-------------------------------------------------------------------------- # ○ 項目を描画する矩形の取得 #-------------------------------------------------------------------------- def item_rect(index) enemy = $game_troop.alive_members[index] rect = Rect.new rect.width = enemy.width rect.height = enemy.height rect.x = enemy.screen_x - rect.width / 2 + 272 rect.y = enemy.screen_y - rect.height + 296 rect end #-------------------------------------------------------------------------- # ○ 下端パディングの更新 #-------------------------------------------------------------------------- def update_padding_bottom end #-------------------------------------------------------------------------- # ○ 項目の描画 #-------------------------------------------------------------------------- def draw_item(index) enemy = $game_troop.alive_members[index] rect = item_rect(index) x = rect.x + (rect.width - 100) / 2 y = rect.y + rect.height - line_height if Window_Base.method_defined?(:draw_actor_ap) draw_actor_ap(enemy, x, y, 100) else draw_actor_tp(enemy, x, y, 100) end end #-------------------------------------------------------------------------- # ○ カーソルを右に移動 #-------------------------------------------------------------------------- def cursor_right(wrap = false) cursor_down(wrap) end #-------------------------------------------------------------------------- # ○ カーソルを左に移動 #-------------------------------------------------------------------------- def cursor_left(wrap = false) cursor_up(wrap) end #-------------------------------------------------------------------------- # ○ ウィンドウの表示 #-------------------------------------------------------------------------- def show select(0) self end #-------------------------------------------------------------------------- # ○ ウィンドウの非表示 #-------------------------------------------------------------------------- def hide unselect self end end #============================================================================== # □ Scene_Battle #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ○ 敵キャラ選択の開始 #-------------------------------------------------------------------------- alias cc_enemy_info_select_enemy_selection select_enemy_selection def select_enemy_selection cc_enemy_info_select_enemy_selection @skill_window.hide @item_window.hide end #-------------------------------------------------------------------------- # ○ 敵キャラ[キャンセル] #-------------------------------------------------------------------------- alias cc_enemy_info_on_enemy_cancel on_enemy_cancel def on_enemy_cancel cc_enemy_info_on_enemy_cancel case @actor_command_window.current_symbol when :skill @skill_window.show when :item @item_window.show end end end