# ▽△▽ XRXSv9. BaST-VX.CP2. CPゲージ ▽△▽ # # publish 2010/ 3/ 6 # update - 11/ 1/ 5 # #============================================================================== # カスタマイズポイント #============================================================================== module XRXSV9 # # 使用するCPメータースキン(Graphics/System) # CPSkin = "BattleCPBar" # # 「コマンド実行待ち」(攻撃直前・詠唱中)時メーターを動かす? # CPActCostVisible = true # # (↑がtrueの場合のみ) 詠唱中は表示するが、攻撃直前メーターは動かす? # CPAttackCostVisible = false end #============================================================================== # CPセット #============================================================================== class Spriteset_CP #-------------------------------------------------------------------------- # ○ オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(members, info_viewport = nil) @members = members @sprites = [] create_sprites end def create_sprites for sprite in @sprites sprite.dispose end @sprites.clear for battler in @members if battler.is_a?(Game_Actor) sprite = Sprite_CP.new(battler, nil) sprite.x = battler.battlestatus_cp_x sprite.y = battler.battlestatus_cp_y sprite.z = 101 @sprites.push(sprite) end end end def reset_members(members) @members = members create_sprites refresh end #-------------------------------------------------------------------------- # 解放 #-------------------------------------------------------------------------- def dispose @sprites.each{|sprite| sprite.dispose } end #-------------------------------------------------------------------------- # ○ フレーム更新 #-------------------------------------------------------------------------- def update @sprites.each{|sprite| sprite.update } end #-------------------------------------------------------------------------- # ○ 状態更新 #-------------------------------------------------------------------------- def refresh(reserve_battlers = nil) end #-------------------------------------------------------------------------- # 可視状態 #-------------------------------------------------------------------------- def visible=(b) @sprites.each{|sprite| sprite.visible = b } end end #============================================================================== # CPスプライト #============================================================================== class Sprite_CP < Sprite_Base #-------------------------------------------------------------------------- # ○ オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(battler, viewport = nil) super(viewport) @battler = battler make_sprite update end #-------------------------------------------------------------------------- # ○ スプライトの作成 #-------------------------------------------------------------------------- def make_sprite @back_sprite = Sprite.new(self.viewport) cpbar = Cache.system(XRXSV9::CPSkin) rect = Rect.new(0, 0, cpbar.width, 6) @back_sprite.bitmap = Bitmap.new(96, 6) @back_sprite.bitmap.blt(0, 0, cpbar, rect) @back_sprite.ox = 48 self.bitmap = cpbar self.src_rect = Rect.new(0, 0, 96, 6) self.ox = 48 end #-------------------------------------------------------------------------- # ○ フレーム更新 #-------------------------------------------------------------------------- def update if @battler.cp_max? n = (@battler.commanded ? 3 : 2) elsif @battler.commanded n = (@battler.action.magic_skill? ? 4 : 2) else n = 1 end self.src_rect.y = n * 6 self.src_rect.width = meter_width end if not XRXSV9::CPActCostVisible def meter_width if @battler.commanded m = 96 else m = @battler.cp_per96 end return m end elsif not XRXSV9::CPAttackCostVisible def meter_width if @battler.commanded and not @battler.action.magic_skill? m = 96 else m = @battler.cp_per96 end return m end else def meter_width return @battler.cp_per96 end end #-------------------------------------------------------------------------- # ○ 第二スプライトと連動 #-------------------------------------------------------------------------- def dispose @back_sprite.dispose super end def x=(n) @back_sprite.x = n super end def y=(n) @back_sprite.y = n super end def z=(n) @back_sprite.z = n - 1 super end def visible=(b) @back_sprite.visible = b super end def viewport=(viewport) @back_sprite.viewport = viewport super end end