Added first implementation of Collection page indicator and savegame reader tool

This commit is contained in:
Wofsauge committed 2022-01-30 18:29:35 +01:00
1 parent 16a1d74fd4
commit f4794d569e
11 files changed
+135 -5

No files matched your search

+1
View File
@@ -1,4 +1,5 @@
save1.dat save1.dat
save2.dat save2.dat
save3.dat save3.dat
/scripts/eid_savegames.lua
/.vscode /.vscode
+2
View File
@@ -873,6 +873,8 @@ EID.descriptions[languageCode].transformations={
EID.descriptions[languageCode].VoidText = "If absorbed, gain:" EID.descriptions[languageCode].VoidText = "If absorbed, gain:"
EID.descriptions[languageCode].VoidNames = {"Speed", "Tears", "Damage", "Range", "Shot Speed", "Luck"} EID.descriptions[languageCode].VoidNames = {"Speed", "Tears", "Damage", "Range", "Shot Speed", "Luck"}
EID.descriptions[languageCode].CollectionPageInfo = "This item needs to be picked up for the collection page!"
EID.descriptions[languageCode].MCM = { EID.descriptions[languageCode].MCM = {
DemoObjectName = "Demo Object Name", DemoObjectName = "Demo Object Name",
DemoObjectTransformation = "Demo Transformation", DemoObjectTransformation = "Demo Transformation",
+6
View File
@@ -1258,3 +1258,9 @@ function EID:resumeCoroutines()
if coroutine.resume(v) == false then EID:removeCoroutine(k) end if coroutine.resume(v) == false then EID:removeCoroutine(k) end
end end
end end
-- Returns true if an item needs to be collected for the collection page
function EID:requiredForCollectionPage(itemID)
if not EID.SaveGame or EID.Config["SaveGameNumber"] == 0 then return false end
return not EID.SaveGame[EID.Config["SaveGameNumber"]].ItemCollection[itemID]
end
+18 -2
View File
@@ -294,6 +294,20 @@ EID.UserConfig = {
-- Default = none (-1) -- Default = none (-1)
["CraftingResultButton"] = -1, ["CraftingResultButton"] = -1,
---------- Mouse Controls ------------
-- Savegame which should be used for savegame specific features (for example: Item Collection page progress)
-- Possible values: 0,1,2,3
-- Default: 0 (Deactivate all Savegame features)
["SaveGameNumber"] = 0,
-- Color in which the name of an item should be highlighted, which needs to be collected for the collection page
-- Color names are defined in "eid_data.lua" (line 365)
-- Default: "ColorFade"
["ItemCollectionColor"] = "ColorFade",
---------- Mouse Controls ------------ ---------- Mouse Controls ------------
-- Toggles HUD descriptions based on the mouse position -- Toggles HUD descriptions based on the mouse position
@@ -318,11 +332,11 @@ EID.UserConfig = {
-- Default = [Effect not defined] -- Default = [Effect not defined]
["ErrorMessage"] = "[Effect not defined]", ["ErrorMessage"] = "[Effect not defined]",
-- Set the color of the default description text -- Set the color of the default description text
-- Color names are defined in "eid_data.lua" (line 300) -- Color names are defined in "eid_data.lua" (line 365)
-- Default = "ColorEIDText" -- Default = "ColorEIDText"
["TextColor"] = "ColorEIDText", ["TextColor"] = "ColorEIDText",
-- Set the color of the error description text -- Set the color of the error description text
-- Color names are defined in "eid_data.lua" (line 300) -- Color names are defined in "eid_data.lua" (line 365)
-- Default = "ColorEIDError" -- Default = "ColorEIDError"
["ErrorColor"] = "ColorEIDError", ["ErrorColor"] = "ColorEIDError",
-- Enables or disables custom descriptions for entities -- Enables or disables custom descriptions for entities
@@ -416,6 +430,8 @@ EID.DefaultConfig = {
["CraftingResultButton"] = -1, ["CraftingResultButton"] = -1,
["SpindownDiceResults"] = 3, ["SpindownDiceResults"] = 3,
["SpindownDiceSkipLocked"] = false, ["SpindownDiceSkipLocked"] = false,
["SaveGameNumber"] = 0,
["ItemCollectionColor"] = "ColorFade",
["EnableMouseControls"] = false, ["EnableMouseControls"] = false,
["ShowCursor"] = false, ["ShowCursor"] = false,
["ErrorMessage"] = "[Effect not defined]", ["ErrorMessage"] = "[Effect not defined]",
+10
View File
@@ -391,6 +391,14 @@ if REPENTANCE then
return descObj return descObj
end end
-- Handle Item Collection description addition
local function ItemCollectionPageCallback(descObj)
descObj.Name = "{{"..EID.Config["ItemCollectionColor"].."}}"..descObj.Name
local text = EID:getDescriptionEntry("CollectionPageInfo")
EID:appendToDescription(descObj, "#{{Warning}} {{"..EID.Config["ItemCollectionColor"].."}}"..text)
return descObj
end
-------------------------------- --------------------------------
-- Although individual conditions/callbacks work well for mods to be able to add through the API, -- Although individual conditions/callbacks work well for mods to be able to add through the API,
-- As we kept adding callbacks for vanilla items, a lot of code got repeated over and over -- As we kept adding callbacks for vanilla items, a lot of code got repeated over and over
@@ -410,6 +418,8 @@ if REPENTANCE then
-- Using magic numbers here in case it's slightly faster, and because the callback names give context -- Using magic numbers here in case it's slightly faster, and because the callback names give context
-- Check Birthright first because it overwrites the description instead of appending to it -- Check Birthright first because it overwrites the description instead of appending to it
if descObj.ObjSubType == 619 then table.insert(callbacks, BirthrightCallback) end if descObj.ObjSubType == 619 then table.insert(callbacks, BirthrightCallback) end
if EID:requiredForCollectionPage(descObj.ObjSubType) then table.insert(callbacks, ItemCollectionPageCallback) end
if collectiblesOwned[664] then table.insert(callbacks, BingeEaterCallback) end if collectiblesOwned[664] then table.insert(callbacks, BingeEaterCallback) end
if collectiblesOwned[59] then table.insert(callbacks, BookOfBelialCallback) end if collectiblesOwned[59] then table.insert(callbacks, BookOfBelialCallback) end
+1
View File
@@ -87,6 +87,7 @@ for _,lang in ipairs(EID.Languages) do
end end
table.sort(EID.Languages) table.sort(EID.Languages)
pcall(require,"scripts.eid_savegames")
require("mod_config_menu") require("mod_config_menu")
require("eid_data") require("eid_data")
require("eid_xmldata") require("eid_xmldata")
+65 -3
View File
@@ -1197,12 +1197,74 @@ if MCMLoaded then
) )
end end
---------------------------------------------------------------------------
----------------------------Savegame Config--------------------------------
if EID.SaveGame then
-- Show Item needs Collection
MCM.AddSetting(
"EID",
"Save Game",
{
Type = ModConfigMenu.OptionType.NUMBER,
CurrentSetting = function()
return EID.Config["SaveGameNumber"]
end,
Minimum = 0,
Maximum = 3,
Display = function()
if EID.Config["SaveGameNumber"] == 0 then
return "Current Save Game: 0 (Deactivated)"
end
return "Current Save Game: " .. EID.Config["SaveGameNumber"]
end,
OnChange = function(currentNum)
EID.MCM_OptionChanged = true
EID.Config["SaveGameNumber"] = currentNum
end,
Info = {"Save game you are currently on. This info needs to be set to get the correct lookup tables"}
}
)
-- Needs collection Color
MCM.AddSetting(
"EID",
"Save Game",
{
Type = ModConfigMenu.OptionType.NUMBER,
CurrentSetting = function()
return AnIndexOf(colorNameArray, EID.Config["ItemCollectionColor"])
end,
Minimum = 0,
Maximum = 1000,
Display = function()
if EID.Config["ItemCollectionColor"] == nil then EID.Config["ItemCollectionColor"] = EID.DefaultConfig["ItemCollectionColor"] end
EID.MCMCompat_isDisplayingEIDTab = "Visuals";
return "Collection Page Highlight color: " .. string.gsub(EID.Config["ItemCollectionColor"], "Color", "").. " ("..AnIndexOf(colorNameArray, EID.Config["ItemCollectionColor"]).."/"..#colorNameArray..")"
end,
OnChange = function(currentNum)
EID.MCM_OptionChanged = true
if currentNum == 0 then currentNum = #colorNameArray end
if currentNum > #colorNameArray then currentNum = 1 end
EID.Config["ItemCollectionColor"] = colorNameArray[currentNum]
end,
Info = {"Color in which item names are colored to highlight that this item needs to be collected for the collection page"}
}
)
else
MCM.AddSpace("EID", "Save Game")
MCM.AddSpace("EID", "Save Game")
MCM.AddText("EID", "Save Game", "To enable savegame related features,")
MCM.AddText("EID", "Save Game", "please run \"scripts\\savegame_reader.exe\"")
MCM.AddText("EID", "Save Game", "found in the EID mod folder")
end
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-----------------------------Mouse Controls-------------------------------- -----------------------------Mouse Controls--------------------------------
MCM.AddText("EID", "Mouse", function() return "! THIS FEATURE IS IN EARLY DEVELOPMENT !" end) MCM.AddText("EID", "Mouse", "! THIS FEATURE IS IN EARLY DEVELOPMENT !")
MCM.AddSpace("EID", "Mouse") MCM.AddSpace("EID", "Mouse")
MCM.AddText("EID", "Mouse", function() return "MCM -> General -> Hud Offset" end) MCM.AddText("EID", "Mouse", "MCM -> General -> Hud Offset")
MCM.AddText("EID", "Mouse", function() return "to adjust Hud Offset" end) MCM.AddText("EID", "Mouse", "to adjust Hud Offset")
MCM.AddSpace("EID", "Mouse") MCM.AddSpace("EID", "Mouse")
-- Enable mouse controls -- Enable mouse controls
MCM.AddSetting( MCM.AddSetting(
+20
View File
@@ -0,0 +1,20 @@
The "Savegame_Reader.exe" application can be used to create a LUA readable version of your savegame files.
The resulting informations can then be used by EID to enable the following features:
- Indicate if an item needs to be collected for the collection page
You may need to install "Microsoft .NET 6.0" or greater for this tool to work.
The source code of the application can be found here:
https://github.com/wofsauge/IsaacSavegameReader
SHA-256 Hash:
6ecf16b85ad3ddb1001e43bf54c79f03b04c3c4bd6497b1eb0500be498d26c90
Virus total scan:
https://www.virustotal.com/gui/file/6ecf16b85ad3ddb1001e43bf54c79f03b04c3c4bd6497b1eb0500be498d26c90/detection
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,12 @@
{
"runtimeOptions": {
"tfm": "net6.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "6.0.0"
},
"configProperties": {
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false
}
}
}