pokeradar

This commit is contained in:
infinitefusion
2022-04-18 15:26:38 -04:00
parent 540adf4760
commit f473ab3cc2
29 changed files with 171 additions and 29 deletions

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.

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.

Binary file not shown.

Binary file not shown.

View File

@@ -6,7 +6,7 @@
module Settings
# The version of your game. It has to adhere to the MAJOR.MINOR.PATCH format.
GAME_VERSION = '5.0.0'
GAME_VERSION_NUMBER = "5.0.18.1 - beta"
GAME_VERSION_NUMBER = "5.0.19 - beta"
POKERADAR_LIGHT_ANIMATION_RED_ID = 17
POKERADAR_LIGHT_ANIMATION_GREEN_ID = 18

View File

@@ -353,7 +353,6 @@ end
#===============================================================================
class IconSprite < SpriteWrapper
attr_reader :name
def initialize(*args)
if args.length == 0
super(nil)
@@ -395,6 +394,10 @@ class IconSprite < SpriteWrapper
self.src_rect = oldrc
end
def setColor(r = 0, g = 0, b = 0, a = 255)
@_iconbitmap.pbSetColor(r,g,b,a)
end
# Sets the icon's filename.
def setBitmap(file, hue = 0)
oldrc = self.src_rect
@@ -427,6 +430,8 @@ class IconSprite < SpriteWrapper
self.src_rect = oldrc
end
end
end
#===============================================================================

View File

@@ -125,6 +125,10 @@ module GameData
return self.icon_filename(pkmn.species, pkmn.form, pkmn.gender, pkmn.shiny?, pkmn.shadowPokemon?, pkmn.egg?)
end
def self.icon_filename_from_species(species)
return self.icon_filename(species, 0, 0, false, false, false)
end
def self.egg_icon_bitmap(species, form)
filename = self.egg_icon_filename(species, form)
return (filename) ? AnimatedBitmap.new(filename).deanimate : nil

View File

@@ -0,0 +1,98 @@
class PokeRadar_UI
attr_reader :sprites
attr_reader :disposed
ICON_START_X = 50
ICON_START_Y = 5
ICON_MARGIN_X = 50
ICON_MARGIN_Y = 50
ICON_LINE_END = 450
def initialize(seenPokemon = [], unseenPokemon = [], rarePokemon = [])
@seen_pokemon = seenPokemon
@unseen_pokemon = unseenPokemon
@rare_pokemon = rarePokemon
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport.z = 99
@sprites = {}
@sprites["background"] = IconSprite.new(0, 0, @viewport)
@sprites["background"].setBitmap("Graphics/Pictures/Pokeradar/banner")
@sprites["background"].zoom_x = 2
@sprites["background"].zoom_y = 2
@sprites["background"].visible = true
@current_x = 50
@current_y = 0
displaySeen()
displayUnseen()
displayRare()
end
def dispose
pbDisposeSpriteHash(@sprites)
@viewport.dispose if @viewport != nil
end
#display rare with a (circle?) under the sprite to highlight it
# blacken if not seen
def displayRare()
@rare_pokemon.each { |pokemon|
blackened = !$Trainer.seen?(pokemon)
addPokemonIcon(pokemon,blackened,true)
}
end
def displaySeen()
@seen_pokemon.each { |pokemonId|
addPokemonIcon(pokemonId, false )
}
end
def displayUnseen()
@unseen_pokemon.each { |pokemonId|
addPokemonIcon(pokemonId, true)
}
end
def addPokemonIcon(pokemonId, blackened = false, rare=false)
iconId = _INTL("icon{1}", pokemonId)
pokemonBitmap = pbCheckPokemonIconFiles(getDexNumberForSpecies(pokemonId))
if rare
outlineSprite = IconSprite.new(@current_x, @current_y)
outlineSprite.setBitmap("Graphics/Pictures/Pokeradar/highlight")
outlineSprite.visible=true
@sprites[iconId + "_outline"] = outlineSprite
end
iconSprite = IconSprite.new(@current_x, @current_y)
iconSprite.setBitmap(pokemonBitmap)
@sprites[iconId] = iconSprite
@sprites[iconId].src_rect.width /= 2
if blackened
@sprites[iconId].setColor(0,0,0,200)
end
@sprites[iconId].visible = true
@sprites[iconId].x = @current_x
@sprites[iconId].y = @current_y
@sprites[iconId].z = 100
@current_x += ICON_MARGIN_X
if @current_x >= ICON_LINE_END
@current_x = ICON_START_X
@current_y +=ICON_MARGIN_Y
@sprites["background"].zoom_y += 1
end
end
end

View File

