mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
66 lines
1.8 KiB
Ruby
66 lines
1.8 KiB
Ruby
#===============================================================================
|
|
# Walking charset, for use in text entry screens and load game screen
|
|
#===============================================================================
|
|
class TrainerWalkingCharSprite < SpriteWrapper
|
|
def initialize(charset,viewport=nil)
|
|
super(viewport)
|
|
@animbitmap = nil
|
|
self.charset = charset
|
|
@animframe = 0 # Current pattern
|
|
@frame = 0 # Frame counter
|
|
self.animspeed = 5 # Animation speed (frames per pattern)
|
|
end
|
|
|
|
def charset=(value)
|
|
@animbitmap.dispose if @animbitmap
|
|
@animbitmap = nil
|
|
bitmapFileName = sprintf("Graphics/Characters/%s",value)
|
|
@charset = pbResolveBitmap(bitmapFileName)
|
|
if @charset
|
|
@animbitmap = AnimatedBitmap.new(@charset)
|
|
self.bitmap = @animbitmap.bitmap
|
|
self.src_rect.set(0,0,self.bitmap.width/4,self.bitmap.height/4)
|
|
else
|
|
self.bitmap = nil
|
|
end
|
|
end
|
|
|
|
def altcharset=(value) # Used for box icon in the naming screen
|
|
@animbitmap.dispose if @animbitmap
|
|
@animbitmap = nil
|
|
@charset = pbResolveBitmap(value)
|
|
if @charset
|
|
@animbitmap = AnimatedBitmap.new(@charset)
|
|
self.bitmap = @animbitmap.bitmap
|
|
self.src_rect.set(0,0,self.bitmap.width/4,self.bitmap.height)
|
|
else
|
|
self.bitmap = nil
|
|
end
|
|
end
|
|
|
|
def animspeed=(value)
|
|
@frameskip = value*Graphics.frame_rate/40
|
|
end
|
|
|
|
def dispose
|
|
@animbitmap.dispose if @animbitmap
|
|
super
|
|
end
|
|
|
|
def update
|
|
@updating = true
|
|
super
|
|
if @animbitmap
|
|
@animbitmap.update
|
|
self.bitmap = @animbitmap.bitmap
|
|
end
|
|
@frame += 1
|
|
if @frame>=@frameskip
|
|
@animframe = (@animframe+1)%4
|
|
self.src_rect.x = @animframe*@animbitmap.bitmap.width/4
|
|
@frame -= @frameskip
|
|
end
|
|
@updating = false
|
|
end
|
|
end
|