mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
69 lines
1.8 KiB
Ruby
69 lines
1.8 KiB
Ruby
#===============================================================================
|
|
# Walking charset, for use in text entry screens and load game screen
|
|
#===============================================================================
|
|
class TrainerWalkingCharSprite < Sprite
|
|
attr_accessor :anim_duration
|
|
|
|
# Default time in seconds for one animation cycle of a charset. The icon for a
|
|
# storage box is 0.4 instead (set manually).
|
|
ANIMATION_DURATION = 0.5
|
|
|
|
def initialize(charset, viewport = nil)
|
|
super(viewport)
|
|
@animbitmap = nil
|
|
self.charset = charset
|
|
@current_frame = 0 # Current pattern
|
|
@anim_duration = ANIMATION_DURATION
|
|
end
|
|
|
|
def dispose
|
|
@animbitmap&.dispose
|
|
super
|
|
end
|
|
|
|
def charset=(value)
|
|
@animbitmap&.dispose
|
|
@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
|
|
|
|
# Used for the box icon in the naming screen.
|
|
def altcharset=(value)
|
|
@animbitmap&.dispose
|
|
@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 update_frame
|
|
@current_frame = (4 * (System.uptime % @anim_duration) / @anim_duration).floor
|
|
end
|
|
|
|
def update
|
|
@updating = true
|
|
super
|
|
if @animbitmap
|
|
@animbitmap.update
|
|
self.bitmap = @animbitmap.bitmap
|
|
end
|
|
# Update animation
|
|
update_frame
|
|
self.src_rect.x = self.src_rect.width * @current_frame
|
|
@updating = false
|
|
end
|
|
end
|