From 96392cd45173705d11556f2e6de3b04063093d58 Mon Sep 17 00:00:00 2001 From: koritsa Date: Sun, 7 Jun 2026 20:14:03 +0300 Subject: [PATCH] added commission tracker to HUD --- Config/DefaultEngine.ini | 2 +- Content/Blueprints/NPC/AI/BT_NPC.uasset | 4 +- .../Blueprints/NPC/NPCDirectorConfig.uasset | 4 +- Content/Sequences/LS_Embarrassment.uasset | 4 +- Content/Test/Maps/BPP_RoadPart.uasset | 3 + Content/Test/Maps/L_SessionLoss.umap | 4 +- Content/Test/Maps/L_Test.umap | 4 +- Content/Test/Maps/L_TestCity.umap | 4 +- Content/Test/Maps/RoadPart.umap | 3 + Content/UI/HUD/WBP_HUD.uasset | 3 + .../UI/HUD/WBP_HUDCommissionTracker.uasset | 3 + Content/UI/HUD/W_HUD.uasset | 3 - Content/UI/WBP_GameLayout.uasset | 4 +- .../2/TQ/URJB5G04KI0JHHJE3E6RWX.uasset | 3 - .../3/WK/CVE5R5ONIUEA0FW7U88LUF.uasset | 3 + .../4/9Z/95PIDT9B6TYGMI1Z9MW2VL.uasset | 3 - .../9/KM/LRS65ACT4VQKAPMGM44O6W.uasset | 3 - .../9/W1/S7W5SJBU9GLICR1CEYU795.uasset | 3 + .../C/68/BTEGKG9TB8Z9AUPK8XF1Y9.uasset | 3 - .../E/PG/DC338853WGDU3C07YYSVM7.uasset | 3 - .../0/8P/7ZF8V96EAW53W2MVOLK88Y.uasset | 3 + .../1/2S/P86DZUH70LWYDET570J3AS.uasset | 3 + .../1/P9/8NJB6WM0H772KKKIE18ZI8.uasset | 3 + .../4/ZW/QUF2HAYFPW6L4Z06V9JJGE.uasset | 3 + .../5/DF/2OXDHIYF22D3DCQ0XYCOS0.uasset | 3 + .../6/6A/EP83WS6IHM5NNB0YF92FET.uasset | 3 + .../6/GI/SUG6CVCGKEKEI7XDESJLZR.uasset | 3 + .../6/WG/PL21V47617IX6NXM2FJ7XD.uasset | 3 + .../7/7J/B19C9DNBKMEXLRU7FBHE49.uasset | 3 + .../8/XN/689JFERZTNO637Z1YGZ989.uasset | 3 + .../A/UV/6O9HLEBJL71RCVFA4ZQGXY.uasset | 3 + .../C/5W/YSX9H6XCILC6UX22YE8N7S.uasset | 3 + .../D/D5/F5KVSKK0J350P3XFQT64O5.uasset | 3 + .../D/IG/D9EZLC2DHI7YMF4IJT2Q4Q.uasset | 3 + .../E/J6/6H2EMPCV9Q2V42F1O5MGUI.uasset | 3 + .../F/0Q/ZABE7SQOOJGRH5531RBI3L.uasset | 3 + NakedDesire.uproject | 4 ++ PLAN.md | 2 +- .../NakedDesire/NPC/NPCDirectorSubsystem.cpp | 11 +++- Source/NakedDesire/NPC/NPCDirectorSubsystem.h | 3 +- .../UI/HUDCommissionTrackerWidget.cpp | 61 +++++++++++++++++++ .../UI/HUDCommissionTrackerWidget.h | 39 ++++++++++++ .../UI/Phone/Apps/ForumCommissionWidget.h | 3 +- 43 files changed, 199 insertions(+), 38 deletions(-) create mode 100644 Content/Test/Maps/BPP_RoadPart.uasset create mode 100644 Content/Test/Maps/RoadPart.umap create mode 100644 Content/UI/HUD/WBP_HUD.uasset create mode 100644 Content/UI/HUD/WBP_HUDCommissionTracker.uasset delete mode 100644 Content/UI/HUD/W_HUD.uasset delete mode 100644 Content/__ExternalActors__/Maps/MainHouse/2/TQ/URJB5G04KI0JHHJE3E6RWX.uasset create mode 100644 Content/__ExternalActors__/Maps/MainHouse/3/WK/CVE5R5ONIUEA0FW7U88LUF.uasset delete mode 100644 Content/__ExternalActors__/Maps/MainHouse/4/9Z/95PIDT9B6TYGMI1Z9MW2VL.uasset delete mode 100644 Content/__ExternalActors__/Maps/MainHouse/9/KM/LRS65ACT4VQKAPMGM44O6W.uasset create mode 100644 Content/__ExternalActors__/Maps/MainHouse/9/W1/S7W5SJBU9GLICR1CEYU795.uasset delete mode 100644 Content/__ExternalActors__/Maps/MainHouse/C/68/BTEGKG9TB8Z9AUPK8XF1Y9.uasset delete mode 100644 Content/__ExternalActors__/Maps/MainHouse/E/PG/DC338853WGDU3C07YYSVM7.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/0/8P/7ZF8V96EAW53W2MVOLK88Y.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/1/2S/P86DZUH70LWYDET570J3AS.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/1/P9/8NJB6WM0H772KKKIE18ZI8.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/4/ZW/QUF2HAYFPW6L4Z06V9JJGE.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/5/DF/2OXDHIYF22D3DCQ0XYCOS0.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/6/6A/EP83WS6IHM5NNB0YF92FET.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/6/GI/SUG6CVCGKEKEI7XDESJLZR.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/6/WG/PL21V47617IX6NXM2FJ7XD.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/7/7J/B19C9DNBKMEXLRU7FBHE49.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/8/XN/689JFERZTNO637Z1YGZ989.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/A/UV/6O9HLEBJL71RCVFA4ZQGXY.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/C/5W/YSX9H6XCILC6UX22YE8N7S.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/D/D5/F5KVSKK0J350P3XFQT64O5.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/D/IG/D9EZLC2DHI7YMF4IJT2Q4Q.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/E/J6/6H2EMPCV9Q2V42F1O5MGUI.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/RoadPart/F/0Q/ZABE7SQOOJGRH5531RBI3L.uasset create mode 100644 Source/NakedDesire/UI/HUDCommissionTrackerWidget.cpp create mode 100644 Source/NakedDesire/UI/HUDCommissionTrackerWidget.h diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini index 0583d2a7..171eee32 100644 --- a/Config/DefaultEngine.ini +++ b/Config/DefaultEngine.ini @@ -1,7 +1,7 @@ [/Script/EngineSettings.GameMapsSettings] -EditorStartupMap=/Game/Test/Maps/L_Test.L_Test +EditorStartupMap=/Game/Test/Maps/L_TestCity.L_TestCity LocalMapOptions= TransitionMap=None bUseSplitscreen=True diff --git a/Content/Blueprints/NPC/AI/BT_NPC.uasset b/Content/Blueprints/NPC/AI/BT_NPC.uasset index 2bab3d84..b22127c6 100644 --- a/Content/Blueprints/NPC/AI/BT_NPC.uasset +++ b/Content/Blueprints/NPC/AI/BT_NPC.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2dc1c793dbddd708448c8c54a870a15bab0f3f4c86e016dffef3deb44ff06a59 -size 17654 +oid sha256:363d83127474529aafaa26939d210aa71f692b45b8dd3c49fb8b07215bebc5b1 +size 16472 diff --git a/Content/Blueprints/NPC/NPCDirectorConfig.uasset b/Content/Blueprints/NPC/NPCDirectorConfig.uasset index c2433ec1..c13fcf01 100644 --- a/Content/Blueprints/NPC/NPCDirectorConfig.uasset +++ b/Content/Blueprints/NPC/NPCDirectorConfig.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44ce2cbcdcb9f419637d144f9a14a119bc4a5d8fd5e10596dfff69bb590edcc1 -size 2764 +oid sha256:0dd9a3a553d4f96709e22071661e210165175a92093748a8ba3f015f301fba2f +size 2941 diff --git a/Content/Sequences/LS_Embarrassment.uasset b/Content/Sequences/LS_Embarrassment.uasset index fcabd7a9..ae7c2f51 100644 --- a/Content/Sequences/LS_Embarrassment.uasset +++ b/Content/Sequences/LS_Embarrassment.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0243cbd70afd215170082a22f4ef494af0421ffb317f8c74f2dd224ca2c5da7b -size 56523 +oid sha256:5d49e724af9dada3ad75ec710b790cad436854c6c4102864f2af80fff9c713a9 +size 53656 diff --git a/Content/Test/Maps/BPP_RoadPart.uasset b/Content/Test/Maps/BPP_RoadPart.uasset new file mode 100644 index 00000000..30790b70 --- /dev/null +++ b/Content/Test/Maps/BPP_RoadPart.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94536d1d98782b343ed424b4c0c069ca26b99f55bd1910d2899838c4e7a779fc +size 40214 diff --git a/Content/Test/Maps/L_SessionLoss.umap b/Content/Test/Maps/L_SessionLoss.umap index 6c652b36..9bff6fc9 100644 --- a/Content/Test/Maps/L_SessionLoss.umap +++ b/Content/Test/Maps/L_SessionLoss.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d099819e1393e9a76f89fc69f6f9bd632ee34a52117803286246de854968544 -size 16766 +oid sha256:1590e16390975af80ca538508f68a2701a1f9aa0fdc1517f1763e2234bd363fb +size 22421 diff --git a/Content/Test/Maps/L_Test.umap b/Content/Test/Maps/L_Test.umap index ba3b4461..afaef502 100644 --- a/Content/Test/Maps/L_Test.umap +++ b/Content/Test/Maps/L_Test.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c6bbe8f0c4aa300f227a9b8acef020d8c29f247f4ca1d94184f24a8a2fa9e86 -size 211771 +oid sha256:42b9660282c42331bc02bb4a2c3013760ed8fc26576a70f65631d1bab4d2847a +size 213312 diff --git a/Content/Test/Maps/L_TestCity.umap b/Content/Test/Maps/L_TestCity.umap index e8c2164c..d2e35b6b 100644 --- a/Content/Test/Maps/L_TestCity.umap +++ b/Content/Test/Maps/L_TestCity.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6fdfc7e604cb74b37f82481c978197391bdfec0cd55527150573b4e52acfffbc -size 295783 +oid sha256:c07bf0432cef6e7b9aeeaef86a010b19cab606ad5d7061aa50bfd917af4c3fdf +size 722702 diff --git a/Content/Test/Maps/RoadPart.umap b/Content/Test/Maps/RoadPart.umap new file mode 100644 index 00000000..04a32459 --- /dev/null +++ b/Content/Test/Maps/RoadPart.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41e31344fd5c8f0a7076040ee09b86e9d9f4e7ecfcf0555230a2be39f74217ea +size 6492 diff --git a/Content/UI/HUD/WBP_HUD.uasset b/Content/UI/HUD/WBP_HUD.uasset new file mode 100644 index 00000000..3a89c8c9 --- /dev/null +++ b/Content/UI/HUD/WBP_HUD.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0490fc7f3ae44a405c58c6097d5652c7447d6e6bb9fafcaf097b86bd281175fd +size 33351 diff --git a/Content/UI/HUD/WBP_HUDCommissionTracker.uasset b/Content/UI/HUD/WBP_HUDCommissionTracker.uasset new file mode 100644 index 00000000..59040a7a --- /dev/null +++ b/Content/UI/HUD/WBP_HUDCommissionTracker.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:250cfc4d2f16154e7c60b3290b713d7eccfc4b8f67cf81bfe9d79568fe216255 +size 24303 diff --git a/Content/UI/HUD/W_HUD.uasset b/Content/UI/HUD/W_HUD.uasset deleted file mode 100644 index 66b6392d..00000000 --- a/Content/UI/HUD/W_HUD.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a53117b5668f523a0cf7742fe5190ed76c490d85eb459d9c46d180fcaaaed0e2 -size 30964 diff --git a/Content/UI/WBP_GameLayout.uasset b/Content/UI/WBP_GameLayout.uasset index f3008288..00fbf202 100644 --- a/Content/UI/WBP_GameLayout.uasset +++ b/Content/UI/WBP_GameLayout.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d3f2f778b0e91ba64f2eb1fc916350f374deb2db65bed8ad314909b7a9e094f7 -size 28548 +oid sha256:b78801f3c35b73e77445de37bd3eecf0781360c71854d9161a880d30a93ed426 +size 28561 diff --git a/Content/__ExternalActors__/Maps/MainHouse/2/TQ/URJB5G04KI0JHHJE3E6RWX.uasset b/Content/__ExternalActors__/Maps/MainHouse/2/TQ/URJB5G04KI0JHHJE3E6RWX.uasset deleted file mode 100644 index 873f019b..00000000 --- a/Content/__ExternalActors__/Maps/MainHouse/2/TQ/URJB5G04KI0JHHJE3E6RWX.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d35bd8fa81e6061d940765ecb1107370d41e073c2e9d26e51c3f5363d38b13b5 -size 4039 diff --git a/Content/__ExternalActors__/Maps/MainHouse/3/WK/CVE5R5ONIUEA0FW7U88LUF.uasset b/Content/__ExternalActors__/Maps/MainHouse/3/WK/CVE5R5ONIUEA0FW7U88LUF.uasset new file mode 100644 index 00000000..0a1f1882 --- /dev/null +++ b/Content/__ExternalActors__/Maps/MainHouse/3/WK/CVE5R5ONIUEA0FW7U88LUF.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a6717f6de8c3c7e7c1f2a7cb730aa01b0abf1d114344da2ebe0b207c2e581ee +size 4048 diff --git a/Content/__ExternalActors__/Maps/MainHouse/4/9Z/95PIDT9B6TYGMI1Z9MW2VL.uasset b/Content/__ExternalActors__/Maps/MainHouse/4/9Z/95PIDT9B6TYGMI1Z9MW2VL.uasset deleted file mode 100644 index c729c0b4..00000000 --- a/Content/__ExternalActors__/Maps/MainHouse/4/9Z/95PIDT9B6TYGMI1Z9MW2VL.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e9d5db6597b70855c44c8fa1866050f449440cd298fe03322332c41a4297983 -size 3913 diff --git a/Content/__ExternalActors__/Maps/MainHouse/9/KM/LRS65ACT4VQKAPMGM44O6W.uasset b/Content/__ExternalActors__/Maps/MainHouse/9/KM/LRS65ACT4VQKAPMGM44O6W.uasset deleted file mode 100644 index 22815358..00000000 --- a/Content/__ExternalActors__/Maps/MainHouse/9/KM/LRS65ACT4VQKAPMGM44O6W.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7ff65338ac9b68fa9938a42eebebcc944703d297ecac85c3ddd96f10efc3cf9c -size 4329 diff --git a/Content/__ExternalActors__/Maps/MainHouse/9/W1/S7W5SJBU9GLICR1CEYU795.uasset b/Content/__ExternalActors__/Maps/MainHouse/9/W1/S7W5SJBU9GLICR1CEYU795.uasset new file mode 100644 index 00000000..43658f52 --- /dev/null +++ b/Content/__ExternalActors__/Maps/MainHouse/9/W1/S7W5SJBU9GLICR1CEYU795.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cdbfa652e1261df72891f39306c2a569992cde3314dd006da73714213ec1261 +size 4012 diff --git a/Content/__ExternalActors__/Maps/MainHouse/C/68/BTEGKG9TB8Z9AUPK8XF1Y9.uasset b/Content/__ExternalActors__/Maps/MainHouse/C/68/BTEGKG9TB8Z9AUPK8XF1Y9.uasset deleted file mode 100644 index ed0e0408..00000000 --- a/Content/__ExternalActors__/Maps/MainHouse/C/68/BTEGKG9TB8Z9AUPK8XF1Y9.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3e5e25e8998e2ab834fd503ef6f032eb9458a40a548d2fa15bb4d5ce29fb0f29 -size 4000 diff --git a/Content/__ExternalActors__/Maps/MainHouse/E/PG/DC338853WGDU3C07YYSVM7.uasset b/Content/__ExternalActors__/Maps/MainHouse/E/PG/DC338853WGDU3C07YYSVM7.uasset deleted file mode 100644 index 56a21cd3..00000000 --- a/Content/__ExternalActors__/Maps/MainHouse/E/PG/DC338853WGDU3C07YYSVM7.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2db33bd1faadf96d882e106fbda0b68ebbdf2a4e69a6b2e319aaf13e1ce31fc4 -size 3933 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/0/8P/7ZF8V96EAW53W2MVOLK88Y.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/0/8P/7ZF8V96EAW53W2MVOLK88Y.uasset new file mode 100644 index 00000000..c3daa2fd --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/0/8P/7ZF8V96EAW53W2MVOLK88Y.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a779b906f05ce505e3e9c19fbd5516d0de7de7d46fe896cfe3f551d5b82a08ba +size 4240 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/1/2S/P86DZUH70LWYDET570J3AS.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/1/2S/P86DZUH70LWYDET570J3AS.uasset new file mode 100644 index 00000000..86a89462 --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/1/2S/P86DZUH70LWYDET570J3AS.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa9e9846b229348ea7e1f465ca90b6d5a20132d6da22e75571b147a254ced5bf +size 4236 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/1/P9/8NJB6WM0H772KKKIE18ZI8.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/1/P9/8NJB6WM0H772KKKIE18ZI8.uasset new file mode 100644 index 00000000..cc2f838c --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/1/P9/8NJB6WM0H772KKKIE18ZI8.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8301e7e9f0d8466f92c97496a4305d5f833705ee689a04f5e1a849db0555a7e7 +size 4240 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/4/ZW/QUF2HAYFPW6L4Z06V9JJGE.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/4/ZW/QUF2HAYFPW6L4Z06V9JJGE.uasset new file mode 100644 index 00000000..b136aab8 --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/4/ZW/QUF2HAYFPW6L4Z06V9JJGE.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c340a15b94e816763a8d38edb68d2063f6f81fe76bf3c87e0b127f55229817f +size 4127 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/5/DF/2OXDHIYF22D3DCQ0XYCOS0.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/5/DF/2OXDHIYF22D3DCQ0XYCOS0.uasset new file mode 100644 index 00000000..8cc7e927 --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/5/DF/2OXDHIYF22D3DCQ0XYCOS0.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a060639c10cd851fed41921d4c1d1b899857be5afdf3542fcc97891112743ba7 +size 4240 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/6/6A/EP83WS6IHM5NNB0YF92FET.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/6/6A/EP83WS6IHM5NNB0YF92FET.uasset new file mode 100644 index 00000000..8fbd266e --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/6/6A/EP83WS6IHM5NNB0YF92FET.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3d27c216b5af687a1e4ce459cdd0c28af898c1700b7442fc69ae86c5de3392a +size 4242 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/6/GI/SUG6CVCGKEKEI7XDESJLZR.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/6/GI/SUG6CVCGKEKEI7XDESJLZR.uasset new file mode 100644 index 00000000..28012b5c --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/6/GI/SUG6CVCGKEKEI7XDESJLZR.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7001f0f63e2d60323a89ce1b4984d09ceff3b23f087ef05a3e9fe892f463112 +size 4236 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/6/WG/PL21V47617IX6NXM2FJ7XD.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/6/WG/PL21V47617IX6NXM2FJ7XD.uasset new file mode 100644 index 00000000..1820b897 --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/6/WG/PL21V47617IX6NXM2FJ7XD.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f33cdbe728e5d90bc8e3cbf94c5ae846ce833f04d6815e822ac2f644976b1c0 +size 4121 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/7/7J/B19C9DNBKMEXLRU7FBHE49.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/7/7J/B19C9DNBKMEXLRU7FBHE49.uasset new file mode 100644 index 00000000..20463607 --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/7/7J/B19C9DNBKMEXLRU7FBHE49.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ebfe760e0bea80d39775c4a3de7894ea125a6d447ac8c4149fc21f9dc455844 +size 4236 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/8/XN/689JFERZTNO637Z1YGZ989.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/8/XN/689JFERZTNO637Z1YGZ989.uasset new file mode 100644 index 00000000..cf0e600f --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/8/XN/689JFERZTNO637Z1YGZ989.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa5e2e2caaac7c37d95201d5a576a9ea83106915beaf511e5c709841893f356c +size 4240 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/A/UV/6O9HLEBJL71RCVFA4ZQGXY.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/A/UV/6O9HLEBJL71RCVFA4ZQGXY.uasset new file mode 100644 index 00000000..a84bbd7c --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/A/UV/6O9HLEBJL71RCVFA4ZQGXY.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2006b477932a5886dc96dc45a2bc83700a5c894094388ca8871ff7b92723fc1 +size 4240 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/C/5W/YSX9H6XCILC6UX22YE8N7S.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/C/5W/YSX9H6XCILC6UX22YE8N7S.uasset new file mode 100644 index 00000000..f6c19cda --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/C/5W/YSX9H6XCILC6UX22YE8N7S.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c4e12bae850f81e9b1e0902f8384b83e776119f36a02532a78f9b90e18631c0 +size 4240 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/D/D5/F5KVSKK0J350P3XFQT64O5.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/D/D5/F5KVSKK0J350P3XFQT64O5.uasset new file mode 100644 index 00000000..646d77ef --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/D/D5/F5KVSKK0J350P3XFQT64O5.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74321c5b2f68422a1857e670b26030ed3d066c298e2c06854fdb2c78dc62591a +size 4242 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/D/IG/D9EZLC2DHI7YMF4IJT2Q4Q.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/D/IG/D9EZLC2DHI7YMF4IJT2Q4Q.uasset new file mode 100644 index 00000000..32822aef --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/D/IG/D9EZLC2DHI7YMF4IJT2Q4Q.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72d6e28ae4f162b6703931294d7a212598082cc920edc354e412b1188d4d5bcd +size 4242 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/E/J6/6H2EMPCV9Q2V42F1O5MGUI.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/E/J6/6H2EMPCV9Q2V42F1O5MGUI.uasset new file mode 100644 index 00000000..272c449a --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/E/J6/6H2EMPCV9Q2V42F1O5MGUI.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:316eee703064efaf5254dfc2c0647a7e87dd94c4e965e407db7e65b54aac9fe2 +size 4240 diff --git a/Content/__ExternalActors__/Test/Maps/RoadPart/F/0Q/ZABE7SQOOJGRH5531RBI3L.uasset b/Content/__ExternalActors__/Test/Maps/RoadPart/F/0Q/ZABE7SQOOJGRH5531RBI3L.uasset new file mode 100644 index 00000000..df4c47ec --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/RoadPart/F/0Q/ZABE7SQOOJGRH5531RBI3L.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01f5d3970901f48fbb1c44586373ae82eb8441e96a7daadaa715732262d7c30a +size 4238 diff --git a/NakedDesire.uproject b/NakedDesire.uproject index 335fb14d..0a2e863b 100644 --- a/NakedDesire.uproject +++ b/NakedDesire.uproject @@ -121,6 +121,10 @@ { "Name": "VisualStudioCodeSourceCodeAccess", "Enabled": false + }, + { + "Name": "PCG", + "Enabled": true } ] } \ No newline at end of file diff --git a/PLAN.md b/PLAN.md index 312280f6..440a0b8c 100644 --- a/PLAN.md +++ b/PLAN.md @@ -18,7 +18,7 @@ A pass over the actual tree on 2026-05-30 shows the code is **well ahead** of § - **Save — rearchitected, the "empty save" bug is gone.** `UGlobalSaveGameData` is now the durable state container with granular `Add/Update/Remove` for `WardrobeItems`/`EquippedItems`/`WorldItems` (all `FItemSaveRecord`). `USaveSubsystem::GetCurrentSave` creates + seeds a new save from `StartingSaveData`. `GameMode::BeginPlay` rehydrates world `AItemPickup`s from records with transforms. Round-trip architecture is in place. - **Phase 2 — done.** `Interactables/ItemPickup` is the world item actor; drop/pickup + interaction (`Interaction/InteractionComponent`) exist. - **Phase 3 — done.** `SessionManagerSubsystem` + `SessionLossResolver` as previously noted. -- **New since snapshot:** `Censorship/CensorshipComponent`, `Clothing/ClothingVisualsComponent` (runtime per-slot mesh spawning) + `ClothingSlotsData`, GASP-style movement enums (`Global/Gait|Stance|AirMode|MovementState`), and a full **UI layer** (`UI/HUDWidget`, `GameLayoutWidget`, `Inventory/*` panels, **`RadialMenu/*` = the §14.1 quick-action menu**). +- **New since snapshot:** `Censorship/CensorshipComponent`, `Clothing/ClothingVisualsComponent` (runtime per-slot mesh spawning) + `ClothingSlotsData`, GASP-style movement enums (`Global/Gait|Stance|AirMode|MovementState`), and a full **UI layer** (`UI/HUDWidget`, `UI/HUDCommissionTrackerWidget` = on-screen active-commission tracker, `GameLayoutWidget`, `Inventory/*` panels, **`RadialMenu/*` = the §14.1 quick-action menu**). - **Minor spec drift to fix when convenient:** `ERestrictionType` spells `BlockPhoneUse` as `BlockPhoneUsage` and splits the GDD's single `BlockExposeAction` into `BlockBoobsExpose`/`BlockVaginaExpose`/`BlockAnalExpose`. `FClothingRestriction` fields lack `EditDefaultsOnly` so they aren't author-editable in the asset. Not blocking the slice. §1 should be rewritten in a later pass; until then, trust §0.1 over §1 where they disagree. diff --git a/Source/NakedDesire/NPC/NPCDirectorSubsystem.cpp b/Source/NakedDesire/NPC/NPCDirectorSubsystem.cpp index 8f61bdc4..04d68649 100644 --- a/Source/NakedDesire/NPC/NPCDirectorSubsystem.cpp +++ b/Source/NakedDesire/NPC/NPCDirectorSubsystem.cpp @@ -198,7 +198,7 @@ ENPCType UNPCDirectorSubsystem::PickWeightedClass() const return ENPCType::None; } -bool UNPCDirectorSubsystem::FindSpawnPoint(const FVector& Around, FVector& OutLocation) const +bool UNPCDirectorSubsystem::FindSpawnPoint(const FVector& Around, FVector& OutLocation) { UNavigationSystemV1* NavSys = UNavigationSystemV1::GetCurrent(GetWorld()); const UNPCDirectorConfig* Config = GetConfig(); @@ -214,7 +214,9 @@ bool UNPCDirectorSubsystem::FindSpawnPoint(const FVector& Around, FVector& OutLo if (NavSys->GetRandomReachablePointInRadius(Around, Config->SpawnRadiusMax, NavLocation) && FVector::DistSquared(NavLocation.Location, Around) >= MinRadiusSq) { - OutLocation = NavLocation.Location; + FVector SpawnLocation = NavLocation.Location; + CorrectSpawnLocation(SpawnLocation); + OutLocation = SpawnLocation; return true; } } @@ -227,6 +229,11 @@ TSubclassOf UNPCDirectorSubsystem::GetRandomNPCClass(TArray GetRandomNPCClass(TArray> InNPCClasses); + void CorrectSpawnLocation(FVector& OutVector); APawn* GetPlayerPawn() const; UNPCDirectorConfig* GetConfig() const; diff --git a/Source/NakedDesire/UI/HUDCommissionTrackerWidget.cpp b/Source/NakedDesire/UI/HUDCommissionTrackerWidget.cpp new file mode 100644 index 00000000..b3cc4233 --- /dev/null +++ b/Source/NakedDesire/UI/HUDCommissionTrackerWidget.cpp @@ -0,0 +1,61 @@ +// © 2025 Naked People Team. All Rights Reserved. + + +#include "HUDCommissionTrackerWidget.h" + +#include "Components/PanelWidget.h" +#include "NakedDesire/Commissions/Commission.h" +#include "NakedDesire/Commissions/MissionSubsystem.h" +#include "NakedDesire/UI/Phone/Apps/ForumCommissionWidget.h" + +void UHUDCommissionTrackerWidget::NativeConstruct() +{ + Super::NativeConstruct(); + + if (UMissionSubsystem* Missions = GetMissionSubsystem()) + Missions->OnBoardChanged.AddUniqueDynamic(this, &UHUDCommissionTrackerWidget::Rebuild); + + Rebuild(); +} + +void UHUDCommissionTrackerWidget::NativeDestruct() +{ + if (UMissionSubsystem* Missions = GetMissionSubsystem()) + Missions->OnBoardChanged.RemoveDynamic(this, &UHUDCommissionTrackerWidget::Rebuild); + + Super::NativeDestruct(); +} + +void UHUDCommissionTrackerWidget::Rebuild() +{ + if (!CommissionContainer || !CommissionEntryClass) + return; + + CommissionContainer->ClearChildren(); + + UMissionSubsystem* Missions = GetMissionSubsystem(); + if (!Missions) + return; + + // Only accepted commissions are "active" — offered / completed / expired stay on the forum. + for (UCommission* Commission : Missions->GetAcceptedCommissions()) + { + if (!Commission) + continue; + + UForumCommissionWidget* Entry = CreateWidget(this, CommissionEntryClass); + if (!Entry) + continue; + + // SetCommission collapses the accept control and keeps the row's objective progress polling live; + // the HUD row BP simply omits the accept / abandon buttons (both optional binds). + Entry->SetCommission(Commission); + CommissionContainer->AddChild(Entry); + } +} + +UMissionSubsystem* UHUDCommissionTrackerWidget::GetMissionSubsystem() const +{ + const UWorld* World = GetWorld(); + return World ? World->GetSubsystem() : nullptr; +} \ No newline at end of file diff --git a/Source/NakedDesire/UI/HUDCommissionTrackerWidget.h b/Source/NakedDesire/UI/HUDCommissionTrackerWidget.h new file mode 100644 index 00000000..7042d108 --- /dev/null +++ b/Source/NakedDesire/UI/HUDCommissionTrackerWidget.h @@ -0,0 +1,39 @@ +// © 2025 Naked People Team. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "CommonUserWidget.h" +#include "HUDCommissionTrackerWidget.generated.h" + +class UPanelWidget; +class UForumCommissionWidget; +class UMissionSubsystem; + +// On-screen tracker for accepted commissions (GDD §13 / Phase 7 objective-tracker), so the player can +// read their active objectives during play without opening the phone forum. Mirrors the forum's accepted +// section: reads the live board from UMissionSubsystem, rebuilds on OnBoardChanged, and reuses the forum +// row class for per-objective progress polling. Display-only — no accept / abandon controls. +UCLASS(Abstract) +class NAKEDDESIRE_API UHUDCommissionTrackerWidget : public UCommonUserWidget +{ + GENERATED_BODY() + +protected: + virtual void NativeConstruct() override; + virtual void NativeDestruct() override; + +private: + // Holds one row per accepted commission. + UPROPERTY(meta = (BindWidget)) + TObjectPtr CommissionContainer; + + UPROPERTY(EditDefaultsOnly, Category = "HUD") + TSubclassOf CommissionEntryClass; + + // Bound to UMissionSubsystem::OnBoardChanged (a dynamic delegate, hence UFUNCTION). + UFUNCTION() + void Rebuild(); + + UMissionSubsystem* GetMissionSubsystem() const; +}; \ No newline at end of file diff --git a/Source/NakedDesire/UI/Phone/Apps/ForumCommissionWidget.h b/Source/NakedDesire/UI/Phone/Apps/ForumCommissionWidget.h index b3cb1938..38bcf99e 100644 --- a/Source/NakedDesire/UI/Phone/Apps/ForumCommissionWidget.h +++ b/Source/NakedDesire/UI/Phone/Apps/ForumCommissionWidget.h @@ -48,7 +48,8 @@ private: UPROPERTY(meta = (BindWidget)) TObjectPtr DescriptionText; - UPROPERTY(meta = (BindWidget)) + // Optional so display-only hosts (e.g. the HUD commission tracker) can reuse this row without a button. + UPROPERTY(meta = (BindWidgetOptional)) TObjectPtr AcceptButton; UPROPERTY(meta = (BindWidgetOptional))