ItemReminder: Fixed Tainted Forgotten and coop-babies behavior

This commit is contained in:
Wofsauge committed 2024-05-12 23:12:04 +02:00
1 parent eb637bb297
commit 55f7b3baaf
1 file changed
+20 -7
+20 -7
View File
@@ -435,7 +435,7 @@ function EID:ItemReminderHandleInputs()
lastScrollDirection = 1 lastScrollDirection = 1
elseif Input.IsActionTriggered(EID.Config["ItemReminderNavigateUpButton"], EID.holdTabPlayer.ControllerIndex) and Isaac.GetTime() - lastInputTime > 50 then elseif Input.IsActionTriggered(EID.Config["ItemReminderNavigateUpButton"], EID.holdTabPlayer.ControllerIndex) and Isaac.GetTime() - lastInputTime > 50 then
if not EID:IsScrollableCategorySelected() then if not EID:IsScrollableCategorySelected() then
EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer - 1) % #EID.coopAllPlayers EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer - 1) % #EID:ItemReminderGetAllPlayers()
else else
EID.ItemReminderSelectedItem = EID.ItemReminderSelectedItem - 1 -- clamp later EID.ItemReminderSelectedItem = EID.ItemReminderSelectedItem - 1 -- clamp later
end end
@@ -444,7 +444,7 @@ function EID:ItemReminderHandleInputs()
lastInputTime = Isaac.GetTime() lastInputTime = Isaac.GetTime()
elseif Input.IsActionTriggered(EID.Config["ItemReminderNavigateDownButton"], EID.holdTabPlayer.ControllerIndex) and Isaac.GetTime() - lastInputTime > 50 then elseif Input.IsActionTriggered(EID.Config["ItemReminderNavigateDownButton"], EID.holdTabPlayer.ControllerIndex) and Isaac.GetTime() - lastInputTime > 50 then
if not EID:IsScrollableCategorySelected() then if not EID:IsScrollableCategorySelected() then
EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer + 1) % #EID.coopAllPlayers EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer + 1) % #EID:ItemReminderGetAllPlayers()
else else
EID.ItemReminderSelectedItem = EID.ItemReminderSelectedItem + 1 -- clamp later EID.ItemReminderSelectedItem = EID.ItemReminderSelectedItem + 1 -- clamp later
end end
@@ -455,6 +455,17 @@ function EID:ItemReminderHandleInputs()
end end
end end
-- special list of all players, ignoring tainted forgotten ghost and coop babies
function EID:ItemReminderGetAllPlayers()
local filteredPlayerList = {}
for i, player in ipairs(EID.coopAllPlayers) do
if not (EID.isRepentance and player:GetPlayerType() == PlayerType.PLAYER_THESOUL_B) and player:GetBabySkin() == -1 then
table.insert(filteredPlayerList, player)
end
end
return filteredPlayerList
end
function EID:IsScrollableCategorySelected() function EID:IsScrollableCategorySelected()
return EID.ItemReminderCategories[EID.ItemReminderSelectedCategory + 1].isScrollable return EID.ItemReminderCategories[EID.ItemReminderSelectedCategory + 1].isScrollable
end end
@@ -467,8 +478,9 @@ function EID:ItemReminderHandleInitHoldTab()
local oldDisplayPlayer = EID.ItemReminderSelectedPlayer local oldDisplayPlayer = EID.ItemReminderSelectedPlayer
-- set currently displayed player to the one who is now holding tab -- set currently displayed player to the one who is now holding tab
for i = 1, #EID.coopAllPlayers do local playerList = EID:ItemReminderGetAllPlayers()
if EID.coopAllPlayers[i] == EID.holdTabPlayer then for i = 1, #playerList do
if playerList[i] == EID.holdTabPlayer then
EID.ItemReminderSelectedPlayer = i - 1 EID.ItemReminderSelectedPlayer = i - 1
break break
end end
@@ -497,9 +509,10 @@ function EID:ItemReminderGetTitle()
end end
-- add player toggle when more than 1 player is present -- add player toggle when more than 1 player is present
if #EID.coopAllPlayers > 1 then local playerList = EID:ItemReminderGetAllPlayers()
if #playerList > 1 then
local curPlayerID = EID.ItemReminderSelectedPlayer + 1 local curPlayerID = EID.ItemReminderSelectedPlayer + 1
local currentPlayer = EID.coopAllPlayers[curPlayerID] local currentPlayer = playerList[curPlayerID]
local playerIcon = EID:GetPlayerIcon(currentPlayer:GetPlayerType(), "P" .. curPlayerID ) local playerIcon = EID:GetPlayerIcon(currentPlayer:GetPlayerType(), "P" .. curPlayerID )
local playerSelectWidget = playerIcon .. " " local playerSelectWidget = playerIcon .. " "
@@ -576,7 +589,7 @@ function EID:ItemReminderGetDescription()
currentBlacklist = {} currentBlacklist = {}
for key, _ in pairs(EID.ItemReminderBlacklist) do currentBlacklist[key] = true end for key, _ in pairs(EID.ItemReminderBlacklist) do currentBlacklist[key] = true end
local player = EID.coopAllPlayers[EID.ItemReminderSelectedPlayer + 1] local player = EID:ItemReminderGetAllPlayers()[EID.ItemReminderSelectedPlayer + 1] or EID.player -- use main player as fallback
if EID.ItemReminderSelectedCategory == 0 or EID.Config["ItemReminderDisplayMode"] == "Classic" then if EID.ItemReminderSelectedCategory == 0 or EID.Config["ItemReminderDisplayMode"] == "Classic" then
-- execute all functions defined per category -- execute all functions defined per category