From bd8b9d18c3a49b940681c7aafaa8c181ef074579 Mon Sep 17 00:00:00 2001 From: Wofsauge Date: Tue, 20 Jul 2021 21:19:00 +0200 Subject: [PATCH] Adds Button Icons and improved bag of crafting controller detection --- descriptions/rep/en_us.lua | 2 +- eid_api.lua | 2 +- eid_bagOfCrafting.lua | 6 +++--- eid_data.lua | 23 +++++++++++++++++++++ resources/gfx/eid_inline_icons.anm2 | 30 +++++++++++++++++++++++++++- resources/gfx/eid_inline_icons.png | Bin 28876 -> 29524 bytes 6 files changed, 57 insertions(+), 6 deletions(-) diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index 4f3de277..c141ec21 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -670,6 +670,6 @@ EID.descriptions["en_us"].horsepills={ EID.descriptions["en_us"].CraftingBagContent = "Bag:" EID.descriptions["en_us"].CraftingRoomContent = "Room:" EID.descriptions["en_us"].CraftingFloorContent = "Floor:" -EID.descriptions["en_us"].CraftingResults = "Results:#(Scroll: Hold TAB + Shoot △/▽)" +EID.descriptions["en_us"].CraftingResults = "Results:#(Scroll: hold {{ButtonSelect}} + {{ButtonY}} {{ButtonA}})" EID.descriptions["en_us"].CraftingBagModError = "!!! {{ColorRed}}ERROR:#{{ColorRed}}This feature currently does not support games with modded items installed" diff --git a/eid_api.lua b/eid_api.lua index 868ab2e9..518f39c1 100644 --- a/eid_api.lua +++ b/eid_api.lua @@ -598,7 +598,7 @@ function EID:renderInlineIcons(spriteTable, posX, posY) for _, sprite in ipairs(spriteTable) do local Xoffset = sprite[1][5] or -1 local Yoffset = sprite[1][6] or 0 - local spriteObj = sprite[1][7] or EID.InlineIconSprite + local spriteObj = (type(sprite[1][7]) == "function" and sprite[1][7]()) or sprite[1][7] or EID.InlineIconSprite if sprite[1][2] >=0 then spriteObj:SetFrame(sprite[1][1], sprite[1][2]) elseif not spriteObj:IsPlaying(sprite[1][1]) or spriteObj:IsFinished(sprite[1][1]) then diff --git a/eid_bagOfCrafting.lua b/eid_bagOfCrafting.lua index c1b31aa5..196d0fde 100644 --- a/eid_bagOfCrafting.lua +++ b/eid_bagOfCrafting.lua @@ -486,7 +486,7 @@ local function shiftBagContent() end local function detectBagContentShift() - if Input.IsActionTriggered(ButtonAction.ACTION_DROP, 0) or Input.IsActionTriggered(ButtonAction.ACTION_DROP, 1) then + if Input.IsActionTriggered(ButtonAction.ACTION_DROP, EID.player.ControllerIndex) then shiftBagContent() end end @@ -671,9 +671,9 @@ function EID:handleBagOfCraftingRendering() EID:appendToDescription(customDescObj, resultDesc) if Input.IsActionPressed(ButtonAction.ACTION_MAP, 0) or Input.IsActionPressed(ButtonAction.ACTION_MAP, 1) then - if Input.IsActionTriggered(ButtonAction.ACTION_SHOOTDOWN, 0) or Input.IsActionTriggered(ButtonAction.ACTION_SHOOTDOWN, 1) then + if Input.IsActionTriggered(ButtonAction.ACTION_SHOOTDOWN, EID.player.ControllerIndex) then EID.bagOfCraftingOffset = math.min(#results-(#results%EID.Config["BagOfCraftingResults"]), EID.bagOfCraftingOffset + EID.Config["BagOfCraftingResults"]) - elseif Input.IsActionTriggered(ButtonAction.ACTION_SHOOTUP, 0) or Input.IsActionTriggered(ButtonAction.ACTION_SHOOTUP, 1) then + elseif Input.IsActionTriggered(ButtonAction.ACTION_SHOOTUP, EID.player.ControllerIndex) then EID.bagOfCraftingOffset = math.max(0, EID.bagOfCraftingOffset - EID.Config["BagOfCraftingResults"]) end toggleControls(false) diff --git a/eid_data.lua b/eid_data.lua index 5f62ae35..b0de85e1 100644 --- a/eid_data.lua +++ b/eid_data.lua @@ -88,6 +88,11 @@ EID.TextReplacementPairs = { {"{{CR}}", "{{ColorReset}}"}, -- Shortcut for Color Resetting {"{{EthernalHeart}}", "{{EternalHeart}}"} -- fix spelling error } +local controllerSprites = Sprite() +controllerSprites:Load("gfx/ui/buttons.anm2", true) +local function getControllerSprite() + return (EID.player.ControllerIndex > 0 and controllerSprites) or EID.InlineIconSprite +end --Format: [SHORTCUT]= {Animationname, Frame, Width, Height, LeftOffset [Default: -1], TopOffset [Default: 0], SpriteObject [Default: EID.InlineIconSprite]} EID.InlineIcons = { @@ -210,6 +215,24 @@ EID.InlineIcons = { ["Quality2"] = {"Quality", 2, 10, 10, 0, 0}, ["Quality3"] = {"Quality", 3, 10, 10, 0, 0}, ["Quality4"] = {"Quality", 4, 10, 10, 0, 0}, + -- Controller Button Icons (XBox based) + ["ButtonY"] = {"XboxOne", 0, 9, 8, 3, 4, function(_) return getControllerSprite() end}, + ["ButtonA"] = {"XboxOne", 1, 9, 8, 3, 4, function(_) return getControllerSprite() end}, + ["ButtonB"] = {"XboxOne", 2, 9, 8, 3, 4, function(_) return getControllerSprite() end}, + ["ButtonX"] = {"XboxOne", 3, 9, 8, 3, 4, function(_) return getControllerSprite() end}, + ["ButtonDDown"] = {"XboxOne", 4, 9, 8, 3, 4, function(_) return getControllerSprite() end}, + ["ButtonDUp"] = {"XboxOne", 5, 8, 9, 3, 4, function(_) return getControllerSprite() end}, + ["ButtonDRight"] = {"XboxOne", 6, 9, 8, 3, 4, function(_) return getControllerSprite() end}, + ["ButtonDLeft"] = {"XboxOne", 7, 9, 8, 3, 4, function(_) return getControllerSprite() end}, + ["ButtonLStick"] = {"XboxOne", 8, 8, 8, 3, 4, controllerSprites}, + ["ButtonRStick"] = {"XboxOne", 9, 8, 8, 3, 4, controllerSprites}, + ["ButtonLB"] = {"XboxOne", 10, 8, 8, 3, 4, function(_) return getControllerSprite() end}, + ["ButtonRB"] = {"XboxOne", 11, 8, 8, 3, 4, function(_) return getControllerSprite() end}, + ["ButtonLT"] = {"XboxOne", 12, 8, 8, 3, 4, function(_) return getControllerSprite() end}, + ["ButtonRT"] = {"XboxOne", 13, 8, 8, 3, 4, function(_) return getControllerSprite() end}, + ["ButtonSelect"] = {"XboxOne", 14, 8, 8, 3, 4, function(_) return getControllerSprite() end}, + ["ButtonMenu"] = {"XboxOne", 15, 8, 8, 3, 4, function(_) return getControllerSprite() end}, + -- Crafting ["Crafting0"] = {"Crafting", 0, 14, 16, -2, -3}, diff --git a/resources/gfx/eid_inline_icons.anm2 b/resources/gfx/eid_inline_icons.anm2 index c78e9982..635e0558 100644 --- a/resources/gfx/eid_inline_icons.anm2 +++ b/resources/gfx/eid_inline_icons.anm2 @@ -1,5 +1,5 @@ - + @@ -330,5 +330,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/gfx/eid_inline_icons.png b/resources/gfx/eid_inline_icons.png index e20261e94446c7342e48453bbc3d555c043187af..e89e78da9ddaad417d68346f3bb98aa6c734f3b2 100644 GIT binary patch delta 10025 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 delta 9484 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