Refactoring and Bugfixes (#127)

* Replacing nil + compact! with delete, delete_at and delete_if wherever possible
* Fixed Terrain Tag editor not setting the correct terrain
* Fixed Text Cursor in Animation Editor not going right
This commit is contained in:
Golisopod-User
2021-08-23 02:55:29 +05:30
committed by GitHub
parent e57e1f4a1e
commit ecc5a040cd
21 changed files with 40 additions and 171 deletions

View File

@@ -387,25 +387,15 @@ class PokemonMapFactory
def updateMapsInternal def updateMapsInternal
return if $game_player.moving? return if $game_player.moving?
if !MapFactoryHelper.hasConnections?($game_map.map_id) if !MapFactoryHelper.hasConnections?($game_map.map_id)
return if @maps.length==1 return if @maps.length == 1
for i in 0...@maps.length @maps.delete_if { |map| $game_map.map_id != map.map_id }
@maps[i] = nil if $game_map.map_id!=@maps[i].map_id
end
@maps.compact!
@mapIndex = getMapIndex($game_map.map_id) @mapIndex = getMapIndex($game_map.map_id)
return return
end end
setMapsInRange setMapsInRange
deleted = false deleted = false
for i in 0...@maps.length deleted = @maps.delete_if { |map| !MapFactoryHelper.mapInRange?(map) }
next if MapFactoryHelper.mapInRange?(@maps[i]) @mapIndex = getMapIndex($game_map.map_id) if deleted
@maps[i] = nil
deleted = true
end
if deleted
@maps.compact!
@mapIndex = getMapIndex($game_map.map_id)
end
end end
end end

View File

@@ -78,25 +78,3 @@ class Game_Player < Game_Character
end end
end end
end end
=begin
class Game_Character
alias update_old2 update
def update
if self.is_a?(Game_Event)
if @dependentEvents
for i in 0...@dependentEvents.length
if @dependentEvents[i][0]==$game_map.map_id &&
@dependentEvents[i][1]==self.id
self.move_speed_real = $game_player.move_speed_real
break
end
end
end
end
update_old2
end
end
=end

View File

@@ -157,11 +157,8 @@ class Sprite_Character < RPG::Sprite
self.x = @character.screen_x self.x = @character.screen_x
self.y = @character.screen_y self.y = @character.screen_y
self.z = @character.screen_z(@ch) self.z = @character.screen_z(@ch)
# self.zoom_x = Game_Map::TILE_WIDTH / 32.0
# self.zoom_y = Game_Map::TILE_HEIGHT / 32.0
self.opacity = @character.opacity self.opacity = @character.opacity
self.blend_type = @character.blend_type self.blend_type = @character.blend_type
# self.bush_depth = @character.bush_depth
if @character.animation_id != 0 if @character.animation_id != 0
animation = $data_animations[@character.animation_id] animation = $data_animations[@character.animation_id]
animation(animation, true) animation(animation, true)

View File

@@ -247,40 +247,6 @@ def getFormattedTextFast(bitmap,xDst,yDst,widthDst,heightDst,text,lineheight,
end end
position+=1 position+=1
end end
# This code looks at whether the text occupies exactly two lines when
# displayed. If it does, it balances the length of each line.
=begin
# Count total number of lines
numlines = (x==0 && y>0) ? y-1 : y
realtext = (newlineBreaks) ? text : text.gsub(/\n/," ")
if numlines==2 && !explicitBreaksOnly && !realtext[/\n/] && realtext.length>=50
# Set half to middle of text (known to contain no formatting)
half = realtext.length/2
leftSearch = 0
rightSearch = 0
# Search left for a space
i = half; while i>=0
break if realtext[i,1][/\s/]||isWaitChar(realtext[i]) # found a space
leftSearch += 1
i -= 1
end
# Search right for a space
i = half; while i<realtext.length
break if realtext[i,1][/\s/]||isWaitChar(realtext[i]) # found a space
rightSearch += 1
i += 1
end
# Move half left or right whichever is closer
trialHalf = half+((leftSearch<rightSearch) ? -leftSearch : rightSearch)
if trialHalf!=0 && trialHalf!=realtext.length
# Insert newline and re-call this function (force explicitBreaksOnly)
newText = realtext.clone
newText.insert(trialHalf,"\n")
return getFormattedTextFast(bitmap,xDst,yDst,
widthDst,heightDst,newText,lineheight,true,explicitBreaksOnly)
end
end
=end
# Eliminate spaces before newlines and pause character # Eliminate spaces before newlines and pause character
if havenl if havenl
firstspace=-1 firstspace=-1
@@ -292,11 +258,9 @@ def getFormattedTextFast(bitmap,xDst,yDst,widthDst,heightDst,text,lineheight,
for j in firstspace...i for j in firstspace...i
characters[j]=nil characters[j]=nil
end end
firstspace=-1 firstspace = -1
elsif characters[i][0][/[ \r\t]/] elsif characters[i][0][/[ \r\t]/]
if firstspace<0 firstspace = i if firstspace < 0
firstspace=i
end
else else
firstspace=-1 firstspace=-1
end end
@@ -868,14 +832,7 @@ def getFormattedText(bitmap,xDst,yDst,widthDst,heightDst,text,lineheight=32,
end end
end end
# Remove all characters with Y greater or equal to _yDst_+_heightDst_ # Remove all characters with Y greater or equal to _yDst_+_heightDst_
if heightDst>=0 characters.delete_if { |ch| ch[2] >= yDst + heightDst } if heightDst >= 0
for i in 0...characters.length
if characters[i][2]>=yDst+heightDst
characters[i]=nil
end
end
characters.compact!
end
bitmap.font=oldfont bitmap.font=oldfont
dummybitmap.dispose if dummybitmap dummybitmap.dispose if dummybitmap
return characters return characters

View File

@@ -48,12 +48,7 @@ class PokeBattle_Battle
end end
else else
items = pbGetOwnerItems(idxBattler) items = pbGetOwnerItems(idxBattler)
items.each_with_index do |thisItem,i| items.delete_at(items.index(item))
next if thisItem!=item
items[i] = nil
break
end
items.compact!
end end
end end

View File

@@ -397,7 +397,8 @@ def pbBerryPlant
berryData[3]=timenow.to_i # time planted berryData[3]=timenow.to_i # time planted
berryData[4]=0 # total waterings berryData[4]=0 # total waterings
berryData[5]=0 # number of replants berryData[5]=0 # number of replants
berryData[6]=nil; berryData[7]=nil; berryData.compact! # for compatibility berryData.delete_at(6) # for compatibility
berryData.delete_at(6) # for compatibility
$PokemonBag.pbDeleteItem(berry,1) $PokemonBag.pbDeleteItem(berry,1)
pbMessage(_INTL("{1} planted a {2} in the soft loamy soil.", pbMessage(_INTL("{1} planted a {2} in the soft loamy soil.",
$Trainer.name,GameData::Item.get(berry).name)) $Trainer.name,GameData::Item.get(berry).name))

View File

@@ -53,8 +53,7 @@ def pbDayCareDeposit(index)
$PokemonGlobal.daycare[i][0] = $Trainer.party[index] $PokemonGlobal.daycare[i][0] = $Trainer.party[index]
$PokemonGlobal.daycare[i][1] = $Trainer.party[index].level $PokemonGlobal.daycare[i][1] = $Trainer.party[index].level
$PokemonGlobal.daycare[i][0].heal $PokemonGlobal.daycare[i][0].heal
$Trainer.party[index] = nil $Trainer.party.delete_at(index)
$Trainer.party.compact!
$PokemonGlobal.daycareEgg = 0 $PokemonGlobal.daycareEgg = 0
$PokemonGlobal.daycareEggSteps = 0 $PokemonGlobal.daycareEggSteps = 0
return return

View File

@@ -178,12 +178,7 @@ class PokemonBag
def pbUnregisterItem(item) def pbUnregisterItem(item)
item = GameData::Item.get(item).id item = GameData::Item.get(item).id
registeredlist = self.registeredItems registeredlist = self.registeredItems
for i in 0...registeredlist.length registeredlist.delete_at(registeredlist.index(item))
next if registeredlist[i] != item
registeredlist[i] = nil
break
end
registeredlist.compact!
end end
def registeredIndex def registeredIndex

View File

@@ -153,7 +153,7 @@ class Pokemon
@ability = nil @ability = nil
MultipleForms.call("onSetForm", self, value, oldForm) MultipleForms.call("onSetForm", self, value, oldForm)
calc_stats calc_stats
$Trainer.pokedex.register(self) $Trainer.pokedex.register(self) if $Trainer
end end
# The same as def form=, but yields to a given block in the middle so that a # The same as def form=, but yields to a given block in the middle so that a
@@ -752,12 +752,7 @@ class Pokemon
def takeRibbon(ribbon) def takeRibbon(ribbon)
ribbon_data = GameData::Ribbon.try_get(ribbon) ribbon_data = GameData::Ribbon.try_get(ribbon)
return if !ribbon_data return if !ribbon_data
for i in 0...@ribbons.length @ribbons.delete_at(@ribbons.index(ribbon_data.id))
next if @ribbons[i] != ribbon_data.id
@ribbons[i] = nil
@ribbons.compact!
break
end
end end
# Removes all ribbons from this Pokémon. # Removes all ribbons from this Pokémon.

View File

@@ -515,8 +515,7 @@ class PokemonBoxPartySprite < SpriteWrapper
sprite = @pokemonsprites[index] sprite = @pokemonsprites[index]
if sprite if sprite
arrow.grab(sprite) arrow.grab(sprite)
@pokemonsprites[index] = nil @pokemonsprites.delete_at(index)
@pokemonsprites.compact!
refresh refresh
end end
end end
@@ -539,10 +538,7 @@ class PokemonBoxPartySprite < SpriteWrapper
xvalues.push(18 + 72 * (i % 2)) xvalues.push(18 + 72 * (i % 2))
yvalues.push(2 + 16 * (i % 2) + 64 * (i / 2)) yvalues.push(2 + 16 * (i % 2) + 64 * (i / 2))
end end
for j in 0...Settings::MAX_PARTY_SIZE @pokemonsprites.delete_if { |sprite| sprite && sprite.disposed? }
@pokemonsprites[j] = nil if @pokemonsprites[j] && @pokemonsprites[j].disposed?
end
@pokemonsprites.compact!
for j in 0...Settings::MAX_PARTY_SIZE for j in 0...Settings::MAX_PARTY_SIZE
sprite = @pokemonsprites[j] sprite = @pokemonsprites[j]
if sprite && !sprite.disposed? if sprite && !sprite.disposed?

View File

@@ -588,12 +588,7 @@ class PokemonMartScreen
pbDisplayPaused(_INTL("You have no more room in the Bag.")) pbDisplayPaused(_INTL("You have no more room in the Bag."))
else else
@adapter.setMoney(@adapter.getMoney-price) @adapter.setMoney(@adapter.getMoney-price)
for i in 0...@stock.length @stock.delete_if { |item| GameData::Item.get(item).is_important? && $PokemonBag.pbHasItem?(item) }
if GameData::Item.get(@stock[i]).is_important? && $PokemonBag.pbHasItem?(@stock[i])
@stock[i]=nil
end
end
@stock.compact!
pbDisplayPaused(_INTL("Here you are! Thank you!")) { pbSEPlay("Mart buy item") } pbDisplayPaused(_INTL("Here you are! Thank you!")) { pbSEPlay("Mart buy item") }
if quantity >= 10 && $PokemonBag && GameData::Item.exists?(:PREMIERBALL) if quantity >= 10 && $PokemonBag && GameData::Item.exists?(:PREMIERBALL)
if Settings::MORE_BONUS_PREMIER_BALLS && GameData::Item.get(item).is_poke_ball? if Settings::MORE_BONUS_PREMIER_BALLS && GameData::Item.get(item).is_poke_ball?
@@ -660,11 +655,7 @@ end
# #
#=============================================================================== #===============================================================================
def pbPokemonMart(stock,speech=nil,cantsell=false) def pbPokemonMart(stock,speech=nil,cantsell=false)
for i in 0...stock.length stock.delete_if { |item| GameData::Item.get(item).is_important? && $PokemonBag.pbHasItem?(item) }
stock[i] = GameData::Item.get(stock[i]).id
stock[i] = nil if GameData::Item.get(stock[i]).is_important? && $PokemonBag.pbHasItem?(stock[i])
end
stock.compact!
commands = [] commands = []
cmdBuy = -1 cmdBuy = -1
cmdSell = -1 cmdSell = -1

View File

@@ -184,10 +184,7 @@ def pbManageMysteryGifts
break break
elsif cmd==0 # Toggle on/offline elsif cmd==0 # Toggle on/offline
if online.include?(gift[0]) if online.include?(gift[0])
for i in 0...online.length online.delete(gift[0])
online[i]=nil if online[i]==gift[0]
end
online.compact!
else else
online.push(gift[0]) online.push(gift[0])
end end
@@ -208,10 +205,7 @@ def pbManageMysteryGifts
$Trainer.mystery_gifts.push(gift) if !replaced $Trainer.mystery_gifts.push(gift) if !replaced
pbReceiveMysteryGift(gift[0]) pbReceiveMysteryGift(gift[0])
elsif cmd==3 # Delete elsif cmd==3 # Delete
if pbConfirmMessage(_INTL("Are you sure you want to delete this gift?")) master.delete_at(command) if pbConfirmMessage(_INTL("Are you sure you want to delete this gift?"))
master[command]=nil
master.compact!
end
break break
end end
end end
@@ -305,7 +299,7 @@ def pbDownloadMysteryGift(trainer)
pbMessageDisplay(sprites["msgwindow"],_INTL("The gift has been received!")) { sprite.update } pbMessageDisplay(sprites["msgwindow"],_INTL("The gift has been received!")) { sprite.update }
pbMessageDisplay(sprites["msgwindow"],_INTL("Please pick up your gift from the deliveryman in any Poké Mart.")) { sprite.update } pbMessageDisplay(sprites["msgwindow"],_INTL("Please pick up your gift from the deliveryman in any Poké Mart.")) { sprite.update }
trainer.mystery_gifts.push(gift) trainer.mystery_gifts.push(gift)
pending[command]=nil; pending.compact! pending.delete_at(command)
opacityDiff = 16*20/Graphics.frame_rate opacityDiff = 16*20/Graphics.frame_rate
loop do loop do
Graphics.update Graphics.update

View File

@@ -205,8 +205,7 @@ def pbGenerateChallenge(rule, tag)
elsif teams[i].length < 2 elsif teams[i].length < 2
teams[i] = RuledTeam.new(party, rule) teams[i] = RuledTeam.new(party, rule)
elsif i >= maxteams elsif i >= maxteams
teams[i] = nil teams.delete_at(i)
teams.compact!
elsif teams[i].totalGames >= 250 elsif teams[i].totalGames >= 250
# retire # retire
for j in 0...teams[i].length for j in 0...teams[i].length

View File

@@ -322,8 +322,7 @@ def pbEncounterTypeEditor(enc_data, enc_type)
need_refresh = true need_refresh = true
when 2 # Delete when 2 # Delete
if pbConfirmMessage(_INTL("Delete this encounter slot?")) if pbConfirmMessage(_INTL("Delete this encounter slot?"))
enc_data.types[enc_type][ret - 2] = nil enc_data.types[enc_type].delete_at(ret - 2)
enc_data.types[enc_type].compact!
need_refresh = true need_refresh = true
end end
end end
@@ -1298,8 +1297,7 @@ def pbRegionalDexEditorMain
cmd[1] = dex_lists.length cmd[1] = dex_lists.length
refresh_list = true refresh_list = true
when 2 # Delete when 2 # Delete
dex_lists[cmd[1] - 1] = nil dex_lists.delete_at(cmd[1] - 1)
dex_lists.compact!
cmd[1] = [cmd[1], dex_lists.length].min cmd[1] = [cmd[1], dex_lists.length].min
refresh_list = true refresh_list = true
end end

View File

@@ -215,7 +215,7 @@ class PokemonTilesetScene
end end
val = pbMessage(_INTL("\\l[1]\\ts[]Set the terrain tag."), cmds, -1, nil, old_idx) val = pbMessage(_INTL("\\l[1]\\ts[]Set the terrain tag."), cmds, -1, nil, old_idx)
if val >= 0 && val != old_tag if val >= 0 && val != old_tag
set_terrain_tag_for_tile_ID(selected, val) set_terrain_tag_for_tile_ID(selected, ids[val])
draw_overlay draw_overlay
end end
end end

View File

@@ -218,11 +218,8 @@ class MapScreenScene
return false return false
end end
def removeOldConnections(ret,mapid) def removeOldConnections(ret, mapid)
for i in 0...ret.length ret.delete_if { |conn| conn[0] == mapid || conn[3] == mapid}
ret[i]=nil if ret[i][0]==mapid || ret[i][3]==mapid
end
ret.compact!
end end
# Returns the maps within _keys_ that are directly connected to this map, _map_. # Returns the maps within _keys_ that are directly connected to this map, _map_.

View File

@@ -271,7 +271,7 @@ class TextField < UIControl
end end
return return
end end
if Input.triggerex?(:LEFT) || Input.repeatex?(:RIGHT) if Input.triggerex?(:RIGHT) || Input.repeatex?(:RIGHT)
if @cursor < self.text.scan(/./m).length if @cursor < self.text.scan(/./m).length
@cursor+=1 @cursor+=1
@frame=0 @frame=0

View File

@@ -263,7 +263,6 @@ def pbDefinePath(canvas)
points[j]=nil points[j]=nil
end end
points.compact! points.compact!
# File.open("pointpath.txt","wb") { |f| f.write(path.inspect) }
end end
elsif sliderwin2.changed?(defcurvebutton) elsif sliderwin2.changed?(defcurvebutton)
for point in points for point in points

View File

@@ -993,8 +993,7 @@ module MovePoolProperty
havemove = e[2] if e[0] == newlevel && e[1] == entry[1] havemove = e[2] if e[0] == newlevel && e[1] == entry[1]
end end
if havemove >= 0 # Move already known at new level; delete this move if havemove >= 0 # Move already known at new level; delete this move
realcmds[cmd[1]] = nil realcmds.delete_at(cmd[1])
realcmds.compact!
oldsel = havemove oldsel = havemove
else # Apply the new level else # Apply the new level
entry[0] = newlevel entry[0] = newlevel
@@ -1010,8 +1009,7 @@ module MovePoolProperty
havemove = e[2] if e[0] == entry[0] && e[1] == newmove havemove = e[2] if e[0] == entry[0] && e[1] == newmove
end end
if havemove >= 0 # New move already known at level; delete this move if havemove >= 0 # New move already known at level; delete this move
realcmds[cmd[1]] = nil realcmds.delete_at(cmd[1])
realcmds.compact!
cmd[1] = [cmd[1], realcmds.length - 1].min cmd[1] = [cmd[1], realcmds.length - 1].min
oldsel = havemove oldsel = havemove
else # Apply the new move else # Apply the new move
@@ -1022,8 +1020,7 @@ module MovePoolProperty
refreshlist = true refreshlist = true
end end
when 2 # Delete when 2 # Delete
realcmds[cmd[1]] = nil realcmds.delete_at(cmd[1])
realcmds.compact!
cmd[1] = [cmd[1], realcmds.length - 1].min cmd[1] = [cmd[1], realcmds.length - 1].min
refreshlist = true refreshlist = true
end end
@@ -1111,8 +1108,7 @@ module EggMovesProperty
newmove = pbChooseMoveList(entry[0]) newmove = pbChooseMoveList(entry[0])
if newmove if newmove
if realcmds.any? { |e| e[0] == newmove } # Already have move; delete this one if realcmds.any? { |e| e[0] == newmove } # Already have move; delete this one
realcmds[cmd] = nil realcmds.delete_at(cmd)
realcmds.compact!
cmd = [cmd, realcmds.length - 1].min cmd = [cmd, realcmds.length - 1].min
else # Change move else # Change move
realcmds[cmd] = [newmove, GameData::Move.get(newmove).name, 0] realcmds[cmd] = [newmove, GameData::Move.get(newmove).name, 0]
@@ -1121,8 +1117,7 @@ module EggMovesProperty
refreshlist = true refreshlist = true
end end
when 1 # Delete when 1 # Delete
realcmds[cmd] = nil realcmds.delete_at(cmd)
realcmds.compact!
cmd = [cmd, realcmds.length - 1].min cmd = [cmd, realcmds.length - 1].min
refreshlist = true refreshlist = true
end end
@@ -1293,8 +1288,7 @@ class EvolutionsProperty
realcmds[i][2]==entry[2] realcmds[i][2]==entry[2]
end end
if existing_evo >= 0 if existing_evo >= 0
realcmds[cmd[1]] = nil realcmds.delete_at(cmd[1])
realcmds.compact!
oldsel = existing_evo oldsel = existing_evo
else else
entry[0] = newspecies entry[0] = newspecies
@@ -1315,8 +1309,7 @@ class EvolutionsProperty
realcmds[i][2]==entry[2] realcmds[i][2]==entry[2]
end end
if existing_evo >= 0 if existing_evo >= 0
realcmds[cmd[1]] = nil realcmds.delete_at(cmd[1])
realcmds.compact!
oldsel = existing_evo oldsel = existing_evo
elsif newmethod != entry[1] elsif newmethod != entry[1]
entry[1] = newmethod entry[1] = newmethod
@@ -1338,8 +1331,7 @@ class EvolutionsProperty
realcmds[i][2]==newparam realcmds[i][2]==newparam
end end
if existing_evo >= 0 if existing_evo >= 0
realcmds[cmd[1]] = nil realcmds.delete_at(cmd[1])
realcmds.compact!
oldsel = existing_evo oldsel = existing_evo
else else
entry[2] = newparam entry[2] = newparam
@@ -1349,8 +1341,7 @@ class EvolutionsProperty
end end
end end
when 3 # Delete when 3 # Delete
realcmds[cmd[1]] = nil realcmds.delete_at(cmd[1])
realcmds.compact!
cmd[1] = [cmd[1],realcmds.length-1].min cmd[1] = [cmd[1],realcmds.length-1].min
refreshlist = true refreshlist = true
end end

View File

@@ -264,8 +264,7 @@ DebugMenuCommands.register("testwildbattleadvanced", {
scr.pbPokemonDebug(pkmn[pkmnCmd], -1, nil, true) scr.pbPokemonDebug(pkmn[pkmnCmd], -1, nil, true)
scr.pbEndScreen scr.pbEndScreen
elsif pbConfirmMessage(_INTL("Delete this Pokémon?")) elsif pbConfirmMessage(_INTL("Delete this Pokémon?"))
pkmn[pkmnCmd] = nil pkmn.delete_at(pkmnCmd)
pkmn.compact!
end end
end end
end end
@@ -366,8 +365,7 @@ DebugMenuCommands.register("testtrainerbattleadvanced", {
trainers[trainerCmd] = [0, tr] trainers[trainerCmd] = [0, tr]
end end
elsif pbConfirmMessage(_INTL("Delete this trainer?")) elsif pbConfirmMessage(_INTL("Delete this trainer?"))
trainers[trainerCmd] = nil trainers.delete_at(trainerCmd)
trainers.compact!
end end
end end
end end

View File

@@ -1167,8 +1167,7 @@ PokemonDebugMenuCommands.register("delete", {
"effect" => proc { |pkmn, pkmnid, heldpoke, settingUpBattle, screen| "effect" => proc { |pkmn, pkmnid, heldpoke, settingUpBattle, screen|
if screen.pbConfirm(_INTL("Are you sure you want to delete this Pokémon?")) if screen.pbConfirm(_INTL("Are you sure you want to delete this Pokémon?"))
if screen.is_a?(PokemonPartyScreen) if screen.is_a?(PokemonPartyScreen)
screen.party[pkmnid] = nil screen.party.delete_at(pkmnid)
screen.party.compact!
screen.pbHardRefresh screen.pbHardRefresh
elsif screen.is_a?(PokemonStorageScreen) elsif screen.is_a?(PokemonStorageScreen)
screen.scene.pbRelease(pkmnid, heldpoke) screen.scene.pbRelease(pkmnid, heldpoke)