diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini index 00cb4434..2a142359 100644 --- a/Config/DefaultEngine.ini +++ b/Config/DefaultEngine.ini @@ -28,7 +28,7 @@ AppliedDefaultGraphicsPerformance=Scalable [/Script/Engine.Engine] +ActiveGameNameRedirects=(OldGameName="TP_ThirdPersonBP",NewGameName="/Script/ProjectEleri") +ActiveGameNameRedirects=(OldGameName="/Script/TP_ThirdPersonBP",NewGameName="/Script/ProjectEleri") -GameViewportClientClassName=/Script/CommonUI.CommonGameViewportClient +GameViewportClientClassName=/Script/StevesUEHelpers.StevesGameViewportClientBase SmoothedFrameRateRange=(LowerBound=(Type=Inclusive,Value=0.000000),UpperBound=(Type=Exclusive,Value=200.000000)) [/Script/Engine.RendererSettings] @@ -419,3 +419,4 @@ pcg.GlobalDisableRefresh=True [/Script/Engine.WorldPartitionSettings] bNewMapsEnableWorldPartition=True + diff --git a/Content/EasyInputPrompts/Core/BFL_EasyInputPromptsUtilities.uasset b/Content/EasyInputPrompts/Core/BFL_EasyInputPromptsUtilities.uasset index 33dfd3f5..e9ae2691 100644 --- a/Content/EasyInputPrompts/Core/BFL_EasyInputPromptsUtilities.uasset +++ b/Content/EasyInputPrompts/Core/BFL_EasyInputPromptsUtilities.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a3df5079fd2855468c8ab2334801375598b0e5799876c685c5c6c76444d14b8 -size 458987 +oid sha256:2d7b333fc20c823b554b75ca2e85500cdd79a16647791d7a22ddd503df07a93d +size 462728 diff --git a/Content/EasyInputPrompts/Core/WBP_EasyInputPromptDisplayer.uasset b/Content/EasyInputPrompts/Core/WBP_EasyInputPromptDisplayer.uasset index 4fbe1574..77742e78 100644 --- a/Content/EasyInputPrompts/Core/WBP_EasyInputPromptDisplayer.uasset +++ b/Content/EasyInputPrompts/Core/WBP_EasyInputPromptDisplayer.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:639ea52d1d7e0925154b803d85600ff04ff30a25f9f129423b1b17fcf1c2be15 -size 551683 +oid sha256:49f5ffb140f6c2aa0efd0c54a7b3340e4dbd6e58ea14644f9bcd99cd2fd053b4 +size 553743 diff --git a/Content/Editor/EWBP_FindCommonSHit.uasset b/Content/Editor/EWBP_FindCommonSHit.uasset new file mode 100644 index 00000000..dfabc235 --- /dev/null +++ b/Content/Editor/EWBP_FindCommonSHit.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e88a4585c8d2e54c2cd5b26925a64fad3c72099991f39dfed36ceca8432fcc5e +size 35346 diff --git a/Content/Input/UI/IMCUI_MainUi.uasset b/Content/Input/UI/IMCUI_MainUi.uasset index f3dd8ce6..4bebe555 100644 --- a/Content/Input/UI/IMCUI_MainUi.uasset +++ b/Content/Input/UI/IMCUI_MainUi.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18e0839717c01af014c0e418e13276365dabe2cca84df7339d0096f1fc37fbe1 -size 12623 +oid sha256:0fedbd588f8e998952828d7ba48320b99e01d5435d013a912075921ceae67ebc +size 8155 diff --git a/Content/Scripts/AlchemySystem/AlchemyItemPropertyRow.uasset b/Content/Scripts/AlchemySystem/AlchemyItemPropertyRow.uasset deleted file mode 100644 index 387b322a..00000000 --- a/Content/Scripts/AlchemySystem/AlchemyItemPropertyRow.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e79b648f8add4bfadefe703b0d683dfcd0e3ac357545ac267d61e5d6d4b037d6 -size 68734 diff --git a/Content/Scripts/AlchemySystem/AlchemyPopup.uasset b/Content/Scripts/AlchemySystem/AlchemyPopup.uasset deleted file mode 100644 index 9e9fc081..00000000 --- a/Content/Scripts/AlchemySystem/AlchemyPopup.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:85ae9d3622a060cd60e142584b037eea49e4dc580fe870ec4a2ac2a9bedacfc1 -size 28815 diff --git a/Content/Scripts/AlchemySystem/AlchemyWindow.uasset b/Content/Scripts/AlchemySystem/AlchemyWindow.uasset index 770101e9..fcbf534e 100644 --- a/Content/Scripts/AlchemySystem/AlchemyWindow.uasset +++ b/Content/Scripts/AlchemySystem/AlchemyWindow.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3b268d096401ea2873b6e436b91422c8170cb2cf28defe327bf7d26cfa161980 -size 1594157 +oid sha256:b6bad518099f6731d125dcea851086fd0bd6bf57c3d9e7861ecd8075df2cb7fc +size 1588558 diff --git a/Content/Scripts/AlchemySystem/BP_AlchemyManager.uasset b/Content/Scripts/AlchemySystem/BP_AlchemyManager.uasset index 659df49f..0fe73eb0 100644 --- a/Content/Scripts/AlchemySystem/BP_AlchemyManager.uasset +++ b/Content/Scripts/AlchemySystem/BP_AlchemyManager.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3def34f729bf26b6d4da2087d1ca79ecba501e6831f5fbec89e39ebdd93cf0e3 -size 2860719 +oid sha256:d514803f2c7f8b867d6fc0b6ac1271ac3f3e322305330dda5766ce34c5775d5c +size 2824423 diff --git a/Content/Scripts/AlchemySystem/UI_AlchemyWindow_ItemTooltip.uasset b/Content/Scripts/AlchemySystem/UI_AlchemyWindow_ItemTooltip.uasset deleted file mode 100644 index 7c67c8c5..00000000 --- a/Content/Scripts/AlchemySystem/UI_AlchemyWindow_ItemTooltip.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab3cf43ee191c6266ce1bcb4fb2f8b0b5debdb09d393c699f6b7535eef986bae -size 63385 diff --git a/Content/Scripts/AlchemySystem/W_AlchemyPropertyDot.uasset b/Content/Scripts/AlchemySystem/W_AlchemyPropertyDot.uasset deleted file mode 100644 index b8ef4c39..00000000 --- a/Content/Scripts/AlchemySystem/W_AlchemyPropertyDot.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7117c11c2cf980c43d2ebe52f12169071ae2713b99f8fef4fcfce711df00b011 -size 22613 diff --git a/Content/Scripts/AlchemySystem/W_AlchemySkillButton.uasset b/Content/Scripts/AlchemySystem/W_AlchemySkillButton.uasset deleted file mode 100644 index 0f92dba4..00000000 --- a/Content/Scripts/AlchemySystem/W_AlchemySkillButton.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:46f7a93c4018ca328f13c705e7b792978ac2f37a1950e4381d1a7dcf57c688da -size 72488 diff --git a/Content/Scripts/AlchemySystem/W_AlchemySkillButtonTooltip.uasset b/Content/Scripts/AlchemySystem/W_AlchemySkillButtonTooltip.uasset deleted file mode 100644 index 318f8ea0..00000000 --- a/Content/Scripts/AlchemySystem/W_AlchemySkillButtonTooltip.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:983c0ad9ac5a631508756b205569066583b5e20e00a99e226fe430192663f251 -size 32123 diff --git a/Content/Scripts/AlchemySystem/W_SelectDeselectItemButton.uasset b/Content/Scripts/AlchemySystem/W_SelectDeselectItemButton.uasset deleted file mode 100644 index ba914b18..00000000 --- a/Content/Scripts/AlchemySystem/W_SelectDeselectItemButton.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5b378406687e503e250c411d6e509006afa84fb19a37738aeb45da4ce6667c49 -size 165095 diff --git a/Content/Scripts/Bazar/BP_BazarSellingStand.uasset b/Content/Scripts/Bazar/BP_BazarSellingStand.uasset index 4eee2e69..cff42017 100644 --- a/Content/Scripts/Bazar/BP_BazarSellingStand.uasset +++ b/Content/Scripts/Bazar/BP_BazarSellingStand.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e7ac5b48b47cb36dc7834e955537dbb90c9b6b7bc93b2f80789e0572e64d41e3 -size 319685 +oid sha256:6633a8124c800d1c41c2a474c93d9f033f23c8a31615fef7d216d041f685740f +size 311616 diff --git a/Content/Scripts/Bazar/WBP_BazarScreen.uasset b/Content/Scripts/Bazar/WBP_BazarScreen.uasset index 25edd620..794e99d5 100644 --- a/Content/Scripts/Bazar/WBP_BazarScreen.uasset +++ b/Content/Scripts/Bazar/WBP_BazarScreen.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0673bed21a4315421a99e8f82c25990c787c9d3dc2c0b1f710fec1f243facf61 -size 113878 +oid sha256:d8b7f0d6253ec5f8b2806fc7156def1ace4bff1829b564977e627d61c651e456 +size 107890 diff --git a/Content/Scripts/BookOfAlchemy/BookItemSlot.uasset b/Content/Scripts/BookOfAlchemy/BookItemSlot.uasset deleted file mode 100644 index 2aba79be..00000000 --- a/Content/Scripts/BookOfAlchemy/BookItemSlot.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:76949a24b15585d2ccf6f3181882651f060e67bf710b1ff6c988e33da77614de -size 58983 diff --git a/Content/Scripts/BookOfAlchemy/BookOfAlchemyUI.uasset b/Content/Scripts/BookOfAlchemy/BookOfAlchemyUI.uasset index 76ef794f..f0626c30 100644 --- a/Content/Scripts/BookOfAlchemy/BookOfAlchemyUI.uasset +++ b/Content/Scripts/BookOfAlchemy/BookOfAlchemyUI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c990cdfba3c3b084370e560b04da114272540e0e74ae6037b229f3b95afb087 -size 998689 +oid sha256:212782d78a97b8de033ab417fb519c82cc3fcd217aa9e4e8b533aa663dcdfe73 +size 1073848 diff --git a/Content/Scripts/BookOfAlchemy/W_BoA_PropertyText.uasset b/Content/Scripts/BookOfAlchemy/W_BoA_PropertyText.uasset deleted file mode 100644 index 18b07f02..00000000 --- a/Content/Scripts/BookOfAlchemy/W_BoA_PropertyText.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cfcd06eea09538f3e5c97f398c171a4daa24c5dd00c9c088018985a0f7bed6f8 -size 22506 diff --git a/Content/Scripts/DialogueSystem/DialogueManager.uasset b/Content/Scripts/DialogueSystem/DialogueManager.uasset index 670465d8..c8ca7ffd 100644 --- a/Content/Scripts/DialogueSystem/DialogueManager.uasset +++ b/Content/Scripts/DialogueSystem/DialogueManager.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7fc116f6cc2f21fe82fd867ece8d20343ece8d55e88f15ec592fe780651a895 -size 703589 +oid sha256:0599575153b6803c0c06cd5517b61ac7c177adac02f13788e1b76698197eebfd +size 695471 diff --git a/Content/Scripts/DialogueSystem/UI/QuestingWindow.uasset b/Content/Scripts/DialogueSystem/UI/QuestingWindow.uasset index 81a38738..3d32f04d 100644 --- a/Content/Scripts/DialogueSystem/UI/QuestingWindow.uasset +++ b/Content/Scripts/DialogueSystem/UI/QuestingWindow.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6555b0a074c9e642ff6e9cfb399c032c58f096888619bade12bde18d2e08b9dd -size 585449 +oid sha256:19098596e105964150375bcc55edfb320b448ecd7f12e342e3c5c0371786efc8 +size 608253 diff --git a/Content/Scripts/InventorySystem/Seed/BP_SeedCarousel.uasset b/Content/Scripts/InventorySystem/Seed/BP_SeedCarousel.uasset index 2fa27d86..bf9cc3a7 100644 --- a/Content/Scripts/InventorySystem/Seed/BP_SeedCarousel.uasset +++ b/Content/Scripts/InventorySystem/Seed/BP_SeedCarousel.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b404db6f4ecccadcc556df0e9e42a794905bab1c3489c90beda49a36bcf9de93 -size 1256379 +oid sha256:ebbac205e29c7e473f3d69f22365b5ca4f5eb69fd44ba93f9fdd0a9fad0055d0 +size 1246962 diff --git a/Content/Scripts/InventorySystem/UI/InventoryScreenWrapper.uasset b/Content/Scripts/InventorySystem/UI/InventoryScreenWrapper.uasset index f93b5c4b..3ddaba34 100644 --- a/Content/Scripts/InventorySystem/UI/InventoryScreenWrapper.uasset +++ b/Content/Scripts/InventorySystem/UI/InventoryScreenWrapper.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:06a3983e20731e5b75780425346978db4a0293659a7defa96282c312c2499401 -size 1380909 +oid sha256:ecb24f2cb92b0ecc591faebb426847918507f75bd455a7a0a100bae9a1d674df +size 1302772 diff --git a/Content/Scripts/MODULES/W_ChemicalAlignments.uasset b/Content/Scripts/MODULES/W_ChemicalAlignments.uasset index 1e5ec533..91c072fa 100644 --- a/Content/Scripts/MODULES/W_ChemicalAlignments.uasset +++ b/Content/Scripts/MODULES/W_ChemicalAlignments.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e767b9dcf7b4fa1f4dd26f66ac93a1e187a9d6ab2ef9b3370b34a4a4f8905e90 -size 117315 +oid sha256:8cb238a767239e99f3a07feec73b850d179ec6d2ce8308c6041a364f073fcf7f +size 139105 diff --git a/Content/Scripts/ShopAndTradeSystem/WBP_TradeWidget.uasset b/Content/Scripts/ShopAndTradeSystem/WBP_TradeWidget.uasset index 4c45107e..8bb4174b 100644 --- a/Content/Scripts/ShopAndTradeSystem/WBP_TradeWidget.uasset +++ b/Content/Scripts/ShopAndTradeSystem/WBP_TradeWidget.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:833a7e31372e2b48d89e188543f4e151357da13a7fa3eb25a764451fe5c21fe6 -size 883410 +oid sha256:73477550b0e9e0ace666b73d4e2fe719d4db52e2815bafb0c8b28c7f603895da +size 871141 diff --git a/Content/ThirdPersonBP/Blueprints/BP_ThirdPersonCharacter.uasset b/Content/ThirdPersonBP/Blueprints/BP_ThirdPersonCharacter.uasset index 1125ac1c..6966bf56 100644 --- a/Content/ThirdPersonBP/Blueprints/BP_ThirdPersonCharacter.uasset +++ b/Content/ThirdPersonBP/Blueprints/BP_ThirdPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:69189e82a38180676c16ae954e069d8755eabe262a6a244f220eba6f754fa203 -size 1409108 +oid sha256:2ca33e17f125f636a69e01c7f82596bc584941bf9cdbe69f15698378a29b44ff +size 1400575 diff --git a/Content/UI/Calendar/WBP_CalendarScreen.uasset b/Content/UI/Calendar/WBP_CalendarScreen.uasset index 08a649c2..edcd300f 100644 --- a/Content/UI/Calendar/WBP_CalendarScreen.uasset +++ b/Content/UI/Calendar/WBP_CalendarScreen.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9725e8ea87e4d9e2755dddc81638cebbabe22efa9f07e04f183a8bd9b79d9c6b -size 231647 +oid sha256:973e3ee2667441c38f83157a5c0431a1b2936f925bdf19d3cf3b9670e43472b9 +size 223876 diff --git a/Content/UI/Calendar/WBP_Calendar_Day.uasset b/Content/UI/Calendar/WBP_Calendar_Day.uasset index 2aef856d..6d7b9708 100644 --- a/Content/UI/Calendar/WBP_Calendar_Day.uasset +++ b/Content/UI/Calendar/WBP_Calendar_Day.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:957bb50fc1da4dcf682cf5d1cb852f52b0d1212d8a7d4a0aa83702a814f756c7 -size 62720 +oid sha256:271fbba29994aa3587b824f3177ca83ea7d54cda689af8baee927a6d159d8fdd +size 61783 diff --git a/Content/UI/MainMenuScreenUI.uasset b/Content/UI/MainMenuScreenUI.uasset index 0f560136..6a3ad377 100644 --- a/Content/UI/MainMenuScreenUI.uasset +++ b/Content/UI/MainMenuScreenUI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89ce39f727315f19838185acc295a366fa93fd6c0da86c7ab8460d55e53b0a02 -size 487848 +oid sha256:f986fad7cfa2112aed558adfda06e6b1ad815713217cc59006cb1f4c320caa8b +size 487276 diff --git a/Content/UI/MainUI.uasset b/Content/UI/MainUI.uasset index 1be91066..870194c0 100644 --- a/Content/UI/MainUI.uasset +++ b/Content/UI/MainUI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c2af5a7a546c72bd283cd66ddf065e761c28f8db38cee35bc5a5b8520c5712f0 -size 613295 +oid sha256:1fbfd7c81058f72b53d7a326f5e78fc4a5395daa695d33a23d0e82cb84fd2b16 +size 610902 diff --git a/Content/UI/Modules/Buttons/UIM_SquareDefaultTAB.uasset b/Content/UI/Modules/Buttons/UIM_SquareDefaultTAB.uasset index 4466d398..3e4cb12d 100644 --- a/Content/UI/Modules/Buttons/UIM_SquareDefaultTAB.uasset +++ b/Content/UI/Modules/Buttons/UIM_SquareDefaultTAB.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4dc445f00f0dd923da0d980a1d09a05a40aa118260d0e623a60a86ae81109fc5 -size 150563 +oid sha256:acabbd8c386b58d84dc6908eaf17be1a6d64e851940777268f070f54e1af281b +size 171526 diff --git a/Content/UI/Modules/UI_AmountPicker.uasset b/Content/UI/Modules/UI_AmountPicker.uasset index 4e7a025a..4871ae04 100644 --- a/Content/UI/Modules/UI_AmountPicker.uasset +++ b/Content/UI/Modules/UI_AmountPicker.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:84955da619696672e13905b3edd34606a12985d99d1bfc7d5e865302ac6f0bc2 -size 417731 +oid sha256:24dc5359b7400de5189b57c2bc8d5b8692c8dc2fbd8ead43b92cd72153e58a75 +size 433851 diff --git a/Content/UI/Modules/WBP_PaperTabWidget.uasset b/Content/UI/Modules/WBP_PaperTabWidget.uasset index 56e3a076..df18dd25 100644 --- a/Content/UI/Modules/WBP_PaperTabWidget.uasset +++ b/Content/UI/Modules/WBP_PaperTabWidget.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f57c347ddc0010040331807a87ad6a35babe8f5fa67b58ad6a24228c10804924 -size 109181 +oid sha256:3567259d76e037479336a84c8d4269a1faad273e45733563f9e683c3cb21d3b1 +size 200120 diff --git a/Content/UI/Modules/WBP_SelectionPanel.uasset b/Content/UI/Modules/WBP_SelectionPanel.uasset index 212188a1..52fb315d 100644 --- a/Content/UI/Modules/WBP_SelectionPanel.uasset +++ b/Content/UI/Modules/WBP_SelectionPanel.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb8fe45278a76bafebb626335d0e104eb19b7a9c0604a51bdf4804d7baf8b44d -size 183154 +oid sha256:d557b927d4267fc4fb41895bfcde7c986675d98d8c16b0e8171f7672b00554a0 +size 172580 diff --git a/Content/UI/Modules/WBP_SelectionPanel_Button.uasset b/Content/UI/Modules/WBP_SelectionPanel_Button.uasset index 371a6d09..6792868a 100644 --- a/Content/UI/Modules/WBP_SelectionPanel_Button.uasset +++ b/Content/UI/Modules/WBP_SelectionPanel_Button.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d097f218e8d4402e051daa55454abf760070293f17d073f6aa6c23bfe51a593 -size 119298 +oid sha256:e687e3fdf1d03e2f04b9298ae49ea0ca039e802b679d31d96176722bcdba3c23 +size 136960 diff --git a/Content/UI/Styles/Text/DT_EleriTextStyles.uasset b/Content/UI/Styles/Text/DT_EleriTextStyles.uasset new file mode 100644 index 00000000..0ed4623e --- /dev/null +++ b/Content/UI/Styles/Text/DT_EleriTextStyles.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc34f77e21544a173df15a49c64752d454ee85a9635c130c0d1eede66ba71723 +size 4550 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/FR/P3GK359CLJH40T3VDWEQ1D.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/FR/P3GK359CLJH40T3VDWEQ1D.uasset index 521cc902..8060bebb 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/FR/P3GK359CLJH40T3VDWEQ1D.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/FR/P3GK359CLJH40T3VDWEQ1D.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e763757fef28d5332af24a9890e9bc048834e55bdff2efd50ab2cd4cbf203656 -size 31077 +oid sha256:b3397088f3f3b5cdb56760df35ee3ae3995d22fccda2ff2f7e200e97729eb6c1 +size 30993 diff --git a/Source/ProjectEleri/Private/EleriPlayerController.cpp b/Source/ProjectEleri/Private/EleriPlayerController.cpp index 25b40034..a16394de 100644 --- a/Source/ProjectEleri/Private/EleriPlayerController.cpp +++ b/Source/ProjectEleri/Private/EleriPlayerController.cpp @@ -14,6 +14,7 @@ #include "Kismet/GameplayStatics.h" #include "BookOfAlchemyManager.h" #include "AlchemyManager.h" +#include "TimerManager.h" #include "ProjectEleri/UI/CalendarScreen.h" #include "ProjectEleri/UI/InteractionWidget.h" #include "UI/AlchemyWidget.h" @@ -81,11 +82,11 @@ void AEleriPlayerController::Tick(float DeltaTime) i--; } } - if (!InMenu && !bIsInteractionMenuVisible) + if (!IsInMenu() && !bIsInteractionMenuVisible) { ToggleInteractionMenu(true); } - else if (InMenu && bIsInteractionMenuVisible) + else if (IsInMenu() && bIsInteractionMenuVisible) { ToggleInteractionMenu(false); } @@ -327,7 +328,7 @@ void AEleriPlayerController::ClientRestart_Implementation(APawn *NewPawn) void AEleriPlayerController::OnMove(const FInputActionValue &Value) { - if (InMenu) + if (IsInMenu()) return; FVector2D AnalogueValue = Value.Get(); @@ -351,7 +352,7 @@ void AEleriPlayerController::OnMove(const FInputActionValue &Value) void AEleriPlayerController::OnSprint(const FInputActionValue &Value) { - if (InMenu || Watering) + if (IsInMenu() || Watering) return; ACharacter *Char = GetCharacter(); @@ -380,7 +381,7 @@ void AEleriPlayerController::OnStopSprint(const FInputActionValue &Value) void AEleriPlayerController::OnJump(const FInputActionValue &Value) { - if (InMenu || Watering) + if (IsInMenu() || Watering) return; ACharacter *Char = GetCharacter(); @@ -401,7 +402,7 @@ void AEleriPlayerController::OnStopJump(const FInputActionValue &Value) void AEleriPlayerController::OnLook(const FInputActionValue &Value) { - if (InMenu) + if (IsInMenu()) return; FVector2D AnalogueValue = Value.Get(); @@ -415,7 +416,7 @@ void AEleriPlayerController::OnLook(const FInputActionValue &Value) void AEleriPlayerController::OnLookEnable(const FInputActionValue &Value) { - if (InMenu) + if (IsInMenu()) return; AMyCharacter *Char = Cast(GetCharacter()); @@ -427,7 +428,7 @@ void AEleriPlayerController::OnLookEnable(const FInputActionValue &Value) void AEleriPlayerController::OnLookDisable(const FInputActionValue &Value) { - if (InMenu) + if (IsInMenu()) return; AMyCharacter *Char = Cast(GetCharacter()); @@ -550,7 +551,7 @@ void AEleriPlayerController::OnStartObjectRemovalAction(const FInputActionValue return; } - if (InMenu || Paused) + if (IsInMenu() || Paused) return; MoveActorsComp->StartObjectRemoval(!MoveActorsComp->IsRemovingMode()); @@ -789,7 +790,7 @@ void AEleriPlayerController::OnInteractionMenuDownAction(const FInputActionValue void AEleriPlayerController::OnControllerUpAction(const FInputActionValue &Value) { - if (InMenu) + if (IsInMenu()) { OnUiButtonPressed.Broadcast(UiInputType::UP); } @@ -797,7 +798,7 @@ void AEleriPlayerController::OnControllerUpAction(const FInputActionValue &Value void AEleriPlayerController::OnControllerDownAction(const FInputActionValue &Value) { - if (InMenu) + if (IsInMenu()) { OnUiButtonPressed.Broadcast(UiInputType::DOWN); } @@ -805,7 +806,7 @@ void AEleriPlayerController::OnControllerDownAction(const FInputActionValue &Val void AEleriPlayerController::OnControllerLeftAction(const FInputActionValue &Value) { - if (InMenu) + if (IsInMenu()) { OnUiButtonPressed.Broadcast(UiInputType::LEFT); } @@ -813,7 +814,7 @@ void AEleriPlayerController::OnControllerLeftAction(const FInputActionValue &Val void AEleriPlayerController::OnControllerRightAction(const FInputActionValue &Value) { - if (InMenu) + if (IsInMenu()) { OnUiButtonPressed.Broadcast(UiInputType::RIGHT); } @@ -821,34 +822,43 @@ void AEleriPlayerController::OnControllerRightAction(const FInputActionValue &Va void AEleriPlayerController::OnControllerConfirmAction(const FInputActionValue &Value) { - if (InMenu) + if (MainGameUI->GetWidgetStack().IsEmpty()) { - OnUiButtonPressed.Broadcast(UiInputType::SELECT); + return; } + + MainGameUI->GetWidgetStack()[MainGameUI->GetWidgetStack().Num() - 1]->HandleUiInputAction(EEleriUIInputAction::Select); } void AEleriPlayerController::OnControllerBackAction(const FInputActionValue &Value) { - if (InMenu) + OnUiButtonPressed.Broadcast(UiInputType::BACK); + if (MainGameUI->GetWidgetStack().IsEmpty()) { - OnUiButtonPressed.Broadcast(UiInputType::BACK); + return; } + + MainGameUI->GetWidgetStack()[MainGameUI->GetWidgetStack().Num() - 1]->HandleUiInputAction(EEleriUIInputAction::Back); } void AEleriPlayerController::OnControllerTabLeftAction(const FInputActionValue &Value) { - if (InMenu) + if (MainGameUI->GetWidgetStack().IsEmpty()) { - OnUiButtonPressed.Broadcast(UiInputType::TABLEFT); + return; } + + MainGameUI->GetWidgetStack()[MainGameUI->GetWidgetStack().Num() - 1]->HandleUiInputAction(EEleriUIInputAction::TabLeft); } void AEleriPlayerController::OnControllerTabRightAction(const FInputActionValue &Value) { - if (InMenu) + if (MainGameUI->GetWidgetStack().IsEmpty()) { - OnUiButtonPressed.Broadcast(UiInputType::TABRIGHT); + return; } + + MainGameUI->GetWidgetStack()[MainGameUI->GetWidgetStack().Num() - 1]->HandleUiInputAction(EEleriUIInputAction::TabRight); } // UI BIND @@ -870,39 +880,23 @@ void AEleriPlayerController::OnMainMenuToggle(const FInputActionValue &Value) void AEleriPlayerController::OnInventoryToggle(const FInputActionValue &Value) { - if (Paused || IsDialogueOpen() || !MoveActorsComp || MoveActorsComp->IsRemovingMode()) + if (Paused || (IsInMenu() && !MainGameUI->IsInventoryOpen()) || !MoveActorsComp || MoveActorsComp->IsRemovingMode()) return; - if (!MainGameUI->IsInventoryOpen()) - { - // Open inventory - OpenInventory(false, false, nullptr, TArray()); - } - else - { - // Closing inventory - CloseInventory(); - } + OpenInventory(false, false, nullptr, TArray()); } void AEleriPlayerController::OnBookToggle(const FInputActionValue &Value) { - if (Paused || IsDialogueOpen() || (InMenu && !MainGameUI->IsBookOpen()) || !MoveActorsComp || MoveActorsComp->IsRemovingMode()) + if (Paused || IsDialogueOpen() || (IsInMenu() && !MainGameUI->IsBookOpen()) || !MoveActorsComp || MoveActorsComp->IsRemovingMode()) return; - if (!MainGameUI->IsBookOpen()) - { - OpenBookOfAlchemy(nullptr); - } - else - { - CloseBookOfAlchemy(); - } + OpenBookOfAlchemy(nullptr); } void AEleriPlayerController::OnOrdersToggle(const FInputActionValue &Value) { - if (Paused || IsDialogueOpen() || InMenu || !MoveActorsComp || MoveActorsComp->IsRemovingMode()) + if (Paused || IsDialogueOpen() || IsInMenu() || !MoveActorsComp || MoveActorsComp->IsRemovingMode()) return; if (OrdersOpen) @@ -925,7 +919,7 @@ void AEleriPlayerController::OnOrdersToggle(const FInputActionValue &Value) void AEleriPlayerController::OnCalendarToggle(const FInputActionValue &Value) { - if (Paused || IsDialogueOpen() || (InMenu && !MainGameUI->IsBookOpen()) || !MoveActorsComp || MoveActorsComp->IsRemovingMode()) + if (Paused || IsDialogueOpen() || (IsInMenu() && !MainGameUI->IsBookOpen()) || !MoveActorsComp || MoveActorsComp->IsRemovingMode()) return; if (!MainGameUI->IsCalendarOpen()) @@ -1017,31 +1011,16 @@ UUserWidget *AEleriPlayerController::OpenInventory(bool JustSelecting, bool Shop // If we pass something we're opening a shop/trade and the other inventory is the npc inventory UInventoryComponent *MainInv = PlayerInventory; UInventoryComponent *OtherInv = IsValid(Inventory) ? Inventory : nullptr; - MainGameUI->ToggleInventoryWidget(true); + MainGameUI->OpenWidget(MainGameUI->GetInventoryWidget()); MainGameUI->GetInventoryWidget()->ToggleWidget(true); MainGameUI->GetInventoryWidget()->Setup(MainInv, OtherInv, Shop, JustSelecting, RestrictTabs, bSelectMultiple, bShowDescription, bShowPropertyMap); - AddToMenuStack(MainGameUI->GetInventoryWidget()); - SetShowMouseCursor(true); - SetInputMode(FInputModeGameAndUI()); - InMenu = true; - // Get the Enhanced Input Local Player Subsystem from the Local Player related to our Player Controller. - if (UEnhancedInputLocalPlayerSubsystem *Subsystem = ULocalPlayer::GetSubsystem(GetLocalPlayer())) - { - // If for whatever reason... - Subsystem->RemoveMappingContext(MainUiContext); - // Add each mapping context, along with their priority values. Higher values outprioritize lower values. - Subsystem->AddMappingContext(MainUiContext, 98); - } - - // SetPause(true); return MainGameUI->GetInventoryWidget(); } void AEleriPlayerController::CloseInventory() { - MainGameUI->ToggleInventoryWidget(false); - CloseGenericMenu(MainGameUI->GetInventoryWidget()); + MainGameUI->CloseWidget(MainGameUI->GetInventoryWidget()); } UUserWidget *AEleriPlayerController::OpenBookOfAlchemy(UItemDataAsset *ItemToPresent) @@ -1052,11 +1031,7 @@ UUserWidget *AEleriPlayerController::OpenBookOfAlchemy(UItemDataAsset *ItemToPre bBookAnimating = true; MainGameUI->GetBookWidget()->Setup(ItemToPresent, false); PlayerCharacter->ToggleBook(true); - AddToMenuStack(MainGameUI->GetBookWidget()); - SetShowMouseCursor(true); - SetInputMode(FInputModeGameAndUI()); MainGameUI->ToggleBookWidget(true); - InMenu = true; MainGameUI->ToggleGameMenu(false); @@ -1070,7 +1045,6 @@ UUserWidget *AEleriPlayerController::OpenBookOfAlchemy(UItemDataAsset *ItemToPre } TickBookAnimating = true; - SetPause(true); return MainGameUI->GetBookWidget(); } @@ -1081,14 +1055,13 @@ void AEleriPlayerController::CloseBookOfAlchemy() return; bBookAnimating = true; - MainGameUI->ToggleBookWidget(false); - CloseGenericMenu(MainGameUI->GetBookWidget()); // for the animation of closing FTimerHandle TimerHandle; GetWorld()->GetTimerManager().SetTimer(TimerHandle, FTimerDelegate::CreateLambda([this]() - { MainGameUI->ToggleGameMenu(true); }), - 0.5f, false); + { + MainGameUI->ToggleGameMenu(true); + }), 0.5f, false); // Get the Enhanced Input Local Player Subsystem from the Local Player related to our Player Controller. if (UEnhancedInputLocalPlayerSubsystem *Subsystem = ULocalPlayer::GetSubsystem(GetLocalPlayer())) @@ -1172,8 +1145,6 @@ UEleriBaseWidget *AEleriPlayerController::ToggleAlchemyMenu(bool bOpen) SetShowMouseCursor(bOpen); MainGameUI->ToggleAlchemyWidget(bOpen); - InMenu = bOpen; - // SetPause(bOpen); return MainGameUI->GetAlchemyWidget(); } @@ -1185,7 +1156,6 @@ UEleriBaseWidget *AEleriPlayerController::ToggleDialogueWindow(bool bOpen) MainGameUI->ToggleDialogueWidget(bOpen); MainGameUI->GetDialogueWidget()->ToggleWidget(bOpen); - InMenu = bOpen; if (bOpen) { @@ -1207,7 +1177,6 @@ UEleriBaseWidget *AEleriPlayerController::ToggleNotificationWindow(bool bOpen) return nullptr; MainGameUI->ToggleBigNotificationWidget(bOpen); - InMenu = bOpen; if (bOpen) { @@ -1307,7 +1276,7 @@ void AEleriPlayerController::RemoveFromMenuStack(UUserWidget *Widget) bool AEleriPlayerController::OpenGenericMenu(UUserWidget *Widget, bool CloseOthers = false, bool IgnoreInMenu = false) { - if (!IgnoreInMenu && InMenu) + if (!IgnoreInMenu && IsInMenu()) return false; for (const UUserWidget *StackWidget : MenuStack) @@ -1315,9 +1284,7 @@ bool AEleriPlayerController::OpenGenericMenu(UUserWidget *Widget, bool CloseOthe if (StackWidget == Widget) return false; } - - InMenu = true; - + if (CloseOthers) { for (UUserWidget *StackWidget : MenuStack) @@ -1344,12 +1311,6 @@ void AEleriPlayerController::CloseGenericMenu(UEleriBaseWidget *Widget) { SetShowMouseCursor(false); SetInputMode(FInputModeGameOnly()); - InMenu = false; - // Get the Enhanced Input Local Player Subsystem from the Local Player related to our Player Controller. - if (UEnhancedInputLocalPlayerSubsystem *Subsystem = ULocalPlayer::GetSubsystem(GetLocalPlayer())) - { - Subsystem->RemoveMappingContext(MainUiContext); - } SetPause(false); } else diff --git a/Source/ProjectEleri/Private/UI/EleriBaseWidget.cpp b/Source/ProjectEleri/Private/UI/EleriBaseWidget.cpp index 13726d21..898f18d7 100644 --- a/Source/ProjectEleri/Private/UI/EleriBaseWidget.cpp +++ b/Source/ProjectEleri/Private/UI/EleriBaseWidget.cpp @@ -3,11 +3,25 @@ #include "UI/EleriBaseWidget.h" +#include "EleriPlayerController.h" +#include "Kismet/GameplayStatics.h" + void UEleriBaseWidget::ToggleWidget_Implementation(bool bActive) { if (bActive) { - ActivateWidget(); + //ActivateWidget(); } else { - DeactivateWidget(); + //DeactivateWidget(); + } +} + +void UEleriBaseWidget::HandleUiInputAction_Implementation(EEleriUIInputAction InputAction) +{ + if (InputAction == EEleriUIInputAction::Back) + { + if (AEleriPlayerController* EleriPlayerController = Cast(UGameplayStatics::GetPlayerController(this, 0))) + { + EleriPlayerController->GetMainGameWidget()->CloseWidget(this); + } } } diff --git a/Source/ProjectEleri/Private/UI/EleriTextBlock.cpp b/Source/ProjectEleri/Private/UI/EleriTextBlock.cpp index f340b822..9b897446 100644 --- a/Source/ProjectEleri/Private/UI/EleriTextBlock.cpp +++ b/Source/ProjectEleri/Private/UI/EleriTextBlock.cpp @@ -2,4 +2,65 @@ #include "UI/EleriTextBlock.h" +#include "UObject/ConstructorHelpers.h" +UEleriTextBlock::UEleriTextBlock(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer) +{ + static ConstructorHelpers::FObjectFinder Finder( + TEXT("/Game/UI/Styles/Text/DT_EleriTextStyles.DT_EleriTextStyles")); + if (Finder.Succeeded()) + { + StyleTable = Finder.Object; + } +} + +void UEleriTextBlock::SynchronizeProperties() +{ + Super::SynchronizeProperties(); + ApplyStyle(); +} + +TArray UEleriTextBlock::GetStyleNames() const +{ + TArray Names; + if (StyleTable) + { + for (const auto& Pair : StyleTable->GetRowMap()) + { + Names.Add(Pair.Key.ToString()); + } + } + return Names; +} + +void UEleriTextBlock::ApplyStyle() +{ + if (!StyleTable) + { + return; + } + + static const FString Context(TEXT("EleriTextBlock Style Lookup")); + if (const FEleriTextStyleRow* Row = StyleTable->FindRow(StyleName, Context, /*bWarnIfMissing*/ false)) + { + FSlateFontInfo FinalFont = Row->Font; + if (FontSizeOverride != INDEX_NONE) + { + FinalFont.Size = FontSizeOverride; + } + SetFont(FinalFont); + + const FLinearColor FinalColor = (ColorOverride.A > 0.f) ? ColorOverride : Row->Color; + SetColorAndOpacity(FSlateColor(FinalColor)); + + SetShadowOffset(Row->ShadowOffset); + SetShadowColorAndOpacity(Row->ShadowColor); + SetLineHeightPercentage(Row->LineHeightPercentage); + } + else + { + UE_LOG(LogTemp, Warning, TEXT("EleriTextBlock '%s': style row '%s' not found in %s"), + *GetName(), *StyleName.ToString(), *StyleTable->GetName()); + } +} diff --git a/Source/ProjectEleri/Private/UI/MainGameWidget.cpp b/Source/ProjectEleri/Private/UI/MainGameWidget.cpp index 9c8d2d5c..799cd9de 100644 --- a/Source/ProjectEleri/Private/UI/MainGameWidget.cpp +++ b/Source/ProjectEleri/Private/UI/MainGameWidget.cpp @@ -1,6 +1,10 @@ // Fill out your copyright notice in the Description page of Project Settings. #include "UI/MainGameWidget.h" + +#include "EleriPlayerController.h" +#include "EnhancedInputSubsystems.h" +#include "Kismet/GameplayStatics.h" #include "UI/InventoryWidget.h" #include "UI/MainMenuWidget.h" #include "UI/TradeWidget.h" @@ -16,14 +20,37 @@ void UMainGameWidget::SwitchKeybindsDisplay(int32 Index) KeybindsSwitcher->SetActiveWidgetIndex(Index); } -void UMainGameWidget::ToggleBookWidget(bool bActive) +void UMainGameWidget::CloseLastWidget() { - BookOpen = bActive; + if (WidgetStack.IsEmpty()) return; + + CloseWidget(WidgetStack[WidgetStack.Num() - 1]); } -void UMainGameWidget::ToggleInventoryWidget(bool bActive) +void UMainGameWidget::OpenWidget(UEleriBaseWidget* Widget) { - InventoryOpen = bActive; + if (!Widget) return; + + Widget->ToggleWidget(true); + WidgetStack.AddUnique(Widget); + CheckOpenWidgets(); +} + +void UMainGameWidget::CloseWidget(UEleriBaseWidget* Widget) +{ + if (!Widget) return; + + Widget->ToggleWidget(false); + WidgetStack.Remove(Widget); + CheckOpenWidgets(); +} + +void UMainGameWidget::ToggleBookWidget(bool bActive) +{ + if (bActive) + WidgetStack.AddUnique(GetBookWidget()); + + CheckOpenWidgets(); } void UMainGameWidget::ToggleAlchemyWidget(bool bActive) @@ -77,15 +104,68 @@ void UMainGameWidget::CloseTradeWidget() { TradeOpen = false; Trade_Widget->ToggleWidget(false); + CheckOpenWidgets(); } void UMainGameWidget::ToggleCalendarWidget(bool bActive) { CalendarOpen = bActive; Calendar_Widget->ToggleWidget(CalendarOpen); + CheckOpenWidgets(); } void UMainGameWidget::ToggleBazarWidget(bool bActive) { BazarWidgetOpen = bActive; Bazar_Widget->ToggleWidget(BazarWidgetOpen); + CheckOpenWidgets(); +} + +void UMainGameWidget::CheckOpenWidgets() +{ + if (!PlayerController) + { + PlayerController = UGameplayStatics::GetPlayerController(this, 0); + } + + //const bool bAnyOpenWidgets = IsAlchemyOpen() || IsAnyMinigameOpen() || IsBazarWidgetOpen() || IsBigNotificationOpen() || + // IsBookOpen() || IsCalendarOpen() || IsDialogueOpen() || IsInventoryOpen() || IsMainMenuOpen() || IsTradeOpen(); + + const bool bAnyOpenWidgets = AnyWidgetOpen(); + + const bool bShouldBePaused = WidgetStack.Contains(GetBookWidget()); + + if (bAnyOpenWidgets) + { + PlayerController->SetInputMode(FInputModeGameAndUI()); + } + else + { + PlayerController->SetInputMode(FInputModeGameOnly()); + } + + PlayerController->SetShowMouseCursor(bAnyOpenWidgets); + PlayerController->SetPause(bShouldBePaused); + + + // Get the Enhanced Input Local Player Subsystem from the Local Player related to our Player Controller. + if (UEnhancedInputLocalPlayerSubsystem *Subsystem = ULocalPlayer::GetSubsystem(PlayerController->GetLocalPlayer())) + { + if (const AEleriPlayerController* EleriPC = Cast(PlayerController)) + { + if (bAnyOpenWidgets) + { + if (!Subsystem->HasMappingContext(EleriPC->MainUiContext)) + { + Subsystem->AddMappingContext(EleriPC->MainUiContext, 98); + } + } + else + { + if (Subsystem->HasMappingContext(EleriPC->MainUiContext)) + { + Subsystem->RemoveMappingContext(EleriPC->MainUiContext); + } + } + } + } } diff --git a/Source/ProjectEleri/ProjectEleri.Build.cs b/Source/ProjectEleri/ProjectEleri.Build.cs index 73b6d159..fcf094df 100644 --- a/Source/ProjectEleri/ProjectEleri.Build.cs +++ b/Source/ProjectEleri/ProjectEleri.Build.cs @@ -33,7 +33,7 @@ public class ProjectEleri : ModuleRules "InteractionSystem" }); - PrivateDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemUtils" }); + PrivateDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemUtils", "UMGEditor" }); // Uncomment if you are using Slate UI // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); diff --git a/Source/ProjectEleri/Public/EleriPlayerController.h b/Source/ProjectEleri/Public/EleriPlayerController.h index 5a26f66e..a650f437 100644 --- a/Source/ProjectEleri/Public/EleriPlayerController.h +++ b/Source/ProjectEleri/Public/EleriPlayerController.h @@ -125,9 +125,6 @@ public: UPROPERTY(BlueprintReadOnly) AMyCharacter* PlayerCharacter; - UPROPERTY(EditAnywhere, BlueprintReadWrite) - bool InMenu; - UPROPERTY(EditAnywhere, BlueprintReadWrite) bool Paused; @@ -269,7 +266,7 @@ public: UFUNCTION(BlueprintCallable) UMainGameWidget* GetMainGameWidget() { return MainGameUI; } - const inline bool IsInMenu() { return InMenu; } + const inline bool IsInMenu() { return MainGameUI->AnyWidgetOpen(); } const inline bool IsSprinting() { return Sprinting; } const inline bool IsPaused() { return Paused; } const inline bool IsDialogueOpen() { return MainGameUI ? MainGameUI->IsDialogueOpen() : false; } diff --git a/Source/ProjectEleri/Public/UI/EleriBaseWidget.h b/Source/ProjectEleri/Public/UI/EleriBaseWidget.h index 11807738..fe0d7876 100644 --- a/Source/ProjectEleri/Public/UI/EleriBaseWidget.h +++ b/Source/ProjectEleri/Public/UI/EleriBaseWidget.h @@ -3,15 +3,24 @@ #pragma once #include "CoreMinimal.h" -#include "CommonActivatableWidget.h" +#include "Blueprint/UserWidget.h" #include "EleriBaseWidget.generated.h" +UENUM(BlueprintType) +enum class EEleriUIInputAction : uint8 +{ + Select, + Back, + TabLeft, + TabRight +}; + /** * */ UCLASS() -class PROJECTELERI_API UEleriBaseWidget : public UCommonActivatableWidget +class PROJECTELERI_API UEleriBaseWidget : public UUserWidget { GENERATED_BODY() @@ -20,10 +29,8 @@ public: UFUNCTION(BlueprintNativeEvent, BlueprintCallable) void ToggleWidget(bool bActive); virtual void ToggleWidget_Implementation(bool bActive); - - UFUNCTION(BlueprintCallable, Category = "Eleri Base Widget") - void LockWidget() { bIsBackHandler = false; } - - UFUNCTION(BlueprintCallable, Category = "Eleri Base Widget") - void UnlockWidget() { bIsBackHandler = true; } + + UFUNCTION(BlueprintNativeEvent, BlueprintCallable) + void HandleUiInputAction(EEleriUIInputAction InputAction); + virtual void HandleUiInputAction_Implementation(EEleriUIInputAction InputAction); }; diff --git a/Source/ProjectEleri/Public/UI/EleriTextBlock.h b/Source/ProjectEleri/Public/UI/EleriTextBlock.h index 87d6a931..06c514f0 100644 --- a/Source/ProjectEleri/Public/UI/EleriTextBlock.h +++ b/Source/ProjectEleri/Public/UI/EleriTextBlock.h @@ -4,10 +4,32 @@ #include "CoreMinimal.h" #include "Components/TextBlock.h" +#include "Engine/DataTable.h" #include "Math/Color.h" #include "EleriTextBlock.generated.h" +USTRUCT(BlueprintType) +struct FEleriTextStyleRow : public FTableRowBase +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Style") + FSlateFontInfo Font; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Style") + FLinearColor Color = FLinearColor::White; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Style") + FVector2D ShadowOffset = FVector2D::ZeroVector; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Style") + FLinearColor ShadowColor = FLinearColor(0.f, 0.f, 0.f, 0.f); + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Style") + float LineHeightPercentage = 1.f; +}; + /** * */ @@ -17,10 +39,26 @@ class PROJECTELERI_API UEleriTextBlock : public UTextBlock GENERATED_BODY() public: + UEleriTextBlock(const FObjectInitializer& ObjectInitializer); + virtual void SynchronizeProperties() override; UPROPERTY(EditAnywhere, BlueprintReadWrite) - FLinearColor ColorOverride; + FLinearColor ColorOverride =FLinearColor(0.f, 0.f, 0.f, 0.f); UPROPERTY(EditAnywhere, BlueprintReadWrite) - int32 FontSizeOverride; + int32 FontSizeOverride = INDEX_NONE; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Style", meta = (GetOptions = "GetStyleNames")) + FName StyleName = "Normal"; + +protected: + + UFUNCTION() + TArray GetStyleNames() const; + +private: + UPROPERTY() + TObjectPtr StyleTable; + + void ApplyStyle(); }; diff --git a/Source/ProjectEleri/Public/UI/MainGameWidget.h b/Source/ProjectEleri/Public/UI/MainGameWidget.h index 2e5d1c9f..fd85bcab 100644 --- a/Source/ProjectEleri/Public/UI/MainGameWidget.h +++ b/Source/ProjectEleri/Public/UI/MainGameWidget.h @@ -51,6 +51,19 @@ public: UFUNCTION(BlueprintCallable, BlueprintPure) UInteractionWidget *GetInteractionWidget() { return WBP_InteractionWidget; } + + void CloseLastWidget(); + + UFUNCTION(BlueprintCallable, Category = "Eleri|UI") + void OpenWidget(UEleriBaseWidget* Widget); + + UFUNCTION(BlueprintCallable, Category = "Eleri|UI") + void CloseWidget(UEleriBaseWidget* Widget); + + UFUNCTION(BlueprintPure, Category = "Eleri|UI") + bool AnyWidgetOpen() const { return !WidgetStack.IsEmpty(); } + + TArray& GetWidgetStack() { return WidgetStack; } // Book widget UFUNCTION(BlueprintCallable, BlueprintPure) @@ -58,15 +71,13 @@ public: UFUNCTION(BlueprintCallable) void ToggleBookWidget(bool bActive); UFUNCTION(BlueprintCallable, BlueprintPure) - bool IsBookOpen() const { return BookOpen; } + bool IsBookOpen() const { return WidgetStack.Contains(Book_Widget); } // Inventory widget UFUNCTION(BlueprintCallable, BlueprintPure) UInventoryWidget *GetInventoryWidget() { return Inventory_Widget; } - UFUNCTION(BlueprintCallable) - void ToggleInventoryWidget(bool bActive); UFUNCTION(BlueprintCallable, BlueprintPure) - bool IsInventoryOpen() const { return InventoryOpen; } + bool IsInventoryOpen() const { return WidgetStack.Contains(Inventory_Widget); } // Alchemy widget UFUNCTION(BlueprintCallable, BlueprintPure) @@ -228,4 +239,12 @@ protected: UMainMenuWidget *MainMenuScreenUI_Widget; UPROPERTY() bool MainMenuOpen = false; + + UPROPERTY() + APlayerController* PlayerController; + + UPROPERTY() + TArray WidgetStack; + + void CheckOpenWidgets(); }; diff --git a/Source/ProjectEleri/System/MainBlueprintFunctionLibrary.h b/Source/ProjectEleri/System/MainBlueprintFunctionLibrary.h index e341bcd2..0a7df3c8 100644 --- a/Source/ProjectEleri/System/MainBlueprintFunctionLibrary.h +++ b/Source/ProjectEleri/System/MainBlueprintFunctionLibrary.h @@ -85,4 +85,10 @@ public: // MATH UFUNCTION(BlueprintPure, Category = "Eleri|Math") static float NegateFloat(const float& Value) { return Value * -1.f; } + +#if WITH_EDITOR + // Editor shit + UFUNCTION(BlueprintCallable, Category = "Eleri|Audit") + static void LogAssetsUsingCommonUI(); +#endif }; diff --git a/Source/ProjectEleri/System/MainlBlueprintFunctionLibrary.cpp b/Source/ProjectEleri/System/MainlBlueprintFunctionLibrary.cpp index e466a556..009fd0e5 100644 --- a/Source/ProjectEleri/System/MainlBlueprintFunctionLibrary.cpp +++ b/Source/ProjectEleri/System/MainlBlueprintFunctionLibrary.cpp @@ -208,4 +208,49 @@ void UMainBlueprintFunctionLibrary::ModifyExp(const UObject* WorldContext, const StatForgeComponent->ApplyGameplayStatEffect(ExpIncreaseEffect, DataValueMap); } +#if WITH_EDITOR +#include "AssetRegistry/AssetRegistryModule.h" +#include "AssetRegistry/IAssetRegistry.h" +#include "WidgetBlueprint.h" + +void UMainBlueprintFunctionLibrary::LogAssetsUsingCommonUI() +{ + IAssetRegistry& AssetRegistry = FModuleManager::LoadModuleChecked("AssetRegistry").Get(); + + TArray WidgetBlueprintAssets; + AssetRegistry.GetAssetsByClass(UWidgetBlueprint::StaticClass()->GetClassPathName(), WidgetBlueprintAssets, /*bSearchSubClasses*/ true); + + TArray MatchedPaths; + + for (const FAssetData& AssetData : WidgetBlueprintAssets) + { + UWidgetBlueprint* WidgetBP = Cast(AssetData.GetAsset()); + if (!WidgetBP || !WidgetBP->GeneratedClass) + { + continue; + } + + bool bUsesCommonUI = false; + for (const UClass* Test = WidgetBP->GeneratedClass; Test; Test = Test->GetSuperClass()) + { + if (Test->GetName().Contains(TEXT("Common"))) + { + bUsesCommonUI = true; + break; + } + } + + if (bUsesCommonUI) + { + MatchedPaths.Add(AssetData.GetObjectPathString()); + } + } + + UE_LOG(LogTemp, Log, TEXT("Found %d widget asset(s) referencing a CommonUI class in their inheritance chain:"), MatchedPaths.Num()); + for (const FString& Path : MatchedPaths) + { + UE_LOG(LogTemp, Log, TEXT(" %s"), *Path); + } +} +#endif