Adds feature to remove transformations

This commit is contained in:
Wofsauge committed 2020-11-29 22:28:50 +01:00
1 parent dc9d1f2c7d
commit ae17925f58
3 files changed
+51 -14

No files matched your search

+3
View File
@@ -4,6 +4,9 @@ EID.CustomTransformations = {}
-- Format: [ID.VARIANT.SUBTYPE] = "Transformation Basename or id"
EID.CustomTransformAssignments = {}
-- Format: [ID.VARIANT.SUBTYPE] = "Transformation Basename or id"
EID.CustomTransformRemovals = {}
-- default transformations
-- Format: [ID.VARIANT.SUBTYPE] = "Transformation string"
EID.EntityTransformations = {
+46 -13
View File
@@ -90,7 +90,7 @@ function EID:createTransformation(uniqueName, displayName, language)
EID.CustomTransformations[uniqueName][language] = displayName
end
-- Assigns transformations to an entity
-- Assigns transformations to an entity (Adds to existing transformations)
-- valid target types: [collectible, trinket, card, pill, entity]
-- when type = entity, targetIdentifier must be in the format "ID.Variant.subtype". for any other type, it can just be the id
-- EXAMPLE: EID:assignTransformation("collectible", 1, "My Transformation")
@@ -104,6 +104,24 @@ function EID:assignTransformation(targetType, targetIdentifier, transformationSt
EID.CustomTransformAssignments[entryID] = transformationString
end
-- Removes a transformation of an entity
-- valid target types: [collectible, trinket, card, pill, entity]
-- when type = entity, targetIdentifier must be in the format "ID.Variant.subtype". for any other type, it can just be the id
-- EXAMPLE: EID:removeTransformation("collectible", 1, "My Transformation")
function EID:removeTransformation(targetType, targetIdentifier, transformationString)
local entryID = EID:getIDVariantString(targetType)
if entryID ~= nil then
entryID = entryID.."."..targetIdentifier
else
entryID = targetIdentifier
end
if EID.CustomTransformRemovals[entryID] == nil then
EID.CustomTransformRemovals[entryID] = transformationString
else
EID.CustomTransformRemovals[entryID] = EID.CustomTransformRemovals[entryID]..","..transformationString
end
end
-- Adds a description for a an Entity. Optional parameters: language, transformations
-- when subtype is -1 or empty, it will affect all subtypes of that entity
function EID:addEntity(id, variant, subtype, entityName, description, language)
@@ -245,7 +263,7 @@ function EID:getDescriptionObj(Type, Variant, SubType)
local tableEntry = EID:getDescriptionData(Type, Variant, description.ID)
description.Description =tableEntry and tableEntry[3] or "MISSING DESCRIPTION"
description.Transformation = EID:getTransformation(description.fullItemString)
description.Transformation = EID:getTransformation(Type, Variant, description.ID)
return description
end
@@ -287,20 +305,35 @@ function EID:getDescriptionData(Type, Variant, SubType)
return moddedDesc or legacyModdedDescription or defaultDesc
end
-- Get the transformation uniqueName / ID of a given "ID.Variant.Subtype" pair
-- Example: EID:getTransformation("5.100.34") will return "12" which is the id for Bookworm
function EID:getTransformation(entityIdentifier)
local custom = EID.CustomTransformAssignments[entityIdentifier]
-- Get the transformation uniqueName / ID of a given entity
-- Example: EID:getTransformation(5,100,34) will return "12" which is the id for Bookworm
function EID:getTransformation(id, variant, subType)
local entityString = id.."."..variant.."."..subType
local listToTest = ""
local default = EID.EntityTransformations[entityString]
if default~= nil then listToTest = default end
local customLegacy = nil
local splitString = {}
for identifier in string.gsub(entityIdentifier,"%f[.]%.%f[^.]", "\0"):gmatch("%Z+") do
table.insert(splitString,identifier)
if id == 5 and variant == 100 then
customLegacy = __eidItemTransformations[subType]
if customLegacy~= nil then listToTest = listToTest..","..customLegacy end
end
if splitString[1] == "5" and splitString[2] == "100" then
customLegacy = __eidItemTransformations[splitString[3]]
local custom = EID.CustomTransformAssignments[entityString]
if custom~= nil then listToTest = listToTest..","..custom end
local transformationList = ""
local removedList = EID.CustomTransformRemovals[entityString]
for transform in string.gmatch(listToTest, "([^,]+)") do
local isRemoved = false
if removedList ~= nil then
for removedTransform in string.gmatch(removedList, "([^,]+)") do
if transform == removedTransform then isRemoved = true end
end
end
if not isRemoved then transformationList = transformationList..","..transform end
end
local default = EID.EntityTransformations[entityIdentifier]
return custom or customLegacy or default or "0"
return transformationList
end
--Get the name of the given transformation by its uniqueName / ID
+2 -1
View File
@@ -58,7 +58,8 @@ EID:addIcon("NewTransform1", "hearts", 2, 9, 9, -1, 0, dummySprite)
EID:createTransformation("NewTransform1", "New transformation") -- Transformation
EID:createTransformation("NewTransform1", "New russian transformation", "ru") -- add Transformation name in russian
EID:assignTransformation("collectible", 5, "NewTransform1") -- Add Transformation to My Reflection
EID:assignTransformation("collectible", 5, "NewTransform1,2,3") -- Add Transformation to My Reflection
EID:removeTransformation("collectible", 5, "2") -- Removes a transformation
------ Test: Add all transformations + some customs ones to Inner Eye ------
EID:assignTransformation("collectible", 2, "1,2,3,4,5,6,7,8,9,10,11,12,13,something Custom,NewTransform1")