@@ -4,6 +4,8 @@ end
class PokemonTemp
attr_accessor :pokeradar # [species, level, chain count, grasses (x,y,ring,rarity)]
attr_accessor :pokeradar_ui # [species, level, chain count, grasses (x,y,ring,rarity)]
end
################################################################################
@@ -22,10 +24,10 @@ def pbCanUsePokeRadar?
return false
end
# Can't use Radar while cycling
if $PokemonGlobal.bicycle
pbMessage(_INTL("Can't use that while on a bicycle."))
return false
end
# if $PokemonGlobal.bicycle
# pbMessage(_INTL("Can't use that while on a bicycle."))
# return false
# end
# Debug
return true if $DEBUG && Input.press?(Input::CTRL)
# Can't use Radar if it isn't fully charged
@@ -41,28 +43,43 @@ def pbUsePokeRadar
return false if !pbCanUsePokeRadar?
$PokemonTemp.pokeradar = [0, 0, 0, []] if !$PokemonTemp.pokeradar
$PokemonGlobal.pokeradarBattery = Settings::POKERADAR_BATTERY_STEPS
rareAllowed = canEncounterRarePokemon()
unseenPokemon = listPokemonInCurrentRoute($PokemonEncounters.encounter_type, false, true)
seenPokemon = listPokemonInCurrentRoute($PokemonEncounters.encounter_type, true, false)
rareAllowed = canEncounterRarePokemon(unseenPokemon)
displayPokeradarBanner(seenPokemon, unseenPokemon, rareAllowed)
playPokeradarLightAnimation(rareAllowed)
pbWait(20)
pbPokeRadarHighlightGrass
return true
end
#can only encounter rare if have seen every encounterable land pokemon on the route
def canEncounterRarePokemon()
processed = []
for encounter in $PokemonEncounters.listPossibleEncounters($PokemonEncounters.pbEncounterType)
species = encounter[0]
if !processed.include?(species)
if $Trainer.seen[species]
processed << species
else
return false
def listPokeradarRareEncounters()
map = $game_map.map_id
array = []
Settings::POKE_RADAR_ENCOUNTERS.each do |enc|
if enc[0] == map
species = enc[2]
array.push(species)
end
end
return array
end
return true
end
# #can only encounter rare if have seen every encounterable land pokemon on the route
# def canEncounterRarePokemon()
# processed = []
# for encounter in $PokemonEncounters.listPossibleEncounters($PokemonEncounters.pbEncounterType)
# species = encounter[0]
# if !processed.include?(species)
# if $Trainer.seen[species]
# processed << species
# else
# return false
# end
# end
# end
# return true
# end
def playPokeradarLightAnimation(rareAllowed = false)
if rareAllowed
@@ -72,17 +89,29 @@ def playPokeradarLightAnimation(rareAllowed = false)
end
end
def displayPokeradarBanner(seenPokemon = [], unseenPokemon = [], includeRare = false)
return if $PokemonTemp.pokeradar_ui !=nil
rarePokemon = includeRare ? listPokeradarRareEncounters() : []
$PokemonTemp.pokeradar_ui = PokeRadar_UI.new(seenPokemon, unseenPokemon, rarePokemon)
end
def pbPokeRadarCancel
if $PokemonTemp.pokeradar_ui != nil
$PokemonTemp.pokeradar_ui.dispose
$PokemonTemp.pokeradar_ui=nil
end
$PokemonTemp.pokeradar = nil
end
def listUnseenPokemonInCurrentRoute(encounterType)
def listPokemonInCurrentRoute(encounterType, onlySeen = false, onlyUnseen = false)
processed = []
seen = []
unseen = []
for encounter in $PokemonEncounters.listPossibleEncounters(encounterType)
species = encounter[1]
if !processed.include?(species)
if $Trainer.seen?(species)
seen << species
processed << species
else
unseen << species
@@ -90,15 +119,17 @@ def listUnseenPokemonInCurrentRoute(encounterType)
end
end
end
if onlySeen
return seen
elsif onlyUnseen
return unseen
else
return processed
end
end
#can only encounter rare if have seen every encounterable land pokemon on the route
def canEncounterRarePokemon()
return true
#pokedex register seen doesn't work correctly so temporarily removed
unseenPokemon = listUnseenPokemonInCurrentRoute($PokemonEncounters.encounter_type)
def canEncounterRarePokemon(unseenPokemon)
return unseenPokemon.length == 0
end
@@ -201,7 +232,7 @@ end
################################################################################
EncounterModifier.register(proc { |encounter|
if GameData::EncounterType.get($PokemonTemp.encounterType).type != :land ||
$PokemonGlobal.bicycle || $PokemonGlobal.partner
$PokemonGlobal.partner # $PokemonGlobal.bicycle || $PokemonGlobal.partner
pbPokeRadarCancel
next encounter
end

View File

@@ -130,6 +130,10 @@ class PokemonIconSprite < SpriteWrapper
super(@logical_y + @adjusted_y)
end
def animBitmap=(value)
@animBitmap = value
end
def pokemon=(value)
@pokemon = value
@animBitmap.dispose if @animBitmap

View File

@@ -284,7 +284,7 @@ class PokemonLoadScreen
cmd_debug = -1
cmd_quit = -1
show_continue = !@save_data.empty?
new_game_plus = @save_data[:player].new_game_plus_unlocked
new_game_plus = show_continue && @save_data[:player].new_game_plus_unlocked
if show_continue
commands[cmd_continue = commands.length] = _INTL('Continue')
if @save_data[:player].mystery_gift_unlocked

View File

@@ -301,7 +301,7 @@ end
def pbUseKeyItem
moves = [:CUT, :DEFOG, :DIG, :DIVE, :FLASH, :FLY, :HEADBUTT, :ROCKCLIMB,
:ROCKSMASH, :SECRETPOWER, :STRENGTH, :SURF, :SWEETSCENT, :TELEPORT,
:WATERFALL, :WHIRLPOOL]
:WATERFALL, :WHIRLPOOL, :BOUNCE]
real_moves = []
moves.each do |move|
$Trainer.pokemon_party.each_with_index do |pkmn, i|

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.