Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class AnimatedBitmapWrapperAnim
- attr_reader :width
- attr_reader :height
- attr_reader :totalFrames
- attr_reader :animationFrames
- attr_reader :currentIndex
- attr_reader :scale
- def initialize(file,twoframe=false)
- raise "filename is nil" if file==nil
- @scale = 2
- @width = 0
- @height = 0
- @frame = 0
- @frames = 2
- @direction = +1
- @twoframe = twoframe
- @animationFinish = false
- @totalFrames = 0
- @currentIndex = 0
- @speed = 1
- @finished=false
- @middle=false
- # 0 - not moving at all
- # 1 - normal speed
- # 2 - medium speed
- # 3 - slow speed
- @bitmapFile=BitmapCache.load_bitmap(file)
- # initializes full Pokemon bitmap
- @bitmap=Bitmap.new(@bitmapFile.width,@bitmapFile.height)
- @bitmap.blt(0,0,@bitmapFile,Rect.new(0,0,@bitmapFile.width,@bitmapFile.height))
- @width=@bitmap.height*@scale
- @height=@bitmap.height*@scale
- @totalFrames=@bitmap.width/@bitmap.height
- @animationFrames=@totalFrames*@frames
- # calculates total number of frames
- @loop_points=[0,@totalFrames]
- # first value is start, second is end
- @actualBitmap=Bitmap.new(@width,@height)
- @actualBitmap.clear
- @actualBitmap.stretch_blt(Rect.new(0,0,@width,@height),@bitmap,Rect.new(@currentIndex*(@width/@scale),0,@width/@scale,@height/@scale))
- end
- def length; @totalFrames; end
- def disposed?; @actualBitmap.disposed?; end
- def dispose; @actualBitmap.dispose; end
- def copy; @actualBitmap.clone; end
- def bitmap; @actualBitmap; end
- def bitmap=(val); @actualBitmap=val; end
- def each; end
- def alterBitmap(index); return @strip[index]; end
- def prepareStrip
- @strip=[]
- for i in 0...@totalFrames
- bitmap=Bitmap.new(@width,@height)
- bitmap.stretch_blt(Rect.new(0,0,@width,@height),@bitmapFile,Rect.new((@width/@scale)*i,0,@width/@scale,@height/@scale))
- @strip.push(bitmap)
- end
- end
- def compileStrip
- @bitmap.clear
- for i in 0...@strip.length
- @bitmap.stretch_blt(Rect.new((@width/@scale)*i,0,@width/@scale,@height/@scale),@strip[i],Rect.new(0,0,@width,@height))
- end
- end
- def reverse
- if @direction > 0
- @direction=-1
- elsif @direction < 0
- @direction=+1
- end
- end
- def setLoop(start, finish)
- @loop_points=[start,finish]
- end
- def setSpeed(value)
- @speed=value
- end
- def update
- return false if @speed < 1
- case @speed
- # frame skip
- when 1
- @frames=2
- when 2
- @frames=4
- when 3
- @frames=5
- end
- @frame+=1
- if @frame >=@frames
- # processes animation speed
- if @currentIndex < @totalFrames
- @currentIndex+=@direction
- end
- @frame=0
- end
- @currentIndex=@totalFrames if @currentIndex > @totalFrames
- @finished=true if @currentIndex==@totalFrames
- @middle=true if @currentIndex==@totalFrames/2
- @actualBitmap.clear
- @actualBitmap.stretch_blt(Rect.new(0,0,@width,@height),@bitmap,Rect.new(@currentIndex*(@width/@scale),0,@width/@scale,@height/@scale))
- # updates the actual bitmap
- end
- def finished?
- return @finished
- end
- def middle?
- return @middle
- end
- # returns bitmap to original state
- def deanimate
- @frame=0
- @currentIndex=0
- @actualBitmap.clear
- @actualBitmap.stretch_blt(Rect.new(0,0,@width,@height),@bitmap,Rect.new(@currentIndex*(@width/@scale),0,@width/@scale,@height/@scale))
- end
- end
- class GifAnim
- attr_accessor :selected
- attr_accessor :shadow
- attr_accessor :sprite
- attr_accessor :src_rect
- attr_accessor :showshadow
- attr_accessor :status
- attr_reader :loaded
- def initialize(x,y,viewport=nil,repeat=false)
- @viewport=viewport
- @metrics=load_data("Data/metrics.dat")
- @selected=0
- @status=0
- @loaded=false
- @repeat=repeat
- @showshadow=false
- @altitude=0
- @yposition=0
- @sprite=Sprite.new(@viewport)
- @sprite.x=x
- @sprite.y=y
- @overlay=Sprite.new(@viewport)
- @lock=false
- end
- def x; @sprite.x; end
- def y; @sprite.y; end
- def z; @sprite.z; end
- def ox; @sprite.ox; end
- def oy; @sprite.oy; end
- def ox=(val);;end
- def oy=(val);;end
- def zoom_x; @sprite.zoom_x; end
- def zoom_y; @sprite.zoom_y; end
- def visible; @sprite.visible; end
- def opacity; @sprite.opacity; end
- def width; @bitmap.width; end
- def height; @bitmap.height; end
- def tone; @sprite.tone; end
- def bitmap; @bitmap.bitmap; end
- def actualBitmap; @bitmap; end
- def disposed?; @sprite.disposed?; end
- def color; @sprite.color; end
- def src_rect; @sprite.src_rect; end
- def blend_type; @sprite.blend_type; end
- def angle; @sprite.angle; end
- def mirror; @sprite.mirror; end
- def lock
- @lock=true
- end
- def unlock
- @lock=false
- end
- def bitmap=(val)
- @bitmap.bitmap=val
- end
- def finished?
- return @bitmap.finished?
- end
- def middle?
- return @bitmap.middle?
- end
- def x=(val)
- @sprite.x=val
- end
- def ox=(val)
- @sprite.ox=val
- end
- def oy=(val)
- @sprite.oy=val
- end
- def y=(val)
- @sprite.y=val
- end
- def zoom_x=(val)
- @sprite.zoom_x=val
- end
- def zoom_y=(val)
- @sprite.zoom_y=val
- end
- def visible=(val)
- @sprite.visible=val
- end
- def opacity=(val)
- @sprite.opacity=val
- end
- def tone=(val)
- @sprite.tone=val
- end
- def color=(val)
- @sprite.color=val
- end
- def blend_type=(val)
- @sprite.blend_type=val
- end
- def angle=(val)
- @sprite.angle=(val)
- end
- def mirror=(val)
- @sprite.mirror=(val)
- end
- def dispose
- @sprite.dispose
- end
- def z=(val)
- @sprite.z=val
- end
- def totalFrames; @bitmap.animationFrames; end
- def toLastFrame; @bitmap.toFrame("last"); end
- def selected; end
- def setBitmap(file)
- if !@repeat
- @bitmap=AnimatedBitmapWrapperAnim.new(file)
- @sprite.ox=@bitmap.width/2
- @sprite.oy=@bitmap.height/2
- else
- @bitmap=AnimatedBitmapWrapper.new(file)
- @bitmap.setSpeed(2)
- @sprite.oy=@bitmap.height/2
- end
- @sprite.bitmap=@bitmap.bitmap.clone
- end
- def update
- return if @lock
- if @bitmap
- @bitmap.update
- @sprite.bitmap=@bitmap.bitmap.clone
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement