diff --git a/.gitignore b/.gitignore index e9fc022..f03af7b 100644 --- a/.gitignore +++ b/.gitignore @@ -99,11 +99,88 @@ Build/Android/res/*/* ### VisualStudioCode ### .git .vscode -Content DerivedDataCache Intermediate Saved Script # Discord Rich Presence -EditorDiscordRichPresence \ No newline at end of file +EditorDiscordRichPresence + +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser +.idea +*.iml +out +gen + +RiderLink/ diff --git a/.ignore b/.ignore index b14364c..c85ee45 100644 --- a/.ignore +++ b/.ignore @@ -4,4 +4,3 @@ Content DerivedDataCache Intermediate Saved -Script diff --git a/Config/DefaultEditor.ini b/Config/DefaultEditor.ini index e69de29..8b13789 100644 --- a/Config/DefaultEditor.ini +++ b/Config/DefaultEditor.ini @@ -0,0 +1 @@ + diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini index c6d8c66..1fba0b6 100644 --- a/Config/DefaultEngine.ini +++ b/Config/DefaultEngine.ini @@ -1,39 +1,7 @@ - - -[/Script/EngineSettings.GameMapsSettings] -GameDefaultMap=/Game/Levels/Main.Main - - -EditorStartupMap=/Game/Levels/Main.Main -GlobalDefaultGameMode=/Script/the_twilight_abyss.the_twilight_abyssGameModeBase - -[/Script/HardwareTargeting.HardwareTargetingSettings] -TargetedHardwareClass=Desktop -AppliedTargetedHardwareClass=Desktop -DefaultGraphicsPerformance=Maximum -AppliedDefaultGraphicsPerformance=Maximum - -[/Script/WindowsTargetPlatform.WindowsTargetSettings] -DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 - -[/Script/Engine.RendererSettings] -r.GenerateMeshDistanceFields=True -r.DynamicGlobalIlluminationMethod=1 -r.ReflectionMethod=1 -r.Shadow.Virtual.Enable=1 - -[/Script/WorldPartitionEditor.WorldPartitionEditorSettings] -CommandletClass=Class'/Script/UnrealEd.WorldPartitionConvertCommandlet' - -[/Script/Engine.Engine] -+ActiveGameNameRedirects=(OldGameName="TP_Blank",NewGameName="/Script/the_twilight_abyss") -+ActiveGameNameRedirects=(OldGameName="/Script/TP_Blank",NewGameName="/Script/the_twilight_abyss") -+ActiveClassRedirects=(OldClassName="TP_BlankGameModeBase",NewClassName="the_twilight_abyssGameModeBase") - [/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] bEnablePlugin=True bAllowNetworkConnection=True -SecurityToken=DB2C79604D560F95FCE2F0AB4CCF2F08 +SecurityToken=C35635AB4464641248F9498D0F62F177 bIncludeInShipping=False bAllowExternalStartInShipping=False bCompileAFSProject=False @@ -44,3 +12,89 @@ ConnectionType=USBOnly bUseManualIPAddress=False ManualIPAddress= +[/Script/Engine.Engine] ++ActiveGameNameRedirects=(OldGameName="/Script/TP_ThirdPerson",NewGameName="/Script/the_twilight_abyss") ++ActiveGameNameRedirects=(OldGameName="TP_ThirdPerson",NewGameName="/Script/the_twilight_abyss") + +[/Script/EngineSettings.GameMapsSettings] +EditorStartupMap=/Game/Levels/Prototype.Prototype +LocalMapOptions= +TransitionMap=None +bUseSplitscreen=True +TwoPlayerSplitscreenLayout=Horizontal +ThreePlayerSplitscreenLayout=FavorTop +FourPlayerSplitscreenLayout=Grid +bOffsetPlayerGamepadIds=False +GameInstanceClass=/Script/Engine.GameInstance +GameDefaultMap=/Game/Levels/Prototype.Prototype +ServerDefaultMap=/Engine/Maps/Entry.Entry +GlobalDefaultGameMode=/Game/Merchant/BP_MerchantGameMode.BP_MerchantGameMode_C +GlobalDefaultServerGameMode=None + +[/Script/Engine.CollisionProfile] +-Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision",bCanModify=False) +-Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ",bCanModify=False) +-Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ",bCanModify=False) +-Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic",Response=ECR_Block),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.",bCanModify=False) +-Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors",bCanModify=False) +-Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors",bCanModify=False) +-Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.",bCanModify=False) +-Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.",bCanModify=False) +-Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="UI",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Block),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) ++Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision") ++Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.") ++Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ") ++Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ") ++Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic"),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.") ++Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.") ++Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors") ++Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors") ++Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.") ++Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.") ++Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.") ++Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.") ++Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.") ++Profiles=(Name="UI",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility"),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="Player") +-ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall") +-ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn") +-ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic") +-ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor") +-ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic") ++ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall") ++ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn") ++ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic") ++ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor") ++ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic") +-CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic") +-CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic") +-CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle") +-CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") ++CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic") ++CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic") ++CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle") ++CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") + + +[CoreRedirects] ++PropertyRedirects=(OldName="/Script/the_twilight_abyss.TurnBaseCombat.isPlayerTurn",NewName="/Script/the_twilight_abyss.TurnBaseCombat.bIsPlayerTurn") ++PropertyRedirects=(OldName="/Script/the_twilight_abyss.TurnBaseCombat.playerHealth",NewName="/Script/the_twilight_abyss.TurnBaseCombat.PlayerHealth") ++PropertyRedirects=(OldName="/Script/the_twilight_abyss.TurnBaseCombat.enemyHealth",NewName="/Script/the_twilight_abyss.TurnBaseCombat.EnemyHealth") ++PropertyRedirects=(OldName="/Script/the_twilight_abyss.TurnBaseCombat.defaultActionPoints",NewName="/Script/the_twilight_abyss.TurnBaseCombat.DefaultActionPoints") ++PropertyRedirects=(OldName="/Script/the_twilight_abyss.TurnBaseCombat.TestButton",NewName="/Script/the_twilight_abyss.TurnBaseCombat.CastButton") ++PropertyRedirects=(OldName="/Script/the_twilight_abyss.TurnBaseCombat.CurrentCombo",NewName="/Script/the_twilight_abyss.TurnBaseCombat.CurrentComboTextBlock") ++PropertyRedirects=(OldName="/Script/the_twilight_abyss.TurnBaseCombat.TurnIndicator",NewName="/Script/the_twilight_abyss.TurnBaseCombat.TurnIndicatorTextBlock") + diff --git a/Config/DefaultGame.ini b/Config/DefaultGame.ini deleted file mode 100644 index 1f5b083..0000000 --- a/Config/DefaultGame.ini +++ /dev/null @@ -1,9 +0,0 @@ - -[/Script/EngineSettings.GeneralProjectSettings] -ProjectID=FCCEDCD4410CCAFCCB4EF4BD279589AB -ProjectName=The Twilight Abyss - -[StartupActions] -bAddPacks=True -InsertPack=(PackSource="StarterContent.upack",PackName="StarterContent") - diff --git a/Config/DefaultInput.ini b/Config/DefaultInput.ini new file mode 100644 index 0000000..1be73f7 --- /dev/null +++ b/Config/DefaultInput.ini @@ -0,0 +1,95 @@ +[/Script/Engine.InputSettings] +-AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) ++AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Touch",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) +bAltEnterTogglesFullscreen=True +bF11TogglesFullscreen=True +bUseMouseForTouch=False +bEnableMouseSmoothing=True +bEnableFOVScaling=True +bCaptureMouseOnLaunch=True +bEnableLegacyInputScales=True +bAlwaysShowTouchInterface=False +bShowConsoleOnFourFingerTap=True +bEnableGestureRecognizer=False +bUseAutocorrect=False +DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown +DefaultViewportMouseLockMode=LockOnCapture +FOVScale=0.011110 +DoubleClickTime=0.200000 ++ActionMappings=(ActionName="Jump",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Gamepad_FaceButton_Bottom) ++ActionMappings=(ActionName="Jump",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=SpaceBar) ++ActionMappings=(ActionName="Interact",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=E) ++AxisMappings=(AxisName="Look Up / Down Gamepad",Scale=1.000000,Key=Gamepad_RightY) ++AxisMappings=(AxisName="Look Up / Down Mouse",Scale=-1.000000,Key=MouseY) ++AxisMappings=(AxisName="Move Forward / Backward",Scale=1.000000,Key=Gamepad_LeftY) ++AxisMappings=(AxisName="Move Forward / Backward",Scale=-1.000000,Key=S) ++AxisMappings=(AxisName="Move Forward / Backward",Scale=1.000000,Key=W) ++AxisMappings=(AxisName="Move Right / Left",Scale=-1.000000,Key=A) ++AxisMappings=(AxisName="Move Right / Left",Scale=1.000000,Key=D) ++AxisMappings=(AxisName="Move Right / Left",Scale=1.000000,Key=Gamepad_LeftX) ++AxisMappings=(AxisName="Turn Right / Left Gamepad",Scale=1.000000,Key=Gamepad_RightX) ++AxisMappings=(AxisName="Turn Right / Left Mouse",Scale=1.000000,Key=MouseX) +DefaultPlayerInputClass=/Script/Engine.PlayerInput +DefaultInputComponentClass=/Script/Engine.InputComponent +DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks +-ConsoleKeys=Tilde ++ConsoleKeys=Tilde + diff --git a/Content/Blueprints/BP_CrossHair.uasset b/Content/Blueprints/BP_CrossHair.uasset new file mode 100644 index 0000000..9f8931e --- /dev/null +++ b/Content/Blueprints/BP_CrossHair.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a280ea28495f581d57c633b55688d29b2deee4204a9d743b96deddb02a8bc1c +size 24157 diff --git a/Content/Blueprints/BP_HealingJellyItem.uasset b/Content/Blueprints/BP_HealingJellyItem.uasset new file mode 100644 index 0000000..f66b6a9 --- /dev/null +++ b/Content/Blueprints/BP_HealingJellyItem.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9bb81fd6a904d7139d83d81f2d8fbecf448eda7710959bfa2a32faf2e2eee72 +size 29888 diff --git a/Content/Blueprints/BP_Interaction.uasset b/Content/Blueprints/BP_Interaction.uasset new file mode 100644 index 0000000..dcb91cb --- /dev/null +++ b/Content/Blueprints/BP_Interaction.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42db740853a281bd78c277e9281ab2af4bdf9d0ee834045782e066ee782e9e67 +size 27990 diff --git a/Content/Blueprints/BP_MyTempCharacter.uasset b/Content/Blueprints/BP_MyTempCharacter.uasset new file mode 100644 index 0000000..585dc7f --- /dev/null +++ b/Content/Blueprints/BP_MyTempCharacter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c720b55a9e91e62f991279ef9d043ef8e41e3282b1b1c640ddb46dd4c8efc543 +size 53356 diff --git a/Content/Blueprints/Combat_UI/CombatCharacter.uasset b/Content/Blueprints/Combat_UI/CombatCharacter.uasset new file mode 100644 index 0000000..e4f2f48 --- /dev/null +++ b/Content/Blueprints/Combat_UI/CombatCharacter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c31aac33ef5d0aa521d5f3d3e58b8f14a0d3fff128c14aa997250176c9f70a3 +size 58942 diff --git a/Content/Blueprints/Combat_UI/Combat_Test.uasset b/Content/Blueprints/Combat_UI/Combat_Test.uasset new file mode 100644 index 0000000..0bda715 --- /dev/null +++ b/Content/Blueprints/Combat_UI/Combat_Test.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c48f0350acc892517c4952a5d233ddf56b7a84589b5784526238c4bbd6e2d5b5 +size 19567 diff --git a/Content/Blueprints/Combat_UI/Combat_UI.uasset b/Content/Blueprints/Combat_UI/Combat_UI.uasset new file mode 100644 index 0000000..aae01ca --- /dev/null +++ b/Content/Blueprints/Combat_UI/Combat_UI.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:545b239dc38454f274d0f4ff5310ec6655a045999eb17764ed0e9bf31e17fa42 +size 56768 diff --git a/Content/Blueprints/Combat_UI/Gun/Gun.uasset b/Content/Blueprints/Combat_UI/Gun/Gun.uasset new file mode 100644 index 0000000..3862adc --- /dev/null +++ b/Content/Blueprints/Combat_UI/Gun/Gun.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:205c885da03a3f5325b8cb4f8ddfcf02b809121ea9469ba5a619fa1597579d13 +size 9624 diff --git a/Content/Blueprints/Combat_UI/Gun/GunProto.uasset b/Content/Blueprints/Combat_UI/Gun/GunProto.uasset new file mode 100644 index 0000000..a93e70b --- /dev/null +++ b/Content/Blueprints/Combat_UI/Gun/GunProto.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f09f7bd05bd8416322accb926f6ce22c84e7c28a0cd3b4492aeb2825538586bf +size 88873 diff --git a/Content/Blueprints/Combat_UI/Gun/image__1_.uasset b/Content/Blueprints/Combat_UI/Gun/image__1_.uasset new file mode 100644 index 0000000..6399a64 --- /dev/null +++ b/Content/Blueprints/Combat_UI/Gun/image__1_.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4174817eba7e47e1e7a180678e9b57397f6716c843dc156d58f42d292d97b5a0 +size 166238 diff --git a/Content/Blueprints/Combat_UI/TestEnemy.uasset b/Content/Blueprints/Combat_UI/TestEnemy.uasset new file mode 100644 index 0000000..c3218e2 --- /dev/null +++ b/Content/Blueprints/Combat_UI/TestEnemy.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6b4fea5308fdb84b02f9295a3e764f5bec8045a868f600a36e9d61174e8bdc6 +size 33721 diff --git a/Content/Blueprints/Items/BP_BuffJelly.uasset b/Content/Blueprints/Items/BP_BuffJelly.uasset new file mode 100644 index 0000000..c1bc784 --- /dev/null +++ b/Content/Blueprints/Items/BP_BuffJelly.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:334fec1c48b0bb04fe272b83310d5211cd1c78feed1a2adbbd3d13dffdffa90f +size 6726 diff --git a/Content/Blueprints/Items/BP_HealingJelly.uasset b/Content/Blueprints/Items/BP_HealingJelly.uasset new file mode 100644 index 0000000..65677e7 --- /dev/null +++ b/Content/Blueprints/Items/BP_HealingJelly.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79844600695e0e7790cb68584c0c58f21af18a8872904ccd645f1ec3108da22d +size 6681 diff --git a/Content/Blueprints/WBP_ItemDisplay.uasset b/Content/Blueprints/WBP_ItemDisplay.uasset new file mode 100644 index 0000000..6337ca6 --- /dev/null +++ b/Content/Blueprints/WBP_ItemDisplay.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e54ac7119c349323ce6d57b3658300f982eed6ffe9922c47c13448aeb4173e8 +size 84619 diff --git a/Content/Blueprints/WBP_PlayerInventory.uasset b/Content/Blueprints/WBP_PlayerInventory.uasset new file mode 100644 index 0000000..1af5b3c --- /dev/null +++ b/Content/Blueprints/WBP_PlayerInventory.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38c83f1bddcf376360f7860312744872858e4c43b3c14d5153ae35923d9a8faf +size 96657 diff --git a/Content/Blueprints/WBP_Shop.uasset b/Content/Blueprints/WBP_Shop.uasset new file mode 100644 index 0000000..548aa62 --- /dev/null +++ b/Content/Blueprints/WBP_Shop.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a2f46e884f8c8bcd1bb029db2828769bdbd7a23296896f5a71bda84cd2626c7 +size 24782 diff --git a/Content/BungeeMan/CR_BungeeMan.uasset b/Content/BungeeMan/CR_BungeeMan.uasset new file mode 100644 index 0000000..db83a3b --- /dev/null +++ b/Content/BungeeMan/CR_BungeeMan.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93ac76db9451b3642a2784c9bf936c1f3900ca990b987bfea82a13bff00c3a5a +size 11666577 diff --git a/Content/BungeeMan/LS_BungeeManCycle.uasset b/Content/BungeeMan/LS_BungeeManCycle.uasset new file mode 100644 index 0000000..79f1b03 --- /dev/null +++ b/Content/BungeeMan/LS_BungeeManCycle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60bff95c1bdcc8588dfb8a9333fd5531e465968a0c007b134c95b1899ec27dd3 +size 168127 diff --git a/Content/BungeeMan/LS_BungeeMan_Poses.uasset b/Content/BungeeMan/LS_BungeeMan_Poses.uasset new file mode 100644 index 0000000..6ca9c58 --- /dev/null +++ b/Content/BungeeMan/LS_BungeeMan_Poses.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:980322fe6cfda3ce9f062dc5ffd47ea874cda58179897280c4c4b9012fca4815 +size 476726 diff --git a/Content/BungeeMan/Main.umap b/Content/BungeeMan/Main.umap new file mode 100644 index 0000000..64c4f2d --- /dev/null +++ b/Content/BungeeMan/Main.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b86611bf1dff9716001d330aefa68e97a92056692de08ca8852c07b628479947 +size 39330 diff --git a/Content/BungeeMan/Mat_BungeeMan_Body.uasset b/Content/BungeeMan/Mat_BungeeMan_Body.uasset new file mode 100644 index 0000000..8eed51e --- /dev/null +++ b/Content/BungeeMan/Mat_BungeeMan_Body.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a41cda36ea55d325e757f6f11eab9800009fb42cdfd8266db93ab0d72f17c49a +size 7494 diff --git a/Content/BungeeMan/Mat_BungeeMan_Rubber.uasset b/Content/BungeeMan/Mat_BungeeMan_Rubber.uasset new file mode 100644 index 0000000..d95d86c --- /dev/null +++ b/Content/BungeeMan/Mat_BungeeMan_Rubber.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:603e36c891890c2d263fbb621b4e95eacec250a0744a704fea5f3b1664ad542b +size 7502 diff --git a/Content/BungeeMan/SKM_BungeeMan.uasset b/Content/BungeeMan/SKM_BungeeMan.uasset new file mode 100644 index 0000000..a8dadc8 --- /dev/null +++ b/Content/BungeeMan/SKM_BungeeMan.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f29bbe3ebc6bf1b93dc3aeb4ff6b45581f574bd3cc387485daf8a2e67f315f36 +size 3221902 diff --git a/Content/BungeeMan/SK_BungeeMan.uasset b/Content/BungeeMan/SK_BungeeMan.uasset new file mode 100644 index 0000000..5175a98 --- /dev/null +++ b/Content/BungeeMan/SK_BungeeMan.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c0c76362f68a4093e228cd091e6ae23e61dfe3d2b79270f9e739fe76e238170 +size 48550 diff --git a/Content/Environment/Material.uasset b/Content/Environment/Material.uasset new file mode 100644 index 0000000..7f667b7 --- /dev/null +++ b/Content/Environment/Material.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31a95c596aebc9556a330604ccbcb7a94d0c9f265307edb92acfcaaa6e742fe0 +size 8860 diff --git a/Content/Environment/Prototype_level_Cube.uasset b/Content/Environment/Prototype_level_Cube.uasset new file mode 100644 index 0000000..c5753f6 --- /dev/null +++ b/Content/Environment/Prototype_level_Cube.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32835ea8c3d93810833df9b085d4ea9d49c09310f739d1c0ecbc37cca8112f91 +size 329853 diff --git a/Content/Environment/Prototype_level_Cube_001.uasset b/Content/Environment/Prototype_level_Cube_001.uasset new file mode 100644 index 0000000..439fffd --- /dev/null +++ b/Content/Environment/Prototype_level_Cube_001.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7195c32af5418a61a0e0064d5e7334f981f4664f15a15dc2938dae7e95d1f3d1 +size 18436 diff --git a/Content/Environment/Prototype_level_Cube_002.uasset b/Content/Environment/Prototype_level_Cube_002.uasset new file mode 100644 index 0000000..8b9259a --- /dev/null +++ b/Content/Environment/Prototype_level_Cube_002.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a5d3864d08e3fb258f71be9ab23243b6cd8b5c027a7eb320ff49246e4b5600e +size 18320 diff --git a/Content/Environment/Prototype_level_Cube_003.uasset b/Content/Environment/Prototype_level_Cube_003.uasset new file mode 100644 index 0000000..5e9c821 --- /dev/null +++ b/Content/Environment/Prototype_level_Cube_003.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6c61c0058fcbd74005bb75b36c243b46748ae254b187e47380b87e145e12359 +size 18572 diff --git a/Content/Environment/Prototype_level_Cube_004.uasset b/Content/Environment/Prototype_level_Cube_004.uasset new file mode 100644 index 0000000..f7e2fe0 --- /dev/null +++ b/Content/Environment/Prototype_level_Cube_004.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f6a0bc903e2310f4d99626a72d794c63305ede670fbd345225bd3ced68a0225 +size 18402 diff --git a/Content/Environment/Prototype_level_Cube_005.uasset b/Content/Environment/Prototype_level_Cube_005.uasset new file mode 100644 index 0000000..86a490f --- /dev/null +++ b/Content/Environment/Prototype_level_Cube_005.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7ca6e3ff9cb3d869dee1be60b7d05dd1e6210f60ebe9e3bf0399cc13f7891bc +size 18468 diff --git a/Content/Environment/Prototype_level_Cube_006.uasset b/Content/Environment/Prototype_level_Cube_006.uasset new file mode 100644 index 0000000..855bb82 --- /dev/null +++ b/Content/Environment/Prototype_level_Cube_006.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5f4e73a7a6c163310aebacc140d65974e7b12c62d258b9b4a66a05d1852b3e0 +size 18736 diff --git a/Content/Environment/Prototype_level_Cube_007.uasset b/Content/Environment/Prototype_level_Cube_007.uasset new file mode 100644 index 0000000..afecd3e --- /dev/null +++ b/Content/Environment/Prototype_level_Cube_007.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16da5364293ec6d69151be3b7d497a86c6dde07d2c49b6ff90c991add2b9c047 +size 18985 diff --git a/Content/Environment/Prototype_level_Cube_008.uasset b/Content/Environment/Prototype_level_Cube_008.uasset new file mode 100644 index 0000000..b6c75e7 --- /dev/null +++ b/Content/Environment/Prototype_level_Cube_008.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00515ab1759e2417bab04d70b5c6e0e9e020d9a4019876ac16e9d739d4a7962b +size 18362 diff --git a/Content/Environment/Prototype_level_Cube_009.uasset b/Content/Environment/Prototype_level_Cube_009.uasset new file mode 100644 index 0000000..289e90d --- /dev/null +++ b/Content/Environment/Prototype_level_Cube_009.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f3f5b37c932908b282592954f5f6f8a7597dd1177b745c2d8304952b0cfb8de +size 19612 diff --git a/Content/Environment/Prototype_level_Cylinder_001.uasset b/Content/Environment/Prototype_level_Cylinder_001.uasset new file mode 100644 index 0000000..b5b4332 --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_001.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d0b64c14cb396404b779fc7c7fa63073f034c8c450ce85b8af3b94115e1926b +size 19668 diff --git a/Content/Environment/Prototype_level_Cylinder_002.uasset b/Content/Environment/Prototype_level_Cylinder_002.uasset new file mode 100644 index 0000000..73f216c --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_002.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7f4d0d2eb55d7afa457980ca719e877c0a00b247dae5ede90ef8dd96e26bd80 +size 19625 diff --git a/Content/Environment/Prototype_level_Cylinder_004.uasset b/Content/Environment/Prototype_level_Cylinder_004.uasset new file mode 100644 index 0000000..7a0f8fc --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_004.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0db5a0047bf82952b71b46de04fc61d469e8e3275b0466cc5e4d5291ae3e55ae +size 18916 diff --git a/Content/Environment/Prototype_level_Cylinder_005.uasset b/Content/Environment/Prototype_level_Cylinder_005.uasset new file mode 100644 index 0000000..550b368 --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_005.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8eb2873ae854ad669d0f4b896d912ccaea9be5862fee0a5bc6599887eeb35966 +size 18919 diff --git a/Content/Environment/Prototype_level_Cylinder_006.uasset b/Content/Environment/Prototype_level_Cylinder_006.uasset new file mode 100644 index 0000000..b6ce4d8 --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_006.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99e50ccd1849d033d211758644fd316e8df93976a09f329e614ee46c1dabde8a +size 18919 diff --git a/Content/Environment/Prototype_level_Cylinder_007.uasset b/Content/Environment/Prototype_level_Cylinder_007.uasset new file mode 100644 index 0000000..6a2241c --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_007.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1f22b8ecefd888883419c99f014426d2c532cae815b1fc795f60ebdb186ba70 +size 18920 diff --git a/Content/Environment/Prototype_level_Cylinder_008.uasset b/Content/Environment/Prototype_level_Cylinder_008.uasset new file mode 100644 index 0000000..2439a5e --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_008.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3d9e399d14e01e7051d66eb735450240a4f24018bc84b45807b0d21ad26184d +size 19673 diff --git a/Content/Environment/Prototype_level_Cylinder_009.uasset b/Content/Environment/Prototype_level_Cylinder_009.uasset new file mode 100644 index 0000000..b5fd02c --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_009.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7abfb2dc54be26dd3cd15b5906d8b3126f180c8701522fbde4be529e0847abf7 +size 19617 diff --git a/Content/Environment/Prototype_level_Cylinder_010.uasset b/Content/Environment/Prototype_level_Cylinder_010.uasset new file mode 100644 index 0000000..5971533 --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_010.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8c0f018491086271f21da2bfcefcb68e3a4e2917f26cf4586e0b7cc0cd932d9 +size 19653 diff --git a/Content/Environment/Prototype_level_Cylinder_011.uasset b/Content/Environment/Prototype_level_Cylinder_011.uasset new file mode 100644 index 0000000..b5128e6 --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_011.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4a138c8cfa24653f841db7dae763989238880f2a7ba6c214f93c960c05b843e +size 19668 diff --git a/Content/Environment/Prototype_level_Cylinder_012.uasset b/Content/Environment/Prototype_level_Cylinder_012.uasset new file mode 100644 index 0000000..0406ed7 --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_012.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6f76a0c472207dff70a60f36c166e0838b3ca5ebc08bf4ef9ca95d613261e8b +size 18923 diff --git a/Content/Environment/Prototype_level_Cylinder_013.uasset b/Content/Environment/Prototype_level_Cylinder_013.uasset new file mode 100644 index 0000000..23b75a3 --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_013.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c738f8cb80f21366bda731f8f6ca862e0fd92437c14a514531ec8805d041285 +size 18917 diff --git a/Content/Environment/Prototype_level_Cylinder_014.uasset b/Content/Environment/Prototype_level_Cylinder_014.uasset new file mode 100644 index 0000000..777c122 --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_014.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10fd2212d197d89967937d069436b523d7d86c355f519fae4c1bb5afb4b224e6 +size 18924 diff --git a/Content/Environment/Prototype_level_Cylinder_015.uasset b/Content/Environment/Prototype_level_Cylinder_015.uasset new file mode 100644 index 0000000..c37e760 --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_015.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7812d51ddac775134dada8c24e394606ef49c48728cde4744c1957381f40d26c +size 18922 diff --git a/Content/Environment/Prototype_level_Cylinder_016.uasset b/Content/Environment/Prototype_level_Cylinder_016.uasset new file mode 100644 index 0000000..7d1b267 --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_016.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56e73e8184e67320a577c1ab1fb8d1e20c45a014d00f40edb59617035647f942 +size 19595 diff --git a/Content/Environment/Prototype_level_Cylinder_017.uasset b/Content/Environment/Prototype_level_Cylinder_017.uasset new file mode 100644 index 0000000..23f8922 --- /dev/null +++ b/Content/Environment/Prototype_level_Cylinder_017.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df763f2361234e5065330de87eb7a51489fb79dea304deca2e0c1dfbeac53794 +size 19690 diff --git a/Content/Environment/Prototype_level_Plane.uasset b/Content/Environment/Prototype_level_Plane.uasset new file mode 100644 index 0000000..84994b8 --- /dev/null +++ b/Content/Environment/Prototype_level_Plane.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fa2a9601b10f4756e0b3f0ff393315cceb2d686ffe22602ddb73742404942a1 +size 60218 diff --git a/Content/Environment/Prototype_level_Plane_001.uasset b/Content/Environment/Prototype_level_Plane_001.uasset new file mode 100644 index 0000000..07e88b9 --- /dev/null +++ b/Content/Environment/Prototype_level_Plane_001.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3f96b505660017de2d929d6f8a7f3ba0bc943108ca57d4a40428afc3743ffb2 +size 15702 diff --git a/Content/Environment/Prototype_level_Plane_002.uasset b/Content/Environment/Prototype_level_Plane_002.uasset new file mode 100644 index 0000000..0e3af41 --- /dev/null +++ b/Content/Environment/Prototype_level_Plane_002.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0e37a84f02d1c61041aaa7e1048eda8d06226fd6e5bcbfc356fb150d58aea6a +size 17920 diff --git a/Content/Environment/Prototype_level_Plane_003.uasset b/Content/Environment/Prototype_level_Plane_003.uasset new file mode 100644 index 0000000..efee0c6 --- /dev/null +++ b/Content/Environment/Prototype_level_Plane_003.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d17f740aa59e96c636921788737961b3d544600358f1b2ca0924065d0b13365 +size 38037 diff --git a/Content/Environment/Prototype_level_Plane_004.uasset b/Content/Environment/Prototype_level_Plane_004.uasset new file mode 100644 index 0000000..273b163 --- /dev/null +++ b/Content/Environment/Prototype_level_Plane_004.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:076f9cb8252d6d0dbdd77164efec3f7aae36399c1b3ec47dd2a6e54115c8bf4a +size 14355 diff --git a/Content/Environment/Prototype_level_Plane_005.uasset b/Content/Environment/Prototype_level_Plane_005.uasset new file mode 100644 index 0000000..3a70db9 --- /dev/null +++ b/Content/Environment/Prototype_level_Plane_005.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55ab4607280ada9b31d0a2c798fdb618da7ee6977b2e43a7cc88ecacb52388c7 +size 16991 diff --git a/Content/Images/butterfly-pea-jelly-on-a-plate-9e24c00721c6d67f7486dab91235681c-1920-q70.uasset b/Content/Images/butterfly-pea-jelly-on-a-plate-9e24c00721c6d67f7486dab91235681c-1920-q70.uasset new file mode 100644 index 0000000..f95b24d --- /dev/null +++ b/Content/Images/butterfly-pea-jelly-on-a-plate-9e24c00721c6d67f7486dab91235681c-1920-q70.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e6d67b2eacb8f089a90ec308158faa73f7c4d2ff319c2b01939517ee2c7d70e +size 225499 diff --git a/Content/Images/testimage.uasset b/Content/Images/testimage.uasset new file mode 100644 index 0000000..8691ea4 --- /dev/null +++ b/Content/Images/testimage.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:727645288d26ba910415d48a76aef277d0ba0840e5d5f859b58e11f0eaecbe0a +size 45103 diff --git a/Content/Levels/CombatTest.umap b/Content/Levels/CombatTest.umap new file mode 100644 index 0000000..a1a8b59 --- /dev/null +++ b/Content/Levels/CombatTest.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9336348b2e1f84fb09314f0877836bec1973c977e1368b37276d5ab3db5344f +size 36124 diff --git a/Content/Levels/Main.umap b/Content/Levels/Main.umap index 8adb0e4..c222134 100644 --- a/Content/Levels/Main.umap +++ b/Content/Levels/Main.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cf7ea41af235ff01deb71c81195e0b15eed1f06e95f417adcd8443a05485e1e -size 54088 +oid sha256:6bebf971694ff133b986b1161ef8fe37e829e7c2d709da17a7be9444ea35a6c0 +size 57923 diff --git a/Content/Levels/MerchantPrototype.umap b/Content/Levels/MerchantPrototype.umap new file mode 100644 index 0000000..6a6e864 --- /dev/null +++ b/Content/Levels/MerchantPrototype.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:085eef600d9d08558738acea97402875c1b986649999de674e98be2749afe503 +size 24931 diff --git a/Content/Levels/Prototype.umap b/Content/Levels/Prototype.umap new file mode 100644 index 0000000..2ac34dd --- /dev/null +++ b/Content/Levels/Prototype.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2b7bffb5842056ae8df94b3c21e783acaaccaec1162a8cf40c2561a3a041755 +size 54116 diff --git a/Content/Merchant/BP_MerchantGameMode.uasset b/Content/Merchant/BP_MerchantGameMode.uasset new file mode 100644 index 0000000..c974b1b --- /dev/null +++ b/Content/Merchant/BP_MerchantGameMode.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42528498febf08b71b6e27fce611f4f15415f5013e1cac461e13ca284a3a781f +size 27248 diff --git a/Content/Merchant/BP_OPENDIAL.uasset b/Content/Merchant/BP_OPENDIAL.uasset new file mode 100644 index 0000000..fd13ac9 --- /dev/null +++ b/Content/Merchant/BP_OPENDIAL.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3e50d88d0164a436cb9cc9eba8b4ffac17f428bf6b858db7a987a726d78ce6b +size 33581 diff --git a/Content/Merchant_Blueprint.uasset b/Content/Merchant_Blueprint.uasset new file mode 100644 index 0000000..fb48a05 --- /dev/null +++ b/Content/Merchant_Blueprint.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6417b56f9b2842d2ba70bedffc0f6ff3e8b428f5f84d5aa37e5cd7e8a77256d +size 30945 diff --git a/Source/the_twilight_abyss/BaseItems/InventoryComponent.cpp b/Source/the_twilight_abyss/BaseItems/InventoryComponent.cpp new file mode 100644 index 0000000..30156e9 --- /dev/null +++ b/Source/the_twilight_abyss/BaseItems/InventoryComponent.cpp @@ -0,0 +1,60 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "InventoryComponent.h" +#include "Items/BaseItem.h" +#include "the_twilight_abyss/PlayerTemp/TempCharacter.h" + + +// Sets default values for this component's properties +UInventoryComponent::UInventoryComponent() +{ + // Set this component to be initialized when the game starts, and to be ticked every frame. You can turn these features + // off to improve performance if you don't need them. + PrimaryComponentTick.bCanEverTick = true; + + MaxItemSlots = 10; +} + + +// Called when the game starts +void UInventoryComponent::BeginPlay() +{ + Super::BeginPlay(); + + for(auto & BaseItem : DefaultItems) + { + AddItem(BaseItem); + } +} + +bool UInventoryComponent::AddItem(class UBaseItem* BaseItem) +{ + //if the items is over the maxinventoryslots then it wont add the item + if (Items.Num() >= MaxItemSlots || !BaseItem) + { + return false; + } + BaseItem->StoredItems = this; + BaseItem->World = GetWorld(); + Items.Add(BaseItem); + + //Update UI + OnInventoryUpdated.Broadcast(); + + return true; +} + +bool UInventoryComponent::Remove(UBaseItem* BaseItem) +{ + if(BaseItem) + { + BaseItem->StoredItems = nullptr; + BaseItem->World = nullptr; + Items.RemoveSingle(BaseItem); + OnInventoryUpdated.Broadcast(); // Updates UI + return true; + } + return false; +} + diff --git a/Source/the_twilight_abyss/BaseItems/InventoryComponent.h b/Source/the_twilight_abyss/BaseItems/InventoryComponent.h new file mode 100644 index 0000000..d2fbb5a --- /dev/null +++ b/Source/the_twilight_abyss/BaseItems/InventoryComponent.h @@ -0,0 +1,41 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Components/ActorComponent.h" +#include "InventoryComponent.generated.h" + +//OUR DELEGATE IS CALLED FONINVENTORYUPDATED +DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnInventoryUpdated); + +UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent)) +class THE_TWILIGHT_ABYSS_API UInventoryComponent : public UActorComponent +{ + GENERATED_BODY() + +public: + // Sets default values for this component's properties + UInventoryComponent(); + +protected: + // Called when the game starts + virtual void BeginPlay() override; + +public: + bool AddItem(class UBaseItem* BaseItem); //adds the item to the player + + bool Remove(class UBaseItem* BaseItem); //removes the item from the player + + UPROPERTY(EditDefaultsOnly, Instanced) + TArray DefaultItems; //Items you start the game with IF YOU WANT YOU CAN JUST NOT USE THIS + + UPROPERTY(EditDefaultsOnly, Category= "Inventory") + int32 MaxItemSlots; + + UPROPERTY(BlueprintAssignable, Category= "Inventory") + FOnInventoryUpdated OnInventoryUpdated; //This is our delegate + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category= "Items") + TArray Items; // The items currently in the inventory +}; diff --git a/Source/the_twilight_abyss/BaseItems/Items/BaseItem.cpp b/Source/the_twilight_abyss/BaseItems/Items/BaseItem.cpp new file mode 100644 index 0000000..2fac2d1 --- /dev/null +++ b/Source/the_twilight_abyss/BaseItems/Items/BaseItem.cpp @@ -0,0 +1,16 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "BaseItem.h" + +//constructor +UBaseItem::UBaseItem() +{ + ItemDisplayName = FText::FromString("ItemName"); + ItemUseAction = FText::FromString("UseAction"); +} + +void UBaseItem::Use(ATempCharacter* Character) +{ + +} diff --git a/Source/the_twilight_abyss/BaseItems/Items/BaseItem.h b/Source/the_twilight_abyss/BaseItems/Items/BaseItem.h new file mode 100644 index 0000000..1b18b3d --- /dev/null +++ b/Source/the_twilight_abyss/BaseItems/Items/BaseItem.h @@ -0,0 +1,66 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "UObject/Object.h" +#include "BaseItem.generated.h" + + +/** + * + */ +UCLASS(Abstract, BlueprintType, Blueprintable, EditInlineNew, DefaultToInstanced) +class THE_TWILIGHT_ABYSS_API UBaseItem : public UObject +{ + GENERATED_BODY() + +public: + UBaseItem(); + + virtual class UWorld* GetWorld() const { return World; }; + + UPROPERTY(Transient) + class UWorld* World; + + //The text that will be displayed for using the item (Equip, Eat) + UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item") + FText ItemUseAction; + + //The actual mesh of the item + UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item") + class UStaticMesh* ItemMesh; + + //The picture of the item icon + UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item") + class UTexture2D* ItemIcon; + + //The name of the item + UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item") + FText ItemDisplayName; + + //The description of the item + UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item") + FText ItemDescription; + + //The cost of the item + UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item") + int ItemCostPrice; + + //reference to the UInventoryComponent script + UPROPERTY() + class UInventoryComponent* StoredItems; + + //The buy class to purchase the item + virtual void Buy(class ATempCharacter* PurchaseItem) PURE_VIRTUAL(UBaseItem); // WILL SET THIS UP LATER + + //The use Item class to use the item in the player Inventory + virtual void Use(class ATempCharacter* Character); + + //This is the same as the use item class but its in BP instead + UFUNCTION(BlueprintImplementableEvent) + void OnUse(class ATempCharacter* Character); + + UFUNCTION(BlueprintImplementableEvent) + void OnBuy(class ATempCharacter* PurchaseItem); +}; diff --git a/Source/the_twilight_abyss/BaseItems/Items/EatableItems.cpp b/Source/the_twilight_abyss/BaseItems/Items/EatableItems.cpp new file mode 100644 index 0000000..c2a88fb --- /dev/null +++ b/Source/the_twilight_abyss/BaseItems/Items/EatableItems.cpp @@ -0,0 +1,41 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "EatableItems.h" + +#include "the_twilight_abyss/BaseItems/InventoryComponent.h" +#include "the_twilight_abyss/PlayerTemp/TempCharacter.h" + + +UEatableItems::UEatableItems() +{ + +} + +void UEatableItems::Use(ATempCharacter* Character) +{ + if(Character) + { + Character->Health += 10; + + if(StoredItems) + { + StoredItems->Remove(this); + } + } +} + +void UEatableItems::Buy(ATempCharacter* PurchaseItem) +{ + if(PurchaseItem) + { + if(PurchaseItem->GoldBalance <= 0) + { + UE_LOG(LogTemp, Display, TEXT("Not Enough Gold")); + } + else + { + PurchaseItem->GoldBalance -= ItemCostPrice; + } + } +} diff --git a/Source/the_twilight_abyss/BaseItems/Items/EatableItems.h b/Source/the_twilight_abyss/BaseItems/Items/EatableItems.h new file mode 100644 index 0000000..e189a6e --- /dev/null +++ b/Source/the_twilight_abyss/BaseItems/Items/EatableItems.h @@ -0,0 +1,23 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "BaseItem.h" +#include "EatableItems.generated.h" + +/** + * + */ +UCLASS() +class THE_TWILIGHT_ABYSS_API UEatableItems : public UBaseItem +{ + GENERATED_BODY() + UEatableItems(); + + +protected: + + virtual void Use(class ATempCharacter* Character) override; + virtual void Buy(ATempCharacter* PurchaseItem) override; +}; diff --git a/Source/the_twilight_abyss/BaseItems/Items/ShopItems.cpp b/Source/the_twilight_abyss/BaseItems/Items/ShopItems.cpp new file mode 100644 index 0000000..c28f0e3 --- /dev/null +++ b/Source/the_twilight_abyss/BaseItems/Items/ShopItems.cpp @@ -0,0 +1,19 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "ShopItems.h" + +#include "the_twilight_abyss/PlayerTemp/TempCharacter.h" + +UShopItems::UShopItems() +{ + +} + +// void UShopItems::Buy(ATempCharacter* PurchaseItem) +// { +// if(PurchaseItem) +// { +// PurchaseItem->GoldBalance -= ItemCostPrice; +// } +// } diff --git a/Source/the_twilight_abyss/BaseItems/Items/ShopItems.h b/Source/the_twilight_abyss/BaseItems/Items/ShopItems.h new file mode 100644 index 0000000..85cf445 --- /dev/null +++ b/Source/the_twilight_abyss/BaseItems/Items/ShopItems.h @@ -0,0 +1,20 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "BaseItem.h" +#include "ShopItems.generated.h" + +/** + * + */ +UCLASS() +class THE_TWILIGHT_ABYSS_API UShopItems : public UBaseItem +{ + GENERATED_BODY() + UShopItems(); + +// protected: +// virtual void Buy(ATempCharacter* PurchaseItem) override; +}; diff --git a/Source/the_twilight_abyss/MerchantInteraction/Interaction.cpp b/Source/the_twilight_abyss/MerchantInteraction/Interaction.cpp new file mode 100644 index 0000000..237d6ee --- /dev/null +++ b/Source/the_twilight_abyss/MerchantInteraction/Interaction.cpp @@ -0,0 +1,36 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Interaction.h" + +#include "Components/WidgetComponent.h" + + + +// Sets default values +AInteraction::AInteraction() +{ + // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. + PrimaryActorTick.bCanEverTick = true; +} + +// Called when the game starts or when spawned +void AInteraction::BeginPlay() +{ + Super::BeginPlay(); + +} + +// Called every frame +void AInteraction::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); + +} + +void AInteraction::OnInteract() +{ + UUserWidget* spawnedWidget = CreateWidget(GetWorld(), Widget); + spawnedWidget->AddToViewport(0); +} + diff --git a/Source/the_twilight_abyss/MerchantInteraction/Interaction.h b/Source/the_twilight_abyss/MerchantInteraction/Interaction.h new file mode 100644 index 0000000..2fa21b1 --- /dev/null +++ b/Source/the_twilight_abyss/MerchantInteraction/Interaction.h @@ -0,0 +1,31 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "Interaction.generated.h" + +UCLASS() +class THE_TWILIGHT_ABYSS_API AInteraction : public AActor +{ + GENERATED_BODY() + +public: + // Sets default values for this actor's properties + AInteraction(); + +protected: + // Called when the game starts or when spawned + virtual void BeginPlay() override; + +public: + // Called every frame + virtual void Tick(float DeltaTime) override; + + UPROPERTY(EditAnywhere) + TSubclassOf Widget; + + virtual void OnInteract(); +}; + diff --git a/Source/the_twilight_abyss/PlayerTemp/TempCharacter.cpp b/Source/the_twilight_abyss/PlayerTemp/TempCharacter.cpp new file mode 100644 index 0000000..6171a59 --- /dev/null +++ b/Source/the_twilight_abyss/PlayerTemp/TempCharacter.cpp @@ -0,0 +1,120 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#include "TempCharacter.h" +#include "Blueprint/UserWidget.h" +#include "the_twilight_abyss/BaseItems/InventoryComponent.h" +#include "the_twilight_abyss/BaseItems/Items/BaseItem.h" +#include "the_twilight_abyss/MerchantInteraction/Interaction.h" + + +// CONSTRUCTOR +ATempCharacter::ATempCharacter() +{ + // Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it. + PrimaryActorTick.bCanEverTick = true; + Inventory = CreateDefaultSubobject("Inventory"); + Inventory->MaxItemSlots = 10; +} + +// Called when the game starts or when spawned +void ATempCharacter::BeginPlay() +{ + Super::BeginPlay(); + Health = 100; +} + +//Binds the input we made in the setup player component to the forward vector +void ATempCharacter::ForwardInput(float Axis) +{ + AddMovementInput(GetActorForwardVector() * Axis); +} +//Binds the input we made in the setup player component to the right vector +void ATempCharacter::RightMoveInput(float Axis) +{ + AddMovementInput(GetActorRightVector() * Axis); +} + + +// Called every frame +void ATempCharacter::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); +} + +// Gives the character the functionality +void ATempCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) +{ + Super::SetupPlayerInputComponent(PlayerInputComponent); + PlayerInputComponent->BindAxis(TEXT("Move Forward / Backward"), this, &ATempCharacter::ForwardInput); + PlayerInputComponent->BindAxis(TEXT("Move Right / Left"), this, &ATempCharacter::RightMoveInput); + PlayerInputComponent->BindAxis(TEXT("Turn Right / Left Mouse"), this, &ATempCharacter::AddControllerYawInput); + PlayerInputComponent->BindAxis(TEXT("Look Up / Down Mouse"), this, &ATempCharacter::AddControllerPitchInput); + PlayerInputComponent->BindAction("Interact", IE_Pressed, this, &ATempCharacter::KeyPressed); +} + +// When the player presses the E key +void ATempCharacter::KeyPressed() +{ + LineTraceLogic(); +} + +// Line trace logic +void ATempCharacter::LineTraceLogic() +{ + float GlobalTrace = TraceDistance; + FHitResult OutHit; + FVector Start = GetActorLocation(); + FVector End = Start + GlobalTrace * GetActorForwardVector(); + + FCollisionQueryParams TraceParams; + + TraceParams.AddIgnoredActor(this); + + bool bHit = GetWorld()->LineTraceSingleByChannel(OutHit, Start, End, ECC_Visibility, TraceParams); + if (bHit) + { + if(OutHit.GetActor() == nullptr) + { + return; + } + if(OutHit.GetActor()->ActorHasTag("HealingJelly")) + { + if(GoldBalance >= 100) + { + GoldBalance -= 100; + UE_LOG(LogTemp, Display, TEXT("Item Purchased")); + // UInventoryComponent* tempInventory = GetOwner()->FindComponentByClass(); + // tempInventory->AddItem(ItemToBuy); + } + if(GoldBalance <= 0) + { + UE_LOG(LogTemp, Display, TEXT("Not Enough Gold")); + } + } + if (AInteraction* MyInteractable = Cast(OutHit.GetActor())) + { + DrawDebugLine(GetWorld(), Start, End, FColor::Green, false, 1.0f); + MyInteractable->OnInteract(); + UE_LOG(LogTemp, Display, TEXT("HIT: %s"), *OutHit.GetActor()->GetName()); + } + } +} + +void ATempCharacter::UseItem(class UBaseItem* Item) +{ + if(Item) + { + Item->Use(this); + Item->OnUse(this); //Blueprint Version + } +} + +void ATempCharacter::BuyItem(UBaseItem* BuyItem) +{ + if(BuyItem) + { + BuyItem->Buy(this); + BuyItem->OnBuy(this); + } +} + diff --git a/Source/the_twilight_abyss/PlayerTemp/TempCharacter.h b/Source/the_twilight_abyss/PlayerTemp/TempCharacter.h new file mode 100644 index 0000000..4760f2c --- /dev/null +++ b/Source/the_twilight_abyss/PlayerTemp/TempCharacter.h @@ -0,0 +1,59 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Character.h" +#include "the_twilight_abyss/BaseItems/Items/BaseItem.h" +#include "TempCharacter.generated.h" + +UCLASS() +class THE_TWILIGHT_ABYSS_API ATempCharacter : public ACharacter +{ + GENERATED_BODY() + + //Player inventory + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Inventory, meta = (AllowPrivateAccess = "true")) + class UInventoryComponent* Inventory; //Using the InventoryComponent class + +public: + // Sets default values for this character's properties + ATempCharacter(); + +protected: + // Called when the game starts or when spawned + virtual void BeginPlay() override; + + void ForwardInput(float Axis); + void RightMoveInput(float Axis); + +public: + // Called every frame + virtual void Tick(float DeltaTime) override; + + // Called to bind functionality to input + virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; + + void KeyPressed(); + + UPROPERTY(EditAnyWhere) + float TraceDistance = 200; + + void LineTraceLogic(); + + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category= "Health") + float Health; + + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category= "Gold") + int GoldBalance; + + //Using the item in the inventory + UFUNCTION(BlueprintCallable, Category= "Items") + void UseItem(class UBaseItem* Item); // Overriding the BaseItem Class + + UFUNCTION(BlueprintCallable, Category= "Items") + void BuyItem(class UBaseItem* BuyItem); + + // UPROPERTY(EditAnywhere, Category= "Items") + // UBaseItem ItemToBuy; +}; diff --git a/Source/the_twilight_abyss/TurnBasedCombat/PlayerCharacterCombatTest.cpp b/Source/the_twilight_abyss/TurnBasedCombat/PlayerCharacterCombatTest.cpp new file mode 100644 index 0000000..99dbb55 --- /dev/null +++ b/Source/the_twilight_abyss/TurnBasedCombat/PlayerCharacterCombatTest.cpp @@ -0,0 +1,35 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "PlayerCharacterCombatTest.h" + +// Sets default values +APlayerCharacterCombatTest::APlayerCharacterCombatTest() +{ + // Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it. + PrimaryActorTick.bCanEverTick = true; + + Tags.Add(FName("Character")); +} + +// Called when the game starts or when spawned +void APlayerCharacterCombatTest::BeginPlay() +{ + Super::BeginPlay(); + +} + +// Called every frame +void APlayerCharacterCombatTest::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); + +} + +// Called to bind functionality to input +void APlayerCharacterCombatTest::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) +{ + Super::SetupPlayerInputComponent(PlayerInputComponent); + +} + diff --git a/Source/the_twilight_abyss/TurnBasedCombat/PlayerCharacterCombatTest.h b/Source/the_twilight_abyss/TurnBasedCombat/PlayerCharacterCombatTest.h new file mode 100644 index 0000000..ffffd26 --- /dev/null +++ b/Source/the_twilight_abyss/TurnBasedCombat/PlayerCharacterCombatTest.h @@ -0,0 +1,29 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Character.h" +#include "PlayerCharacterCombatTest.generated.h" + +UCLASS() +class THE_TWILIGHT_ABYSS_API APlayerCharacterCombatTest : public ACharacter +{ + GENERATED_BODY() + +public: + // Sets default values for this character's properties + APlayerCharacterCombatTest(); + +protected: + // Called when the game starts or when spawned + virtual void BeginPlay() override; + +public: + // Called every frame + virtual void Tick(float DeltaTime) override; + + // Called to bind functionality to input + virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; + +}; diff --git a/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.cpp b/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.cpp new file mode 100644 index 0000000..8856b35 --- /dev/null +++ b/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.cpp @@ -0,0 +1,297 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "TurnBaseCombat.h" +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "Components/TextBlock.h" +#include "Components/ProgressBar.h" +#include "Kismet/GameplayStatics.h" + +ATurnBaseCombat::ATurnBaseCombat() +{ + if (HUDWidget == nullptr) + { + // Load the HUD widget from the specified path + static ConstructorHelpers::FClassFinder HUDWidgetClass(TEXT("/Game/Blueprints/Combat_UI/Combat_UI")); + HUDWidget = HUDWidgetClass.Class; + } +} + +void ATurnBaseCombat::StartCombat(AActor* Enemy) +{ + if (HUD->IsInViewport()) return; + HUD->AddToViewport(); + EnemyActor = Enemy; + + if (APlayerController* PC = Cast(GetWorld()->GetFirstPlayerController())) + { + PC->bShowMouseCursor = true; + PC->bEnableClickEvents = true; + PC->bEnableMouseOverEvents = true; + } +} + +void ATurnBaseCombat::EndCombat() +{ + //Remove the HUD from the viewport + HUD->RemoveFromViewport(); +} + +void ATurnBaseCombat::BeginPlay() +{ + Super::BeginPlay(); + + TArray AllCharacterActorsInScene; + UGameplayStatics::GetAllActorsOfClassWithTag(GetWorld(), AActor::StaticClass(), FName("Character"), AllCharacterActorsInScene); + + HUD = CreateWidget(GetWorld(), HUDWidget); + + TurnIndicatorTextBlock = Cast(HUD->GetWidgetFromName("TurnIndicator")); + CurrentComboTextBlock = Cast(HUD->GetWidgetFromName("CurrentCombo")); + ActionPointsTextBlock = Cast(HUD->GetWidgetFromName("ActionPoints")); + BattleLogTextBlock = Cast(HUD->GetWidgetFromName("BattleLog")); + PlayerHealthBar = Cast(HUD->GetWidgetFromName("PlayerHealthBar")); + EnemyHealthBar = Cast(HUD->GetWidgetFromName("EnemyHealthBar")); + IronResourceBar = Cast(HUD->GetWidgetFromName("IronResourceBar")); + SulfurResourceBar = Cast(HUD->GetWidgetFromName("SulfurResourceBar")); + CastButton = Cast(HUD->GetWidgetFromName("CastButton")); + FButton = Cast(HUD->GetWidgetFromName("FButton")); + WButton = Cast(HUD->GetWidgetFromName("WButton")); + BackspaceButton = Cast(HUD->GetWidgetFromName("BackspaceButton")); + CastButton->OnClicked.AddDynamic(this, &ATurnBaseCombat::CastButtonOnClick); + FButton->OnClicked.AddDynamic(this, &ATurnBaseCombat::FButtonOnClick); + WButton->OnClicked.AddDynamic(this, &ATurnBaseCombat::WButtonOnClick); + BackspaceButton->OnClicked.AddDynamic(this, &ATurnBaseCombat::BackspaceButtonOnClick); +} + +void ATurnBaseCombat::ExecuteCast(FString Combo) +{ + if (!IsValidCombo(Combo)) + { + GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Invalid Combo")); + //For each character in the current combo add back the resource + for (int i = 0; i < Combo.Len(); i++) + { + if (Combo[i] == 'F') + { + IronResource += 1; + } + else if (Combo[i] == 'W') + { + SulfurResource += 1; + } + } + CurrentComboString = ""; + UpdateComboString(CurrentComboString); + RevertActionPoints(); + UpdateActionPoints(); + UpdateResourceBars(); + return; + } + + CurrentComboString = ""; + UpdateComboString(CurrentComboString); + RevertActionPoints(); + UpdateActionPoints(); + + switch (bIsPlayerTurn) + { + case true: + // Player Turn + DamageEnemy(*ValidCombos.Find(Combo)); + GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("Enemy Damaged %d"), *ValidCombos.Find(Combo))); + break; + case false: + // Enemy Turn + DamagePlayer(*ValidCombos.Find(Combo)); + GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("Player Damaged %d"), *ValidCombos.Find(Combo))); + break; + } + //End Combat if either the player or enemy is dead + if (EnemyHealth <= 0) + { + EndCombat(); + EnemyActor->Destroy(); + return; + } + if (PlayerHealth <= 0) + { + EndCombat(); + return; + } + + SwitchTurn(); +} + +void ATurnBaseCombat::UseActionPoint() +{ + ActiveActionPoints += 1; + UpdateActionPoints(); +} + +void ATurnBaseCombat::ReuseActionPoint() +{ + ActiveActionPoints -= 1; + UpdateActionPoints(); +} + +void ATurnBaseCombat::RevertActionPoints() +{ + ActiveActionPoints = 0; + UpdateActionPoints(); +} + +void ATurnBaseCombat::DamagePlayer(int Damage) +{ + PlayerHealth -= FMath::Clamp(Damage, 0, 100); + UpdateProgressBars(); + AddBattleLogMessage("Player was damaged for " + FString::FromInt(Damage) + " damage."); +} + +void ATurnBaseCombat::DamageEnemy(int Damage) +{ + EnemyHealth -= FMath::Clamp(Damage, 0, 100); + UpdateProgressBars(); + AddBattleLogMessage("Enemy was damaged for " + FString::FromInt(Damage) + " damage."); +} + +void ATurnBaseCombat::UpdateProgressBars() const +{ + PlayerHealthBar->SetPercent(PlayerHealth / 100.0f); + EnemyHealthBar->SetPercent(EnemyHealth / 100.0f); +} + +bool ATurnBaseCombat::IsValidCombo(FString Combo) const +{ + return ValidCombos.Contains(Combo); +} + +void ATurnBaseCombat::SwitchTurn() +{ + //TurnIndicatorTextBlock->SetText(FText::FromString(bIsPlayerTurn ? "Enemy Turn" : "Player Turn")); + //bIsPlayerTurn = !bIsPlayerTurn; + TurnIndicatorTextBlock->SetText(FText::FromString("Enemy Turn")); + ToggleButtons(); + //wait for 2 seconds + FTimerHandle UnusedHandle; + GetWorldTimerManager().SetTimer(UnusedHandle, this, &ATurnBaseCombat::EnemyTurn, 2.0f, false); + + //activeActor = bIsPlayerTurn ? enemyActor : playerActor; +} + +void ATurnBaseCombat::CastButtonOnClick() +{ + ExecuteCast(CurrentComboString); +} + +void ATurnBaseCombat::FButtonOnClick() +{ + if (ActiveActionPoints >= DefaultActionPoints) + { + GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("No More Action Points")); + return; + } + if (IronResource <= 0) + { + GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("No More Iron")); + return; + } + UseActionPoint(); + CurrentComboString.AppendChar('F'); + UpdateComboString(CurrentComboString); + IronResource -= 1; + UpdateResourceBars(); +} + +void ATurnBaseCombat::WButtonOnClick() +{ + if (ActiveActionPoints >= DefaultActionPoints) + { + GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("No More Action Points")); + return; + } + if (SulfurResource <= 0) + { + GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("No More Sulfur")); + return; + } + UseActionPoint(); + CurrentComboString.AppendChar('W'); + UpdateComboString(CurrentComboString); + SulfurResource -= 1; + UpdateResourceBars(); +} + +void ATurnBaseCombat::BackspaceButtonOnClick() +{ + if (CurrentComboString.Len() <= 0) + { + GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Blank Combo")); + return; + } + ReuseActionPoint(); + if (CurrentComboString.Right(1) == "F") + { + IronResource += 1; + } + else if (CurrentComboString.Right(1) == "W") + { + SulfurResource += 1; + } + CurrentComboString.RemoveAt(CurrentComboString.Len() - 1); + UpdateComboString(CurrentComboString); + UpdateResourceBars(); +} + +void ATurnBaseCombat::UpdateComboString(FString NewCombo) const +{ + CurrentComboTextBlock->SetText(FText::FromString(NewCombo)); +} + +void ATurnBaseCombat::UpdateActionPoints() const +{ + ActionPointsTextBlock->SetText(FText::FromString(FString::FromInt(ActiveActionPoints))); +} + +void ATurnBaseCombat::AddBattleLogMessage(FString Message) +{ + BattleLog.Append(Message + "\n"); + UpdateBattleLog(); +} + +void ATurnBaseCombat::ClearBattleLog() +{ + BattleLog = ""; +} + +void ATurnBaseCombat::UpdateBattleLog() +{ + TArray TempArray; + if (const int32 LineCount = BattleLog.ParseIntoArray(TempArray, TEXT("\n"), true); LineCount > 10) + { + ClearBattleLog(); + } + BattleLogTextBlock->SetText(FText::FromString(BattleLog)); +} + +void ATurnBaseCombat::UpdateResourceBars() const +{ + IronResourceBar->SetPercent(IronResource / 10.0f); + SulfurResourceBar->SetPercent(SulfurResource / 10.0f); +} + +void ATurnBaseCombat::ToggleButtons() const +{ + FButton->SetIsEnabled(!FButton->bIsEnabled); + WButton->SetIsEnabled(!WButton->bIsEnabled); + BackspaceButton->SetIsEnabled(!BackspaceButton->bIsEnabled); + CastButton->SetIsEnabled(!CastButton->bIsEnabled); +} + +void ATurnBaseCombat::EnemyTurn() +{ + DamagePlayer(10); + TurnIndicatorTextBlock->SetText(FText::FromString("Player Turn")); + ToggleButtons(); +} diff --git a/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.h b/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.h new file mode 100644 index 0000000..bb755c9 --- /dev/null +++ b/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.h @@ -0,0 +1,143 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Components/Button.h" +#include "Components/ProgressBar.h" +#include "Components/TextBlock.h" +#include "GameFramework/GameStateBase.h" +#include "TurnBaseCombat.generated.h" + +/** + * + */ +UCLASS() +class THE_TWILIGHT_ABYSS_API ATurnBaseCombat : public AGameStateBase +{ + GENERATED_BODY() + +public: + ATurnBaseCombat(); + + UPROPERTY(EditDefaultsOnly) + int PlayerHealth = 100; + UPROPERTY(EditDefaultsOnly) + int EnemyHealth = 100; + UPROPERTY(EditDefaultsOnly) + int DefaultActionPoints = 3; + UPROPERTY(EditDefaultsOnly) + int ActiveActionPoints = 0; + UPROPERTY(EditDefaultsOnly) + int IronResource = 10; // F + UPROPERTY(EditDefaultsOnly) + int SulfurResource = 10; // W + + // AActor* PlayerActor; + UPROPERTY(VisibleAnywhere) + AActor* EnemyActor; + // AActor* ActiveActor; + + /* + TODO: + Reference Player Inventory + */ + UPROPERTY(EditAnywhere) + TSubclassOf HUDWidget; + UPROPERTY(EditAnywhere) + TMap ValidCombos = + { + {"F", 10}, + {"W", 10}, + {"WW", 15}, + {"FW", 20}, + {"FFW", 30} + }; + + FString BattleLog; + + UFUNCTION(BlueprintCallable) + void StartCombat(AActor* Enemy); + UFUNCTION(BlueprintCallable) + void EndCombat(); + +protected: + virtual void BeginPlay() override; + void ExecuteCast(FString Combo); + void UseActionPoint(); + void ReuseActionPoint(); + void RevertActionPoints(); + void DamagePlayer(int Damage); + void DamageEnemy(int Damage); + void UpdateProgressBars() const; + +private: + bool IsValidCombo(FString Combo) const; + UUserWidget* HUD; + + UPROPERTY(VisibleAnywhere) + bool bIsPlayerTurn = true; + + UPROPERTY(VisibleAnywhere) + FString CurrentComboString = ""; + + void SwitchTurn(); + + UPROPERTY(VisibleAnywhere) + UTextBlock* TurnIndicatorTextBlock; + + UPROPERTY(VisibleAnywhere) + UTextBlock* CurrentComboTextBlock; + + UPROPERTY(VisibleAnywhere) + UTextBlock* BattleLogTextBlock; + + UPROPERTY(VisibleAnywhere) + UTextBlock* ActionPointsTextBlock; + + UPROPERTY(VisibleAnywhere) + UProgressBar* PlayerHealthBar; + + UPROPERTY(VisibleAnywhere) + UProgressBar* EnemyHealthBar; + + UPROPERTY(VisibleAnywhere) + UProgressBar* IronResourceBar; + + UPROPERTY(VisibleAnywhere) + UProgressBar* SulfurResourceBar; + + UPROPERTY(VisibleAnywhere) + UButton* CastButton; + + UPROPERTY(VisibleAnywhere) + UButton* FButton; + + UPROPERTY(VisibleAnywhere) + UButton* WButton; + + UPROPERTY(VisibleAnywhere) + UButton* BackspaceButton; + + UFUNCTION() + void CastButtonOnClick(); + + UFUNCTION() + void FButtonOnClick(); + + UFUNCTION() + void WButtonOnClick(); + + UFUNCTION() + void BackspaceButtonOnClick(); + + void UpdateComboString(FString NewCombo) const; + void UpdateActionPoints() const; + + void AddBattleLogMessage(FString Message); + void ClearBattleLog(); + void UpdateBattleLog(); + void UpdateResourceBars() const; + void ToggleButtons() const; + void EnemyTurn(); +}; diff --git a/Source/the_twilight_abyss/the_twilight_abyss.Build.cs b/Source/the_twilight_abyss/the_twilight_abyss.Build.cs index 9cb5741..b6dac8e 100644 --- a/Source/the_twilight_abyss/the_twilight_abyss.Build.cs +++ b/Source/the_twilight_abyss/the_twilight_abyss.Build.cs @@ -8,7 +8,7 @@ public class the_twilight_abyss : ModuleRules { PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; - PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); + PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG" }); PrivateDependencyModuleNames.AddRange(new string[] { }); diff --git a/Source/the_twilight_abyss/the_twilight_abyssGameModeBase.cpp b/Source/the_twilight_abyss/the_twilight_abyssGameModeBase.cpp deleted file mode 100644 index 217a48d..0000000 --- a/Source/the_twilight_abyss/the_twilight_abyssGameModeBase.cpp +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright Epic Games, Inc. All Rights Reserved. - - -#include "the_twilight_abyssGameModeBase.h" - diff --git a/Source/the_twilight_abyss/the_twilight_abyssGameModeBase.h b/Source/the_twilight_abyss/the_twilight_abyssGameModeBase.h deleted file mode 100644 index 34cce53..0000000 --- a/Source/the_twilight_abyss/the_twilight_abyssGameModeBase.h +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "CoreMinimal.h" -#include "GameFramework/GameModeBase.h" -#include "the_twilight_abyssGameModeBase.generated.h" - -/** - * - */ -UCLASS() -class THE_TWILIGHT_ABYSS_API Athe_twilight_abyssGameModeBase : public AGameModeBase -{ - GENERATED_BODY() - -}; diff --git a/the_twilight_abyss.code-workspace b/the_twilight_abyss.code-workspace index 658d8a4..d2d5a9e 100644 --- a/the_twilight_abyss.code-workspace +++ b/the_twilight_abyss.code-workspace @@ -6,14 +6,11 @@ }, { "name": "UE5", - "path": "C:\\Program Files\\UE_5.0" + "path": "H:\\UE5\\UE_5.0" } ], "settings": { - "typescript.tsc.autoDetect": "off", - "cSpell.ignoreWords": [ - "Athe" - ] + "typescript.tsc.autoDetect": "off" }, "extensions": { "recommendations": [ diff --git a/the_twilight_abyss.uproject b/the_twilight_abyss.uproject index ade02f3..4f33989 100644 --- a/the_twilight_abyss.uproject +++ b/the_twilight_abyss.uproject @@ -7,7 +7,11 @@ { "Name": "the_twilight_abyss", "Type": "Runtime", - "LoadingPhase": "Default" + "LoadingPhase": "Default", + "AdditionalDependencies": [ + "Engine", + "UMG" + ] } ], "Plugins": [