ItemReminder: Added scrollable passive item list / history
This commit is contained in:
1 parent
8517523d16
commit
2617f6cb14
3 files changed
+58
-20
No files matched your search
@@ -1808,7 +1808,6 @@ function EID:evaluateQueuedItems()
|
|||||||
end
|
end
|
||||||
-- Put non-active item pickups into the recent item list, for printing in the Item Reminder
|
-- 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)
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+58
-18
@@ -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.ItemReminderTempDescriptions = {} -- Temporary stores descriptions that will be displayed after everythng got evaluated
|
||||||
EID.ItemReminderSelectedCategory = 0 -- Currently selected category
|
EID.ItemReminderSelectedCategory = 0 -- Currently selected category
|
||||||
EID.ItemReminderSelectedPlayer = 0 -- Currently selected player
|
EID.ItemReminderSelectedPlayer = 0 -- Currently selected player
|
||||||
|
EID.ItemReminderSelectedItem = 0 -- Currently selected Item
|
||||||
EID.InsideItemReminder = false -- Disable some modifiers, when building the Item Reminder description
|
EID.InsideItemReminder = false -- Disable some modifiers, when building the Item Reminder description
|
||||||
|
|
||||||
-- TODO:
|
-- TODO:
|
||||||
@@ -35,16 +36,16 @@ EID.ItemReminderCategories = {
|
|||||||
function(player) EID:ItemReminderHandleGulpedModelingClay(player) end } },
|
function(player) EID:ItemReminderHandleGulpedModelingClay(player) end } },
|
||||||
{ id = "Passives", entryGenerators = {
|
{ id = "Passives", entryGenerators = {
|
||||||
function(player) -- Passive item: Zodiac
|
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)
|
EID:ItemReminderAddDescription(player, 5, 100, 392)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
function(player) -- Passive item: Echo Chamber
|
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)
|
EID:ItemReminderAddDescription(player, 5, 100, 700)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
function(player) EID:ItemReminderHandleRecentItems(player) end } },
|
function(player) EID:ItemReminderHandleSelectedPassiveItem(player) end } },
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Format: ItemID = table
|
-- Format: ItemID = table
|
||||||
@@ -300,17 +301,14 @@ function EID:ItemReminderAddDescription(player, entityType, variant, subType, ex
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Recently Acquired Item Descriptions
|
-- Recently Acquired Item Descriptions
|
||||||
function EID:ItemReminderHandleRecentItems(player)
|
function EID:ItemReminderHandleSelectedPassiveItem(player)
|
||||||
local playerNum = EID:getPlayerID(player)
|
local playerNum = EID:getPlayerID(player)
|
||||||
if EID.RecentlyTouchedItems[playerNum] then
|
if EID.RecentlyTouchedItems[playerNum] and #EID.RecentlyTouchedItems[playerNum] > 0 then
|
||||||
for i = #EID.RecentlyTouchedItems[playerNum], 1, -1 do
|
local index = EID:IsCategorySelected("Passives") and EID.ItemReminderSelectedItem % #EID.RecentlyTouchedItems[playerNum] or 0
|
||||||
if not EID:ItemReminderCanAddMoreToView() then return end
|
local recentID = EID.RecentlyTouchedItems[playerNum][#EID.RecentlyTouchedItems[playerNum] - index] % GLITCH_ITEM_FLAG
|
||||||
|
|
||||||
local recentID = EID.RecentlyTouchedItems[playerNum][i] % GLITCH_ITEM_FLAG
|
|
||||||
EID:ItemReminderAddDescription(player, 5, 100, recentID)
|
EID:ItemReminderAddDescription(player, 5, 100, recentID)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
-- Active Item Descriptions
|
-- Active Item Descriptions
|
||||||
function EID:ItemReminderHandleActiveItems(player)
|
function EID:ItemReminderHandleActiveItems(player)
|
||||||
@@ -421,12 +419,20 @@ function EID:ItemReminderHandleInputs()
|
|||||||
lastInputTime = Isaac.GetTime()
|
lastInputTime = Isaac.GetTime()
|
||||||
lastScrollDirection = 1
|
lastScrollDirection = 1
|
||||||
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:IsCategorySelected("Passives") then
|
||||||
EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer - 1) % #EID.coopAllPlayers
|
EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer - 1) % #EID.coopAllPlayers
|
||||||
|
else
|
||||||
|
EID.ItemReminderSelectedItem = EID.ItemReminderSelectedItem - 1 -- clamp later
|
||||||
|
end
|
||||||
|
|
||||||
EID.ForceRefreshCache = true
|
EID.ForceRefreshCache = true
|
||||||
lastInputTime = Isaac.GetTime()
|
lastInputTime = Isaac.GetTime()
|
||||||
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:IsCategorySelected("Passives") then
|
||||||
EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer + 1) % #EID.coopAllPlayers
|
EID.ItemReminderSelectedPlayer = (EID.ItemReminderSelectedPlayer + 1) % #EID.coopAllPlayers
|
||||||
|
else
|
||||||
|
EID.ItemReminderSelectedItem = EID.ItemReminderSelectedItem + 1 -- clamp later
|
||||||
|
end
|
||||||
|
|
||||||
EID.ForceRefreshCache = true
|
EID.ForceRefreshCache = true
|
||||||
lastInputTime = Isaac.GetTime()
|
lastInputTime = Isaac.GetTime()
|
||||||
@@ -434,6 +440,10 @@ function EID:ItemReminderHandleInputs()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function EID:IsCategorySelected(categoryID)
|
||||||
|
return EID.ItemReminderCategories[EID.ItemReminderSelectedCategory + 1].id == categoryID
|
||||||
|
end
|
||||||
|
|
||||||
function EID:ItemReminderGetTitle()
|
function EID:ItemReminderGetTitle()
|
||||||
local category = EID.ItemReminderCategories[EID.ItemReminderSelectedCategory + 1]
|
local category = EID.ItemReminderCategories[EID.ItemReminderSelectedCategory + 1]
|
||||||
|
|
||||||
@@ -449,10 +459,14 @@ function EID:ItemReminderGetTitle()
|
|||||||
if #EID.coopAllPlayers > 1 then
|
if #EID.coopAllPlayers > 1 then
|
||||||
local currentPlayer = EID.coopAllPlayers[EID.ItemReminderSelectedPlayer + 1]
|
local currentPlayer = EID.coopAllPlayers[EID.ItemReminderSelectedPlayer + 1]
|
||||||
local playerIcon = EID:GetPlayerIcon(currentPlayer:GetPlayerType())
|
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
|
return combinedText
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -507,19 +521,45 @@ function EID:ItemReminderGetDescription()
|
|||||||
end
|
end
|
||||||
-- auto scroll was stopped. reset scroll value
|
-- auto scroll was stopped. reset scroll value
|
||||||
lastAutoScrollPosition = -1
|
lastAutoScrollPosition = -1
|
||||||
|
EID.InsideItemReminder = false
|
||||||
return "{{Blank}}#{{Blank}} " .. EID:getDescriptionEntry("ItemReminder", "InventoryEmpty")
|
return "{{Blank}}#{{Blank}} " .. EID:getDescriptionEntry("ItemReminder", "InventoryEmpty")
|
||||||
end
|
end
|
||||||
lastAutoScrollPosition = -1
|
lastAutoScrollPosition = -1
|
||||||
|
|
||||||
-- put descriptions into one long description
|
local finalHoldMapDesc = "{{Blank}}#"
|
||||||
local finalHoldMapDesc = ""
|
|
||||||
|
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
|
for _, entry in ipairs(EID.ItemReminderTempDescriptions) do
|
||||||
finalHoldMapDesc = finalHoldMapDesc .. entry[1] .. " {{ColorEIDObjName}}" .. entry[2] .. "#" .. entry[3] .. "#"
|
finalHoldMapDesc = finalHoldMapDesc .. entry[1] .. " {{ColorEIDObjName}}" .. entry[2] .. "#" .. entry[3] .. "#"
|
||||||
end
|
end
|
||||||
|
|
||||||
finalHoldMapDesc = "{{Blank}}#" .. finalHoldMapDesc
|
|
||||||
|
|
||||||
EID.InsideItemReminder = false
|
EID.InsideItemReminder = false
|
||||||
return finalHoldMapDesc
|
return finalHoldMapDesc
|
||||||
end
|
end
|
||||||
@@ -1072,7 +1072,6 @@ function EID:onGameUpdate()
|
|||||||
local playerID = EID:getPlayerID(player)
|
local playerID = EID:getPlayerID(player)
|
||||||
EID:InitItemInteractionIfAbsent(playerID)
|
EID:InitItemInteractionIfAbsent(playerID)
|
||||||
table.insert(EID.RecentlyTouchedItems[playerID], wisp.SubType)
|
table.insert(EID.RecentlyTouchedItems[playerID], wisp.SubType)
|
||||||
if (#EID.RecentlyTouchedItems[playerID] > 8) then table.remove(EID.RecentlyTouchedItems[playerID], 1) end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in new issue
Block a user