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
elseif Input.IsActionTriggered(EID.Config["ItemReminderNavigateUpButton"], EID.holdTabPlayer.ControllerIndex) and Isaac.GetTime() - lastInputTime > 50 then
if not EID:IsScrollableCategorySelected() then
EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer - 1) % #EID.coopAllPlayers
EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer - 1) % #EID:ItemReminderGetAllPlayers()
else
EID.ItemReminderSelectedItem = EID.ItemReminderSelectedItem - 1 -- clamp later
end
@@ -444,7 +444,7 @@ function EID:ItemReminderHandleInputs()
lastInputTime = Isaac.GetTime()
elseif Input.IsActionTriggered(EID.Config["ItemReminderNavigateDownButton"], EID.holdTabPlayer.ControllerIndex) and Isaac.GetTime() - lastInputTime > 50 then
if not EID:IsScrollableCategorySelected() then
EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer + 1) % #EID.coopAllPlayers
EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer + 1) % #EID:ItemReminderGetAllPlayers()
else
EID.ItemReminderSelectedItem = EID.ItemReminderSelectedItem + 1 -- clamp later
end
@@ -455,6 +455,17 @@ function EID:ItemReminderHandleInputs()
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()
return EID.ItemReminderCategories[EID.ItemReminderSelectedCategory + 1].isScrollable
end
@@ -467,8 +478,9 @@ function EID:ItemReminderHandleInitHoldTab()
local oldDisplayPlayer = EID.ItemReminderSelectedPlayer
-- set currently displayed player to the one who is now holding tab
for i = 1, #EID.coopAllPlayers do
if EID.coopAllPlayers[i] == EID.holdTabPlayer then
local playerList = EID:ItemReminderGetAllPlayers()
for i = 1, #playerList do
if playerList[i] == EID.holdTabPlayer then
EID.ItemReminderSelectedPlayer = i - 1
break
end
@@ -497,9 +509,10 @@ function EID:ItemReminderGetTitle()
end
-- 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 currentPlayer = EID.coopAllPlayers[curPlayerID]
local currentPlayer = playerList[curPlayerID]
local playerIcon = EID:GetPlayerIcon(currentPlayer:GetPlayerType(), "P" .. curPlayerID )
local playerSelectWidget = playerIcon .. " "
@@ -576,7 +589,7 @@ function EID:ItemReminderGetDescription()
currentBlacklist = {}
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
-- execute all functions defined per category