mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-07 13:15:01 +00:00
6.4 update (minus sprites)
This commit is contained in:
58
Data/Scripts/048_Fusion/Sprites/BaseSpriteExtracter.rb
Normal file
58
Data/Scripts/048_Fusion/Sprites/BaseSpriteExtracter.rb
Normal file
@@ -0,0 +1,58 @@
|
||||
class BaseSpriteExtracter < PIFSpriteExtracter
|
||||
@instance = new
|
||||
|
||||
def self.instance
|
||||
@@instance ||= new # If @@instance is nil, create a new instance
|
||||
@@instance # Return the existing or new instance
|
||||
end
|
||||
|
||||
SPRITESHEET_FOLDER_PATH = "Graphics/CustomBattlers/spritesheets/spritesheets_base/"
|
||||
SPRITE_SIZE = 288 # Original sprite size
|
||||
SCALED_SIZE = 288 # Scaled sprite size
|
||||
NB_COLUMNS_BASESPRITES = 10
|
||||
SHEET_WIDTH = SPRITE_SIZE * NB_COLUMNS_BASESPRITES # 2880 pixels wide spritesheet
|
||||
def load_bitmap_from_spritesheet(pif_sprite)
|
||||
alt_letter = pif_sprite.alt_letter
|
||||
spritesheet_file = getSpritesheetPath(pif_sprite)
|
||||
spritesheet_bitmap = AnimatedBitmap.new(spritesheet_file).bitmap
|
||||
|
||||
letter_index = letters_to_index(alt_letter)
|
||||
sprite_x_position, sprite_y_position = get_sprite_position_on_spritesheet(letter_index, SPRITE_SIZE, NB_COLUMNS_BASESPRITES)
|
||||
src_rect = Rect.new(sprite_x_position, sprite_y_position, SPRITE_SIZE, SPRITE_SIZE)
|
||||
|
||||
sprite_bitmap = Bitmap.new(SPRITE_SIZE, SPRITE_SIZE)
|
||||
sprite_bitmap.blt(0, 0, spritesheet_bitmap, src_rect)
|
||||
spritesheet_bitmap.dispose # Dispose since not needed
|
||||
|
||||
return sprite_bitmap
|
||||
end
|
||||
|
||||
def letters_to_index(letters)
|
||||
letters = letters.downcase # Ensure input is case-insensitive
|
||||
index = 0
|
||||
letters.each_char do |char|
|
||||
index = index * 26 + (char.ord - 'a'.ord + 1)
|
||||
end
|
||||
#echoln "index: #{index}"
|
||||
return index
|
||||
end
|
||||
|
||||
def load_sprite_directly(head_id, body_id, alt_letter = "")
|
||||
load_sprite(PIFSprite.new(:CUSTOM, head_id, body_id, alt_letter))
|
||||
end
|
||||
|
||||
def getSpritesheetPath(pif_sprite)
|
||||
dex_number = getDexNumberForSpecies(pif_sprite.head_id)
|
||||
return "#{SPRITESHEET_FOLDER_PATH}#{dex_number}.png"
|
||||
end
|
||||
|
||||
def should_update_spritesheet?(pif_sprite)
|
||||
return false if !$updated_spritesheets
|
||||
return false if !downloadAllowed?()
|
||||
return false if requestRateExceeded?(Settings::CUSTOMSPRITES_RATE_LOG_FILE,Settings::CUSTOMSPRITES_ENTRIES_RATE_TIME_WINDOW,Settings::CUSTOMSPRITES_RATE_MAX_NB_REQUESTS,false)
|
||||
spritesheet_file = getSpritesheetPath(pif_sprite)
|
||||
return true if !pbResolveBitmap(spritesheet_file)
|
||||
|
||||
return !$updated_spritesheets.include?(spritesheet_file)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user