mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2026-01-23 06:46:00 +00:00
Implemented GameData BagPocket
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user