ItemReminder: Added scrollable passive item list / history

This commit is contained in:
Wofsauge committed 2024-04-24 01:32:10 +02:00
1 parent 8517523d16
commit 2617f6cb14
3 files changed
+61 -23

No files matched your search

-1
View File
@@ -1808,7 +1808,6 @@ function EID:evaluateQueuedItems()
end
-- Put non-active item pickups into the recent item list, for printing in the Item Reminder
table.insert(EID.RecentlyTouchedItems[i], player.QueuedItem.Item.ID)
if (#EID.RecentlyTouchedItems[i] > 8) then table.remove(EID.RecentlyTouchedItems[i], 1) end
end
end
end
+61 -21
View File
@@ -10,6 +10,7 @@ EID.ItemReminderBlacklist = { ["5.100.714"] = true, ["5.100.715"] = true } -- Do
EID.ItemReminderTempDescriptions = {} -- Temporary stores descriptions that will be displayed after everythng got evaluated
EID.ItemReminderSelectedCategory = 0 -- Currently selected category
EID.ItemReminderSelectedPlayer = 0 -- Currently selected player
EID.ItemReminderSelectedItem = 0 -- Currently selected Item
EID.InsideItemReminder = false -- Disable some modifiers, when building the Item Reminder description
-- TODO:
@@ -35,16 +36,16 @@ EID.ItemReminderCategories = {
function(player) EID:ItemReminderHandleGulpedModelingClay(player) end } },
{ id = "Passives", entryGenerators = {
function(player) -- Passive item: Zodiac
if EID.isRepentance and player:HasCollectible(392) then
if EID.isRepentance and player:HasCollectible(392) and not EID:IsCategorySelected("Passives") then
EID:ItemReminderAddDescription(player, 5, 100, 392)
end
end,
function(player) -- Passive item: Echo Chamber
if EID.isRepentance and player:HasCollectible(700) then
if EID.isRepentance and player:HasCollectible(700) and not EID:IsCategorySelected("Passives") then
EID:ItemReminderAddDescription(player, 5, 100, 700)
end
end,
function(player) EID:ItemReminderHandleRecentItems(player) end } },
function(player) EID:ItemReminderHandleSelectedPassiveItem(player) end } },
}
-- Format: ItemID = table
@@ -300,15 +301,12 @@ function EID:ItemReminderAddDescription(player, entityType, variant, subType, ex
end
-- Recently Acquired Item Descriptions
function EID:ItemReminderHandleRecentItems(player)
function EID:ItemReminderHandleSelectedPassiveItem(player)
local playerNum = EID:getPlayerID(player)
if EID.RecentlyTouchedItems[playerNum] then
for i = #EID.RecentlyTouchedItems[playerNum], 1, -1 do
if not EID:ItemReminderCanAddMoreToView() then return end
local recentID = EID.RecentlyTouchedItems[playerNum][i] % GLITCH_ITEM_FLAG
EID:ItemReminderAddDescription(player, 5, 100, recentID)
end
if EID.RecentlyTouchedItems[playerNum] and #EID.RecentlyTouchedItems[playerNum] > 0 then
local index = EID:IsCategorySelected("Passives") and EID.ItemReminderSelectedItem % #EID.RecentlyTouchedItems[playerNum] or 0
local recentID = EID.RecentlyTouchedItems[playerNum][#EID.RecentlyTouchedItems[playerNum] - index] % GLITCH_ITEM_FLAG
EID:ItemReminderAddDescription(player, 5, 100, recentID)
end
end
@@ -421,12 +419,20 @@ function EID:ItemReminderHandleInputs()
lastInputTime = Isaac.GetTime()
lastScrollDirection = 1
elseif Input.IsActionTriggered(EID.Config["ItemReminderNavigateDownButton"], EID.holdTabPlayer.ControllerIndex) and Isaac.GetTime() - lastInputTime > 50 then
EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer - 1) % #EID.coopAllPlayers
if not EID:IsCategorySelected("Passives") then
EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer - 1) % #EID.coopAllPlayers
else
EID.ItemReminderSelectedItem = EID.ItemReminderSelectedItem - 1 -- clamp later
end
EID.ForceRefreshCache = true
lastInputTime = Isaac.GetTime()
elseif Input.IsActionTriggered(EID.Config["ItemReminderNavigateUpButton"], EID.holdTabPlayer.ControllerIndex) and Isaac.GetTime() - lastInputTime > 50 then
EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer + 1) % #EID.coopAllPlayers
if not EID:IsCategorySelected("Passives") then
EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer + 1) % #EID.coopAllPlayers
else
EID.ItemReminderSelectedItem = EID.ItemReminderSelectedItem + 1 -- clamp later
end
EID.ForceRefreshCache = true
lastInputTime = Isaac.GetTime()
@@ -434,6 +440,10 @@ function EID:ItemReminderHandleInputs()
end
end
function EID:IsCategorySelected(categoryID)
return EID.ItemReminderCategories[EID.ItemReminderSelectedCategory + 1].id == categoryID
end
function EID:ItemReminderGetTitle()
local category = EID.ItemReminderCategories[EID.ItemReminderSelectedCategory + 1]
@@ -449,10 +459,14 @@ function EID:ItemReminderGetTitle()
if #EID.coopAllPlayers > 1 then
local currentPlayer = EID.coopAllPlayers[EID.ItemReminderSelectedPlayer + 1]
local playerIcon = EID:GetPlayerIcon(currentPlayer:GetPlayerType())
combinedText = EID.ButtonToIconMap[EID.Config["ItemReminderNavigateDownButton"]] .. " " ..
playerIcon .. " " .. EID.ButtonToIconMap[EID.Config["ItemReminderNavigateUpButton"]] .. " " .. combinedText
end
local playerSelectWidget = playerIcon .. " "
if not EID:IsCategorySelected("Passives") then
playerSelectWidget = EID.ButtonToIconMap[EID.Config["ItemReminderNavigateDownButton"]] .. " " ..
playerIcon .. " " .. EID.ButtonToIconMap[EID.Config["ItemReminderNavigateUpButton"]] .. " "
end
combinedText = playerSelectWidget .. combinedText
end
return combinedText
end
@@ -507,19 +521,45 @@ function EID:ItemReminderGetDescription()
end
-- auto scroll was stopped. reset scroll value
lastAutoScrollPosition = -1
EID.InsideItemReminder = false
return "{{Blank}}#{{Blank}} " .. EID:getDescriptionEntry("ItemReminder", "InventoryEmpty")
end
lastAutoScrollPosition = -1
-- put descriptions into one long description
local finalHoldMapDesc = ""
local finalHoldMapDesc = "{{Blank}}#"
local playerNum = EID:getPlayerID(player)
local numPassives = EID.RecentlyTouchedItems[playerNum] and #EID.RecentlyTouchedItems[playerNum] or 0
if EID:IsCategorySelected("Passives") and numPassives > 1 then
-- handle Scrollable passives list
finalHoldMapDesc = "{{Blank}} " .. EID.ButtonToIconMap[EID.Config["ItemReminderNavigateDownButton"]]
EID.ItemReminderSelectedItem = EID.ItemReminderSelectedItem % numPassives -- clamp selection
-- render icons
local startIndex = numPassives - EID.ItemReminderSelectedItem -- start from end of list
local stopIndex = startIndex - 3
for i = startIndex, stopIndex, -1 do
local index = ((i - 1) % numPassives) + 1
local recentID = EID.RecentlyTouchedItems[playerNum][index] % GLITCH_ITEM_FLAG
if i < 1 and index == startIndex then
-- prevent display of copies of the same icon, when less than 4 passive items were collected
break
end
finalHoldMapDesc = finalHoldMapDesc .. "{{Collectible" .. recentID .. "}} "
end
finalHoldMapDesc = finalHoldMapDesc .. "(" .. (EID.ItemReminderSelectedItem + 1) .. "/" .. numPassives .. ") "
finalHoldMapDesc = finalHoldMapDesc .. EID.ButtonToIconMap[EID.Config["ItemReminderNavigateUpButton"]] .. "#"
end
-- Default: put all descriptions into one long description
for _, entry in ipairs(EID.ItemReminderTempDescriptions) do
finalHoldMapDesc = finalHoldMapDesc .. entry[1] .. " {{ColorEIDObjName}}" .. entry[2] .. "#" .. entry[3] .. "#"
end
finalHoldMapDesc = "{{Blank}}#" .. finalHoldMapDesc
EID.InsideItemReminder = false
return finalHoldMapDesc
end
-1
View File
@@ -1072,7 +1072,6 @@ function EID:onGameUpdate()
local playerID = EID:getPlayerID(player)
EID:InitItemInteractionIfAbsent(playerID)
table.insert(EID.RecentlyTouchedItems[playerID], wisp.SubType)
if (#EID.RecentlyTouchedItems[playerID] > 8) then table.remove(EID.RecentlyTouchedItems[playerID], 1) end
end
end
end