Files
infinitefusion-e18/Data/Scripts/053_PIF_Hoenn/PokeNav/Contacts/ContactsAppScreen.rb
T
2026-07-10 15:42:06 -04:00

100 lines
3.1 KiB
Ruby

#===============================================================================
#
#===============================================================================
class ContactsAppScreen
def initialize(scene)
@scene = scene
end
UNLISTABLE_TRAINER_TYPES = [:TEAM_AQUA_GRUNT_M, :TEAM_AQUA_GRUNT_F,
:TEAM_MAGMA_GRUNT_M, :TEAM_MAGMA_GRUNT_F,
:TEAM_MAGMAQUA_GRUNT_M, :TEAM_MAGMAQUA_GRUNT_F,
:TEAM_AQUA_EXEC_M, :TEAM_AQUA_EXEC_F,
:TEAM_MAGMA_EXEC_M, :TEAM_MAGMA_EXEC_F,
:TEAM_AQUA_BOSS, :TEAM_MAGMA_BOSS,
:ADVENTURER_KANTO, :ADVENTURER_JOHTO,
:ADVENTURER_SINNOH, :ADVENTURER_UNOVA,
:ADVENTURER_KALOS, :ADVENTURER_ALOLA,
]
def pbStartScreen(main_menu_scene, screen)
@main_menu_scene = main_menu_scene
@scene.pbStartScene(self)
@scene.pbScene
@scene.pbEndScene
@screen = screen
end
def list_contacts
contacts_list_by_location = {}
$PokemonGlobal.battledTrainers = {} unless $PokemonGlobal.battledTrainers
$PokemonGlobal.battledTrainers.each do |id, trainer|
next unless can_be_listed(trainer)
if trainer.favorite
contacts_list_by_location[_INTL("Favorites")] ||= []
contacts_list_by_location[_INTL("Favorites")] << trainer
else
location = trainer.location
contacts_list_by_location[location] ||= []
contacts_list_by_location[location] << trainer
end
end
contacts_list_by_location.each_value do |trainer_array|
trainer_array.sort_by! { |t| t.trainerName }
end
# Move Favorites to front
favorites = contacts_list_by_location.delete(_INTL("Favorites"))
if favorites
contacts_list_by_location = { _INTL("Favorites") => favorites }.merge(contacts_list_by_location)
end
return contacts_list_by_location
end
def can_be_listed(trainer)
trainerType = trainer.trainerType
return false if UNLISTABLE_TRAINER_TYPES.include?(trainerType)
return true
end
def view_trainer_page(trainer_id, trainers_list)
trainer= getRebattledTrainerFromKey(trainer_id)
if trainer
pbFadeOutIn {
scene = ContactsAppInfoPageScene.new
screen = ContactsAppInfoPageScreen.new
screen.pbStartScreen(scene, trainer, trainers_list)
}
else
pbSEPlay("buzzer", 80)
pbWait(4)
end
end
def view_trainer_team(trainer_id)
trainer= getRebattledTrainerFromKey(trainer_id)
if trainer
team = trainer.currentTeam
pbFadeOutIn {
scene = PokemonSummary_Scene.new
screen = PokemonSummaryScreen.new(scene)
screen.pbStartScreen(team,0, false)
}
else
pbSEPlay("buzzer", 80)
pbWait(4)
end
end
def pbSummary(list, index)
visibleSprites = pbFadeOutAndHide(@sprites) { pbUpdate }
scene = PokemonSummary_Scene.new
screen = PokemonSummaryScreen.new(scene)
@sprites["list"].index = screen.pbStartScreen(list, index ,false)
pbFadeInAndShow(@sprites, visibleSprites) { pbUpdate }
end
end