class Sprite_Animated < RPG::Sprite attr_accessor :max_poses attr_accessor :max_frames attr_reader :pose attr_reader :frame def initialize(poses = 1, frames = 1, viewport = nil) super(viewport) @max_poses = poses @max_frames = frames @pose = 0 @frame = 0 end def bitmap=(bitmap) super(bitmap) @frame_width = bitmap.width / @max_frames @frame_height = bitmap.height / @max_poses end def set_pose(pose) old_pose = @pose @pose = pose unless pose > @max_poses @frame = 0 if old_pose != @pose update_oxoy end def set_frame(frame) @frame = frame unless frame > @max_frames update_oxoy end def update_oxoy #self.ox = @frame * @frame_width #self.oy = @pose * @frame_height self.src_rect.set(@frame * @frame_width, @pose * @frame_height, @frame_width, @frame_height) end def update super animate_frames if @max_frames > 1 update_oxoy end def animate_frames @frame += 1 @frame = 0 if @frame > @max_frames end end