#============================================================================== # ■ Numset #------------------------------------------------------------------------------ #  定数を扱うモジュールです。 #============================================================================== module Numset BASE_PLUS = 4 # 基本Z座標補正 end #============================================================================== # ■ RPG::Sprite #------------------------------------------------------------------------------ #  アニメーションの管理を行うクラスです。 #============================================================================== module RPG class Sprite < ::Sprite alias :z_initialize :initialize def initialize(viewport = nil) z_initialize(viewport) if Numset.const_defined?("DOUBLE_SPEED") @_animation_front = false else @_animation_front = [] end end alias :base_animation :animation def animation(animation, hit, critical = false) return if animation == nil if @_animation_front.is_a?(Array) if animation.animation_name =~ /\\f/i @_animation_front.push(true) else @_animation_front.push(false) end else if animation.animation_name =~ /\\f/i @_animation_front = true else @_animation_front = false end end base_animation(animation, hit, critical) end alias :base_loop_animation :loop_animation def loop_animation(animation) return if @_loop_animation.include?(animation) or animation == nil if @_animation_front.is_a?(Array) if animation.animation_name =~ /\\f/i @loop_animation_front.push(true) else @loop_animation_front.push(false) end else if animation.animation_name =~ /\\f/i @loop_animation_front = true else @loop_animation_front = false end end base_loop_animation(animation) end def dispose_animation(id) if Numset.const_defined?("DOUBLE_SPEED") if @_animation_sprites[id] != nil @_animation_front.delete_at(id) end else if @_animation_sprites != nil @_animation_front = false end end base_dispose_animation(id) end alias :base_dispose_loop_animation :dispose_loop_animation def dispose_loop_animation(id) if Numset.const_defined?("DOUBLE_SPEED") if @_loop_animation_sprites[id] != nil @_loop_animation_front.delete_at(id) end else if @_loop_animation_sprites != nil @_loop_animation_front = false end end base_dispose_loop_animation(id) end def update_animation(id) if Numset.const_defined?("DOUBLE_SPEED") if @_animation_duration[id] > 0 frame_index = @_animation[id].frame_max - @_animation_duration[id] cell_data = @_animation[id].frames[frame_index].cell_data position = @_animation[id].position animation_set_sprites(@_animation_sprites[id], cell_data, position, @_animation_front[id]) for timing in @_animation[id].timings if timing.frame == frame_index if Game_Battler.method_defined?("animation_critical") animation_process_timing(timing, @_animation_hit[id], @_animation_critical[id]) else animation_process_timing(timing, @_animation_hit[id]) end end end else dispose_animation(id) end else if @_animation_duration > 0 frame_index = @_animation.frame_max - @_animation_duration cell_data = @_animation.frames[frame_index].cell_data position = @_animation.position animation_set_sprites(@_animation_sprites, cell_data, position, @_animation_front) for timing in @_animation.timings if Game_Battler.method_defined?("animation_critical") animation_process_timing(timing, @_animation_hit, @_animation_critical) else animation_process_timing(timing, @_animation_hit) end end else dispose_animation end end end def update_loop_animation(id) if Numset.const_defined?("DOUBLE_SPEED") frame_index = @_loop_animation_index[id] cell_data = @_loop_animation[id].frames[frame_index].cell_data position = @_loop_animation[id].position animation_set_sprites(@_loop_animation_sprites[id], cell_data, position, @_loop_animation_front[id]) for timing in @_loop_animation[id].timings if timing.frame == frame_index animation_process_timing(timing, true) end end else frame_index = @_loop_animation_index cell_data = @_loop_animation.frames[frame_index].cell_data position = @_loop_animation.position animation_set_sprites(@_loop_animation_sprites, cell_data, position, @_loop_animation_front) for timing in @_loop_animation.timings if timing.frame == frame_index animation_process_timing(timing, true) end end end end alias :base_animation_set_sprites :animation_set_sprites def animation_set_sprites(sprites, cell_data, position) base_animation_set_sprites(sprites, cell_data, position) if Numset.const_defined?("DOUBLE_SPEED") for i in 0...sprites.size sprite = sprites[i] if position != 3 sprite.z = self.y + Numset::BASE_PLUS else sprite.z = sprite.y + 96 + Numset::BASE_PLUS end sprite.z -= (sprite.opacity % 10) end else for i in 0..15 sprite = sprites[i] if position != 3 sprite.z = self.y + Numset::BASE_PLUS else sprite.z = sprite.y + 96 + Numset::BASE_PLUS end end sprite.z -= (sprite.opacity % 10) end end end end