Added Character replacement functions and fixed bulletpoint rendering
This commit is contained in:
1 parent
acea66d6cc
commit
f029e36460
3 files changed
+80
-57
No files matched your search
+41
@@ -64,24 +64,65 @@ function EID:getModDescription(list, id)
|
|||||||
return (list) and (list[id])
|
return (list) and (list[id])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
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
|
||||||
|
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
|
--needs to be called in a render Callback
|
||||||
-- args: string, Vector(int, int), Vector(float,float), KColor obj, bool
|
-- args: string, Vector(int, int), Vector(float,float), KColor obj, bool
|
||||||
function EID:renderString(str, position, scale, kcolor, centered)
|
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)
|
EID.font:DrawStringScaledUTF8(str, position.X, position.Y, scale.X ,scale.Y ,kcolor ,EID.font:GetStringWidthUTF8(str), centered)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Get KColor object of "Entity Name" texts
|
||||||
function EID:getNameColor()
|
function EID:getNameColor()
|
||||||
return KColor(EIDConfig["ItemNameColor"][1] , EIDConfig["ItemNameColor"][2], EIDConfig["ItemNameColor"][3],EIDConfig["Transparency"],0,0,0)
|
return KColor(EIDConfig["ItemNameColor"][1] , EIDConfig["ItemNameColor"][2], EIDConfig["ItemNameColor"][3],EIDConfig["Transparency"],0,0,0)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Get KColor object of "Description" texts
|
||||||
function EID:getTextColor()
|
function EID:getTextColor()
|
||||||
return KColor(EIDConfig["TextColor"][1] , EIDConfig["TextColor"][2], EIDConfig["TextColor"][3],EIDConfig["Transparency"],0,0,0)
|
return KColor(EIDConfig["TextColor"][1] , EIDConfig["TextColor"][2], EIDConfig["TextColor"][3],EIDConfig["Transparency"],0,0,0)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Get KColor object of "Transformation" texts
|
||||||
function EID:getTransformationColor()
|
function EID:getTransformationColor()
|
||||||
return KColor(EIDConfig["TransformationColor"][1] , EIDConfig["TransformationColor"][2], EIDConfig["TransformationColor"][3],EIDConfig["Transparency"],0,0,0)
|
return KColor(EIDConfig["TransformationColor"][1] , EIDConfig["TransformationColor"][2], EIDConfig["TransformationColor"][3],EIDConfig["Transparency"],0,0,0)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Get KColor object of "Error" texts
|
||||||
function EID:getErrorColor()
|
function EID:getErrorColor()
|
||||||
return KColor(EIDConfig["ErrorColor"][1] , EIDConfig["ErrorColor"][2], EIDConfig["ErrorColor"][3],EIDConfig["Transparency"],0,0,0)
|
return KColor(EIDConfig["ErrorColor"][1] , EIDConfig["ErrorColor"][2], EIDConfig["ErrorColor"][3],EIDConfig["Transparency"],0,0,0)
|
||||||
end
|
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
|
||||||
+3
-2
@@ -1,5 +1,5 @@
|
|||||||
local charsToDebug = {
|
local charsToDebug = {
|
||||||
"!!! EID DEBUG MODE ACTIVATED !!!", -- Header
|
EID:replaceMarkupStrings("!!! EID DEBUG MODE ACTIVATED !!!"), -- Header
|
||||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ", -- Caps letters
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZ", -- Caps letters
|
||||||
"abcdefghijklmnopqrstuvwxyz1234567890", -- small letters + numbers
|
"abcdefghijklmnopqrstuvwxyz1234567890", -- small letters + numbers
|
||||||
"western: Áá Àà Ââ Āā Ää Ãã Åå Ææ Éé Èè Êê Ēē Ëë Íí Ìì Îî Īī Ïï ", --
|
"western: Áá Àà Ââ Āā Ää Ãã Åå Ææ Éé Èè Êê Ēē Ëë Íí Ìì Îî Īī Ïï ", --
|
||||||
@@ -8,7 +8,8 @@ local charsToDebug = {
|
|||||||
"cyrillic 1: Аа Бб Вв Гг Дд Ее Ёё Жж Зз Ии Йй Кк Лл Мм Нн Оо",
|
"cyrillic 1: Аа Бб Вв Гг Дд Ее Ёё Жж Зз Ии Йй Кк Лл Мм Нн Оо",
|
||||||
"cyrillic 2: Пп Рр Сс Тт Уу Фф Хх Цц Чч Шш Щщ Ъъ Ыы Ьь Ээ Юю Яя",
|
"cyrillic 2: Пп Рр Сс Тт Уу Фф Хх Цц Чч Шш Щщ Ъъ Ыы Ьь Ээ Юю Яя",
|
||||||
"polish: Ąą Ćć Ęę Łł Ńń Óó Śś Źź Żż",
|
"polish: Ąą Ćć Ęę Łł Ńń Óó Śś Źź Żż",
|
||||||
"custom icons: ↑Positive ↓Negative \007bulletpoint ! ǃ ---- Legacy: \1 = Up \2 = Down \3 = Warning ! \6 = health \5 Key \015 = Coin \8\189 = Bomb",
|
"custom icons: ↑Positive ↓Negative \007bulletpoint !Exclamation ǃWarning !!!shortcut",
|
||||||
|
EID:replaceMarkupStrings("legacy icon Markup: \\1:\1Positive \\2:\2Negative \\3:\3Warning ! \\6:\6 heart \\5:\5 Key \\015:\015 Coin \\8\\189:\8\189 Bomb"),
|
||||||
"emotes: ☆★〠♠♣♥♦♤♧♡♢☀☂♨♪♭♯♂♀",
|
"emotes: ☆★〠♠♣♥♦♤♧♡♢☀☂♨♪♭♯♂♀",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,21 @@
|
|||||||
EID = RegisterMod( "External Item Descriptions" ,1 );
|
EID = RegisterMod( "External Item Descriptions" ,1 );
|
||||||
local itemConfig = Isaac.GetItemConfig()
|
local itemConfig = Isaac.GetItemConfig()
|
||||||
|
|
||||||
|
local lineHeight = 11
|
||||||
|
local isDisplayingText= false
|
||||||
|
local lastDescriptionEntity= nil
|
||||||
|
local hideDescToggle= false
|
||||||
|
|
||||||
|
local IconSprite = Sprite()
|
||||||
|
IconSprite:Load("gfx/icons.anm2", true)
|
||||||
|
|
||||||
|
local ArrowSprite = Sprite()
|
||||||
|
ArrowSprite:Load("gfx/icons.anm2", true)
|
||||||
|
ArrowSprite:Play("Arrow",false)
|
||||||
|
|
||||||
|
local CardSprite = Sprite()
|
||||||
|
CardSprite:Load("gfx/cardfronts.anm2", true)
|
||||||
|
|
||||||
require("eid_config")
|
require("eid_config")
|
||||||
require("mod_config_menu")
|
require("mod_config_menu")
|
||||||
require("descriptions.ab+."..EIDConfig["Language"])
|
require("descriptions.ab+."..EIDConfig["Language"])
|
||||||
@@ -23,48 +38,33 @@ if not EID.font:IsLoaded() then
|
|||||||
Isaac.DebugString("EID - ERROR: Could not load font from '"..modPath.."resources/font/default.fnt".."'")
|
Isaac.DebugString("EID - ERROR: Could not load font from '"..modPath.."resources/font/default.fnt".."'")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--Makes textscale smaller, when using detailed english descriptions
|
--Makes textscale smaller, when using detailed english descriptions
|
||||||
if EIDConfig["Language"]=="en_us_detailed" and EIDConfig["Scale"] > 0.5 then
|
if EIDConfig["Language"]=="en_us_detailed" and EIDConfig["Scale"] > 0.5 then
|
||||||
EIDConfig["Scale"] = 0.5
|
EIDConfig["Scale"] = 0.5
|
||||||
end
|
end
|
||||||
|
|
||||||
local lineHeight = 11
|
|
||||||
local isDisplayingText= false
|
|
||||||
local lastDescriptionEntity= nil
|
|
||||||
local IconSprite = Sprite()
|
|
||||||
IconSprite:Load("gfx/icons.anm2", true)
|
|
||||||
|
|
||||||
local ArrowSprite = Sprite()
|
|
||||||
ArrowSprite:Load("gfx/icons.anm2", true)
|
|
||||||
ArrowSprite:Play("Arrow",false)
|
|
||||||
|
|
||||||
local CardSprite = Sprite()
|
|
||||||
CardSprite:Load("gfx/cardfronts.anm2", true)
|
|
||||||
|
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
-------------------------Handle Sacrifice Room-----------------------------
|
-------------------------Handle Sacrifice Room-----------------------------
|
||||||
local SacrificeCounter = 1
|
local SacrificeCounter = 1
|
||||||
if EIDConfig["DisplaySacrificeInfo"] then
|
if EIDConfig["DisplaySacrificeInfo"] then
|
||||||
|
|
||||||
function onNewFloor()
|
function onNewFloor()
|
||||||
SacrificeCounter = 1
|
SacrificeCounter = 1
|
||||||
end
|
end
|
||||||
EID:AddCallback(ModCallbacks.MC_POST_NEW_LEVEL, onNewFloor)
|
EID:AddCallback(ModCallbacks.MC_POST_NEW_LEVEL, onNewFloor)
|
||||||
|
|
||||||
function onDamage(_,entity,_,flag,source)
|
function onDamage(_,entity,_,flag,source)
|
||||||
if Game():GetRoom():GetType()==RoomType.ROOM_SACRIFICE and source.Type==0 and flag == DamageFlag.DAMAGE_SPIKES then
|
if Game():GetRoom():GetType() == RoomType.ROOM_SACRIFICE and source.Type == 0 and flag == DamageFlag.DAMAGE_SPIKES then
|
||||||
if SacrificeCounter<12 then
|
if SacrificeCounter<12 then
|
||||||
SacrificeCounter= SacrificeCounter+1
|
SacrificeCounter= SacrificeCounter+1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
EID:AddCallback(ModCallbacks.MC_ENTITY_TAKE_DMG, onDamage,EntityType.ENTITY_PLAYER)
|
EID:AddCallback(ModCallbacks.MC_ENTITY_TAKE_DMG, onDamage,EntityType.ENTITY_PLAYER)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
---------------------------Printing Functions------------------------------
|
---------------------------Printing Functions------------------------------
|
||||||
local itemTypes= {"null","passive","active","familiar","trinket"}
|
local itemTypes= {"null","passive","active","familiar","trinket"}
|
||||||
@@ -160,9 +160,9 @@ function printTrinketDescription(desc,typ)
|
|||||||
printBulletPoints(Description,padding)
|
printBulletPoints(Description,padding)
|
||||||
end
|
end
|
||||||
|
|
||||||
function printBulletPoints(Description,padding)
|
function printBulletPoints(description, padding)
|
||||||
local textboxWidth=tonumber(EIDConfig["TextboxWidth"])
|
local textboxWidth=tonumber(EIDConfig["TextboxWidth"])
|
||||||
for line in string.gmatch(Description, '([^#]+)') do
|
for line in string.gmatch(description, '([^#]+)') do
|
||||||
local array={}
|
local array={}
|
||||||
local text = ""
|
local text = ""
|
||||||
for word in string.gmatch(line, '([^ ]+)') do
|
for word in string.gmatch(line, '([^ ]+)') do
|
||||||
@@ -176,24 +176,20 @@ function printBulletPoints(Description,padding)
|
|||||||
table.insert(array, text)
|
table.insert(array, text)
|
||||||
local textColor = EID:getTextColor()
|
local textColor = EID:getTextColor()
|
||||||
for i, v in ipairs(array) do
|
for i, v in ipairs(array) do
|
||||||
if i== 1 then
|
local bpIcon = " " -- no bulletpoint
|
||||||
if string.sub(v, 2, 2)=="↑" or string.sub(v, 2, 2)=="↓" or string.sub(v, 2, 2)=="!" then
|
if i == 1 then
|
||||||
EID:renderString("!"..string.sub(v,3,string.len(v)), Vector(EIDConfig["XPosition"],padding), Vector(EIDConfig["Scale"],EIDConfig["Scale"]), textColor, false)
|
bpIcon = EID:getBulletpointIcon(v)
|
||||||
else
|
|
||||||
EID:renderString("\007"..v, Vector(EIDConfig["XPosition"],padding), Vector(EIDConfig["Scale"],EIDConfig["Scale"]), textColor, false)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
EID:renderString(" "..v, Vector(EIDConfig["XPosition"],padding), Vector(EIDConfig["Scale"],EIDConfig["Scale"]), textColor, false)
|
|
||||||
end
|
end
|
||||||
|
EID:renderString(bpIcon..EID:replaceMarkupStrings(v), Vector(EIDConfig["XPosition"],padding), Vector(EIDConfig["Scale"],EIDConfig["Scale"]), textColor, false)
|
||||||
padding = padding +lineHeight*EIDConfig["Scale"]
|
padding = padding +lineHeight*EIDConfig["Scale"]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function printTransformation(S)
|
function printTransformation(transformationString)
|
||||||
local str="Custom";
|
local str="Custom";
|
||||||
for i = 0, #transformations-1 do
|
for i = 0, #transformations-1 do
|
||||||
if (tonumber(S)==i) then
|
if (tonumber(transformationString)==i) then
|
||||||
str = tostring(transformations[i+1])
|
str = tostring(transformations[i+1])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -261,17 +257,6 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
---------------------------On Render Function------------------------------
|
---------------------------On Render Function------------------------------
|
||||||
local hideDescToggle= false
|
|
||||||
|
|
||||||
-- check if an entity is part of the describable entities
|
|
||||||
local function isEntityAllowed(entity)
|
|
||||||
local isAllowed = false
|
|
||||||
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
|
|
||||||
|
|
||||||
local function onRender(t)
|
local function onRender(t)
|
||||||
isDisplayingText= false
|
isDisplayingText= false
|
||||||
@@ -285,13 +270,9 @@ local function onRender(t)
|
|||||||
if hideDescToggle then return end
|
if hideDescToggle then return end
|
||||||
|
|
||||||
for i, entity in ipairs(Isaac.GetRoomEntities()) do
|
for i, entity in ipairs(Isaac.GetRoomEntities()) do
|
||||||
local isModEntityDesc = false
|
|
||||||
if EIDConfig["EnableEntityDescriptions"] and (__eidEntityDescriptions[entity.Type.."."..entity.Variant.."."..entity.SubType]~=nil --[[or type(entity:GetData()["EID_Description"]) ~= type(nil)]]) then
|
|
||||||
isModEntityDesc= true
|
|
||||||
end
|
|
||||||
if Game():GetRoom():GetType()==RoomType.ROOM_DICE and entity.Type==1000 and entity.Variant== 76 then closestDice= entity end
|
if Game():GetRoom():GetType()==RoomType.ROOM_DICE and entity.Type==1000 and entity.Variant== 76 then closestDice= entity end
|
||||||
|
|
||||||
if isModEntityDesc or isEntityAllowed(entity) then
|
if EID:hasDescription(entity) then
|
||||||
local diff = entity.Position:__sub(player.Position);
|
local diff = entity.Position:__sub(player.Position);
|
||||||
if diff:Length() < dist then
|
if diff:Length() < dist then
|
||||||
closest = entity;
|
closest = entity;
|
||||||
|
|||||||
Reference in new issue
Block a user