Files
infinitefusion-e18/Data/Scripts/016c_UI_old/007_UI_old_Bag.rb

708 lines
25 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

=begin
#===============================================================================
#
#===============================================================================
class Window_PokemonBag < Window_DrawableCommand
attr_reader :pocket
attr_accessor :sorting
def initialize(bag, filterlist, pocket, x, y, width, height)
@bag = bag
@filterlist = filterlist
@pocket = pocket
@sorting = false
@adapter = PokemonMartAdapter.new
super(x, y, width, height)
@selarrow = AnimatedBitmap.new("Graphics/UI/Bag/cursor")
@swaparrow = AnimatedBitmap.new("Graphics/UI/Bag/cursor_swap")
self.windowskin = nil
end
def dispose
@swaparrow.dispose
super
end
def pocket=(value)
@pocket = value
@item_max = (@filterlist) ? @filterlist[@pocket].length + 1 : @bag.pockets[@pocket].length + 1
self.index = @bag.last_viewed_index(@pocket)
end
def page_row_max; return PokemonBag_Scene::ITEMSVISIBLE; end
def page_item_max; return PokemonBag_Scene::ITEMSVISIBLE; end
def item
return nil if @filterlist && !@filterlist[@pocket][self.index]
thispocket = @bag.pockets[@pocket]
item = (@filterlist) ? thispocket[@filterlist[@pocket][self.index]] : thispocket[self.index]
return (item) ? item[0] : nil
end
def itemCount
return (@filterlist) ? @filterlist[@pocket].length + 1 : @bag.pockets[@pocket].length + 1
end
def itemRect(item)
if item < 0 || item >= @item_max || item < self.top_item - 1 ||
item > self.top_item + self.page_item_max
return Rect.new(0, 0, 0, 0)
else
cursor_width = (self.width - self.borderX - ((@column_max - 1) * @column_spacing)) / @column_max
x = item % @column_max * (cursor_width + @column_spacing)
y = (item / @column_max * @row_height) - @virtualOy
return Rect.new(x, y, cursor_width, @row_height)
end
end
def drawCursor(index, rect)
if self.index == index
bmp = (@sorting) ? @swaparrow.bitmap : @selarrow.bitmap
pbCopyBitmap(self.contents, bmp, rect.x, rect.y + 2)
end
end
def drawItem(index, _count, rect)
textpos = []
rect = Rect.new(rect.x + 16, rect.y + 16, rect.width - 16, rect.height)
thispocket = @bag.pockets[@pocket]
if index == self.itemCount - 1
textpos.push([_INTL("CLOSE BAG"), rect.x, rect.y + 2, :left, self.baseColor, self.shadowColor])
else
item = (@filterlist) ? thispocket[@filterlist[@pocket][index]][0] : thispocket[index][0]
baseColor = self.baseColor
shadowColor = self.shadowColor
if @sorting && index == self.index
baseColor = Color.new(224, 0, 0)
shadowColor = Color.new(248, 144, 144)
end
textpos.push(
[@adapter.getDisplayName(item), rect.x, rect.y + 2, :left, baseColor, shadowColor]
)
item_data = GameData::Item.get(item)
showing_register_icon = false
if item_data.is_important?
if @bag.registered?(item)
pbDrawImagePositions(
self.contents,
[[_INTL("Graphics/UI/Bag/icon_register"), rect.x + rect.width - 72, rect.y + 8, 0, 0, -1, 24]]
)
showing_register_icon = true
elsif pbCanRegisterItem?(item)
pbDrawImagePositions(
self.contents,
[[_INTL("Graphics/UI/Bag/icon_register"), rect.x + rect.width - 72, rect.y + 8, 0, 24, -1, 24]]
)
showing_register_icon = true
end
end
if item_data.show_quantity? && !showing_register_icon
qty = (@filterlist) ? thispocket[@filterlist[@pocket][index]][1] : thispocket[index][1]
qtytext = _ISPRINTF("×{1: 3d}", qty)
xQty = rect.x + rect.width - self.contents.text_size(qtytext).width - 16
textpos.push([qtytext, xQty, rect.y + 2, :left, baseColor, shadowColor])
end
end
pbDrawTextPositions(self.contents, textpos)
end
def refresh
@item_max = itemCount
self.update_cursor_rect
dwidth = self.width - self.borderX
dheight = self.height - self.borderY
self.contents = pbDoEnsureBitmap(self.contents, dwidth, dheight)
self.contents.clear
@item_max.times do |i|
next if i < self.top_item - 1 || i > self.top_item + self.page_item_max
drawItem(i, @item_max, itemRect(i))
end
drawCursor(self.index, itemRect(self.index))
end
def update
super
@uparrow.visible = false
@downarrow.visible = false
end
end
#===============================================================================
# Bag visuals.
#===============================================================================
class PokemonBag_Scene
ITEMLISTBASECOLOR = Color.new(88, 88, 80)
ITEMLISTSHADOWCOLOR = Color.new(168, 184, 184)
ITEMTEXTBASECOLOR = Color.new(248, 248, 248)
ITEMTEXTSHADOWCOLOR = Color.new(0, 0, 0)
POCKETNAMEBASECOLOR = Color.new(88, 88, 80)
POCKETNAMESHADOWCOLOR = Color.new(168, 184, 184)
ITEMSVISIBLE = 7
def pbUpdate
pbUpdateSpriteHash(@sprites)
end
def pbStartScene(bag, choosing = false, filterproc = nil, resetpocket = true)
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport.z = 99999
@bag = bag
@choosing = choosing
@filterproc = filterproc
pbRefreshFilter
lastpocket = @bag.last_viewed_pocket
numfilledpockets = @bag.pockets.length - 1
if @choosing
numfilledpockets = 0
if @filterlist.nil?
(1...@bag.pockets.length).each do |i|
numfilledpockets += 1 if @bag.pockets[i].length > 0
end
else
(1...@bag.pockets.length).each do |i|
numfilledpockets += 1 if @filterlist[i].length > 0
end
end
lastpocket = (resetpocket) ? 1 : @bag.last_viewed_pocket
if (@filterlist && @filterlist[lastpocket].length == 0) ||
(!@filterlist && @bag.pockets[lastpocket].length == 0)
(1...@bag.pockets.length).each do |i|
if @filterlist && @filterlist[i].length > 0
lastpocket = i
break
elsif !@filterlist && @bag.pockets[i].length > 0
lastpocket = i
break
end
end
end
end
@bag.last_viewed_pocket = lastpocket
@sliderbitmap = AnimatedBitmap.new("Graphics/UI/Bag/icon_slider")
@pocketbitmap = AnimatedBitmap.new("Graphics/UI/Bag/icon_pocket")
@sprites = {}
@sprites["background"] = IconSprite.new(0, 0, @viewport)
@sprites["overlay"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
pbSetSystemFont(@sprites["overlay"].bitmap)
@sprites["bagsprite"] = IconSprite.new(30, 20, @viewport)
@sprites["pocketicon"] = BitmapSprite.new(186, 32, @viewport)
@sprites["pocketicon"].x = 0
@sprites["pocketicon"].y = 224
@sprites["leftarrow"] = AnimatedSprite.new("Graphics/UI/left_arrow", 8, 40, 28, 2, @viewport)
@sprites["leftarrow"].x = -4
@sprites["leftarrow"].y = 76
@sprites["leftarrow"].visible = (!@choosing || numfilledpockets > 1)
@sprites["leftarrow"].play
@sprites["rightarrow"] = AnimatedSprite.new("Graphics/UI/right_arrow", 8, 40, 28, 2, @viewport)
@sprites["rightarrow"].x = 150
@sprites["rightarrow"].y = 76
@sprites["rightarrow"].visible = (!@choosing || numfilledpockets > 1)
@sprites["rightarrow"].play
@sprites["itemlist"] = Window_PokemonBag.new(@bag, @filterlist, lastpocket, 168, -8, 314, 40 + 32 + (ITEMSVISIBLE * 32))
@sprites["itemlist"].viewport = @viewport
@sprites["itemlist"].pocket = lastpocket
@sprites["itemlist"].index = @bag.last_viewed_index(lastpocket)
@sprites["itemlist"].baseColor = ITEMLISTBASECOLOR
@sprites["itemlist"].shadowColor = ITEMLISTSHADOWCOLOR
@sprites["itemicon"] = ItemIconSprite.new(48, Graphics.height - 48, nil, @viewport)
@sprites["itemtext"] = Window_UnformattedTextPokemon.newWithSize(
"", 72, 272, Graphics.width - 72 - 24, 128, @viewport
)
@sprites["itemtext"].baseColor = ITEMTEXTBASECOLOR
@sprites["itemtext"].shadowColor = ITEMTEXTSHADOWCOLOR
@sprites["itemtext"].visible = true
@sprites["itemtext"].windowskin = nil
@sprites["helpwindow"] = Window_UnformattedTextPokemon.new("")
@sprites["helpwindow"].visible = false
@sprites["helpwindow"].viewport = @viewport
@sprites["msgwindow"] = Window_AdvancedTextPokemon.new("")
@sprites["msgwindow"].visible = false
@sprites["msgwindow"].viewport = @viewport
pbBottomLeftLines(@sprites["helpwindow"], 1)
pbDeactivateWindows(@sprites)
pbRefresh
pbFadeInAndShow(@sprites)
end
def pbFadeOutScene
@oldsprites = pbFadeOutAndHide(@sprites)
end
def pbFadeInScene
pbFadeInAndShow(@sprites, @oldsprites)
@oldsprites = nil
end
def pbEndScene
pbFadeOutAndHide(@sprites) if !@oldsprites
@oldsprites = nil
dispose
end
def dispose
pbDisposeSpriteHash(@sprites)
@sliderbitmap.dispose
@pocketbitmap.dispose
@viewport.dispose
end
def pbDisplay(msg, brief = false)
UIHelper.pbDisplay(@sprites["msgwindow"], msg, brief) { pbUpdate }
end
def pbConfirm(msg)
UIHelper.pbConfirm(@sprites["msgwindow"], msg) { pbUpdate }
end
def pbChooseNumber(helptext, maximum, initnum = 1)
return UIHelper.pbChooseNumber(@sprites["helpwindow"], helptext, maximum, initnum) { pbUpdate }
end
def pbShowCommands(helptext, commands, index = 0)
return UIHelper.pbShowCommands(@sprites["helpwindow"], helptext, commands, index) { pbUpdate }
end
def pbRefresh
# Set the background image
@sprites["background"].setBitmap(sprintf("Graphics/UI/Bag/bg_%d", @bag.last_viewed_pocket))
# Set the bag sprite
fbagexists = pbResolveBitmap(sprintf("Graphics/UI/Bag/bag_%d_f", @bag.last_viewed_pocket))
if $player.female? && fbagexists
@sprites["bagsprite"].setBitmap(sprintf("Graphics/UI/Bag/bag_%d_f", @bag.last_viewed_pocket))
else
@sprites["bagsprite"].setBitmap(sprintf("Graphics/UI/Bag/bag_%d", @bag.last_viewed_pocket))
end
# Draw the pocket icons
@sprites["pocketicon"].bitmap.clear
if @choosing && @filterlist
(1...@bag.pockets.length).each do |i|
next if @filterlist[i].length > 0
@sprites["pocketicon"].bitmap.blt(
6 + ((i - 1) * 22), 6, @pocketbitmap.bitmap, Rect.new((i - 1) * 20, 28, 20, 20)
)
end
end
@sprites["pocketicon"].bitmap.blt(
2 + ((@sprites["itemlist"].pocket - 1) * 22), 2, @pocketbitmap.bitmap,
Rect.new((@sprites["itemlist"].pocket - 1) * 28, 0, 28, 28)
)
# Refresh the item window
@sprites["itemlist"].refresh
# Refresh more things
pbRefreshIndexChanged
end
def pbRefreshIndexChanged
itemlist = @sprites["itemlist"]
overlay = @sprites["overlay"].bitmap
overlay.clear
# Draw the pocket name
pbDrawTextPositions(
overlay,
[[PokemonBag.pocket_names[@bag.last_viewed_pocket - 1], 94, 186, :center, POCKETNAMEBASECOLOR, POCKETNAMESHADOWCOLOR]]
)
# Draw slider arrows
showslider = false
if itemlist.top_row > 0
overlay.blt(470, 16, @sliderbitmap.bitmap, Rect.new(0, 0, 36, 38))
showslider = true
end
if itemlist.top_item + itemlist.page_item_max < itemlist.itemCount
overlay.blt(470, 228, @sliderbitmap.bitmap, Rect.new(0, 38, 36, 38))
showslider = true
end
# Draw slider box
if showslider
sliderheight = 174
boxheight = (sliderheight * itemlist.page_row_max / itemlist.row_max).floor
boxheight += [(sliderheight - boxheight) / 2, sliderheight / 6].min
boxheight = [boxheight.floor, 38].max
y = 54
y += ((sliderheight - boxheight) * itemlist.top_row / (itemlist.row_max - itemlist.page_row_max)).floor
overlay.blt(470, y, @sliderbitmap.bitmap, Rect.new(36, 0, 36, 4))
i = 0
while i * 16 < boxheight - 4 - 18
height = [boxheight - 4 - 18 - (i * 16), 16].min
overlay.blt(470, y + 4 + (i * 16), @sliderbitmap.bitmap, Rect.new(36, 4, 36, height))
i += 1
end
overlay.blt(470, y + boxheight - 18, @sliderbitmap.bitmap, Rect.new(36, 20, 36, 18))
end
# Set the selected item's icon
@sprites["itemicon"].item = itemlist.item
# Set the selected item's description
@sprites["itemtext"].text =
(itemlist.item) ? GameData::Item.get(itemlist.item).description : _INTL("Close bag.")
end
def pbRefreshFilter
@filterlist = nil
return if !@choosing
return if @filterproc.nil?
@filterlist = []
(1...@bag.pockets.length).each do |i|
@filterlist[i] = []
@bag.pockets[i].length.times do |j|
@filterlist[i].push(j) if @filterproc.call(@bag.pockets[i][j][0])
end
end
end
# Called when the item screen wants an item to be chosen from the screen
def pbChooseItem
@sprites["helpwindow"].visible = false
itemwindow = @sprites["itemlist"]
thispocket = @bag.pockets[itemwindow.pocket]
swapinitialpos = -1
pbActivateWindow(@sprites, "itemlist") do
loop do
oldindex = itemwindow.index
Graphics.update
Input.update
pbUpdate
if itemwindow.sorting && itemwindow.index >= thispocket.length
itemwindow.index = (oldindex == thispocket.length - 1) ? 0 : thispocket.length - 1
end
if itemwindow.index != oldindex
# Move the item being switched
if itemwindow.sorting
thispocket.insert(itemwindow.index, thispocket.delete_at(oldindex))
end
# Update selected item for current pocket
@bag.set_last_viewed_index(itemwindow.pocket, itemwindow.index)
pbRefresh
end
if itemwindow.sorting
if Input.trigger?(Input::ACTION) ||
Input.trigger?(Input::USE)
itemwindow.sorting = false
pbPlayDecisionSE
pbRefresh
elsif Input.trigger?(Input::BACK)
thispocket.insert(swapinitialpos, thispocket.delete_at(itemwindow.index))
itemwindow.index = swapinitialpos
itemwindow.sorting = false
pbPlayCancelSE
pbRefresh
end
else # Change pockets
if Input.trigger?(Input::LEFT)
newpocket = itemwindow.pocket
loop do
newpocket = (newpocket == 1) ? PokemonBag.pocket_count : newpocket - 1
break if !@choosing || newpocket == itemwindow.pocket
if @filterlist
break if @filterlist[newpocket].length > 0
elsif @bag.pockets[newpocket].length > 0
break
end
end
if itemwindow.pocket != newpocket
itemwindow.pocket = newpocket
@bag.last_viewed_pocket = itemwindow.pocket
thispocket = @bag.pockets[itemwindow.pocket]
pbPlayCursorSE
pbRefresh
end
elsif Input.trigger?(Input::RIGHT)
newpocket = itemwindow.pocket
loop do
newpocket = (newpocket == PokemonBag.pocket_count) ? 1 : newpocket + 1
break if !@choosing || newpocket == itemwindow.pocket
if @filterlist
break if @filterlist[newpocket].length > 0
elsif @bag.pockets[newpocket].length > 0
break
end
end
if itemwindow.pocket != newpocket
itemwindow.pocket = newpocket
@bag.last_viewed_pocket = itemwindow.pocket
thispocket = @bag.pockets[itemwindow.pocket]
pbPlayCursorSE
pbRefresh
end
# elsif Input.trigger?(Input::SPECIAL) # Register/unregister selected item
# if !@choosing && itemwindow.index<thispocket.length
# if @bag.registered?(itemwindow.item)
# @bag.unregister(itemwindow.item)
# elsif pbCanRegisterItem?(itemwindow.item)
# @bag.register(itemwindow.item)
# end
# pbPlayDecisionSE
# pbRefresh
# end
elsif Input.trigger?(Input::ACTION) # Start switching the selected item
if !@choosing && thispocket.length > 1 && itemwindow.index < thispocket.length &&
!Settings::BAG_POCKET_AUTO_SORT[itemwindow.pocket - 1]
itemwindow.sorting = true
swapinitialpos = itemwindow.index
pbPlayDecisionSE
pbRefresh
end
elsif Input.trigger?(Input::BACK) # Cancel the item screen
pbPlayCloseMenuSE
return nil
elsif Input.trigger?(Input::USE) # Choose selected item
(itemwindow.item) ? pbPlayDecisionSE : pbPlayCloseMenuSE
return itemwindow.item
end
end
end
end
end
end
#===============================================================================
# Bag mechanics.
#===============================================================================
class PokemonBagScreen
def initialize(scene, bag)
@bag = bag
@scene = scene
end
def pbStartScreen
@scene.pbStartScene(@bag)
item = nil
loop do
item = @scene.pbChooseItem
break if !item
itm = GameData::Item.get(item)
cmdRead = -1
cmdUse = -1
cmdRegister = -1
cmdGive = -1
cmdToss = -1
cmdDebug = -1
commands = []
# Generate command list
commands[cmdRead = commands.length] = _INTL("Read") if itm.is_mail?
if ItemHandlers.hasOutHandler(item) || (itm.is_machine? && $player.party.length > 0)
if ItemHandlers.hasUseText(item)
commands[cmdUse = commands.length] = ItemHandlers.getUseText(item)
else
commands[cmdUse = commands.length] = _INTL("Use")
end
end
commands[cmdGive = commands.length] = _INTL("Give") if $player.pokemon_party.length > 0 && itm.can_hold?
commands[cmdToss = commands.length] = _INTL("Toss") if !itm.is_important? || $DEBUG
if @bag.registered?(item)
commands[cmdRegister = commands.length] = _INTL("Deselect")
elsif pbCanRegisterItem?(item)
commands[cmdRegister = commands.length] = _INTL("Register")
end
commands[cmdDebug = commands.length] = _INTL("Debug") if $DEBUG
commands[commands.length] = _INTL("Cancel")
# Show commands generated above
itemname = itm.name
command = @scene.pbShowCommands(_INTL("{1} is selected.", itemname), commands)
if cmdRead >= 0 && command == cmdRead # Read mail
pbFadeOutIn do
pbDisplayMail(Mail.new(item, "", ""))
end
elsif cmdUse >= 0 && command == cmdUse # Use item
ret = pbUseItem(@bag, item, @scene)
# ret: 0=Item wasn't used; 1=Item used; 2=Close Bag to use in field
break if ret == 2 # End screen
@scene.pbRefresh
next
elsif cmdGive >= 0 && command == cmdGive # Give item to Pokémon
if $player.pokemon_count == 0
@scene.pbDisplay(_INTL("There is no Pokémon."))
elsif itm.is_important?
@scene.pbDisplay(_INTL("The {1} can't be held.", itm.portion_name))
else
pbFadeOutIn do
screen = UI::Party.new($player.party, mode: :choose_pokemon)
screen.choose_pokemon do |pkmn, party_index|
pbGiveItemToPokemon(item, screen.pokemon, screen, chosen) if party_index >= 0
next true
end
end
end
elsif cmdToss >= 0 && command == cmdToss # Toss item
qty = @bag.quantity(item)
if qty > 1
helptext = _INTL("Toss out how many {1}?", itm.portion_name_plural)
qty = @scene.pbChooseNumber(helptext, qty)
end
if qty > 0
itemname = (qty > 1) ? itm.portion_name_plural : itm.portion_name
if pbConfirm(_INTL("Is it OK to throw away {1} {2}?", qty, itemname))
pbDisplay(_INTL("Threw away {1} {2}.", qty, itemname))
qty.times { @bag.remove(item) }
@scene.pbRefresh
end
end
elsif cmdRegister >= 0 && command == cmdRegister # Register item
if @bag.registered?(item)
@bag.unregister(item)
else
@bag.register(item)
end
@scene.pbRefresh
elsif cmdDebug >= 0 && command == cmdDebug # Debug
command = 0
loop do
command = @scene.pbShowCommands(_INTL("Do what with {1}?", itemname),
[_INTL("Change quantity"),
_INTL("Make Mystery Gift"),
_INTL("Cancel")], command)
case command
### Cancel ###
when -1, 2
break
### Change quantity ###
when 0
qty = @bag.quantity(item)
itemplural = itm.name_plural
params = ChooseNumberParams.new
params.setRange(0, Settings::BAG_MAX_PER_SLOT)
params.setDefaultValue(qty)
newqty = pbMessageChooseNumber(
_INTL("Choose new quantity of {1} (max. {2}).", itemplural, Settings::BAG_MAX_PER_SLOT), params
) { @scene.pbUpdate }
if newqty > qty
@bag.add(item, newqty - qty)
elsif newqty < qty
@bag.remove(item, qty - newqty)
end
@scene.pbRefresh
break if newqty == 0
### Make Mystery Gift ###
when 1
pbCreateMysteryGift(1, item)
end
end
end
end
($game_temp.fly_destination) ? @scene.dispose : @scene.pbEndScene
return item
end
def pbDisplay(text)
@scene.pbDisplay(text)
end
def pbConfirm(text)
return @scene.pbConfirm(text)
end
# UI logic for the item screen for choosing an item.
def pbChooseItemScreen(proc = nil)
oldlastpocket = @bag.last_viewed_pocket
oldchoices = @bag.last_pocket_selections.clone
@bag.reset_last_selections if proc
@scene.pbStartScene(@bag, true, proc)
item = @scene.pbChooseItem
@scene.pbEndScene
@bag.last_viewed_pocket = oldlastpocket
@bag.last_pocket_selections = oldchoices
return item
end
# UI logic for withdrawing an item in the item storage screen.
def pbWithdrawItemScreen
if !$PokemonGlobal.pcItemStorage
$PokemonGlobal.pcItemStorage = PCItemStorage.new
end
storage = $PokemonGlobal.pcItemStorage
@scene.pbStartScene(storage)
loop do
item = @scene.pbChooseItem
break if !item
itm = GameData::Item.get(item)
qty = storage.quantity(item)
if qty > 1 && !itm.is_important?
qty = @scene.pbChooseNumber(_INTL("How many do you want to withdraw?"), qty)
end
next if qty <= 0
if @bag.can_add?(item, qty)
if !storage.remove(item, qty)
raise "Can't delete items from storage"
end
if !@bag.add(item, qty)
raise "Can't withdraw items from storage"
end
@scene.pbRefresh
dispqty = (itm.is_important?) ? 1 : qty
itemname = (dispqty > 1) ? itm.portion_name_plural : itm.portion_name
pbDisplay(_INTL("Withdrew {1} {2}.", dispqty, itemname))
else
pbDisplay(_INTL("There's no more room in the Bag."))
end
end
@scene.pbEndScene
end
# UI logic for depositing an item in the item storage screen.
def pbDepositItemScreen
@scene.pbStartScene(@bag)
if !$PokemonGlobal.pcItemStorage
$PokemonGlobal.pcItemStorage = PCItemStorage.new
end
storage = $PokemonGlobal.pcItemStorage
loop do
item = @scene.pbChooseItem
break if !item
itm = GameData::Item.get(item)
qty = @bag.quantity(item)
if qty > 1 && !itm.is_important?
qty = @scene.pbChooseNumber(_INTL("How many do you want to deposit?"), qty)
end
if qty > 0
if storage.can_add?(item, qty)
if !@bag.remove(item, qty)
raise "Can't delete items from Bag"
end
if !storage.add(item, qty)
raise "Can't deposit items to storage"
end
@scene.pbRefresh
dispqty = (itm.is_important?) ? 1 : qty
itemname = (dispqty > 1) ? itm.portion_name_plural : itm.portion_name
pbDisplay(_INTL("Deposited {1} {2}.", dispqty, itemname))
else
pbDisplay(_INTL("There's no room to store items."))
end
end
end
@scene.pbEndScene
end
# UI logic for tossing an item in the item storage screen.
def pbTossItemScreen
if !$PokemonGlobal.pcItemStorage
$PokemonGlobal.pcItemStorage = PCItemStorage.new
end
storage = $PokemonGlobal.pcItemStorage
@scene.pbStartScene(storage)
loop do
item = @scene.pbChooseItem
break if !item
itm = GameData::Item.get(item)
if itm.is_important?
@scene.pbDisplay(_INTL("That's too important to toss out!"))
next
end
qty = storage.quantity(item)
itemname = itm.portion_name
itemnameplural = itm.portion_name_plural
if qty > 1
qty = @scene.pbChooseNumber(_INTL("Toss out how many {1}?", itemnameplural), qty)
end
next if qty <= 0
itemname = itemnameplural if qty > 1
next if !pbConfirm(_INTL("Is it OK to throw away {1} {2}?", qty, itemname))
if !storage.remove(item, qty)
raise "Can't delete items from storage"
end
@scene.pbRefresh
pbDisplay(_INTL("Threw away {1} {2}.", qty, itemname))
end
@scene.pbEndScene
end
end
=end