Added whole floor detection on Bag of Crafting, Reworked Bag UI

This commit is contained in:
Wofsauge committed 2021-07-03 22:24:50 +02:00
1 parent ca26193b8f
commit 5480aa3efa
8 files changed
+68 -28

No files matched your search

+3 -2
View File
@@ -667,8 +667,9 @@ EID.descriptions["en_us"].horsepills={
[9999] = {"", "Golden Pill", "Random horse pill effect#Destroys itself after a few uses"}, -- golden Pill [9999] = {"", "Golden Pill", "Random horse pill effect#Destroys itself after a few uses"}, -- golden Pill
} }
EID.descriptions["en_us"].CraftingBagContent = "Pickups in bag:" EID.descriptions["en_us"].CraftingBagContent = "Bag:"
EID.descriptions["en_us"].CraftingRoomContent = "Pickups in room:" EID.descriptions["en_us"].CraftingRoomContent = "Room:"
EID.descriptions["en_us"].CraftingFloorContent = "Floor:"
EID.descriptions["en_us"].CraftingResults = "Results:#(Scroll: Hold TAB + Shoot △/▽)" EID.descriptions["en_us"].CraftingResults = "Results:#(Scroll: Hold TAB + Shoot △/▽)"
EID.descriptions["en_us"].CraftingBagModError = "!!! {{ColorRed}}ERROR:#{{ColorRed}}This feature currently does not support games with modded items installed" EID.descriptions["en_us"].CraftingBagModError = "!!! {{ColorRed}}ERROR:#{{ColorRed}}This feature currently does not support games with modded items installed"
+2 -2
View File
@@ -665,8 +665,8 @@ EID.descriptions["pl"].horsepills={
[9999] = {"", "Złota Pigułka", "Efekt losowej, końskiej pigułki#Niszczy się po kilku użyciach"}, -- golden Pill [9999] = {"", "Złota Pigułka", "Efekt losowej, końskiej pigułki#Niszczy się po kilku użyciach"}, -- golden Pill
} }
EID.descriptions["pl"].CraftingBagContent = "Pickupy w torbie:" EID.descriptions["pl"].CraftingBagContent = "torbie:"
EID.descriptions["pl"].CraftingRoomContent = "Pickupy w pokoju:" EID.descriptions["pl"].CraftingRoomContent = "pokoju:"
EID.descriptions["pl"].CraftingResults = "Wyniki:#(Przewiń: Trzymaj TAB + Strzał △/▽)" EID.descriptions["pl"].CraftingResults = "Wyniki:#(Przewiń: Trzymaj TAB + Strzał △/▽)"
EID.descriptions["pl"].CraftingBagModError = "!!! {{ColorRed}}BŁĄD:#{{ColorRed}}Ta funkcja nie wspiera obecnie zmodowanych przedmiotów" EID.descriptions["pl"].CraftingBagModError = "!!! {{ColorRed}}BŁĄD:#{{ColorRed}}Ta funkcja nie wspiera obecnie zmodowanych przedmiotów"
+2 -2
View File
@@ -632,6 +632,6 @@ EID.descriptions["pt_br"].horsepills={
{"49", "", "↑ Aumenta 1 status aleatório duas vezes#↓ Diminue 1 status aleatório duas vezes#Não vai diminuir com PHD"}, -- Experimental Pill {"49", "", "↑ Aumenta 1 status aleatório duas vezes#↓ Diminue 1 status aleatório duas vezes#Não vai diminuir com PHD"}, -- Experimental Pill
} }
EID.descriptions["pt_br"].CraftingBagContent = "Pickups na mochila:" EID.descriptions["pt_br"].CraftingBagContent = "mochila:"
EID.descriptions["pt_br"].CraftingRoomContent = "Pickups na sala:" EID.descriptions["pt_br"].CraftingRoomContent = "sala:"
EID.descriptions["pt_br"].CraftingResults = "Resultado:#(Rolar: Segurar TAB + Atirar △/▽)" EID.descriptions["pt_br"].CraftingResults = "Resultado:#(Rolar: Segurar TAB + Atirar △/▽)"
+2 -2
View File
@@ -668,7 +668,7 @@ EID.descriptions["ru"].horsepills={
[9999] = {"", "Золотая пилюля", "Эффект случайной лошадиной пилюли#Исчезает после нескольких использований"}, -- golden Pill [9999] = {"", "Золотая пилюля", "Эффект случайной лошадиной пилюли#Исчезает после нескольких использований"}, -- golden Pill
} }
EID.descriptions["ru"].CraftingBagContent = "Предметы в мешке:" EID.descriptions["ru"].CraftingBagContent = "мешке:"
EID.descriptions["ru"].CraftingRoomContent = "Предметы в комнате:" EID.descriptions["ru"].CraftingRoomContent = "комнате:"
EID.descriptions["ru"].CraftingResults = "Результаты:#(Листать: Зажать TAB + Стрелять △/▽)" EID.descriptions["ru"].CraftingResults = "Результаты:#(Листать: Зажать TAB + Стрелять △/▽)"
EID.descriptions["ru"].CraftingBagModError = "!!! {{ColorRed}}ОШИБКА:#{{ColorRed}}Эта функция на данный момент не поддерживается с установленными модами" EID.descriptions["ru"].CraftingBagModError = "!!! {{ColorRed}}ОШИБКА:#{{ColorRed}}Эта функция на данный момент не поддерживается с установленными модами"
+2 -2
View File
@@ -606,7 +606,7 @@ EID.descriptions["spa"].horsepills={
} }
EID.descriptions["spa"].CraftingBagContent = "Recolectables en la bolsa:" EID.descriptions["spa"].CraftingBagContent = "bolsa:"
EID.descriptions["spa"].CraftingRoomContent = "Recolectables de la habitación:" EID.descriptions["spa"].CraftingRoomContent = "habitación:"
EID.descriptions["spa"].CraftingResults = "Resultados:" EID.descriptions["spa"].CraftingResults = "Resultados:"
+2 -2
View File
@@ -668,8 +668,8 @@ EID.descriptions["tr_tr"].horsepills={
[9999] = {"", "Golden Pill", "Rastgele bir at hapı efekti#Birkaç kullanımdan sonra kendini yok eder"}, -- golden Pill [9999] = {"", "Golden Pill", "Rastgele bir at hapı efekti#Birkaç kullanımdan sonra kendini yok eder"}, -- golden Pill
} }
EID.descriptions["tr_tr"].CraftingBagContent = "Çantadaki pickuplar:" EID.descriptions["tr_tr"].CraftingBagContent = "Çantadaki:"
EID.descriptions["tr_tr"].CraftingRoomContent = "Odadaki pickuplar:" EID.descriptions["tr_tr"].CraftingRoomContent = "Odadaki:"
EID.descriptions["tr_tr"].CraftingResults = "Sonuçlar:#(Kaydır: TAB(basılı tut) + Ateş △/▽)" EID.descriptions["tr_tr"].CraftingResults = "Sonuçlar:#(Kaydır: TAB(basılı tut) + Ateş △/▽)"
EID.descriptions["tr_tr"].CraftingBagModError = "!!! {{ColorRed}}HATA:#{{ColorRed}}Bu özellik şu anda modlu itemleri desteklemiyor" EID.descriptions["tr_tr"].CraftingBagModError = "!!! {{ColorRed}}HATA:#{{ColorRed}}Bu özellik şu anda modlu itemleri desteklemiyor"
+47 -15
View File
@@ -501,7 +501,8 @@ local randResultCache = {}
EID.bagOfCraftingOffset = 0 EID.bagOfCraftingOffset = 0
EID.bagOfCraftingCurPickupCount = -1 EID.bagOfCraftingCurPickupCount = -1
EID.bagOfCraftingLastQuery = {} EID.bagOfCraftingRoomQueries = {}
EID.bagOfCraftingFloorQuery = {}
EID.BagItems = {} EID.BagItems = {}
EID.icount = 0 EID.icount = 0
@@ -545,6 +546,15 @@ local function detectModdedItems()
return false return false
end end
local function calcFloorItems()
EID.bagOfCraftingFloorQuery = {}
for _,v in pairs(EID.bagOfCraftingRoomQueries) do
for _,v1 in ipairs(v) do
table.insert(EID.bagOfCraftingFloorQuery, v1)
end
end
end
function EID:handleBagOfCraftingRendering() function EID:handleBagOfCraftingRendering()
trackBagHolding() trackBagHolding()
detectBagContentShift() detectBagContentShift()
@@ -558,33 +568,36 @@ function EID:handleBagOfCraftingRendering()
if detectModdedItems() then if detectModdedItems() then
return false return false
end end
local curRoomIndex = Game():GetLevel():GetCurrentRoomIndex()
local results = {} local results = {}
local floorItems = {} local roomItems = {}
local pickups = Isaac.FindByType(5, -1, -1, true, false) local pickups = Isaac.FindByType(5, -1, -1, true, false)
if EID.bagOfCraftingCurPickupCount ~= #pickups then if EID.bagOfCraftingCurPickupCount ~= #pickups then
for i, entity in ipairs(pickups) do for i, entity in ipairs(pickups) do
local craftingIDs = EID:getBagOfCraftingID(entity.Variant, entity.SubType) local craftingIDs = EID:getBagOfCraftingID(entity.Variant, entity.SubType)
if craftingIDs ~= nil then if craftingIDs ~= nil then
for _,v in ipairs(craftingIDs) do for _,v in ipairs(craftingIDs) do
table.insert(floorItems, v) table.insert(roomItems, v)
end end
end end
end end
EID.bagOfCraftingLastQuery = floorItems EID.bagOfCraftingRoomQueries[curRoomIndex] = roomItems
EID.bagOfCraftingCurPickupCount = #pickups EID.bagOfCraftingCurPickupCount = #pickups
calcFloorItems()
else else
floorItems = EID.bagOfCraftingLastQuery roomItems = EID.bagOfCraftingRoomQueries[curRoomIndex] or {}
end end
local itemQuery = {} local itemQuery = {}
for i, v in ipairs(floorItems) do for i, v in ipairs(EID.bagOfCraftingFloorQuery) do
table.insert(itemQuery, v) table.insert(itemQuery, v)
end end
for i, v in ipairs(EID.BagItems) do for i, v in ipairs(EID.BagItems) do
table.insert(itemQuery, v) table.insert(itemQuery, v)
end end
-- Calculate result from pickups on floor -- Calculate result from pickups on floor
if #itemQuery < 8 then if #itemQuery < 8 then
toggleControls(true) toggleControls(true)
@@ -627,16 +640,35 @@ function EID:handleBagOfCraftingRendering()
end end
local customDescObj = EID:getDescriptionObj(5, 100, 710) local customDescObj = EID:getDescriptionObj(5, 100, 710)
local roomDesc = EID:getDescriptionEntry("CraftingRoomContent") customDescObj.Description = ""
local bagContentDesc = EID:getDescriptionEntry("CraftingBagContent")
local resultDesc = EID:getDescriptionEntry("CraftingResults") if #EID.BagItems >0 then
local bagContentResult = "" if #EID.BagItems >= 8 then
if #EID.BagItems >= 8 then local recipe = EID:calculateBagOfCrafting(EID.BagItems)
local recipe = EID:calculateBagOfCrafting(EID.BagItems) EID:appendToDescription(customDescObj, "{{Collectible"..recipe.."}} ")
bagContentResult = "{{Collectible"..recipe.."}} " end
local bagDesc = EID:getDescriptionEntry("CraftingBagContent").."(Beta)"
EID:appendToDescription(customDescObj, bagDesc..EID:tableToCraftingIconsMerged(EID.BagItems).."#")
end end
customDescObj.Description = bagContentDesc.." (Beta)#"..bagContentResult..EID:tableToCraftingIconsMerged(EID.BagItems).."#" if #roomItems >0 then
customDescObj.Description = customDescObj.Description ..roomDesc.."#"..EID:tableToCraftingIconsMerged(floorItems).."#"..resultDesc if #roomItems == 8 then
local recipe = EID:calculateBagOfCrafting(roomItems)
EID:appendToDescription(customDescObj, "{{Collectible"..recipe.."}} ")
end
local roomDesc = EID:getDescriptionEntry("CraftingRoomContent")
EID:appendToDescription(customDescObj, roomDesc..EID:tableToCraftingIconsMerged(roomItems).."#")
end
if #EID.bagOfCraftingFloorQuery >0 and #roomItems ~= #EID.bagOfCraftingFloorQuery then
if #EID.bagOfCraftingFloorQuery == 8 then
local recipe = EID:calculateBagOfCrafting(EID.bagOfCraftingFloorQuery)
EID:appendToDescription(customDescObj, "{{Collectible"..recipe.."}} ")
end
local floorDesc = EID:getDescriptionEntry("CraftingFloorContent")
EID:appendToDescription(customDescObj, floorDesc..EID:tableToCraftingIconsMerged(EID.bagOfCraftingFloorQuery).."#")
end
local resultDesc = EID:getDescriptionEntry("CraftingResults")
EID:appendToDescription(customDescObj, resultDesc)
if Input.IsActionPressed(ButtonAction.ACTION_MAP, 0) or Input.IsActionPressed(ButtonAction.ACTION_MAP, 1) then if Input.IsActionPressed(ButtonAction.ACTION_MAP, 0) or Input.IsActionPressed(ButtonAction.ACTION_MAP, 1) then
if Input.IsActionTriggered(ButtonAction.ACTION_SHOOTDOWN, 0) or Input.IsActionTriggered(ButtonAction.ACTION_SHOOTDOWN, 1) then if Input.IsActionTriggered(ButtonAction.ACTION_SHOOTDOWN, 0) or Input.IsActionTriggered(ButtonAction.ACTION_SHOOTDOWN, 1) then
+8 -1
View File
@@ -141,6 +141,10 @@ end
-------------------------Handle Sacrifice Room----------------------------- -------------------------Handle Sacrifice Room-----------------------------
function EID:onNewFloor() function EID:onNewFloor()
EID.sacrificeCounter = {} EID.sacrificeCounter = {}
if REPENTANCE then
EID.bagOfCraftingRoomQueries = {}
EID.bagOfCraftingFloorQuery = {}
end
end end
EID:AddCallback(ModCallbacks.MC_POST_NEW_LEVEL, EID.onNewFloor) EID:AddCallback(ModCallbacks.MC_POST_NEW_LEVEL, EID.onNewFloor)
@@ -723,7 +727,9 @@ if EID.MCMLoaded or REPENTANCE then
local savedEIDConfig = json.decode(Isaac.LoadModData(EID)) local savedEIDConfig = json.decode(Isaac.LoadModData(EID))
if REPENTANCE and isSave then if REPENTANCE and isSave then
EID.BagItems = savedEIDConfig["BagContent"] EID.BagItems = savedEIDConfig["BagContent"]
EID.bagOfCraftingRoomQueries = savedEIDConfig["BagFloorContent"]
savedEIDConfig["BagContent"] = nil savedEIDConfig["BagContent"] = nil
savedEIDConfig["BagFloorContent"] = nil
else else
EID.BagItems = {} EID.BagItems = {}
end end
@@ -732,7 +738,7 @@ if EID.MCMLoaded or REPENTANCE then
if savedEIDConfig.Version == EID.Config.Version then if savedEIDConfig.Version == EID.Config.Version then
local isDefaultConfig = true local isDefaultConfig = true
for key, value in pairs(EID.Config) do for key, value in pairs(EID.Config) do
if type(value) ~= type(EID.DefaultConfig[key]) and key ~= "BagContent" then if type(value) ~= type(EID.DefaultConfig[key]) and key ~= "BagContent" and key ~= "BagFloorContent" then
print("EID Warning! : Config value '"..key.."' has wrong data-type. Resetting it to default...") print("EID Warning! : Config value '"..key.."' has wrong data-type. Resetting it to default...")
EID.Config[key] = EID.DefaultConfig[key] EID.Config[key] = EID.DefaultConfig[key]
end end
@@ -761,6 +767,7 @@ if EID.MCMLoaded or REPENTANCE then
function SaveGame() function SaveGame()
if REPENTANCE then if REPENTANCE then
EID.Config["BagContent"] = EID.BagItems or {} EID.Config["BagContent"] = EID.BagItems or {}
EID.Config["BagFloorContent"] = EID.bagOfCraftingRoomQueries or {}
end end
EID.SaveData(EID, json.encode(EID.Config)) EID.SaveData(EID, json.encode(EID.Config))
end end