mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
fixes reset cache option menu crash
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#object representing a sprite which saves its position in the tileset
|
||||
# object representing a sprite which saves its position in the tileset
|
||||
class PIFSprite
|
||||
attr_accessor :type
|
||||
attr_accessor :head_id
|
||||
@@ -6,7 +6,7 @@ class PIFSprite
|
||||
attr_accessor :alt_letter
|
||||
attr_accessor :local_path
|
||||
|
||||
#types:
|
||||
# types:
|
||||
# :AUTOGEN, :CUSTOM, :BASE
|
||||
def initialize(type, head_id, body_id, alt_letter = "")
|
||||
@type = type
|
||||
@@ -24,47 +24,69 @@ class PIFSprite
|
||||
echoln "Local path: #{@local_path}"
|
||||
end
|
||||
|
||||
def equals(other_pif_sprite)
|
||||
return @type == other_pif_sprite.type &&
|
||||
@head_id == other_pif_sprite.head_id &&
|
||||
@body_id == other_pif_sprite.body_id &&
|
||||
@alt_letter == other_pif_sprite.alt_letter &&
|
||||
@local_path == other_pif_sprite.local_path
|
||||
def exists()
|
||||
filename = get_spritesheet_path()
|
||||
echoln filename
|
||||
return File.file?(filename)
|
||||
end
|
||||
|
||||
#little hack for old methods that expect a filename for a sprite
|
||||
def to_filename()
|
||||
def get_spritesheet_path()
|
||||
case @type
|
||||
when :CUSTOM
|
||||
return "#{@head_id}.#{@body_id}#{@alt_letter}.png"
|
||||
when :AUTOGEN
|
||||
return "#{@head_id}.#{@body_id}.png"
|
||||
when :BASE
|
||||
return "#{@head_id}#{@alt_letter}.png"
|
||||
path = "#{BaseSpriteExtracter::SPRITESHEET_FOLDER_PATH}#{@head_id}.png"
|
||||
when :CUSTOM
|
||||
path = "#{CustomSpriteExtracter::SPRITESHEET_FOLDER_PATH}#{@head_id}/#{@head_id}#{@alt_letter}.png"
|
||||
when :AUTOGEN
|
||||
path = "#{AutogenExtracter::SPRITESHEET_FOLDER_PATH}#{@head_id}.png"
|
||||
else
|
||||
return nil
|
||||
end
|
||||
echoln path
|
||||
return path
|
||||
end
|
||||
|
||||
def setup_from_spritename(spritename, type)
|
||||
@type = type
|
||||
cleaned_name = spritename.gsub(".png", "")
|
||||
if cleaned_name =~ /(\d+)\.(\d+)([a-zA-Z]*)/
|
||||
head_id = $1
|
||||
body_id = $2
|
||||
alt_letter = $3
|
||||
end
|
||||
@head_id = head_id
|
||||
@body_id = body_id
|
||||
@alt_letter = alt_letter
|
||||
end
|
||||
|
||||
def self.from_spritename(spritename, type)
|
||||
obj = allocate
|
||||
obj.send(:setup_from_spritename, spritename, type)
|
||||
obj
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def equals(other_pif_sprite)
|
||||
return @type == other_pif_sprite.type &&
|
||||
@head_id == other_pif_sprite.head_id &&
|
||||
@body_id == other_pif_sprite.body_id &&
|
||||
@alt_letter == other_pif_sprite.alt_letter &&
|
||||
@local_path == other_pif_sprite.local_path
|
||||
end
|
||||
|
||||
# little hack for old methods that expect a filename for a sprite
|
||||
def to_filename()
|
||||
case @type
|
||||
when :CUSTOM
|
||||
return "#{@head_id}.#{@body_id}#{@alt_letter}.png"
|
||||
when :AUTOGEN
|
||||
return "#{@head_id}.#{@body_id}.png"
|
||||
when :BASE
|
||||
return "#{@head_id}#{@alt_letter}.png"
|
||||
end
|
||||
end
|
||||
|
||||
def setup_from_spritename(spritename, type)
|
||||
@type = type
|
||||
cleaned_name = spritename.gsub(".png", "")
|
||||
if cleaned_name =~ /(\d+)\.(\d+)([a-zA-Z]*)/
|
||||
head_id = $1
|
||||
body_id = $2
|
||||
alt_letter = $3
|
||||
end
|
||||
@head_id = head_id
|
||||
@body_id = body_id
|
||||
@alt_letter = alt_letter
|
||||
end
|
||||
|
||||
def self.from_spritename(spritename, type)
|
||||
obj = allocate
|
||||
obj.send(:setup_from_spritename, spritename, type)
|
||||
obj
|
||||
end
|
||||
|
||||
|
||||
|
||||
def new_pif_sprite_from_dex_num(type, dexNum, alt_letter)
|
||||
body_id = getBodyID(dexNum)
|
||||
head_id = getHeadID(dexNum, body_id)
|
||||
@@ -72,7 +94,7 @@ def new_pif_sprite_from_dex_num(type, dexNum, alt_letter)
|
||||
end
|
||||
|
||||
def pif_sprite_from_spritename(spritename, autogen = false)
|
||||
spritename = spritename.split(".png")[0] #remove the extension
|
||||
spritename = spritename.split(".png")[0] # remove the extension
|
||||
if spritename =~ /^(\d+)\.(\d+)([a-zA-Z]*)$/ # Two numbers with optional letters
|
||||
type = :CUSTOM
|
||||
head_id = $1.to_i # Head (e.g., "1" in "1.2.png")
|
||||
|
||||
@@ -157,9 +157,7 @@ class PokemonPokedexInfo_Scene
|
||||
previous_index = @selected_index == 0 ? @available.size - 1 : @selected_index - 1
|
||||
next_index = @selected_index == @available.size - 1 ? 0 : @selected_index + 1
|
||||
|
||||
echoln "selected sprite:"
|
||||
get_pif_sprite(@available[@selected_index]).dump_info()
|
||||
|
||||
get_pif_sprite(@available[@selected_index])
|
||||
@sprites["bgSelected_previous"].visible = true if is_main_sprite(previous_index) && @available.size > 2
|
||||
@sprites["bgSelected_center"].visible = true if is_main_sprite(@selected_index)
|
||||
@sprites["bgSelected_next"].visible = true if is_main_sprite(next_index) && @available.size > 1
|
||||
@@ -170,6 +168,7 @@ class PokemonPokedexInfo_Scene
|
||||
if isFusion(dex_number)
|
||||
body_id = getBodyID(dex_number)
|
||||
head_id = getHeadID(dex_number, body_id)
|
||||
|
||||
#Autogen sprite
|
||||
if alt_letter == "autogen"
|
||||
pif_sprite = PIFSprite.new(:AUTOGEN, head_id, body_id)
|
||||
@@ -186,6 +185,7 @@ class PokemonPokedexInfo_Scene
|
||||
sprite_path = alt_letter.split("_", 2)[1]
|
||||
pif_sprite.local_path = sprite_path
|
||||
end
|
||||
pif_sprite.dump_info
|
||||
return pif_sprite
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user