206 lines
6.0 KiB
Lua
206 lines
6.0 KiB
Lua
--[[
|
||
EID features 6 tables for mods to define their descriptions:
|
||
__eidTrinketDescriptions for trinkets
|
||
__eidCardDescriptions for cards
|
||
__eidPillDescriptions for pills
|
||
__eidItemDescriptions for Collectibles / items
|
||
__eidItemTransformations assigns transformation-informations to collectibles
|
||
__eidEntityDescriptions for entities
|
||
__eidEntityDescriptions["ID.Variant.Subtype"] = {"HEADLINE","DESCRIPTION"};
|
||
|
||
To assign a unique description for a specific entity: entity:GetData()["EID_Description"] = {"HEADLINE","DESCRIPTION"}
|
||
|
||
|
||
For example: to add the item "My Item Name" and the Description "Most Fitting Description" do something like this:
|
||
|
||
-- 1. Get your itemid
|
||
local item = Isaac.GetItemIdByName("My Item Name");
|
||
-- 2. Make sure we're not adding to a nil table
|
||
if not __eidItemDescriptions then
|
||
__eidItemDescriptions = {};
|
||
end
|
||
-- 3. Add the description
|
||
__eidItemDescriptions[item] = "Most Fitting Description";
|
||
|
||
--]]
|
||
-- Init variables for other mods to hand over Descriptions if they were not yet inited by another mod.
|
||
if not __eidItemDescriptions then
|
||
__eidItemDescriptions = {}
|
||
end
|
||
if not __eidTrinketDescriptions then
|
||
__eidTrinketDescriptions = {}
|
||
end
|
||
if not __eidCardDescriptions then
|
||
__eidCardDescriptions = {}
|
||
end
|
||
if not __eidPillDescriptions then
|
||
__eidPillDescriptions = {}
|
||
end
|
||
if not __eidItemTransformations then
|
||
__eidItemTransformations = {}
|
||
end
|
||
if not __eidEntityDescriptions then
|
||
__eidEntityDescriptions = {}
|
||
end
|
||
|
||
---------------------------------------------------------------------------
|
||
-------------------------Handle Custom Enum -----------------------------
|
||
|
||
--maps the Player transformation from the enum PlayerForm to the internal transformation table
|
||
-- Possible usages: EID.TRANSFORMATION[ PlayerForm.PLAYERFORM_MUSHROOM ]
|
||
-- EID.TRANSFORMATION.MUSHROOM
|
||
EID.TRANSFORMATION = {
|
||
["GUPPY"] = 1,
|
||
["LORD_OF_THE_FLIES"] = 3,
|
||
["MUSHROOM"] = 2,
|
||
["ANGEL"] = 10,
|
||
["BOB"] = 8,
|
||
["SPUN"] = 5,
|
||
["MOM"] = 6,
|
||
["CONJOINED"] = 4,
|
||
["LEVIATHAN"] = 9,
|
||
["POOP"] = 7,
|
||
["BOOKWORM"] = 12,
|
||
["ADULT"] = 14,
|
||
["SPIDERBABY"] = 13,
|
||
["SUPERBUM"] = 11
|
||
}
|
||
|
||
---------------------------------------------------------------------------
|
||
-------------------------Handle API Functions -----------------------------
|
||
|
||
-- Returns if EID is displaying text right now
|
||
function EID:isDisplayingText()
|
||
return isDisplayingText
|
||
end
|
||
|
||
-- returns the current text position
|
||
function EID:getTextPosition()
|
||
return Vector(EIDConfig["XPosition"], EIDConfig["YPosition"])
|
||
end
|
||
|
||
-- returns the entity that is currently described. returns last described entity if currently not displaying text
|
||
function EID:getLastDescribedEntity()
|
||
return lastDescriptionEntity
|
||
end
|
||
|
||
function EID:getModDescription(list, id)
|
||
return (list) and (list[id])
|
||
end
|
||
|
||
--Get the name of the given transformation by its ID
|
||
function EID:getTransformation(id)
|
||
local str = "Custom"
|
||
if (tonumber(id) <= #transformations - 1) then
|
||
return transformations[tonumber(id) + 1]
|
||
end
|
||
return str
|
||
end
|
||
|
||
-- check if an entity is part of the describable entities
|
||
function EID:hasDescription(entity)
|
||
local isAllowed = false
|
||
if EIDConfig["EnableEntityDescriptions"] then
|
||
isAllowed =
|
||
isAllowed or
|
||
(__eidEntityDescriptions[entity.Type .. "." .. entity.Variant .. "." .. entity.SubType] ~= nil) --[[or type(entity:GetData()["EID_Description"]) ~= type(nil)]]
|
||
end
|
||
isAllowed = isAllowed or (entity.Variant == PickupVariant.PICKUP_COLLECTIBLE and EIDConfig["DisplayItemInfo"])
|
||
isAllowed = isAllowed or (entity.Variant == PickupVariant.PICKUP_TRINKET and EIDConfig["DisplayTrinketInfo"])
|
||
isAllowed = isAllowed or (entity.Variant == PickupVariant.PICKUP_TAROTCARD and EIDConfig["DisplayCardInfo"])
|
||
isAllowed = isAllowed or (entity.Variant == PickupVariant.PICKUP_PILL and EIDConfig["DisplayPillInfo"])
|
||
return entity.Type == EntityType.ENTITY_PICKUP and isAllowed and entity.SubType > 0
|
||
end
|
||
|
||
-- Replaces shorthand-representations of a character with the internal reference
|
||
function EID:replaceMarkupStrings(text)
|
||
text = string.gsub(text, "!!!", "ǃ") -- Turn 3 Exclamations into Warning
|
||
text = string.gsub(text, "\1", "↑") -- Legacy Up Arrow
|
||
text = string.gsub(text, "\2", "↓") -- Legacy Down Arrow
|
||
text = string.gsub(text, "\3", "ǃ") -- Legacy Warning
|
||
text = string.gsub(text, "\6", "\2HEART\2") -- Legacy Heart
|
||
text = string.gsub(text, "\5", "\2KEY\2") -- Legacy Key
|
||
text = string.gsub(text, "\015", "\2COIN\2") -- Legacy Coin
|
||
text = string.gsub(text, "\8\189", "\2BOMB\2") -- Legacy BOMB
|
||
return text
|
||
end
|
||
|
||
-- Returns the icon used for the bulletpoint. It will look at the first character in the given string.
|
||
EID.bulletIcons = {"↑", "↓", "!", "ǃ"}
|
||
function EID:getBulletpointIcon(text)
|
||
for i, v in ipairs(EID.bulletIcons) do
|
||
local iconPos = string.find(text, v)
|
||
if iconPos == 1 or iconPos == 2 then
|
||
return v
|
||
end
|
||
end
|
||
return "\007"
|
||
end
|
||
|
||
--needs to be called in a render Callback
|
||
-- args: string, Vector(int, int), Vector(float,float), KColor obj, bool
|
||
function EID:renderString(str, position, scale, kcolor, centered)
|
||
EID.font:DrawStringScaledUTF8(
|
||
str,
|
||
position.X,
|
||
position.Y,
|
||
scale.X,
|
||
scale.Y,
|
||
kcolor,
|
||
EID.font:GetStringWidthUTF8(str),
|
||
centered
|
||
)
|
||
end
|
||
|
||
-- Get KColor object of "Entity Name" texts
|
||
function EID:getNameColor()
|
||
return KColor(
|
||
EIDConfig["ItemNameColor"][1],
|
||
EIDConfig["ItemNameColor"][2],
|
||
EIDConfig["ItemNameColor"][3],
|
||
EIDConfig["Transparency"],
|
||
0,
|
||
0,
|
||
0
|
||
)
|
||
end
|
||
|
||
-- Get KColor object of "Description" texts
|
||
function EID:getTextColor()
|
||
return KColor(
|
||
EIDConfig["TextColor"][1],
|
||
EIDConfig["TextColor"][2],
|
||
EIDConfig["TextColor"][3],
|
||
EIDConfig["Transparency"],
|
||
0,
|
||
0,
|
||
0
|
||
)
|
||
end
|
||
|
||
-- Get KColor object of "Transformation" texts
|
||
function EID:getTransformationColor()
|
||
return KColor(
|
||
EIDConfig["TransformationColor"][1],
|
||
EIDConfig["TransformationColor"][2],
|
||
EIDConfig["TransformationColor"][3],
|
||
EIDConfig["Transparency"],
|
||
0,
|
||
0,
|
||
0
|
||
)
|
||
end
|
||
|
||
-- Get KColor object of "Error" texts
|
||
function EID:getErrorColor()
|
||
return KColor(
|
||
EIDConfig["ErrorColor"][1],
|
||
EIDConfig["ErrorColor"][2],
|
||
EIDConfig["ErrorColor"][3],
|
||
EIDConfig["Transparency"],
|
||
0,
|
||
0,
|
||
0
|
||
)
|
||
end
|