Created setting MAX_PARTY_SIZE, fixed some bugs

This commit is contained in:
Maruno17
2021-01-11 22:44:01 +00:00
parent 53c3f23146
commit f72ce06654
17 changed files with 176 additions and 153 deletions

View File

@@ -139,8 +139,8 @@ class PokemonPartyBlankPanel < SpriteWrapper
def initialize(_pokemon,index,viewport=nil)
super(viewport)
self.x = [0, Graphics.width/2][index%2]
self.y = [0, 16, 96, 112, 192, 208][index]
self.x = (index % 2) * Graphics.width / 2
self.y = 16 * (index % 2) + 96 * (index / 2)
@panelbgsprite = AnimatedBitmap.new("Graphics/Pictures/Party/panel_blank")
self.bitmap = @panelbgsprite.bitmap
@text = nil
@@ -176,8 +176,8 @@ class PokemonPartyPanel < SpriteWrapper
@pokemon = pokemon
@active = (index==0) # true = rounded panel, false = rectangular panel
@refreshing = true
self.x = [0, Graphics.width/2][index%2]
self.y = [0, 16, 96, 112, 192, 208][index]
self.x = (index % 2) * Graphics.width / 2
self.y = 16 * (index % 2) + 96 * (index / 2)
@panelbgsprite = ChangelingSprite.new(0,0,viewport)
@panelbgsprite.z = self.z
if @active # Rounded panel
@@ -448,7 +448,7 @@ class PokemonParty_Scene
pbBottomLeftLines(@sprites["helpwindow"],1)
pbSetHelpText(starthelptext)
# Add party Pokémon sprites
for i in 0...6
for i in 0...MAX_PARTY_SIZE
if @party[i]
@sprites["pokemon#{i}"] = PokemonPartyPanel.new(@party[i],i,@viewport)
else
@@ -457,10 +457,10 @@ class PokemonParty_Scene
@sprites["pokemon#{i}"].text = annotations[i] if annotations
end
if @multiselect
@sprites["pokemon6"] = PokemonPartyConfirmSprite.new(@viewport)
@sprites["pokemon7"] = PokemonPartyCancelSprite2.new(@viewport)
@sprites["pokemon#{MAX_PARTY_SIZE}"] = PokemonPartyConfirmSprite.new(@viewport)
@sprites["pokemon#{MAX_PARTY_SIZE + 1}"] = PokemonPartyCancelSprite2.new(@viewport)
else
@sprites["pokemon6"] = PokemonPartyCancelSprite.new(@viewport)
@sprites["pokemon#{MAX_PARTY_SIZE}"] = PokemonPartyCancelSprite.new(@viewport)
end
# Select first Pokémon
@activecmd = 0
@@ -573,14 +573,14 @@ class PokemonParty_Scene
end
def pbAnnotate(annot)
for i in 0...6
for i in 0...MAX_PARTY_SIZE
@sprites["pokemon#{i}"].text = (annot) ? annot[i] : nil
end
end
def pbSelect(item)
@activecmd = item
numsprites = (@multiselect) ? 8 : 7
numsprites = MAX_PARTY_SIZE + ((@multiselect) ? 2 : 1)
for i in 0...numsprites
@sprites["pokemon#{i}"].selected = (i==@activecmd)
end
@@ -620,7 +620,7 @@ class PokemonParty_Scene
Input.update
self.update
end
for i in 0...6
for i in 0...MAX_PARTY_SIZE
@sprites["pokemon#{i}"].preselected = false
@sprites["pokemon#{i}"].switching = false
end
@@ -628,7 +628,7 @@ class PokemonParty_Scene
end
def pbClearSwitching
for i in 0...6
for i in 0...MAX_PARTY_SIZE
@sprites["pokemon#{i}"].preselected = false
@sprites["pokemon#{i}"].switching = false
end
@@ -674,7 +674,7 @@ class PokemonParty_Scene
end
def pbChoosePokemon(switching=false,initialsel=-1,canswitch=0)
for i in 0...6
for i in 0...MAX_PARTY_SIZE
@sprites["pokemon#{i}"].preselected = (switching && i==@activecmd)
@sprites["pokemon#{i}"].switching = switching
end
@@ -695,12 +695,12 @@ class PokemonParty_Scene
end
if @activecmd!=oldsel # Changing selection
pbPlayCursorSE
numsprites = (@multiselect) ? 8 : 7
numsprites = MAX_PARTY_SIZE + ((@multiselect) ? 2 : 1)
for i in 0...numsprites
@sprites["pokemon#{i}"].selected = (i==@activecmd)
end
end
cancelsprite = (@multiselect) ? 7 : 6
cancelsprite = MAX_PARTY_SIZE + ((@multiselect) ? 1 : 0)
if Input.trigger?(Input::A) && canswitch==1 && @activecmd!=cancelsprite
pbPlayDecisionSE
return [1,@activecmd]
@@ -722,49 +722,49 @@ class PokemonParty_Scene
end
def pbChangeSelection(key,currentsel)
numsprites = (@multiselect) ? 8 : 7
numsprites = MAX_PARTY_SIZE + ((@multiselect) ? 2 : 1)
case key
when Input::LEFT
begin
currentsel -= 1
end while currentsel>0 && currentsel<@party.length && !@party[currentsel]
if currentsel>=@party.length && currentsel<6
currentsel = @party.length-1
end while currentsel > 0 && currentsel < @party.length && !@party[currentsel]
if currentsel >= @party.length && currentsel < MAX_PARTY_SIZE
currentsel = @party.length - 1
end
currentsel = numsprites-1 if currentsel<0
currentsel = numsprites - 1 if currentsel < 0
when Input::RIGHT
begin
currentsel += 1
end while currentsel<@party.length && !@party[currentsel]
if currentsel==@party.length
currentsel = 6
elsif currentsel==numsprites
end while currentsel < @party.length && !@party[currentsel]
if currentsel == @party.length
currentsel = MAX_PARTY_SIZE
elsif currentsel == numsprites
currentsel = 0
end
when Input::UP
if currentsel>=6
if currentsel >= MAX_PARTY_SIZE
begin
currentsel -= 1
end while currentsel>0 && !@party[currentsel]
end while currentsel > 0 && !@party[currentsel]
else
begin
currentsel -= 2
end while currentsel>0 && !@party[currentsel]
end while currentsel > 0 && !@party[currentsel]
end
if currentsel>=@party.length && currentsel<6
if currentsel >= @party.length && currentsel < MAX_PARTY_SIZE
currentsel = @party.length-1
end
currentsel = numsprites-1 if currentsel<0
currentsel = numsprites - 1 if currentsel < 0
when Input::DOWN
if currentsel>=5
if currentsel >= MAX_PARTY_SIZE - 1
currentsel += 1
else
currentsel += 2
currentsel = 6 if currentsel<6 && !@party[currentsel]
currentsel = MAX_PARTY_SIZE if currentsel < MAX_PARTY_SIZE && !@party[currentsel]
end
if currentsel>=@party.length && currentsel<6
currentsel = 6
elsif currentsel>=numsprites
if currentsel >= @party.length && currentsel < MAX_PARTY_SIZE
currentsel = MAX_PARTY_SIZE
elsif currentsel >= numsprites
currentsel = 0
end
end
@@ -774,14 +774,14 @@ class PokemonParty_Scene
def pbHardRefresh
oldtext = []
lastselected = -1
for i in 0...6
for i in 0...MAX_PARTY_SIZE
oldtext.push(@sprites["pokemon#{i}"].text)
lastselected = i if @sprites["pokemon#{i}"].selected
@sprites["pokemon#{i}"].dispose
end
lastselected = @party.length-1 if lastselected>=@party.length
lastselected = 0 if lastselected<0
for i in 0...6
for i in 0...MAX_PARTY_SIZE
if @party[i]
@sprites["pokemon#{i}"] = PokemonPartyPanel.new(@party[i],i,@viewport)
else
@@ -793,7 +793,7 @@ class PokemonParty_Scene
end
def pbRefresh
for i in 0...6
for i in 0...MAX_PARTY_SIZE
sprite = @sprites["pokemon#{i}"]
if sprite
if sprite.is_a?(PokemonPartyPanel)
@@ -967,17 +967,17 @@ class PokemonPartyScreen
def pbPokemonMultipleEntryScreenEx(ruleset)
annot = []
statuses = []
ordinals = [
_INTL("INELIGIBLE"),
_INTL("NOT ENTERED"),
_INTL("BANNED"),
_INTL("FIRST"),
_INTL("SECOND"),
_INTL("THIRD"),
_INTL("FOURTH"),
_INTL("FIFTH"),
_INTL("SIXTH")
]
ordinals = [_INTL("INELIGIBLE"), _INTL("NOT ENTERED"), _INTL("BANNED")]
positions = [_INTL("FIRST"), _INTL("SECOND"), _INTL("THIRD"), _INTL("FOURTH"),
_INTL("FIFTH"), _INTL("SIXTH"), _INTL("SEVENTH"), _INTL("EIGHTH"),
_INTL("NINTH"), _INTL("TENTH"), _INTL("ELEVENTH"), _INTL("TWELFTH")]
for i in 0...MAX_PARTY_SIZE
if i < positions.length
ordinals.push(positions[i])
else
ordinals.push("#{i + 1}th")
end
end
return nil if !ruleset.hasValidTeam?(@party)
ret = nil
addedEntry = false
@@ -1006,12 +1006,12 @@ class PokemonPartyScreen
end
@scene.pbAnnotate(annot)
if realorder.length==ruleset.number && addedEntry
@scene.pbSelect(6)
@scene.pbSelect(MAX_PARTY_SIZE)
end
@scene.pbSetHelpText(_INTL("Choose Pokémon and confirm."))
pkmnid = @scene.pbChoosePokemon
addedEntry = false
if pkmnid==6 # Confirm was chosen
if pkmnid == MAX_PARTY_SIZE # Confirm was chosen
ret = []
for i in realorder; ret.push(@party[i]); end
error = []

