Implemented GameData BagPocket

This commit is contained in:
Maruno17
2024-09-14 01:27:17 +01:00
parent d8263da05e
commit 801c2d35c6
15 changed files with 268 additions and 95 deletions

View File

@@ -896,8 +896,8 @@ def pbItemEditorNew(default_name)
return
end
# Choose a pocket
pocket = PocketProperty.set("", 0)
return if pocket == 0
pocket = PocketProperty.set("", :None)
return if pocket == :None
# Choose a price
price = LimitProperty.new(999_999).set(_INTL("Purchase price"), -1)
return if price == -1

View File

@@ -923,18 +923,21 @@ end
#===============================================================================
module PocketProperty
def self.set(_settingname, oldsetting)
commands = Settings.bag_pocket_names.clone
cmd = pbMessage(_INTL("Choose a pocket for this item."), commands, -1)
return (cmd >= 0) ? cmd + 1 : oldsetting
pockets = GameData::BagPocket.all_pockets
commands = []
pockets.each { |pckt| commands.push(GameData::BagPocket.get(pckt).name) }
initial_val = pockets.index(GameData::BagPocket.get(oldsetting || 1).id)
cmd = pbMessage(_INTL("Choose a pocket for this item."), commands, -1, nil, initial_val)
return (cmd >= 0) ? pockets[cmd] : oldsetting
end
def self.defaultValue
return 1
return GameData::BagPocket.all_pockets.first
end
def self.format(value)
return _INTL("No Pocket") if value == 0
return (value) ? Settings.bag_pocket_names[value - 1] : value.inspect
return _INTL("No Pocket") if value == 0 || value == :None
return (value) ? GameData::BagPocket.get(value).name : value.inspect
end
end

View File

@@ -788,7 +788,7 @@ MenuHandlers.add(:debug_menu, :add_item, {
pbListScreenBlock(_INTL("ADD ITEM"), ItemLister.new) do |button, item|
if button == Input::USE && item
params = ChooseNumberParams.new
params.setRange(1, Settings::BAG_MAX_PER_SLOT)
params.setRange(1, PokemonBag::MAX_PER_SLOT)
params.setInitialValue(1)
params.setCancelValue(0)
qty = pbMessageChooseNumber(_INTL("Add how many {1}?",
@@ -808,7 +808,7 @@ MenuHandlers.add(:debug_menu, :fill_bag, {
"description" => _INTL("Empties the Bag and then fills it with a certain number of every item."),
"effect" => proc {
params = ChooseNumberParams.new
params.setRange(1, Settings::BAG_MAX_PER_SLOT)
params.setRange(1, PokemonBag::MAX_PER_SLOT)
params.setInitialValue(1)
params.setCancelValue(0)
qty = pbMessageChooseNumber(_INTL("Choose the number of items."), params)
@@ -816,11 +816,13 @@ MenuHandlers.add(:debug_menu, :fill_bag, {
$bag.clear
# NOTE: This doesn't simply use $bag.add for every item in turn, because
# that's really slow when done in bulk.
pocket_sizes = Settings::BAG_MAX_POCKET_SIZE
pocket_sizes = {}
GameData::BagPocket.each { |pckt| pocket_sizes[pckt.id] = pckt.max_slots }
bag = $bag.pockets # Called here so that it only rearranges itself once
GameData::Item.each do |i|
next if !pocket_sizes[i.pocket - 1] || pocket_sizes[i.pocket - 1] == 0
next if pocket_sizes[i.pocket - 1] > 0 && bag[i.pocket].length >= pocket_sizes[i.pocket - 1]
next if GameData::BagPocket.get(i.pocket).max_slots
next if !pocket_sizes[i.pocket] || pocket_sizes[i.pocket] == 0
next if pocket_sizes[i.pocket] > 0 && bag[i.pocket].length >= pocket_sizes[i.pocket]
item_qty = (i.is_important?) ? 1 : qty
bag[i.pocket].push([i.id, item_qty])
end