mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
Alt sprite credits
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -461,6 +461,8 @@ def getDexNumFromFilename(filename)
|
||||
return (body * NB_POKEMON) + head
|
||||
end
|
||||
|
||||
|
||||
|
||||
# def getCustomSpeciesList()
|
||||
# filesList = Dir["./Graphics/CustomBattlers/*"]
|
||||
# maxDexNumber = (NB_POKEMON * NB_POKEMON) + NB_POKEMON
|
||||
|
||||
@@ -689,7 +689,9 @@ class PokemonFusionScene
|
||||
oldspeciesname = GameData::Species.get(@pokemon1.species).real_name
|
||||
|
||||
overlay = BitmapSprite.new(Graphics.width, Graphics.height, @viewport).bitmap
|
||||
drawSpriteCredits(@sprites["rsprite2"].getBitmap.filename, overlay)
|
||||
|
||||
sprite_bitmap = @sprites["rsprite2"].getBitmap
|
||||
drawSpriteCredits(sprite_bitmap.filename,sprite_bitmap.path, overlay)
|
||||
Kernel.pbMessageDisplay(@sprites["msgwindow"],
|
||||
_INTL("\\se[]Congratulations! Your Pokémon were fused into {2}!\\wt[80]", @pokemon1.name, newspeciesname))
|
||||
|
||||
@@ -767,10 +769,12 @@ class PokemonFusionScene
|
||||
end
|
||||
end
|
||||
|
||||
def drawSpriteCredits(filename,overlay)
|
||||
def drawSpriteCredits(filename,path,overlay)
|
||||
return if path.start_with?(Settings::BATTLERS_FOLDER)
|
||||
x= Graphics.width/2
|
||||
y=240
|
||||
spritename = File.basename(filename,'.*')
|
||||
|
||||
discord_name = getSpriteCredits(spritename)
|
||||
return if !discord_name
|
||||
|
||||
|
||||
@@ -200,7 +200,17 @@ def get_unfused_sprite_path(dex_number)
|
||||
return lightmode_path
|
||||
end
|
||||
|
||||
def alt_sprites_substitutions_available
|
||||
return $PokemonGlobal && $PokemonGlobal.alt_sprite_substitutions
|
||||
end
|
||||
|
||||
def get_fusion_sprite_path(head_id,body_id)
|
||||
#Swap path if alt is selected for this pokemon
|
||||
dex_num = getSpeciesIdForFusion(head_id,body_id)
|
||||
if alt_sprites_substitutions_available && $PokemonGlobal.alt_sprite_substitutions.keys.include?(dex_num)
|
||||
return $PokemonGlobal.alt_sprite_substitutions[dex_num]
|
||||
end
|
||||
|
||||
#Try local custom sprite
|
||||
filename = sprintf("%s.%s.png", head_id, body_id)
|
||||
local_custom_path = Settings::CUSTOM_BATTLERS_FOLDER_INDEXED + head_id.to_s + "/" +filename
|
||||
|
||||
@@ -113,6 +113,8 @@ def getDexNumberForSpecies(species)
|
||||
return dexNum
|
||||
end
|
||||
|
||||
|
||||
|
||||
def getPokemon(dexNum)
|
||||
return GameData::Species.get(dexNum)
|
||||
end
|
||||
@@ -121,6 +123,11 @@ def getSpecies(dexnum)
|
||||
return getPokemon(dexnum)
|
||||
end
|
||||
|
||||
def getSpeciesIdForFusion(head_id, body_id)
|
||||
return (body_id) * Settings::NB_POKEMON + head_id
|
||||
end
|
||||
|
||||
|
||||
#shortcut for using in game events because of script characters limit
|
||||
def dexNum(species)
|
||||
return getDexNumberForSpecies(species)
|
||||
@@ -407,7 +414,9 @@ def customSpriteExists(species)
|
||||
return download_custom_sprite(head, body) != nil
|
||||
end
|
||||
|
||||
|
||||
def checkIfCustomSpriteExistsByPath(path)
|
||||
return true if pbResolveBitmap(path) != nil
|
||||
end
|
||||
|
||||
|
||||
def customSpriteExistsBodyHead(body, head)
|
||||
|
||||
@@ -396,6 +396,7 @@ class PokemonLoadScreen
|
||||
@scene.pbEndScene
|
||||
Game.load(@save_data)
|
||||
$game_switches[SWITCH_V5_1] = true
|
||||
$PokemonGlobal.alt_sprite_substitutions = {} if !$PokemonGlobal.alt_sprite_substitutions
|
||||
return
|
||||
when cmd_new_game
|
||||
@scene.pbEndScene
|
||||
|
||||
@@ -2,11 +2,11 @@ class PokemonPokedexInfo_Scene
|
||||
#todo add indicator to show which one is the main sprite -
|
||||
# also maybe add an indicator in main list for when a sprite has available alts
|
||||
|
||||
Y_POSITION_SMALL = 40#90
|
||||
Y_POSITION_SMALL = 40 #90
|
||||
Y_POSITION_BIG = 60
|
||||
X_POSITION_PREVIOUS = -30#20
|
||||
X_POSITION_PREVIOUS = -30 #20
|
||||
X_POSITION_SELECTED = 105
|
||||
X_POSITION_NEXT = 340#380
|
||||
X_POSITION_NEXT = 340 #380
|
||||
|
||||
Y_POSITION_BG_SMALL = 70
|
||||
Y_POSITION_BG_BIG = 93
|
||||
@@ -66,15 +66,15 @@ class PokemonPokedexInfo_Scene
|
||||
@sprites["previousSprite"].x = X_POSITION_PREVIOUS
|
||||
@sprites["previousSprite"].y = Y_POSITION_SMALL
|
||||
@sprites["previousSprite"].visible = false
|
||||
@sprites["previousSprite"].zoom_x = Settings::FRONTSPRITE_SCALE#/2
|
||||
@sprites["previousSprite"].zoom_y = Settings::FRONTSPRITE_SCALE#/2
|
||||
@sprites["previousSprite"].zoom_x = Settings::FRONTSPRITE_SCALE #/2
|
||||
@sprites["previousSprite"].zoom_y = Settings::FRONTSPRITE_SCALE #/2
|
||||
|
||||
@sprites["nextSprite"] = IconSprite.new(0, 0, @viewport)
|
||||
@sprites["nextSprite"].x = X_POSITION_NEXT
|
||||
@sprites["nextSprite"].y = Y_POSITION_SMALL
|
||||
@sprites["nextSprite"].visible = false
|
||||
@sprites["nextSprite"].zoom_x = Settings::FRONTSPRITE_SCALE#/2
|
||||
@sprites["nextSprite"].zoom_y = Settings::FRONTSPRITE_SCALE#/2
|
||||
@sprites["nextSprite"].zoom_x = Settings::FRONTSPRITE_SCALE #/2
|
||||
@sprites["nextSprite"].zoom_y = Settings::FRONTSPRITE_SCALE #/2
|
||||
|
||||
@sprites["selectedSprite"].z = 9999999
|
||||
@sprites["previousSprite"].z = 9999999
|
||||
@@ -94,15 +94,15 @@ class PokemonPokedexInfo_Scene
|
||||
|
||||
end
|
||||
|
||||
|
||||
def pbGetAvailableForms
|
||||
body_id = getBodyID(@species)
|
||||
head_id = getHeadID(@species,body_id)
|
||||
download_custom_sprite(head_id,body_id)
|
||||
download_autogen_sprite(head_id,body_id)
|
||||
download_alt_sprites(head_id,body_id)
|
||||
head_id = getHeadID(@species, body_id)
|
||||
download_custom_sprite(head_id, body_id)
|
||||
download_autogen_sprite(head_id, body_id)
|
||||
download_alt_sprites(head_id, body_id)
|
||||
return PokedexUtils.new.pbGetAvailableAlts(@species)
|
||||
end
|
||||
|
||||
def hide_all_selected_windows
|
||||
@sprites["bgSelected_previous"].visible = false if @sprites["bgSelected_previous"]
|
||||
@sprites["bgSelected_center"].visible = false if @sprites["bgSelected_center"]
|
||||
@@ -135,20 +135,29 @@ class PokemonPokedexInfo_Scene
|
||||
@sprites["previousSprite"].setBitmap(@available[previousIndex]) if previousIndex != nextIndex
|
||||
@sprites["selectedSprite"].setBitmap(@available[@selected_index])
|
||||
@sprites["nextSprite"].setBitmap(@available[nextIndex])
|
||||
showSpriteCredits(@sprites["selectedSprite"].getBitmap.filename)
|
||||
|
||||
selected_bitmap = @sprites["selectedSprite"].getBitmap
|
||||
is_generated = !selected_bitmap.path.include?(Settings::CUSTOM_BATTLERS_FOLDER_INDEXED)
|
||||
showSpriteCredits(selected_bitmap.filename,is_generated)
|
||||
update_selected
|
||||
end
|
||||
|
||||
def showSpriteCredits(filename)
|
||||
def showSpriteCredits(filename,generated_sprite=false)
|
||||
@creditsOverlay.dispose
|
||||
|
||||
x= Graphics.width/2 -60
|
||||
y=Graphics.height - 60
|
||||
spritename = File.basename(filename,'.*')
|
||||
discord_name = getSpriteCredits(spritename)
|
||||
return if !discord_name
|
||||
x = Graphics.width / 2 - 75
|
||||
y = Graphics.height - 60
|
||||
spritename = File.basename(filename, '.*')
|
||||
|
||||
author_name = File.basename(discord_name,'#*')
|
||||
if !generated_sprite
|
||||
discord_name = getSpriteCredits(spritename)
|
||||
discord_name = "Unknown artist" if !discord_name
|
||||
else
|
||||
#todo give credits to Japeal - need to differenciate unfused sprites
|
||||
discord_name = ""#"Japeal\n(Generated)"
|
||||
end
|
||||
|
||||
author_name = File.basename(discord_name, '#*')
|
||||
|
||||
label_base_color = Color.new(248, 248, 248)
|
||||
label_shadow_color = Color.new(104, 104, 104)
|
||||
@@ -157,7 +166,6 @@ class PokemonPokedexInfo_Scene
|
||||
pbDrawTextPositions(@creditsOverlay, textpos)
|
||||
end
|
||||
|
||||
|
||||
def pbChooseForm
|
||||
loop do
|
||||
@sprites["uparrow"].visible = true
|
||||
@@ -194,17 +202,38 @@ class PokemonPokedexInfo_Scene
|
||||
@sprites["downarrow"].visible = false
|
||||
end
|
||||
|
||||
# def is_main_sprite(index = nil)
|
||||
# return false if !@available
|
||||
# if index == nil
|
||||
# index = @selected_index
|
||||
# end
|
||||
# return true if @available.size <= 1
|
||||
# if @speciesData.always_use_generated
|
||||
# selected_sprite = @available[index]
|
||||
# return selected_sprite.start_with?(Settings::BATTLERS_FOLDER)
|
||||
# end
|
||||
# return index == 0
|
||||
# end
|
||||
|
||||
def is_main_sprite(index = nil)
|
||||
return false if !@available
|
||||
if index == nil
|
||||
if !index
|
||||
index = @selected_index
|
||||
end
|
||||
return true if @available.size <= 1
|
||||
if @speciesData.always_use_generated
|
||||
selected_sprite = @available[index]
|
||||
return selected_sprite.start_with?(Settings::BATTLERS_FOLDER)
|
||||
selected_sprite = @available[index]
|
||||
species_id = getDexNumberForSpecies(@species)
|
||||
if $PokemonGlobal.alt_sprite_substitutions[species_id]
|
||||
return $PokemonGlobal.alt_sprite_substitutions[species_id] == selected_sprite
|
||||
end
|
||||
return index == 0
|
||||
is_generated = !selected_sprite.include?(Settings::CUSTOM_BATTLERS_FOLDER_INDEXED)
|
||||
if is_generated
|
||||
return !checkIfCustomSpriteExistsByPath(selected_sprite)
|
||||
end
|
||||
return !sprite_is_alt(selected_sprite)
|
||||
end
|
||||
|
||||
def sprite_is_alt(sprite_path)
|
||||
spritename = File.basename(sprite_path, '.*')
|
||||
return spritename.match?(/[a-zA-Z]/)
|
||||
end
|
||||
|
||||
def select_sprite
|
||||
@@ -220,59 +249,59 @@ class PokemonPokedexInfo_Scene
|
||||
end
|
||||
|
||||
def swap_main_sprite
|
||||
begin
|
||||
old_main_sprite = @available[0]
|
||||
new_main_sprite = @available[@selected_index]
|
||||
|
||||
if main_sprite_is_non_custom()
|
||||
@speciesData.set_always_use_generated_sprite(false)
|
||||
return
|
||||
# new_name_without_ext = File.basename(old_main_sprite, ".png")
|
||||
# new_name_without_letter=new_name_without_ext.chop
|
||||
# File.rename(new_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_letter + ".png")
|
||||
end
|
||||
|
||||
if new_main_sprite.start_with?(Settings::BATTLERS_FOLDER)
|
||||
@speciesData.set_always_use_generated_sprite(true)
|
||||
return
|
||||
# new_name_without_ext = File.basename(old_main_sprite, ".png")
|
||||
# File.rename(old_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_ext+"x" + ".png")x
|
||||
# return
|
||||
end
|
||||
File.rename(new_main_sprite, new_main_sprite + "temp")
|
||||
File.rename(old_main_sprite, new_main_sprite)
|
||||
File.rename(new_main_sprite + "temp", old_main_sprite)
|
||||
rescue
|
||||
pbMessage("There was an error while swapping the sprites. Please save and restart the game as soon as possible.")
|
||||
end
|
||||
end
|
||||
|
||||
def main_sprite_is_non_custom()
|
||||
speciesData = getSpecies(@species)
|
||||
return speciesData.always_use_generated || @available.size <= 1
|
||||
#dégueu, je sais - si le 1er element de la liste finit par une lettre (le 1er element devrait etre considéré comme le main), ça veut dire que le main est non-custom
|
||||
# speciesData.set_always_use_generated_sprite(true)
|
||||
# return POSSIBLE_ALTS.include?(File.basename(old_main_sprite, ".png")[-1])
|
||||
old_main_sprite = @available[0]
|
||||
new_main_sprite = @available[@selected_index]
|
||||
species_number = dexNum(@species)
|
||||
set_alt_sprite_substitution(species_number, new_main_sprite)
|
||||
end
|
||||
|
||||
|
||||
|
||||
# def swap_main_sprite
|
||||
# begin
|
||||
# old_main_sprite = @available[0]
|
||||
# new_main_sprite = @available[@selected_index]
|
||||
#
|
||||
# if main_sprite_is_non_custom()
|
||||
# @speciesData.set_always_use_generated_sprite(false)
|
||||
# return
|
||||
# # new_name_without_ext = File.basename(old_main_sprite, ".png")
|
||||
# # new_name_without_letter=new_name_without_ext.chop
|
||||
# # File.rename(new_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_letter + ".png")
|
||||
# end
|
||||
#
|
||||
# if new_main_sprite.start_with?(Settings::BATTLERS_FOLDER)
|
||||
# @speciesData.set_always_use_generated_sprite(true)
|
||||
# return
|
||||
# # new_name_without_ext = File.basename(old_main_sprite, ".png")
|
||||
# # File.rename(old_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_ext+"x" + ".png")x
|
||||
# # return
|
||||
# end
|
||||
# File.rename(new_main_sprite, new_main_sprite + "temp")
|
||||
# File.rename(old_main_sprite, new_main_sprite)
|
||||
# File.rename(new_main_sprite + "temp", old_main_sprite)
|
||||
# rescue
|
||||
# pbMessage("There was an error while swapping the sprites. Please save and restart the game as soon as possible.")
|
||||
# end
|
||||
# end
|
||||
|
||||
# def main_sprite_is_non_custom()
|
||||
# speciesData = getSpecies(@species)
|
||||
# return speciesData.always_use_generated || @available.size <= 1
|
||||
# end
|
||||
end
|
||||
|
||||
|
||||
class PokemonGlobalMetadata
|
||||
attr_accessor :alt_sprite_substitutions
|
||||
|
||||
def initialize
|
||||
@alt_sprite_substitutions = {}
|
||||
end
|
||||
end
|
||||
|
||||
def set_alt_sprite_substitution(original_sprite_name,selected_alt)
|
||||
if ! $PokemonGlobal.alt_sprite_substitutions
|
||||
def set_alt_sprite_substitution(original_sprite_name, selected_alt)
|
||||
if !$PokemonGlobal.alt_sprite_substitutions
|
||||
$PokemonGlobal.alt_sprite_substitutions = {}
|
||||
end
|
||||
|
||||
$PokemonGlobal.alt_sprite_substitutions[original_sprite_name] = selected_alt
|
||||
p $PokemonGlobal.alt_sprite_substitutions
|
||||
end
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user