diff --git a/Assets/UI/Items/ApartmentInvitationPass.png b/Assets/UI/Items/ApartmentInvitationPass.png new file mode 100644 index 00000000..557919d8 --- /dev/null +++ b/Assets/UI/Items/ApartmentInvitationPass.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:329b155f1ccfcd684c9ce9025637634df5bc9c3d4dc5cb76d564a56025fc984e +size 481374 diff --git a/EndlessVendetta/Content/AdvancedLocomotionV4/Blueprints/CharacterLogic/ALS_Base_CharacterBP.uasset b/EndlessVendetta/Content/AdvancedLocomotionV4/Blueprints/CharacterLogic/ALS_Base_CharacterBP.uasset index 209e43f2..bdd35391 100644 --- a/EndlessVendetta/Content/AdvancedLocomotionV4/Blueprints/CharacterLogic/ALS_Base_CharacterBP.uasset +++ b/EndlessVendetta/Content/AdvancedLocomotionV4/Blueprints/CharacterLogic/ALS_Base_CharacterBP.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3a75c4cfc0a1d77a2898dfbaaca821a4b749d66de8266f5b93c0f771db753d6c -size 3724862 +oid sha256:88afb1fecfdd75e9e8f0d8899c9c7a76bf54475d2fceb71845279c80a577d3d4 +size 3710303 diff --git a/EndlessVendetta/Content/AdvancedLocomotionV4/CharacterAssets/MannequinSkeleton/ALS_AnimBP.uasset b/EndlessVendetta/Content/AdvancedLocomotionV4/CharacterAssets/MannequinSkeleton/ALS_AnimBP.uasset index 952772e7..edf10a89 100644 --- a/EndlessVendetta/Content/AdvancedLocomotionV4/CharacterAssets/MannequinSkeleton/ALS_AnimBP.uasset +++ b/EndlessVendetta/Content/AdvancedLocomotionV4/CharacterAssets/MannequinSkeleton/ALS_AnimBP.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:894e64c518aa3708b6d32816bd269fc8adcfac11151e4cd58d7dd4fc522f5c5d -size 15224228 +oid sha256:da5a5f4acab81d568ef1dee65af6934023f5f6be696e0b88631ba6b56c349036 +size 15221081 diff --git a/EndlessVendetta/Content/AdvancedLocomotionV4/Data/DataTables/MovementModelTable.uasset b/EndlessVendetta/Content/AdvancedLocomotionV4/Data/DataTables/MovementModelTable.uasset index b89c024e..bba78aa7 100644 --- a/EndlessVendetta/Content/AdvancedLocomotionV4/Data/DataTables/MovementModelTable.uasset +++ b/EndlessVendetta/Content/AdvancedLocomotionV4/Data/DataTables/MovementModelTable.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7996c78a977034a8afa26bcb03a06564ad2c398c1e6adc548c517e1934cdfbbc +oid sha256:58f9a580671a5799e6bfacc3766acffe913bfe17edc5ce1725d9e3b81e378049 size 8325 diff --git a/EndlessVendetta/Content/Dialogue/BP_ChoiceButton.uasset b/EndlessVendetta/Content/Dialogue/BP_ChoiceButton.uasset deleted file mode 100644 index 99fe8f57..00000000 --- a/EndlessVendetta/Content/Dialogue/BP_ChoiceButton.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:92491ea67e7c30c15a81fb5f3f5ea677337f308489c06b92509a99b0fc6ad5bb -size 47654 diff --git a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset deleted file mode 100644 index 5f4edb5d..00000000 --- a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:becf8da587c9c1d29a5d7d23a32f1a2a589f97772ab05103857ead422db71baa -size 337375 diff --git a/EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset b/EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset index c8a1e2e7..294a8ed7 100644 --- a/EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset +++ b/EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b1e0389b55c1a3619cc6d04739ca92ebf332e67c2f9fce20a7d9a240d7fc654 -size 87783 +oid sha256:841bb8bdf087770361a7029177946a3549735505c0e2f76e47b81e9abb3b5877 +size 87786 diff --git a/EndlessVendetta/Content/Dialogue/Mayor_tutorial_dialogue_tree.uasset b/EndlessVendetta/Content/Dialogue/Mayor_tutorial_dialogue_tree.uasset deleted file mode 100644 index 10924e47..00000000 --- a/EndlessVendetta/Content/Dialogue/Mayor_tutorial_dialogue_tree.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2f80aa0f912419477dc9667f6ba9fb038ac46ded87477d07d81966e4db4008ae -size 105839 diff --git a/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset b/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset index 5f598325..f117b8bc 100644 --- a/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset +++ b/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec1e794ed8e8a4409f4bc77584623c727508513bf407e4059ce1e4a41b8d90c1 -size 24487 +oid sha256:b74ef4dd25f658d077e67b914acc35fe557a5269b9293b516ca7fae649b14eba +size 24490 diff --git a/EndlessVendetta/Content/Dialogue/UI/BP_ChoiceButton.uasset b/EndlessVendetta/Content/Dialogue/UI/BP_ChoiceButton.uasset new file mode 100644 index 00000000..98c15374 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/UI/BP_ChoiceButton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bde69045d815e508cfaf304e83646edfd9add75dc62cc589870e91aa2561d9a +size 47615 diff --git a/EndlessVendetta/Content/Dialogue/UI/BP_DialogueUI.uasset b/EndlessVendetta/Content/Dialogue/UI/BP_DialogueUI.uasset new file mode 100644 index 00000000..103eaa24 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/UI/BP_DialogueUI.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34df24376c8d24cc566d17498aa98176fb57848e40896ad997766b04ffb4f336 +size 361537 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset index c1bc34ba..8504a1d4 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:815df3978cc9abfdf7212f3f6d479f6cbe4103abb34b3a2d69c540c919e327ae -size 827084 +oid sha256:d8404752e6521b834daa72b03067ae5a4ec82b9921b0725bc305bcaa04ffb908 +size 818622 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_MainCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_MainCharacter.uasset index 28c63b98..e34b93cc 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_MainCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_MainCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c61bf8f8a9a3378e025556487f0bd86d25be1eef1d450f5da8e7f4d76795358 -size 1525435 +oid sha256:b7860a1f9b3977a94571670fd0e70cb199043382e5fbe8a5cf70aab754c49b8f +size 1535946 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/AnimatedPistol/ArmsAnimations/ABP_Arms.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/AnimatedPistol/ArmsAnimations/ABP_Arms.uasset index b705fc9b..365aaed2 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/AnimatedPistol/ArmsAnimations/ABP_Arms.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/AnimatedPistol/ArmsAnimations/ABP_Arms.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e89533a168e5c0d88bb0a8da4042c13d96d89adcc034d5c33430257d6e7d5093 -size 416357 +oid sha256:1120a6650c23f8d664cbcdd645068d431c19b44721be7835cf31787c675d02d5 +size 379926 diff --git a/EndlessVendetta/Content/FirstPersonArms/Animations/NewFirstPerson_AnimBP.uasset b/EndlessVendetta/Content/FirstPersonArms/Animations/NewFirstPerson_AnimBP.uasset deleted file mode 100644 index d6588e8e..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/Animations/NewFirstPerson_AnimBP.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:16c75ff1ae695d70ae4aa1d517049c8cb1c981d93a59ab470bc5534bccacd346 -size 964528 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/CR_MyVI_BothHands.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/CR_MyVI_BothHands.uasset deleted file mode 100644 index 7ae70eba..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/CR_MyVI_BothHands.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:98ac7e51a0fa063d2cec76b3a1af51094ca507c570ed67f2b848deb23c971f05 -size 180925 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/CR_MyVI_LeftHand.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/CR_MyVI_LeftHand.uasset deleted file mode 100644 index 4e5f058f..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/CR_MyVI_LeftHand.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:51b71e61eed57b4ea223a94dcdc564cb64292b10b008e07ec7bc7a01c6e53c52 -size 142031 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/CR_MyVI_RightHand.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/CR_MyVI_RightHand.uasset deleted file mode 100644 index d2aeb4ee..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/CR_MyVI_RightHand.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2764902041091cbc06c97111b28c6cd6fd6c189c5f17f13536bc700056d02d1b -size 142049 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_100.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_100.uasset deleted file mode 100644 index 87bf036d..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_100.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:88d65cc14478926f0d063711396e6bc40c787cabc22602b735c8ada8cc92c844 -size 82599 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_100_Montage.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_100_Montage.uasset deleted file mode 100644 index 37c261fb..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_100_Montage.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:24728201e5ecb497862123c4ef60ba553b00ebdd8ad35294f0255742c177a27d -size 9368 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_150.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_150.uasset deleted file mode 100644 index 91da4617..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_150.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:67d328fea4981f2f31877fe63cfc8c180212aa505a866e65a7d9a97380830015 -size 88069 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_150_Montage.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_150_Montage.uasset deleted file mode 100644 index 86d4ff87..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_150_Montage.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:61f7a74f491326853732777b292c2979b887661a6023e95e072906d3808d6126 -size 11766 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_200.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_200.uasset deleted file mode 100644 index 3308e78e..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_200.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0fa2e31e6746c1d2ae9ad3fbeb765b499ede4f5a443226b922a7b373317dceda -size 115343 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_200_Montage.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_200_Montage.uasset deleted file mode 100644 index 38440b34..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_200_Montage.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:be607e68c85ac5d93ce2363fdb7bab21ba42a6d8bf7cd7120565c04fde3a3d1b -size 13319 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_250.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_250.uasset deleted file mode 100644 index 28fd41f4..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_250.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:21d441bb2168f8914179a0b179e4f764acf13ecd71495fa4ab7e25dc6774ceec -size 126234 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_250_Montage.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_250_Montage.uasset deleted file mode 100644 index 99ba8ed2..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_250_Montage.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8e7aa4bcbdbf677720ce12db8c1b1184b406d47c329598ed05780798706ec74d -size 13301 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_45.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_45.uasset deleted file mode 100644 index a2ddfe60..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_45.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fd702f20cc02958c47b4ab40ab248fe54f0c868f6130596510243a0983288494 -size 82666 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_45_Montage.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_45_Montage.uasset deleted file mode 100644 index 51e728a4..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_45_Montage.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a83dd3218602cee0308b17ddb50c45d5ec51c67730c6564b85f1e19d69eb0ccb -size 9387 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_75.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_75.uasset deleted file mode 100644 index 71300d31..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_75.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:04976f9606a9d51a9ffeb3293367c70c5f96b71aed39fed7f6d0b54cd6d2edba -size 82690 diff --git a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_75_Montage.uasset b/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_75_Montage.uasset deleted file mode 100644 index 4ae4807d..00000000 --- a/EndlessVendetta/Content/FirstPersonArms/VaultIt/VaultItFP_Height_75_Montage.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7a433342c94e6b05230b79bf98a8625e21cbca23893de7232ac8583cdcbddbc1 -size 9411 diff --git a/EndlessVendetta/Content/Inventory/Items/Favour/Icons/ApartmentInvitationPass.uasset b/EndlessVendetta/Content/Inventory/Items/Favour/Icons/ApartmentInvitationPass.uasset new file mode 100644 index 00000000..5b0f9537 --- /dev/null +++ b/EndlessVendetta/Content/Inventory/Items/Favour/Icons/ApartmentInvitationPass.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c69d03d912e48d95715a6359f67444e40629276035f221d2af7a10a903a0ab33 +size 335243 diff --git a/EndlessVendetta/Content/Inventory/Items/Favour/InvItem_ApartmentPartyInvitation.uasset b/EndlessVendetta/Content/Inventory/Items/Favour/InvItem_ApartmentPartyInvitation.uasset new file mode 100644 index 00000000..0b1fed00 --- /dev/null +++ b/EndlessVendetta/Content/Inventory/Items/Favour/InvItem_ApartmentPartyInvitation.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3821065295931591f0503c242ca352044ee15e34b0db43c9bca0cca824b9eb19 +size 7464 diff --git a/EndlessVendetta/Content/Inventory/Items/Favour/Materials/M_ApartmentInvitation.uasset b/EndlessVendetta/Content/Inventory/Items/Favour/Materials/M_ApartmentInvitation.uasset new file mode 100644 index 00000000..3d19fb37 --- /dev/null +++ b/EndlessVendetta/Content/Inventory/Items/Favour/Materials/M_ApartmentInvitation.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10c5dd41b6340f57ee9ef7782949f796fd5745545a0e625faec4aee514352624 +size 28606 diff --git a/EndlessVendetta/Content/Inventory/Items/Favour/Materials/M_ApartmentInvitation_Rot.uasset b/EndlessVendetta/Content/Inventory/Items/Favour/Materials/M_ApartmentInvitation_Rot.uasset new file mode 100644 index 00000000..40d9e932 --- /dev/null +++ b/EndlessVendetta/Content/Inventory/Items/Favour/Materials/M_ApartmentInvitation_Rot.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f08e5e624d17d8a2ad33c8cc691d50e661854ca282a57a881a013ee31e76786 +size 28633 diff --git a/EndlessVendetta/Content/Inventory/M_Base.uasset b/EndlessVendetta/Content/Inventory/M_Base.uasset deleted file mode 100644 index ff9c03b9..00000000 --- a/EndlessVendetta/Content/Inventory/M_Base.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:46f740304c399e9d98a0a1744f320928201179685c6de52013d02fde640b0aa5 -size 21988 diff --git a/EndlessVendetta/Content/Inventory/M_Base_Rot.uasset b/EndlessVendetta/Content/Inventory/M_Base_Rot.uasset deleted file mode 100644 index ad45269b..00000000 --- a/EndlessVendetta/Content/Inventory/M_Base_Rot.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3dc387e928b76f39cdbad7961e09b77c848b2d6df0348a0f4052bdc98976a659 -size 18207 diff --git a/EndlessVendetta/Content/Inventory/MyBaseItem.uasset b/EndlessVendetta/Content/Inventory/MyBaseItem.uasset deleted file mode 100644 index 024d162f..00000000 --- a/EndlessVendetta/Content/Inventory/MyBaseItem.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:789627d1177e0ef93075f0ca5a5b27156b16dfce514a80c543108f133a70b7d2 -size 6587 diff --git a/EndlessVendetta/Content/Inventory/UI/M_Base.uasset b/EndlessVendetta/Content/Inventory/UI/M_Base.uasset new file mode 100644 index 00000000..4e8ef96c --- /dev/null +++ b/EndlessVendetta/Content/Inventory/UI/M_Base.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b6b19355ce10ac847520e11fba1afaf18cc8daa29aaa76c84a48599e4570a59 +size 21997 diff --git a/EndlessVendetta/Content/Inventory/UI/M_Base_Rot.uasset b/EndlessVendetta/Content/Inventory/UI/M_Base_Rot.uasset new file mode 100644 index 00000000..8215c35a --- /dev/null +++ b/EndlessVendetta/Content/Inventory/UI/M_Base_Rot.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1826eb6b8617fd3cf8109022a1d2f358d2265f8301d9b31e93a3b23054b835cb +size 18219 diff --git a/EndlessVendetta/Content/Inventory/UI/UI_InventoryEquipSlots.uasset b/EndlessVendetta/Content/Inventory/UI/UI_InventoryEquipSlots.uasset index ed25e697..6e5736fa 100644 --- a/EndlessVendetta/Content/Inventory/UI/UI_InventoryEquipSlots.uasset +++ b/EndlessVendetta/Content/Inventory/UI/UI_InventoryEquipSlots.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff6108b154c40bc8fdb49f4e7ee1d414bd9871ede0b9096858487ebc390556bd -size 79543 +oid sha256:145994e0e72bd3fea41ba9278915899d41ed4dd103f9287bb68919525a149ff2 +size 78752 diff --git a/EndlessVendetta/Content/Inventory/UI/zeldamus.uasset b/EndlessVendetta/Content/Inventory/UI/zeldamus.uasset new file mode 100644 index 00000000..449fe3db --- /dev/null +++ b/EndlessVendetta/Content/Inventory/UI/zeldamus.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:545927d73d21c7cb3bc28459fe4645e7cbc1e475ae7e7a17c35ae06a6e4898f2 +size 745781 diff --git a/EndlessVendetta/Content/Inventory/zeldamus.uasset b/EndlessVendetta/Content/Inventory/zeldamus.uasset deleted file mode 100644 index 840e1137..00000000 --- a/EndlessVendetta/Content/Inventory/zeldamus.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5616afc778197366258235add689576f3323e03e78a5ec49000fbac40dd6674b -size 745780 diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/OpenWorldInteractableCheckpoint.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/OpenWorldInteractableCheckpoint.h index b82127d4..793eb1c6 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/OpenWorldInteractableCheckpoint.h +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/OpenWorldInteractableCheckpoint.h @@ -4,6 +4,7 @@ #include "CoreMinimal.h" #include "OpenWorldCheckpoint.h" +#include "EndlessVendetta/InteractionInterface.h" #include "OpenWorldInteractableCheckpoint.generated.h" /** diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h index 98e767ad..26f35fe5 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h @@ -4,9 +4,8 @@ #include "CoreMinimal.h" #include "WaypointActor.h" -#include "EndlessVendetta/EndlessVendettaCharacter.h" #include "GameFramework/Actor.h" -#include +#include "EndlessVendetta/EndlessVendettaGameMode.h" #include "CheckpointClass.generated.h" DECLARE_DYNAMIC_MULTICAST_DELEGATE(FCompletedCheckpoint); diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h index a43d01c3..04b87c77 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h @@ -21,25 +21,23 @@ UCLASS() class ENDLESSVENDETTA_API ABountyHunterCharacter : public AEndlessVendettaCharacter { GENERATED_BODY() -// ------------------- ATTRIBUTES ------------------------------ + // ------------------- ATTRIBUTES ------------------------------ // Money Used for Buying things int Money = 0; - // Favours used for making bounties easier - int Favours = 999; - + // Array of Main Bounties' Classes in Order UPROPERTY(EditDefaultsOnly, Category = "Bounty Hunter") TArray> MainBountyClasses; - + // Reference to the Currently Active Main Bounty UPROPERTY() AMainBountyClass* CurrentMainBounty; // Index of Currently Active Main Bounty, Used for MainBountyClasses int CurrentMainBountyIndex = 0; - + // References to Currently Active Side Bounties TArray CurrentSideBounties; @@ -50,28 +48,28 @@ class ENDLESSVENDETTA_API ABountyHunterCharacter : public AEndlessVendettaCharac // Used to Check if all Main Bounties have been completed by the Bounties Tab bool CompletedMainBounties = false; -protected: - +protected: + public: + // Favours used for making bounties easier + int Favours = 999; - - -// ------------------- METHODS --------------------------------- + // ------------------- METHODS --------------------------------- private: // Spawns Current Main Bounty and spawns its appropriate CP's based on level void SpawnMainBounty(UEVGameInstance* GI); // Spawns Side Bounties from save system void SpawnSideBounties(UEVGameInstance* GI); - + // Collects Reward for Current Main Bounty and Increments the Main Bounty Index void CompleteCurrentMainBounty(UEVGameInstance* GI); // Collects Reward for Completing a Side Bounty UFUNCTION() void CompletedASideBounty(int CompletedSideBountiesUID); - + // Replaces Normal Bounty Info UI with Unique Game Over UI void AllBountiesCompleted() { @@ -89,7 +87,7 @@ protected: // Overridden to Setup up Pause Menu Inputs virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override; - + // Called When Actor destroyed or Removed from Level virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; @@ -103,7 +101,7 @@ protected: UFUNCTION(BlueprintImplementableEvent) void OpenWorldTips(); - + public: // Used by Final Checkpoint to always load the Level set as the Open Level in here FString GetOpenWorldLevelName() @@ -144,11 +142,8 @@ public: } - - - -// ------------------- Pause Menu --------------------------------- -private: + // ------------------- Pause Menu --------------------------------- +private: // Input Action for Opening and Closing Pause Menu UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true")) UInputAction* PauseMenuAction; @@ -159,7 +154,7 @@ private: // Reference to Pause Menu Widget UPauseMenuClass* PauseMenu; - + // Widget Class used to Spawn Bounties Tab Widget UPROPERTY(EditDefaultsOnly, Category = "Pause Menu") TSubclassOf BountyTabWidgetClass; @@ -175,7 +170,7 @@ private: // Widget Class used to Spawn Bounties Tab Widget UPROPERTY(EditDefaultsOnly, Category = "Pause Menu") TSubclassOf GameOverBountyTabWidgetClass; - + // Reference to Bounty Tab Widget UPROPERTY() UBountiesTab* BountiesTab; @@ -213,10 +208,10 @@ private: UQuitTab* QuitTab; // Creates and Stores References to each Pause Menu Tab on Begin Play - void CreatePauseMenuTabs(); + void CreatePauseMenuTabs(); // Open or Close the Pause Menu, Defaults to Opening Bounty Tab - void TogglePauseMenu(); + void TogglePauseMenu(); // Opens Bounties Tab UFUNCTION() @@ -252,7 +247,7 @@ private: { PauseMenu->OpenNewTab(QuitTab); } - + FBountyTabInfo BountyTabInfo; FMainBountyStruct MainBountyStruct; @@ -264,7 +259,7 @@ private: if (!IsValid(BountiesTab)) return; BountyTabInfo.MainBountyStruct = MainBountyStruct; BountyTabInfo.SideBountyStructs = SideBountyStructs; - + BountiesTab->UpdateBountyTab(BountyTabInfo); } @@ -273,7 +268,7 @@ private: void DeActivateAllBounties() { - if (IsValid(CurrentMainBounty)) CurrentMainBounty->DeActivateFirstCheckpoint(); + if (IsValid(CurrentMainBounty)) CurrentMainBounty->DeActivateFirstCheckpoint(); for (auto SideBounty : CurrentSideBounties) { SideBounty->DeActivateFirstCheckpoint(); diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacter.cpp deleted file mode 100644 index 2f688de5..00000000 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacter.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - - -#include "MyVICharacter.h" -#include "GAS/VIAbilitySystemComponent.h" -#include "Pawn/VIPawnVaultComponent.h" -#include "MotionWarpingComponent.h" - - -AMyVICharacter::AMyVICharacter(const FObjectInitializer& OI) - : Super(OI) -{ - VaultComponent = CreateDefaultSubobject(TEXT("PawnVaulting")); - MotionWarpingComponent = CreateDefaultSubobject(TEXT("MotionWarping")); -} - -void AMyVICharacter::BeginPlay() -{ - Super::BeginPlay(); - - // Init simulated proxy - if (AbilitySystem && GetLocalRole() == ROLE_SimulatedProxy) - { - // Will never have a valid controller - AbilitySystem->InitAbilityActorInfo(this, this); - } -} - -void AMyVICharacter::PossessedBy(AController* NewController) -{ - Super::PossessedBy(NewController); - - // Init authority/standalone - if (AbilitySystem) - { - AbilitySystem->InitAbilityActorInfo(this, this); - } -} - -void AMyVICharacter::OnRep_Controller() -{ - Super::OnRep_Controller(); - - // Init local client - if (AbilitySystem) - { - AbilitySystem->InitAbilityActorInfo(this, this); - } -} \ No newline at end of file diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacter.h b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacter.h deleted file mode 100644 index 11dd1a29..00000000 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacter.h +++ /dev/null @@ -1,35 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -#pragma once - -#include "CoreMinimal.h" -#include "MyVICharacterAbilityBase.h" -#include "MyVICharacter.generated.h" - -/** - * - */ -UCLASS() -class ENDLESSVENDETTA_API AMyVICharacter : public AMyVICharacterAbilityBase -{ - GENERATED_BODY() - -public: - UPROPERTY(EditDefaultsOnly, Category = Vault) - FVIAnimSet VaultAnimSet; - - UPROPERTY(EditDefaultsOnly, Category = Vault) - FVITraceSettings VaultTraceSettings; - - AMyVICharacter(const FObjectInitializer& OI); - - virtual void BeginPlay() override; - virtual void PossessedBy(AController* NewController) override; - virtual void OnRep_Controller() override; - - virtual UVIPawnVaultComponent* GetPawnVaultComponent_Implementation() const override { return VaultComponent; } - virtual UMotionWarpingComponent* GetMotionWarpingComponent_Implementation() const override { return MotionWarpingComponent; } - - virtual FVIAnimSet GetVaultAnimSet_Implementation() const override { return VaultAnimSet; } - virtual FVITraceSettings GetVaultTraceSettings_Implementation() const override { return VaultTraceSettings; } -}; diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterAbilityBase.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterAbilityBase.cpp deleted file mode 100644 index c8da0950..00000000 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterAbilityBase.cpp +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) 2019-2022 Drowning Dragons Limited. All Rights Reserved. - -#include "MyVICharacterAbilityBase.h" -#include "GAS/VIAbilitySystemComponent.h" - -AMyVICharacterAbilityBase::AMyVICharacterAbilityBase(const FObjectInitializer& OI) -// : Super(OI) -{ - AbilitySystem = CreateDefaultSubobject(TEXT("AbilitySystem")); - AbilitySystem->SetIsReplicated(true); - AbilitySystem->SetReplicationMode(EGameplayEffectReplicationMode::Mixed); - AbilitySystemReplicationMode = (EVIGameplayEffectReplicationMode)(uint8)AbilitySystem->ReplicationMode; -} - -#if WITH_EDITOR -void AMyVICharacterAbilityBase::PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) -{ - Super::PostEditChangeProperty(PropertyChangedEvent); - - if (PropertyChangedEvent.GetPropertyName().IsEqual(GET_MEMBER_NAME_CHECKED(AMyVICharacterAbilityBase, AbilitySystemReplicationMode))) - { - AbilitySystem->SetReplicationMode((EGameplayEffectReplicationMode)(uint8)AbilitySystemReplicationMode); - } -} -#endif // WITH_EDITOR - -UAbilitySystemComponent* AMyVICharacterAbilityBase::GetAbilitySystemComponent() const -{ - return AbilitySystem; -} diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterAbilityBase.h b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterAbilityBase.h deleted file mode 100644 index 50e7e3d4..00000000 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterAbilityBase.h +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) 2019-2022 Drowning Dragons Limited. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#include "AbilitySystemInterface.h" -#include "MyVICharacterBase.h" -#include "MyVICharacterAbilityBase.generated.h" - -class UVIAbilitySystemComponent; - -/** - * Adds a UVIAbilitySystemComponent to your character base - * Allows switching replication mode in Blueprint for the sake of AI using Minimal instead of Mixed - */ -UCLASS() -class ENDLESSVENDETTA_API AMyVICharacterAbilityBase : public AMyVICharacterBase, public IAbilitySystemInterface -{ - GENERATED_BODY() - -public: - UPROPERTY(BlueprintReadOnly, Category = Abilities) - UVIAbilitySystemComponent* AbilitySystem; - -protected: - /** - * Used by blueprints to allow changing replication mode which is usually - * only accessible via C++ - * - * Recommended as follows: - * For player characters use Mixed - * For AI characters use Minimal - */ - UPROPERTY(EditDefaultsOnly, Category = Abilities) - EVIGameplayEffectReplicationMode AbilitySystemReplicationMode; - -public: - AMyVICharacterAbilityBase(const FObjectInitializer& OI); - -#if WITH_EDITOR - virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override; -#endif // WITH_EDITOR - -protected: - // *********************************************** // - // ******** Begin IAbilitySystemInterface ******** // - // *********************************************** // - - virtual UAbilitySystemComponent* GetAbilitySystemComponent() const override; - - // *********************************************** // - // ********* End IAbilitySystemInterface ********* // - // *********************************************** // -}; \ No newline at end of file diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.cpp deleted file mode 100644 index 90cd1fe1..00000000 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.cpp +++ /dev/null @@ -1,322 +0,0 @@ -// Copyright (c) 2019-2022 Drowning Dragons Limited. All Rights Reserved. - -#include "EndlessVendetta/Characters/MyVICharacterBase.h" -#include "Pawn/VICharacterBase.h" -#include "Net/UnrealNetwork.h" -#include "GameFramework/CharacterMovementComponent.h" -#include "Pawn/VIPawnVaultComponent.h" -#include "MotionWarpingComponent.h" -#include "VIBlueprintFunctionLibrary.h" - -void AMyVICharacterBase::BeginPlay() -{ - Super::BeginPlay(); - - VaultComponent = IVIPawnInterface::Execute_GetPawnVaultComponent(this); - MotionWarpingComponent = IVIPawnInterface::Execute_GetMotionWarpingComponent(this); -} - -void AMyVICharacterBase::CheckJumpInput(float DeltaTime) -{ - const bool bIsVaulting = IsVaulting(); - - // Server update simulated proxies with correct vaulting state - if (GetLocalRole() == ROLE_Authority && GetNetMode() != NM_Standalone) - { - bRepIsVaulting = bIsVaulting; - } - - // Try to vault from local input - if (IsLocallyControlled() && VaultComponent) - { - // Disable jump if vaulting - if (VaultComponent->bPressedVault) - { - bPressedJump = false; - } - - // Possibly execute vault - if (GetCharacterMovement()) - { - VaultComponent->CheckVaultInput(DeltaTime, GetCharacterMovement()->MovementMode); - } - else - { - VaultComponent->CheckVaultInput(DeltaTime); - } - } - - // Pick up changes in vaulting state to change movement mode - // to something other than flying (required for root motion on Z) - if (bWasVaulting && !bIsVaulting) - { - StopVaultAbility(); - } - - // Call super so we actually jump if we're meant to - Super::CheckJumpInput(DeltaTime); - - // Cache end of frame - bWasVaulting = bIsVaulting; -} - -void AMyVICharacterBase::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const -{ - Super::GetLifetimeReplicatedProps(OutLifetimeProps); - - DOREPLIFETIME_CONDITION(AMyVICharacterBase, bRepIsVaulting, COND_SimulatedOnly); - DOREPLIFETIME_CONDITION(AMyVICharacterBase, RepMotionMatch, COND_SimulatedOnly); -} - -void AMyVICharacterBase::Jump() -{ - // If missing critical components then jump and exit - if (!VaultComponent || !GetCharacterMovement()) - { - UE_LOG(LogTemp, Warning, TEXT("no vault comp or character movement")); - Super::Jump(); - return; - } - - // Either jump or vault, determined by VaultComponent::EVIJumpKeyPriority - if (VaultComponent->Jump(GetCharacterMovement()->GetGravityZ(), CanJump(), GetCharacterMovement()->IsFalling())) - { - UE_LOG(LogTemp, Warning, TEXT("gravity Z: %f"), GetCharacterMovement()->GetGravityZ()); - // Jump normally - Super::Jump(); - } - else - { - UE_LOG(LogTemp, Warning, TEXT("try to vault")); - // Jump key essentially presses the vault input - VaultComponent->Vault(); - } -} - -void AMyVICharacterBase::StopJumping() -{ - Super::StopJumping(); - - // Release vault input if the jump key pressed vault instead - if (VaultComponent) - { - VaultComponent->StopJumping(); - } -} - -void AMyVICharacterBase::StartVaultAbility_Implementation() -{ - // Called by GA_Vault - // Need to be in flying mode to have root motion on Z axis - if (GetCharacterMovement() && GetLocalRole() > ROLE_SimulatedProxy) - { - GetCharacterMovement()->SetMovementMode(MOVE_Flying); - } -} - -void AMyVICharacterBase::StopVaultAbility() -{ - // Called by CheckJumpInput() - // Exiting flying mode - // This may put is straight into falling if we aren't properly grounded, which is fine - if (GetCharacterMovement() && GetLocalRole() > ROLE_SimulatedProxy) - { - GetCharacterMovement()->SetMovementMode(GetCharacterMovement()->GetGroundMovementMode()); - } - - OnStopVaultAbility(); -} - -void AMyVICharacterBase::OnRep_MotionMatch() -{ - // Simulated proxies update their sync points here, sent from the server during GA_Vault - MotionWarpingComponent->AddOrUpdateWarpTargetFromLocationAndRotation(TEXT("VaultSyncPoint"), RepMotionMatch.Location, RepMotionMatch.Direction.Rotation()); -} - -bool AMyVICharacterBase::IsVaulting() const -{ - // Simulated proxies use the value provided by server - if (GetLocalRole() == ROLE_SimulatedProxy) - { - return bRepIsVaulting; - } - - // Local and authority uses gameplay tags for a predicted result - if (VaultComponent) - { - return VaultComponent->IsVaulting(); - } - - return false; -} - -// *********************************************** // -// ******** Begin Pawn Vaulting Interface ******** // -// *********************************************** // - -UVIPawnVaultComponent* AMyVICharacterBase::GetPawnVaultComponent_Implementation() const -{ - // You need to override this - UVIBlueprintFunctionLibrary::MessageLogError(FString::Printf(TEXT("AVICharacterBase::GetPawnVaultComponent not implemented for { %s }. Cannot Vault."), *GetName())); - return nullptr; -} - -UMotionWarpingComponent* AMyVICharacterBase::GetMotionWarpingComponent_Implementation() const -{ - // You need to override this - UVIBlueprintFunctionLibrary::MessageLogError(FString::Printf(TEXT("AVICharacterBase::GetMotionWarpingComponent not implemented for { %s }. Cannot Vault."), *GetName())); - return nullptr; -} - -FVIAnimSet AMyVICharacterBase::GetVaultAnimSet_Implementation() const -{ - // You need to override this - UVIBlueprintFunctionLibrary::MessageLogError(FString::Printf(TEXT("AVICharacterBase::GetVaultAnimSet not implemented for { %s }. Cannot Vault."), *GetName())); - return FVIAnimSet(); -} - -FVITraceSettings AMyVICharacterBase::GetVaultTraceSettings_Implementation() const -{ - // You need to override this - UVIBlueprintFunctionLibrary::MessageLogError(FString::Printf(TEXT("AVICharacterBase::GetVaultTraceSettings not implemented for { %s }. Using default trace settings."), *GetName()), false); - return FVITraceSettings(); -} - -FVector AMyVICharacterBase::GetVaultDirection_Implementation() const -{ - // Use input vector if available - if (GetCharacterMovement() && !GetCharacterMovement()->GetCurrentAcceleration().IsNearlyZero()) - { - return GetCharacterMovement()->GetCurrentAcceleration(); - } - - // Use character facing direction if not providing input - return GetActorForwardVector(); -} - -bool AMyVICharacterBase::CanVault_Implementation() const -{ - // Vaulting must finish before starting another vault attempt - if (IsVaulting()) - { - UE_LOG(LogTemp, Warning, TEXT("is already vaulting")); - return false; - } - - // Invalid components - if (!VaultComponent || !GetCharacterMovement()) - { - UE_LOG(LogTemp, Warning, TEXT("invalid componets for vaulting")); - return false; - } - - // Animation instance is required to play vault montage - if (!GetMesh() || !GetMesh()->GetAnimInstance()) - { - UE_LOG(LogTemp, Warning, TEXT("Animation instance is required to play vault montage")); - return false; - } - - // Authority not initialized (this isn't set on clients) - if (HasAuthority() && !VaultComponent->bVaultAbilityInitialized) - { - UE_LOG(LogTemp, Warning, TEXT("Authority not initialized (this isn't set on clients), hence cant vault")); - return false; - } - - // Exit if character is in a state they cannot vault from - if (GetCharacterMovement()->IsMovingOnGround() || GetCharacterMovement()->IsFalling() || GetCharacterMovement()->IsSwimming()) - { - if (GetCharacterMovement()->IsMovingOnGround() && !VaultComponent->bCanVaultFromGround) - { - UE_LOG(LogTemp, Warning, TEXT("cant vault cuz on the ground and cant vault from ground")); - return false; - } - - if (GetCharacterMovement()->IsFalling() && !VaultComponent->bCanVaultFromFalling) - { - UE_LOG(LogTemp, Warning, TEXT("cant vault cuz is falling and cant vault from falling")); - return false; - } - - if (GetCharacterMovement()->IsSwimming() && !VaultComponent->bCanVaultFromSwimming) - { - UE_LOG(LogTemp, Warning, TEXT("cant vault from swimming")); - return false; - } - } - else - { - UE_LOG(LogTemp, Warning, TEXT("cant vault cuz isnt either swimming, walking on the ground or falling")); - return false; - } - - // Can't vault while crouching - if (!VaultComponent->bCanVaultFromCrouching && GetCharacterMovement()->IsCrouching()) - { - UE_LOG(LogTemp, Warning, TEXT("cant vault cuz is crouching")); - return false; - } - - UE_LOG(LogTemp, Warning, TEXT("actually can vault")); - // Passed all conditions - return true; -} - -void AMyVICharacterBase::OnLocalPlayerVault_Implementation(const FVector& Location, const FVector& Direction) -{ - // LocalPlayer just stores the data in the same place for convenience, ease of use, memory reduction, etc - RepMotionMatch = FVIRepMotionMatch(Location, Direction); -} - -void AMyVICharacterBase::GetVaultLocationAndDirection_Implementation(FVector& OutLocation, FVector& OutDirection) const -{ - // Because LocalPlayer stores in the same place, no need for any testing as they all use RepMotionMatch to store this - - // This is only currently used for FBIK tracing - OutLocation = RepMotionMatch.Location; - OutDirection = RepMotionMatch.Direction; -} - -void AMyVICharacterBase::ReplicateMotionMatch_Implementation(const FVIRepMotionMatch& MotionMatch) -{ - // GA_Vault has directed server to update it's RepMotionMatch property so that it will - // be replicated to simulated proxies with 1 decimal point of precision (net quantization) - RepMotionMatch = MotionMatch; -} - -bool AMyVICharacterBase::IsWalkable_Implementation(const FHitResult& HitResult) const -{ - // Surface we hit can be walked on or not - return GetCharacterMovement() && GetCharacterMovement()->IsWalkable(HitResult); -} - -bool AMyVICharacterBase::CanAutoVaultInCustomMovementMode_Implementation() const -{ - return true; - - // Example usage commented out - - /* - - if (GetCharacterMovement()) - { - switch (GetCharacterMovement()->CustomMovementMode) - { - case 0: - return false; - case 1: // Some example custom mode where auto vault can work - return true; - case 2: - return false; - default: - return true; - } - } - - */ -} - -// *********************************************** // -// ********* End Pawn Vaulting Interface ********* // -// *********************************************** // \ No newline at end of file diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.h b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.h deleted file mode 100644 index cd560d41..00000000 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.h +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (c) 2019-2022 Drowning Dragons Limited. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#include "BountyHunterCharacter.h" -#include "EndlessVendetta/EndlessVendettaCharacter.h" -#include "VITypes.h" -#include "Pawn/VIPawnInterface.h" -#include "MyVICharacterBase.generated.h" - -class UMotionWarpingComponent; -class UVIPawnVaultComponent; - -/** - * An incomplete character base class - * Needs to inherit from IAbilitySystemInterface and implement a UVIAbilitySystemComponent - * @see: AVICharacterAbilityBase where this is done for you - * - * Requires multiple overrides which will cause errors if not correctly performed - */ -UCLASS(abstract) -class ENDLESSVENDETTA_API AMyVICharacterBase : public ACharacter, public IVIPawnInterface -{ - GENERATED_BODY() - -public: - /** - * Motion Warping Component used for vaulting - */ - UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Character) - UMotionWarpingComponent* MotionWarpingComponent; - - /** - * Pawn Vault Component used for core vaulting logic - * - * This is added in Blueprint and must be returned via - * the IVIPawnInterface::GetPawnVaultComponent function - */ - UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Character) - UVIPawnVaultComponent* VaultComponent; - -protected: - /** Simulated proxies use this to update their vaulting state based on server values */ - UPROPERTY(Replicated, BlueprintReadWrite, Category = Vault) - bool bRepIsVaulting; - - /** Used to detect changes in vaulting state and call StopVaultAbility() */ - UPROPERTY() - bool bWasVaulting; - - /** - * Simulated proxies use this to reproduce motion matching results provided - * by server in the GA_Vault gameplay ability - * - * Local players use this as a cache for FBIK testing (returned via GetVaultLocationAndDirection) - * - * Net Serialized to one decimal point of precision - */ - UPROPERTY(ReplicatedUsing="OnRep_MotionMatch", BlueprintReadWrite, Category = Vault) - FVIRepMotionMatch RepMotionMatch; - -public: - virtual void BeginPlay() override; - - virtual void CheckJumpInput(float DeltaTime) override; - - virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; - -public: - virtual void Jump() override; - virtual void StopJumping() override; - - /** Called from gameplay ability when vault stops */ - UFUNCTION(BlueprintCallable, Category = Vault) - void StopVaultAbility(); - - UFUNCTION(BlueprintImplementableEvent, Category = Vault) - void OnStopVaultAbility(); - -protected: - UFUNCTION() - void OnRep_MotionMatch(); - -public: - /** - * @return True if vaulting - * Correct value must be returned based on net role here - * Simulated proxies return bRepIsVaulting - * Server & Authority must return CMC bIsVaulting - */ - UFUNCTION(BlueprintPure, Category = Vault) - virtual bool IsVaulting() const; - - // *********************************************** // - // *********** Begin IVIPawnInterface ************ // - // *********************************************** // - - // Read VIPawnInterface.h for detailed descriptions of these functions or look - // inside their functions themselves - - virtual UVIPawnVaultComponent* GetPawnVaultComponent_Implementation() const override; - virtual UMotionWarpingComponent* GetMotionWarpingComponent_Implementation() const override; - virtual USkeletalMeshComponent* GetMeshForVaultMontage_Implementation() const override { return GetMesh(); } - virtual FVIAnimSet GetVaultAnimSet_Implementation() const override; - virtual FVITraceSettings GetVaultTraceSettings_Implementation() const override; - virtual FVector GetVaultDirection_Implementation() const override; - virtual bool CanVault_Implementation() const override; - virtual void StartVaultAbility_Implementation() override; - virtual void OnLocalPlayerVault_Implementation(const FVector& Location, const FVector& Direction) override; - virtual void GetVaultLocationAndDirection_Implementation(FVector& OutLocation, FVector& OutDirection) const override; - virtual void ReplicateMotionMatch_Implementation(const FVIRepMotionMatch& MotionMatch) override; - virtual bool IsWalkable_Implementation(const FHitResult& HitResult) const override; - virtual bool CanAutoVaultInCustomMovementMode_Implementation() const override; - - // *********************************************** // - // ************* End IVIPawnInterface ************ // - // *********************************************** // -}; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp index 00c3b94f..1263f463 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp @@ -1,7 +1,11 @@ #include "DialogueChoiceNode.h" #include "DialogueEdge.h" +#include "DialogueTextNode.h" #include "DialogueTree.h" +#include "EndlessVendetta/EVGameInstance.h" +#include "EndlessVendetta/Characters/BountyHunterCharacter.h" +#include "EndlessVendetta/Inventory/InventoryComponent.h" #define LOCTEXT_NAMESPACE "UDialogueChoiceNode" @@ -16,6 +20,40 @@ UDialogueChoiceNode::UDialogueChoiceNode() #if WITH_EDITOR +bool UDialogueChoiceNode::ChoiceRequirementsMet(const int ChoiceID) const +{ + if (ChoiceID < 0 || ChoiceID >= Choices.Num()) return false; + if (ChildrenNodes.Num() == 0) return false; + if (!Cast(ChildrenNodes[ChoiceID])) return false; + const UEVGameInstance* GameInstance = Cast(GetWorld()->GetGameInstance()); + const UInventoryComponent* InventoryComponent = Cast(GetWorld()->GetFirstPlayerController()->GetPawn()->GetComponentByClass(UInventoryComponent::StaticClass())); + const ABountyHunterCharacter* PlayerCharacter = Cast(GetWorld()->GetFirstPlayerController()->GetPawn()); + UDialogueTextNode* TextNode = Cast(ChildrenNodes[ChoiceID]); + for (const EDialogueFlag Flag : TextNode->RequiredFlags) + { + if (!GameInstance->HasDialogueFlag(Flag)) return false; + } + for (const EItem Item : TextNode->RequiredItemsByEnumID) + { + if (!InventoryComponent->HasItemByEnumID(Item)) return false; + } + for (const int ItemID : TextNode->RequiredItemsByID) + { + if (!InventoryComponent->HasItemByItemID(ItemID)) return false; + } + if (TextNode->RequiredFavours > PlayerCharacter->Favours) return false; + return true; +} + +FString UDialogueChoiceNode::GetChoicePreText(const int ChoiceID) const +{ + if (ChoiceID < 0 || ChoiceID >= Choices.Num()) return "INVALID"; + if (ChildrenNodes.Num() == 0) return "INVALID"; + if (!Cast(ChildrenNodes[ChoiceID])) return "INVALID"; + const UDialogueTextNode* TextNode = Cast(ChildrenNodes[ChoiceID]); + return TextNode->RequirementPreText.ToString(); +} + FText UDialogueChoiceNode::GetNodeTitle() const { bool bHasValidNumberOfChoices = false; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h index 9f38ede7..87f2f2aa 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h @@ -15,6 +15,12 @@ public: UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") TArray Choices; + UFUNCTION(BlueprintCallable, Category = "Dialogue") + bool ChoiceRequirementsMet(int ChoiceID) const; + + UFUNCTION(BlueprintCallable, Category = "Dialogue") + FString GetChoicePreText(int ChoiceID) const; + #if WITH_EDITOR virtual FText GetNodeTitle() const override; virtual FLinearColor GetBackgroundColor() const override; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueFlagEnum.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueFlagEnum.h new file mode 100644 index 00000000..084e79d2 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueFlagEnum.h @@ -0,0 +1,18 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "DialogueFlagEnum.generated.h" + +/** + * + */ + +UENUM(BlueprintType) +enum class EDialogueFlag : uint8 +{ + None UMETA(DisplayName = "None"), + TestFlag1 UMETA(DisplayName = "Test Flag DO NOT USE"), + TestFlag2 UMETA(DisplayName = "Test Flag DO NOT USE"), +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h index 4eb9f33d..dfd352c8 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h @@ -1,8 +1,10 @@ #pragma once #include "CoreMinimal.h" +#include "DialogueFlagEnum.h" #include "GenericGraphNode.h" #include "DialogueTree.h" +#include "EndlessVendetta/Inventory/ItemEnum.h" #include "DialogueTextNode.generated.h" UENUM(BlueprintType) @@ -28,6 +30,17 @@ public: UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") ECharacterSpeaking DialogueCharacterSpeaking = ECharacterSpeaking::Character1; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Choice Requirement") + TArray RequiredFlags; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Choice Requirement") + TArray RequiredItemsByEnumID; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Choice Requirement") + TArray RequiredItemsByID; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Choice Requirement") + int RequiredFavours = 0; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Choice Requirement") + FText RequirementPreText = FText::FromString("None"); + #if WITH_EDITOR virtual FText GetNodeTitle() const override; virtual void SetNodeTitle(const FText& NewTitle) override; diff --git a/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp b/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp index 8a31fd61..84e05536 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp @@ -8,7 +8,7 @@ void UEVGameInstance::CreateNewSaveGameInstance() { if (UGameplayStatics::DoesSaveGameExist("MainSave", 0)) UGameplayStatics::DeleteGameInSlot("MainSave", 0); - + MainSaveGameInstanceRef = Cast(UGameplayStatics::CreateSaveGameObject(UMainSaveGameClass::StaticClass())); MainSaveGameInstanceRef->CurrentMainBountyIndexSave = 0; MainSaveGameInstanceRef->LastMainBountyIndexInOpenWorld = 0; @@ -30,6 +30,21 @@ void UEVGameInstance::DeleteSaveGameFiles() if (UGameplayStatics::DoesSaveGameExist("MainSave", 0)) UGameplayStatics::DeleteGameInSlot("MainSave", 0); } +void UEVGameInstance::AddDialogueFlag(const EDialogueFlag Flag) +{ + if (!HasDialogueFlag(Flag)) DialogueFlags.Add(Flag); +} + +void UEVGameInstance::RemoveDialogueFlag(const EDialogueFlag Flag) +{ + if (HasDialogueFlag(Flag)) DialogueFlags.Remove(Flag); +} + +bool UEVGameInstance::HasDialogueFlag(const EDialogueFlag Flag) const +{ + return DialogueFlags.Contains(Flag); +} + void UEVGameInstance::OnStart() { Super::OnStart(); diff --git a/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.h b/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.h index e568b835..e85c443b 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.h +++ b/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.h @@ -6,6 +6,8 @@ #include "Engine/GameInstance.h" #include "Http.h" #include "MainSaveGameClass.h" +#include "DialogueSystem/DialogueFlagEnum.h" +#include "Inventory/BaseItem.h" #include "EVGameInstance.generated.h" /** @@ -23,6 +25,9 @@ public: UPROPERTY() UMainSaveGameClass* MainSaveGameInstanceRef; + UPROPERTY() + TArray InventoryItems; + UFUNCTION(BlueprintCallable) void CreateNewSaveGameInstance(); @@ -31,10 +36,22 @@ public: UFUNCTION(BlueprintCallable) void DeleteSaveGameFiles(); - + + UFUNCTION(BlueprintCallable, Category = "DialogueFlags") + void AddDialogueFlag(EDialogueFlag Flag); + + UFUNCTION(BlueprintCallable, Category = "DialogueFlags") + void RemoveDialogueFlag(EDialogueFlag Flag); + + UFUNCTION(BlueprintCallable, Category = "DialogueFlags") + bool HasDialogueFlag(EDialogueFlag Flag) const; + protected: virtual void OnStart() override; + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "DialogueFlags", meta = (AllowPrivateAccess = "true")) + TArray DialogueFlags; + private: void IsValidSessionID(const FString& SessionID); void OnResponseReceived(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bConnectedSuccessfully); diff --git a/EndlessVendetta/Source/EndlessVendetta/Inventory/BaseItem.h b/EndlessVendetta/Source/EndlessVendetta/Inventory/BaseItem.h index 39d040bf..be6fc0fd 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Inventory/BaseItem.h +++ b/EndlessVendetta/Source/EndlessVendetta/Inventory/BaseItem.h @@ -3,6 +3,7 @@ #pragma once #include "CoreMinimal.h" +#include "ItemEnum.h" #include "BaseItem.generated.h" USTRUCT(BlueprintType) @@ -47,6 +48,8 @@ public: UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item") int ItemID; UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item") + EItem ItemEnumerationID; + UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item") FName ItemName; UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item") FText Description; @@ -59,10 +62,10 @@ public: UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item") UMaterialInterface* ItemTextureRotated; UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item") - TEnumAsByte CurrentItemRotation = Horizontal; - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item") TSubclassOf ItemActor; - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item") + UPROPERTY(BlueprintReadWrite, Category = "Item") + TEnumAsByte CurrentItemRotation = Horizontal; + UPROPERTY(BlueprintReadWrite, Category = "Item") bool bIsRotated = false; virtual void PostInitProperties() override; diff --git a/EndlessVendetta/Source/EndlessVendetta/Inventory/InventoryComponent.cpp b/EndlessVendetta/Source/EndlessVendetta/Inventory/InventoryComponent.cpp index 44eed2c0..befab466 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Inventory/InventoryComponent.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/Inventory/InventoryComponent.cpp @@ -3,7 +3,6 @@ #include "InventoryComponent.h" -#include "BaseItem.h" #include "Camera/CameraComponent.h" @@ -21,6 +20,7 @@ void UInventoryComponent::InitializeComponent() Super::InitializeComponent(); PlayerCharacter = GetOwner(); ItemToPickup = nullptr; + GameInstance = Cast(GetWorld()->GetGameInstance()); } // Called when the game starts @@ -30,7 +30,7 @@ void UInventoryComponent::BeginPlay() //FTimerHandle TraceTimerHandle; //GetWorld()->GetTimerManager().SetTimer(TraceTimerHandle, this, &UInventoryComponent::ProjectTraceForItem, 0.1f, true); - InventoryItems.Init(nullptr, Columns * Rows); + GameInstance->InventoryItems.Init(nullptr, Columns * Rows); } @@ -49,7 +49,7 @@ void UInventoryComponent::TickComponent(float DeltaTime, ELevelTick TickType, FA bool UInventoryComponent::AddItem(UBaseItem* Item) { if (!IsValid(Item)) return false; - for (int i = 0; i < InventoryItems.Num(); i++) + for (int i = 0; i < GameInstance->InventoryItems.Num(); i++) { if (IsRoomAvailable(Item, i)) { @@ -58,7 +58,7 @@ bool UInventoryComponent::AddItem(UBaseItem* Item) } } Item->RotateItem(); - for (int i = 0; i < InventoryItems.Num(); i++) + for (int i = 0; i < GameInstance->InventoryItems.Num(); i++) { if (IsRoomAvailable(Item, i)) { @@ -124,9 +124,9 @@ FInventoryTile UInventoryComponent::IndexToTile(const int Index) const TTuple UInventoryComponent::GetItemAtIndex(const int Index) { - if (!InventoryItems.IsValidIndex(Index)) return MakeTuple(nullptr, false); - if (!IsValid(InventoryItems[Index])) return MakeTuple(nullptr, false); - return MakeTuple(InventoryItems[Index], true); + if (!GameInstance->InventoryItems.IsValidIndex(Index)) return MakeTuple(nullptr, false); + if (!IsValid(GameInstance->InventoryItems[Index])) return MakeTuple(nullptr, false); + return MakeTuple(GameInstance->InventoryItems[Index], true); } int UInventoryComponent::TileToIndex(const FInventoryTile InventoryTile) const @@ -144,7 +144,7 @@ void UInventoryComponent::AddItemAt(UBaseItem* Item, const int TopLeftIndex) TileToCheck.X = i; TileToCheck.Y = j; if (!IsTileValid(TileToCheck)) return; - InventoryItems[TileToIndex(TileToCheck)] = Item; + GameInstance->InventoryItems[TileToIndex(TileToCheck)] = Item; } } IsDirty = true; @@ -153,9 +153,9 @@ void UInventoryComponent::AddItemAt(UBaseItem* Item, const int TopLeftIndex) TMap UInventoryComponent::GetAllItems() { TMap Items; - for (int i = 0; i < InventoryItems.Num(); i++) + for (int i = 0; i < GameInstance->InventoryItems.Num(); i++) { - UBaseItem* Item = InventoryItems[i]; + UBaseItem* Item = GameInstance->InventoryItems[i]; if (!IsValid(Item)) continue; if (Items.Contains(Item)) continue; Items.Add(Item, IndexToTile(i)); @@ -166,11 +166,11 @@ TMap UInventoryComponent::GetAllItems() void UInventoryComponent::RemoveItem(UBaseItem* Item) { if (!IsValid(Item)) return; - for (int i = 0; i < InventoryItems.Num(); i++) + for (int i = 0; i < GameInstance->InventoryItems.Num(); i++) { - if (InventoryItems[i] == Item) + if (GameInstance->InventoryItems[i] == Item) { - InventoryItems[i] = nullptr; + GameInstance->InventoryItems[i] = nullptr; IsDirty = true; } } @@ -187,10 +187,20 @@ void UInventoryComponent::UpdateInventorySize(const int _Columns, const int _Row { Columns = _Columns; Rows = _Rows; - InventoryItems.SetNum(Columns * Rows); + GameInstance->InventoryItems.SetNum(Columns * Rows); OnInventorySizeUpdated.Broadcast(); } +bool UInventoryComponent::HasItemByEnumID(EItem ItemEnumID) const +{ + return GameInstance->InventoryItems.ContainsByPredicate([ItemEnumID](const UBaseItem* Item) { return IsValid(Item) && Item->ItemEnumerationID == ItemEnumID; }); +} + +bool UInventoryComponent::HasItemByItemID(int ItemID) const +{ + return GameInstance->InventoryItems.ContainsByPredicate([ItemID](const UBaseItem* Item) { return IsValid(Item) && Item->ItemID == ItemID; }); +} + void UInventoryComponent::SetPrimaryWeapon(AActor* const _PrimaryWeapon) { PrimaryWeapon = _PrimaryWeapon; diff --git a/EndlessVendetta/Source/EndlessVendetta/Inventory/InventoryComponent.h b/EndlessVendetta/Source/EndlessVendetta/Inventory/InventoryComponent.h index e510717e..8e4e782e 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Inventory/InventoryComponent.h +++ b/EndlessVendetta/Source/EndlessVendetta/Inventory/InventoryComponent.h @@ -3,8 +3,11 @@ #pragma once #include "CoreMinimal.h" +#include "BaseItem.h" #include "Components/ActorComponent.h" #include "InventoryStructs.h" +#include "EndlessVendetta/EVGameInstance.h" +#include "ItemEnum.h" #include "InventoryComponent.generated.h" @@ -25,7 +28,6 @@ public: UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Inventory") float MaxPickupDistance = 200.0f; - protected: // Called when the game starts virtual void BeginPlay() override; @@ -35,12 +37,14 @@ public: virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnInventoryUpdated); + UPROPERTY(BlueprintAssignable, Category="Inventory") FOnInventoryUpdated OnInventoryUpdated; DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnInventorySizeUpdated); + UPROPERTY(BlueprintAssignable, Category = "Inventory") FOnInventorySizeUpdated OnInventorySizeUpdated; - + UFUNCTION(BlueprintCallable, Category="Inventory") bool AddItem(class UBaseItem* Item); UFUNCTION(BlueprintCallable, Category="Inventory") @@ -64,7 +68,11 @@ public: void SpawnItem(UBaseItem* Item, FVector Location); UFUNCTION(BlueprintCallable, Category = "Inventory") void UpdateInventorySize(const int _Columns, const int _Rows); - + UFUNCTION(BlueprintCallable, Category = "Inventory") + bool HasItemByEnumID(EItem ItemEnumID) const; + UFUNCTION(BlueprintCallable, Category = "Inventory") + bool HasItemByItemID(int ItemID) const; + void SetPrimaryWeapon(AActor* const _PrimaryWeapon); AActor* GetPrimaryWeapon() const; void SetSecondaryWeapon(AActor* const _SecondaryWeapon); @@ -72,14 +80,14 @@ public: private: bool IsTileValid(const FInventoryTile InventoryTile) const; - + UPROPERTY() AActor* PlayerCharacter; UPROPERTY() AActor* ItemToPickup; - bool IsDirty = false; UPROPERTY() - TArray InventoryItems; + UEVGameInstance* GameInstance; + bool IsDirty = false; AActor* PrimaryWeapon; AActor* SecondaryWeapon; }; diff --git a/EndlessVendetta/Source/EndlessVendetta/Inventory/ItemEnum.h b/EndlessVendetta/Source/EndlessVendetta/Inventory/ItemEnum.h new file mode 100644 index 00000000..4a5739a1 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/Inventory/ItemEnum.h @@ -0,0 +1,17 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "ItemEnum.generated.h" + +/** + * + */ + +UENUM(BlueprintType) +enum class EItem : uint8 +{ + None UMETA(DisplayName = "None"), + ApartmentPartyInvite UMETA(DisplayName = "Apartment Party Invite"), +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h b/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h index 667579f5..41f79711 100644 --- a/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h @@ -5,6 +5,8 @@ #include "CoreMinimal.h" #include "BountySystem/SideBountyClass.h" #include "BountySystem/CheckPoints/OpenWorldCheckpoint.h" +#include "GadgetSystem/CombatGadget.h" +#include "GadgetSystem/ReconGadget.h" #include "GameFramework/SaveGame.h" #include "WeaponSystem/BaseWeaponClass.h" #include "MainSaveGameClass.generated.h"