All pastes #560762 Raw Edit

Something

public text v1 · immutable
·published 2007-06-12 06:04 UTC
rendered paste body
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