View File

@@ -291,6 +291,7 @@ end
class PokemonBoxSprite < SpriteWrapper
attr_accessor :refreshBox
attr_accessor :refreshSprites
def initialize(storage,boxnumber,viewport=nil)
super(viewport)
@storage = storage
@@ -298,7 +299,7 @@ class PokemonBoxSprite < SpriteWrapper
@refreshBox = true
@refreshSprites = true
@pokemonsprites = []
for i in 0...30
for i in 0...PokemonBox::BOX_SIZE
@pokemonsprites[i] = nil
pokemon = @storage[boxnumber,i]
@pokemonsprites[i] = PokemonBoxIcon.new(pokemon,viewport)
@@ -312,7 +313,7 @@ class PokemonBoxSprite < SpriteWrapper
def dispose
if !disposed?
for i in 0...30
for i in 0...PokemonBox::BOX_SIZE
@pokemonsprites[i].dispose if @pokemonsprites[i]
@pokemonsprites[i] = nil
end
@@ -335,7 +336,7 @@ class PokemonBoxSprite < SpriteWrapper
def color=(value)
super
if @refreshSprites
for i in 0...30
for i in 0...PokemonBox::BOX_SIZE
if @pokemonsprites[i] && !@pokemonsprites[i].disposed?
@pokemonsprites[i].color = value
end
@@ -346,7 +347,7 @@ class PokemonBoxSprite < SpriteWrapper
def visible=(value)
super
for i in 0...30
for i in 0...PokemonBox::BOX_SIZE
if @pokemonsprites[i] && !@pokemonsprites[i].disposed?
@pokemonsprites[i].visible = value
end
@@ -413,10 +414,10 @@ class PokemonBoxSprite < SpriteWrapper
@refreshBox = false
end
yval = self.y+30
for j in 0...5
for j in 0...PokemonBox::BOX_HEIGHT
xval = self.x+10
for k in 0...6
sprite = @pokemonsprites[j*6+k]
for k in 0...PokemonBox::BOX_WIDTH
sprite = @pokemonsprites[j * PokemonBox::BOX_WIDTH + k]
if sprite && !sprite.disposed?
sprite.viewport = self.viewport
sprite.x = xval
@@ -431,7 +432,7 @@ class PokemonBoxSprite < SpriteWrapper
def update
super
for i in 0...30
for i in 0...PokemonBox::BOX_SIZE
if @pokemonsprites[i] && !@pokemonsprites[i].disposed?
@pokemonsprites[i].update
end
@@ -448,7 +449,7 @@ class PokemonBoxPartySprite < SpriteWrapper
@party = party
@boxbitmap = AnimatedBitmap.new("Graphics/Pictures/Storage/overlay_party")
@pokemonsprites = []
for i in 0...6
for i in 0...MAX_PARTY_SIZE
@pokemonsprites[i] = nil
pokemon = @party[i]
if pokemon
@@ -464,7 +465,7 @@ class PokemonBoxPartySprite < SpriteWrapper
end
def dispose
for i in 0...6
for i in 0...MAX_PARTY_SIZE
@pokemonsprites[i].dispose if @pokemonsprites[i]
end
@boxbitmap.dispose
@@ -484,7 +485,7 @@ class PokemonBoxPartySprite < SpriteWrapper
def color=(value)
super
for i in 0...6
for i in 0...MAX_PARTY_SIZE
if @pokemonsprites[i] && !@pokemonsprites[i].disposed?
@pokemonsprites[i].color = pbSrcOver(@pokemonsprites[i].color,value)
end
@@ -493,7 +494,7 @@ class PokemonBoxPartySprite < SpriteWrapper
def visible=(value)
super
for i in 0...6
for i in 0...MAX_PARTY_SIZE
if @pokemonsprites[i] && !@pokemonsprites[i].disposed?
@pokemonsprites[i].visible = value
end
@@ -528,23 +529,26 @@ class PokemonBoxPartySprite < SpriteWrapper
end
def refresh
@contents.blt(0,0,@boxbitmap.bitmap,Rect.new(0,0,172,352))
@contents.blt(0, 0, @boxbitmap.bitmap, Rect.new(0, 0, 172, 352))
pbDrawTextPositions(self.bitmap,[
[_INTL("Back"),86,240,2,Color.new(248,248,248),Color.new(80,80,80),1]
[_INTL("Back"), 86, 240, 2, Color.new(248, 248, 248), Color.new(80, 80, 80), 1]
])
xvalues = [18,90,18,90,18,90]
yvalues = [2,18,66,82,130,146]
for j in 0...6
xvalues = [] # [18, 90, 18, 90, 18, 90]
yvalues = [] # [2, 18, 66, 82, 130, 146]
for i in 0...MAX_PARTY_SIZE
xvalues.push(18 + 72 * (i % 2))
yvalues.push(2 + 16 * (i % 2) + 64 * (i / 2))
end
for j in 0...MAX_PARTY_SIZE
@pokemonsprites[j] = nil if @pokemonsprites[j] && @pokemonsprites[j].disposed?
end
@pokemonsprites.compact!
for j in 0...6
for j in 0...MAX_PARTY_SIZE
sprite = @pokemonsprites[j]
if sprite && !sprite.disposed?
sprite.viewport = self.viewport
sprite.x = self.x+xvalues[j]
sprite.y = self.y+yvalues[j]
sprite.x = self.x + xvalues[j]
sprite.y = self.y + yvalues[j]
sprite.z = 0
end
end
@@ -552,7 +556,7 @@ class PokemonBoxPartySprite < SpriteWrapper
def update
super
for i in 0...6
for i in 0...MAX_PARTY_SIZE
@pokemonsprites[i].update if @pokemonsprites[i] && !@pokemonsprites[i].disposed?
end
end
@@ -702,8 +706,8 @@ class PokemonStorageScene
arrow.x = 207*2
arrow.y = 139*2
else
arrow.x = (97+24*(selection%6))*2
arrow.y = (8+24*(selection/6))*2
arrow.x = (97 + 24 * (selection % PokemonBox::BOX_WIDTH)) * 2
arrow.y = (8 + 24 * (selection / PokemonBox::BOX_WIDTH)) * 2
end
end
@@ -713,24 +717,29 @@ class PokemonStorageScene
if selection==-1 # Box name
selection = -2
elsif selection==-2 # Party
selection = 25
selection = PokemonBox::BOX_SIZE - 1 - PokemonBox::BOX_WIDTH * 2 / 3 # 25
elsif selection==-3 # Close Box
selection = 28
selection = PokemonBox::BOX_SIZE - PokemonBox::BOX_WIDTH / 3 # 28
else
selection -= 6
selection = -1 if selection<0
selection -= PokemonBox::BOX_WIDTH
selection = -1 if selection < 0
end
when Input::DOWN
if selection==-1 # Box name
selection = 2
selection = PokemonBox::BOX_WIDTH / 3 # 2
elsif selection==-2 # Party
selection = -1
elsif selection==-3 # Close Box
selection = -1
else
selection += 6
selection = -2 if selection==30 || selection==31 || selection==32
selection = -3 if selection==33 || selection==34 || selection==35
selection += PokemonBox::BOX_WIDTH
if selection >= PokemonBox::BOX_SIZE
if selection < PokemonBox::BOX_SIZE + PokemonBox::BOX_WIDTH / 2
selection = -2 # Party
else
selection = -3 # Close Box
end
end
end
when Input::LEFT
if selection==-1 # Box name
@@ -739,9 +748,10 @@ class PokemonStorageScene
selection = -3
elsif selection==-3
selection = -2
elsif (selection % PokemonBox::BOX_WIDTH) == 0 # Wrap around
selection += PokemonBox::BOX_WIDTH - 1
else
selection -= 1
selection += 6 if selection==-1 || selection%6==5
end
when Input::RIGHT
if selection==-1 # Box name
@@ -750,48 +760,54 @@ class PokemonStorageScene
selection = -3
elsif selection==-3
selection = -2
elsif (selection % PokemonBox::BOX_WIDTH) == PokemonBox::BOX_WIDTH - 1 # Wrap around
selection -= PokemonBox::BOX_WIDTH - 1
else
selection += 1
selection -= 6 if selection%6==0
end
end
return selection
end
def pbPartySetArrow(arrow,selection)
if selection>=0
xvalues = [100,136,100,136,100,136,118]
yvalues = [1,9,33,41,65,73,110]
arrow.angle = 0
arrow.mirror = false
arrow.ox = 0
arrow.oy = 0
arrow.x = xvalues[selection]*2
arrow.y = yvalues[selection]*2
return if selection < 0
xvalues = [] # [200, 272, 200, 272, 200, 272, 236]
yvalues = [] # [2, 18, 66, 82, 130, 146, 220]
for i in 0...MAX_PARTY_SIZE
xvalues.push(200 + 72 * (i % 2))
yvalues.push(2 + 16 * (i % 2) + 64 * (i / 2))
end
xvalues.push(236)
yvalues.push(220)
arrow.angle = 0
arrow.mirror = false
arrow.ox = 0
arrow.oy = 0
arrow.x = xvalues[selection]
arrow.y = yvalues[selection]
end
def pbPartyChangeSelection(key,selection)
case key
when Input::LEFT
selection -= 1
selection = 6 if selection<0
selection = MAX_PARTY_SIZE if selection < 0
when Input::RIGHT
selection += 1
selection = 0 if selection>6
selection = 0 if selection > MAX_PARTY_SIZE
when Input::UP
if selection==6
selection = 5
if selection == MAX_PARTY_SIZE
selection = MAX_PARTY_SIZE - 1
else
selection -= 2
selection = 6 if selection<0
selection = MAX_PARTY_SIZE if selection < 0
end
when Input::DOWN
if selection==6
if selection == MAX_PARTY_SIZE
selection = 0
else
selection += 2
selection = 6 if selection>6
selection = MAX_PARTY_SIZE if selection > MAX_PARTY_SIZE
end
end
return selection
@@ -929,17 +945,17 @@ class PokemonStorageScene
pbSetMosaic(selection)
end
self.update
if Input.trigger?(Input::A) && @command==0 # Organize only
if Input.trigger?(Input::A) && @command == 0 # Organize only
pbPlayDecisionSE
pbSetQuickSwap(!@quickswap)
elsif Input.trigger?(Input::B)
@selection = selection
return -1
elsif Input.trigger?(Input::C)
if selection>=0 && selection<6
if selection >= 0 && selection < MAX_PARTY_SIZE
@selection = selection
return selection
elsif selection==6 # Close Box
elsif selection == MAX_PARTY_SIZE # Close Box
@selection = selection
return (depositing) ? -3 : -1
end
@@ -1665,7 +1681,7 @@ class PokemonStorageScreen
if box==-1
raise _INTL("Can't withdraw from party...");
end
if @storage.party.nitems>=6
if @storage.party.length >= MAX_PARTY_SIZE
pbDisplay(_INTL("Your party's full!"))
return false
end

View File

@@ -48,7 +48,7 @@ class StorageSystemPC
)
if command>=0 && command<3
if command==1 # Withdraw
if $PokemonStorage.party.length>=6
if $PokemonStorage.party.length >= MAX_PARTY_SIZE
pbMessage(_INTL("Your party is full!"))
next
end