├── .gitignore ├── Assets ├── Fonts │ ├── LICENSE_OFL.txt │ ├── NotoSansDisplay-Bold.ttf │ ├── NotoSansDisplay-Regular.ttf │ └── README ├── Meshes │ ├── SM_CMV.blend │ ├── SM_CMV.fbx │ ├── SM_OreAsteroid.blend │ ├── SM_OreAsteroid.fbx │ ├── SM_Starbase.blend │ └── SM_Starbase.fbx ├── Textures │ ├── T_Space.png │ └── T_Space.xcf └── UI │ ├── T_CMV_Portrait.png │ ├── T_OreAsteroid_Portrait.png │ └── T_Starbase_Portrait.png ├── CONTRIBUTING.md ├── Documents └── Manual │ ├── AIPlayers.md │ ├── Buildings.md │ ├── Cheats.md │ ├── GameModes.md │ ├── Images │ ├── AddGameplayTag.png │ ├── AddResources.png │ ├── FloatingCombatTextComponentBeginPlay.png │ ├── FloatingCombatTextComponentOnResourcesReturned.png │ ├── GetGameplayTags.png │ ├── GetOwnActors.png │ ├── HUDDrawFloatingCombatText.png │ ├── HUDDrawSelectionFrame.png │ ├── HUDHideSelectionFrame.png │ ├── HasGameplayTag.png │ ├── HealthBarWidget.png │ ├── HoveredActorWidget.png │ ├── IsVisibleForActor.png │ ├── IssueAttackOrder.png │ ├── IssueBeginConstructionOrder.png │ ├── IssueGatherOrder.png │ ├── IssueMoveOrder.png │ ├── IssueOrder.png │ ├── IssueStopOrder.png │ ├── LoadActor.png │ ├── OnBountyCollected.png │ ├── OnConstructionFinished.png │ ├── OnHealthChanged.png │ ├── OnKilled.png │ ├── OnOrderChanged.png │ ├── OnPlayerStateAvailable.png │ ├── OnProductionFinished.png │ ├── OnResourcesChanged.png │ ├── RemoveGameplayTag.png │ ├── SelectionFrameWidget.png │ ├── TransferOwnership.png │ ├── UIHideSelectionFrame.png │ ├── UIShowSelectionFrame.png │ ├── UnloadActor.png │ ├── UpdateHealthBarPositionAndSize.png │ ├── UpdateHealthBarValue.png │ ├── UpdateHoveredActorData.png │ └── UpdateHoveredActorPositionAndSize.png │ ├── Manual.md │ ├── Maps.md │ ├── Resources.md │ ├── Scripting.md │ ├── Setup.md │ ├── Units.md │ └── UserInterface.md ├── LICENSE ├── README.md └── Source └── RTSProject ├── Config ├── DefaultEditor.ini ├── DefaultEngine.ini ├── DefaultGame.ini ├── DefaultGameplayTags.ini └── DefaultInput.ini ├── Content ├── Buildings │ ├── Spacedock │ │ └── BP_Spacedock.uasset │ └── Starbase │ │ ├── BP_Starbase.uasset │ │ ├── M_Starbase.uasset │ │ ├── SM_Starbase.uasset │ │ └── T_Starbase_Portrait.uasset ├── Environment │ ├── M_Space.uasset │ └── T_Space.uasset ├── Gameplay │ ├── BP_RTSCheatManager.uasset │ ├── BP_RTSGameMode.uasset │ ├── BP_RTSGameState.uasset │ ├── BP_RTSPawnAIController.uasset │ ├── BP_RTSPlayerAIController.uasset │ ├── BP_RTSPlayerController.uasset │ ├── BP_RTSPlayerPawn.uasset │ ├── BP_RTSPlayerStart.uasset │ ├── BP_RTSPlayerState.uasset │ ├── BP_RTSResourceType_Gas.uasset │ └── BP_RTSResourceType_Ore.uasset ├── Maps │ ├── AutomatedTests │ │ ├── BP_TestGameMode.uasset │ │ ├── TestAreaOfEffectDamage │ │ │ ├── BP_TestAreaOfEffectDamage.uasset │ │ │ ├── BP_TestAreaOfEffectDamage_CMV.uasset │ │ │ ├── BP_TestAreaOfEffectDamage_CMV_Projectile.uasset │ │ │ └── TEST-AreaOfEffectDamage.umap │ │ ├── TestBounty │ │ │ ├── BP_TestBounty.uasset │ │ │ ├── BP_TestBounty_CMV.uasset │ │ │ └── TEST-Bounty.umap │ │ ├── TestCombat │ │ │ ├── BP_TestCombat.uasset │ │ │ └── TEST-Combat.umap │ │ ├── TestConstruction │ │ │ ├── BP_TestConstruction.uasset │ │ │ └── TEST-Construction.umap │ │ ├── TestEconomy │ │ │ ├── BP_TestEconomy.uasset │ │ │ └── TEST-Economy.umap │ │ ├── TestHealthRegeneration │ │ │ ├── BP_TestHealthRegeneration.uasset │ │ │ ├── BP_TestHealthRegeneration_CMV.uasset │ │ │ └── TEST-HealthRegeneration.umap │ │ ├── TestMovement │ │ │ ├── BP_TestMovement.uasset │ │ │ └── TEST-Movement.umap │ │ ├── TestProduction │ │ │ ├── BP_TestProduction.uasset │ │ │ └── TEST-Production.umap │ │ └── TestVision │ │ │ ├── BP_TestVision.uasset │ │ │ └── TEST-Vision.umap │ ├── SKM-DarkSpace.umap │ └── SKM-DarkSpace_BuiltData.uasset ├── Materials │ ├── M_RTSWhiteFogOfWar.uasset │ └── M_RTSWhiteFogOfWarMinimap.uasset ├── Resources │ ├── BP_OreAsteroid.uasset │ ├── M_OreAsteroid.uasset │ ├── SM_OreAsteroid.uasset │ └── T_OreAsteroid_Portrait.uasset ├── UI │ ├── BP_RTSHUD.uasset │ ├── Fonts │ │ ├── FF_NotoSansDisplay-Bold.uasset │ │ ├── FF_NotoSansDisplay-Regular.uasset │ │ └── F_NotoSansDisplay.uasset │ └── Widgets │ │ ├── BP_RTSConstructionProgressBarWidgetComponent.uasset │ │ ├── BP_RTSHealthBarWidgetComponent.uasset │ │ ├── BP_RTSHoveredActorWidgetComponent.uasset │ │ ├── BP_RTSProductionProgressBarWidgetComponent.uasset │ │ ├── BP_RTSResourcesReturnedFloatingCombatTextComponent.uasset │ │ ├── DT_TooltipRichTextStyle.uasset │ │ ├── WBP_CommandGrid.uasset │ │ ├── WBP_CommandGridButton.uasset │ │ ├── WBP_ConstructionProgressBar.uasset │ │ ├── WBP_HealthBar.uasset │ │ ├── WBP_HoveredActorLabel.uasset │ │ ├── WBP_IngameUI.uasset │ │ ├── WBP_MinimapWidget.uasset │ │ ├── WBP_ProductionProgressBar.uasset │ │ ├── WBP_ResourcePanel.uasset │ │ ├── WBP_SelectionFrame.uasset │ │ ├── WBP_StatusWindow.uasset │ │ └── WBP_Tooltip.uasset └── Units │ ├── CMV │ ├── BP_CMV.uasset │ ├── BP_CMV_Projectile.uasset │ ├── M_CMV.uasset │ ├── SM_CMV.uasset │ └── T_CMV_Portrait.uasset │ └── Frigate │ └── BP_Frigate.uasset ├── Plugins ├── DaedalicTestAutomationPlugin │ ├── Content │ │ ├── BP_DaeTestBlueprintMacroLibrary.uasset │ │ ├── TestAlwaysFail │ │ │ ├── BP_TestAlwaysFail.uasset │ │ │ └── TestAlwaysFail.umap │ │ ├── TestAlwaysSkip │ │ │ ├── BP_TestAlwaysSkip.uasset │ │ │ └── TestAlwaysSkip.umap │ │ ├── TestAlwaysSucceed │ │ │ ├── BP_TestAlwaysSucceed.uasset │ │ │ └── TestAlwaysSucceed.umap │ │ ├── TestAlwaysSucceedWithDelay │ │ │ ├── BP_TestAlwaysSucceedWithDelay.uasset │ │ │ └── TestAlwaysSucceedWithDelay.umap │ │ ├── TestAlwaysTimeout │ │ │ ├── BP_TestAlwaysTimeout.uasset │ │ │ └── TestAlwaysTimeout.umap │ │ ├── TestAssume │ │ │ ├── BP_TestAssume.uasset │ │ │ └── TestAssume.umap │ │ ├── TestBeforeAfter │ │ │ ├── BP_TestBeforeAfter.uasset │ │ │ ├── BP_TestSuiteBeforeAfter.uasset │ │ │ └── TestBeforeAfter.umap │ │ ├── TestCalculator │ │ │ ├── BP_TestCalculator.uasset │ │ │ ├── BP_TestCalculatorAddsNumbers.uasset │ │ │ └── TestCalculator.umap │ │ ├── TestCompare │ │ │ ├── BP_TestCompare.uasset │ │ │ └── TestCompare.umap │ │ ├── TestEquals │ │ │ ├── BP_TestEquals.uasset │ │ │ └── TestEquals.umap │ │ └── TestParameterized │ │ │ ├── BP_TestParameter1.uasset │ │ │ ├── BP_TestParameter2.uasset │ │ │ ├── BP_TestParameterProvider.uasset │ │ │ ├── BP_TestParameterized.uasset │ │ │ ├── TestParameterized.umap │ │ │ └── TestParameterized_Streaming.umap │ ├── DaedalicTestAutomationPlugin.uplugin │ ├── Resources │ │ └── Icon128.png │ └── Source │ │ ├── DaedalicTestAutomationPlugin │ │ ├── DaedalicTestAutomationPlugin.Build.cs │ │ ├── Private │ │ │ ├── DaeDelayFramesAction.cpp │ │ │ ├── DaeDelayUntilTriggeredAction.cpp │ │ │ ├── DaeGauntletStates.cpp │ │ │ ├── DaeGauntletTestController.cpp │ │ │ ├── DaeJUnitReportWriter.cpp │ │ │ ├── DaeTestActor.cpp │ │ │ ├── DaeTestActorBlueprint.cpp │ │ │ ├── DaeTestAssertBlueprintFunctionLibrary.cpp │ │ │ ├── DaeTestAssumeBlueprintFunctionLibrary.cpp │ │ │ ├── DaeTestAutomationPluginSettings.cpp │ │ │ ├── DaeTestBlueprintFunctionLibrary.cpp │ │ │ ├── DaeTestDelayBlueprintFunctionLibrary.cpp │ │ │ ├── DaeTestInputBlueprintFunctionLibrary.cpp │ │ │ ├── DaeTestLogCategory.cpp │ │ │ ├── DaeTestParameterProviderActor.cpp │ │ │ ├── DaeTestParameterProviderActorBlueprint.cpp │ │ │ ├── DaeTestResult.cpp │ │ │ ├── DaeTestSuiteActor.cpp │ │ │ ├── DaeTestSuiteActorBlueprint.cpp │ │ │ ├── DaeTestSuiteResult.cpp │ │ │ ├── DaeTestTriggerBox.cpp │ │ │ └── DaedalicTestAutomationPlugin.cpp │ │ └── Public │ │ │ ├── DaeDelayFramesAction.h │ │ │ ├── DaeDelayUntilTriggeredAction.h │ │ │ ├── DaeGauntletStates.h │ │ │ ├── DaeGauntletTestController.h │ │ │ ├── DaeJUnitReportWriter.h │ │ │ ├── DaeTestActor.h │ │ │ ├── DaeTestActorBlueprint.h │ │ │ ├── DaeTestAssertBlueprintFunctionLibrary.h │ │ │ ├── DaeTestAssumeBlueprintFunctionLibrary.h │ │ │ ├── DaeTestAutomationPluginSettings.h │ │ │ ├── DaeTestBlueprintFunctionLibrary.h │ │ │ ├── DaeTestComparisonMethod.h │ │ │ ├── DaeTestDelayBlueprintFunctionLibrary.h │ │ │ ├── DaeTestInputBlueprintFunctionLibrary.h │ │ │ ├── DaeTestLogCategory.h │ │ │ ├── DaeTestParameterProviderActor.h │ │ │ ├── DaeTestParameterProviderActorBlueprint.h │ │ │ ├── DaeTestResult.h │ │ │ ├── DaeTestSuiteActor.h │ │ │ ├── DaeTestSuiteActorBlueprint.h │ │ │ ├── DaeTestSuiteResult.h │ │ │ ├── DaeTestTriggerBox.h │ │ │ └── IDaedalicTestAutomationPlugin.h │ │ └── DaedalicTestAutomationPluginEditor │ │ ├── DaedalicTestAutomationPluginEditor.Build.cs │ │ ├── Private │ │ ├── AssetTypeActions_DaeTestActorBlueprint.cpp │ │ ├── AssetTypeActions_DaeTestParameterProviderActorBlueprint.cpp │ │ ├── AssetTypeActions_DaeTestSuiteActorBlueprint.cpp │ │ ├── AutomationTestFramework │ │ │ ├── DaeTestAutomationPluginAutomationTestFrameworkCommands.cpp │ │ │ ├── DaeTestAutomationPluginAutomationTestFrameworkIntegration.cpp │ │ │ ├── DaeTestAutomationPluginAutomationTestFrameworkTest.cpp │ │ │ └── DaeTestAutomationPluginAutomationTestFrameworkTestContext.cpp │ │ ├── DaeTestActorBlueprintFactory.cpp │ │ ├── DaeTestEditorLogCategory.cpp │ │ ├── DaeTestParameterProviderActorBlueprintFactory.cpp │ │ ├── DaeTestSuiteActorBlueprintFactory.cpp │ │ └── DaedalicTestAutomationPluginEditor.cpp │ │ └── Public │ │ ├── AssetTypeActions_DaeTestActorBlueprint.h │ │ ├── AssetTypeActions_DaeTestParameterProviderActorBlueprint.h │ │ ├── AssetTypeActions_DaeTestSuiteActorBlueprint.h │ │ ├── AutomationTestFramework │ │ ├── DaeTestAutomationPluginAutomationTestFrameworkCommands.h │ │ ├── DaeTestAutomationPluginAutomationTestFrameworkIntegration.h │ │ ├── DaeTestAutomationPluginAutomationTestFrameworkTest.h │ │ └── DaeTestAutomationPluginAutomationTestFrameworkTestContext.h │ │ ├── DaeTestActorBlueprintFactory.h │ │ ├── DaeTestEditorLogCategory.h │ │ ├── DaeTestParameterProviderActorBlueprintFactory.h │ │ ├── DaeTestSuiteActorBlueprintFactory.h │ │ └── IDaedalicTestAutomationPluginEditor.h └── RealTimeStrategy │ ├── Config │ ├── DefaultRealTimeStrategy.ini │ └── FilterPlugin.ini │ ├── Content │ ├── AI │ │ ├── BB_RTSPawnBlackboard.uasset │ │ ├── BT_RTSPawnBehaviorTree.uasset │ │ ├── PlayerAI │ │ │ ├── BB_RTSPlayerBlackboard.uasset │ │ │ ├── BTTask_RTSApplyBuildOrder.uasset │ │ │ └── BT_RTSPlayerBehaviorTree.uasset │ │ ├── RTSBTDecorator_CanGatherFrom.uasset │ │ ├── RTSBTDecorator_CanMove.uasset │ │ ├── RTSBTDecorator_ConstructionIsFinished.uasset │ │ ├── RTSBTDecorator_CooldownIsReady.uasset │ │ ├── RTSBTDecorator_HasAttackOrder.uasset │ │ ├── RTSBTDecorator_HasBeginConstructionOrder.uasset │ │ ├── RTSBTDecorator_HasContinueConstructionOrder.uasset │ │ ├── RTSBTDecorator_HasGatherOrder.uasset │ │ ├── RTSBTDecorator_HasLeftChaseRadius.uasset │ │ ├── RTSBTDecorator_HasMoveOrder.uasset │ │ ├── RTSBTDecorator_HasReturnResourcesOrder.uasset │ │ ├── RTSBTDecorator_IsAtConstructionSite.uasset │ │ ├── RTSBTDecorator_IsCarryingResources.uasset │ │ ├── RTSBTDecorator_IsGatheringResources.uasset │ │ ├── RTSBTDecorator_IsIdle.uasset │ │ ├── RTSBTDecorator_IsInRange.uasset │ │ ├── RTSBTDecorator_IsInRangeToLocation.uasset │ │ ├── RTSBTDecorator_ResourceSourceIsReady.uasset │ │ ├── RTSBTDecorator_TargetIsAlive.uasset │ │ ├── RTSBTService_AcquireTargets.uasset │ │ ├── RTSBTTask_AssignToConstructionSite.uasset │ │ ├── RTSBTTask_BeginConstruction.uasset │ │ ├── RTSBTTask_ContinueGatherResources.uasset │ │ ├── RTSBTTask_FaceTarget.uasset │ │ ├── RTSBTTask_GatherResources.uasset │ │ ├── RTSBTTask_IssueMoveOrder.uasset │ │ ├── RTSBTTask_IssueReturnResourcesOrder.uasset │ │ ├── RTSBTTask_IssueStopOrder.uasset │ │ ├── RTSBTTask_LeaveConstructionSite.uasset │ │ ├── RTSBTTask_MoveIntoBlackboardRangeToActor.uasset │ │ ├── RTSBTTask_MoveIntoBlackboardRangeToLocation.uasset │ │ ├── RTSBTTask_ReturnResources.uasset │ │ ├── RTSBTTask_SetAttackRange.uasset │ │ ├── RTSBTTask_SetConstructionRange.uasset │ │ ├── RTSBTTask_SetGatherRange.uasset │ │ └── RTSBTTask_UseAttack.uasset │ ├── Construction │ │ ├── BP_RTSBuildingCursor.uasset │ │ ├── BP_RTSRangeIndictator.uasset │ │ ├── M_RTSBuildingCursorInvalid.uasset │ │ ├── M_RTSBuildingCursorValid.uasset │ │ ├── M_RTSConstructionSiteGrid.uasset │ │ └── M_RTSRangeIndicator.uasset │ ├── Data │ │ └── DT_RTSGameplayTags.uasset │ ├── FogOfWar │ │ └── M_RTSFogOfWar.uasset │ ├── Minimap │ │ ├── M_RTSFogOfWarMinimap.uasset │ │ └── WBP_RTSMinimapWidget.uasset │ └── Selection │ │ ├── M_RTSSelectionCircle.uasset │ │ ├── T_RTSSelectionCircle.png │ │ └── T_RTSSelectionCircle.uasset │ ├── RealTimeStrategy.uplugin │ ├── Resources │ └── Icon128.png │ └── Source │ └── RealTimeStrategy │ ├── Classes │ ├── Combat │ │ ├── RTSActorDeathType.h │ │ ├── RTSAttackComponent.h │ │ ├── RTSAttackData.h │ │ ├── RTSBountyComponent.h │ │ ├── RTSHealthBarWidgetComponent.h │ │ ├── RTSHealthComponent.h │ │ ├── RTSProjectile.h │ │ ├── RTSProjectileTargetComponent.cpp │ │ └── RTSProjectileTargetComponent.h │ ├── Construction │ │ ├── RTSBuilderComponent.h │ │ ├── RTSBuildingCursor.h │ │ ├── RTSConstructionProgressBarWidgetComponent.h │ │ ├── RTSConstructionSiteComponent.h │ │ └── RTSConstructionState.h │ ├── Economy │ │ ├── RTSGatherData.h │ │ ├── RTSGathererComponent.h │ │ ├── RTSPaymentType.h │ │ ├── RTSPlayerResourcesComponent.h │ │ ├── RTSResourceDrainComponent.h │ │ ├── RTSResourceSourceComponent.h │ │ └── RTSResourceType.h │ ├── Libraries │ │ ├── RTSCollisionLibrary.h │ │ ├── RTSConstructionLibrary.h │ │ ├── RTSEconomyLibrary.h │ │ ├── RTSGameplayLibrary.h │ │ ├── RTSGameplayTagLibrary.h │ │ └── RTSOrderLibrary.h │ ├── Orders │ │ ├── RTSAttackOrder.h │ │ ├── RTSBeginConstructionOrder.h │ │ ├── RTSContinueConstructionOrder.h │ │ ├── RTSGatherOrder.h │ │ ├── RTSMoveOrder.h │ │ ├── RTSOrder.h │ │ ├── RTSOrderData.h │ │ ├── RTSOrderGroupExecutionType.h │ │ ├── RTSOrderTagRequirements.h │ │ ├── RTSOrderTargetData.h │ │ ├── RTSOrderTargetType.h │ │ ├── RTSReturnResourcesOrder.h │ │ ├── RTSSetRallyPointToActorOrder.h │ │ ├── RTSSetRallyPointToLocationOrder.h │ │ └── RTSStopOrder.h │ ├── Production │ │ ├── RTSProductionComponent.h │ │ ├── RTSProductionCostComponent.h │ │ ├── RTSProductionProgressBarWidgetComponent.h │ │ ├── RTSProductionQueue.h │ │ └── RTSProductionRallyPoint.h │ ├── RTSActorComponent.h │ ├── RTSCameraBoundsVolume.h │ ├── RTSCheatManager.h │ ├── RTSContainableComponent.h │ ├── RTSContainerComponent.h │ ├── RTSControlGroup.h │ ├── RTSDescriptionComponent.h │ ├── RTSGameMode.h │ ├── RTSGameState.h │ ├── RTSGameplayDebuggerCategory.h │ ├── RTSGameplayTagsComponent.h │ ├── RTSGameplayTagsProvider.h │ ├── RTSLog.h │ ├── RTSNameComponent.h │ ├── RTSOrderType.h │ ├── RTSOwnerComponent.h │ ├── RTSPawnAIController.h │ ├── RTSPawnMovementComponent.h │ ├── RTSPlayerAIController.h │ ├── RTSPlayerAdvantageComponent.h │ ├── RTSPlayerController.h │ ├── RTSPlayerStart.h │ ├── RTSPlayerState.h │ ├── RTSPortraitComponent.h │ ├── RTSRequirementsComponent.h │ ├── RTSSelectableComponent.h │ ├── RTSSelectionCameraFocusMode.h │ ├── RTSTeamInfo.h │ ├── UI │ │ ├── RTSActorWidgetComponent.h │ │ ├── RTSFloatingCombatTextComponent.h │ │ ├── RTSFloatingCombatTextData.h │ │ ├── RTSHUD.h │ │ ├── RTSHoveredActorWidgetComponent.h │ │ ├── RTSMinimapVolume.h │ │ ├── RTSMinimapWidget.h │ │ └── RTSRangeIndicator.h │ └── Vision │ │ ├── RTSFogOfWarActor.h │ │ ├── RTSVisibleActor.h │ │ ├── RTSVisibleComponent.h │ │ ├── RTSVisionActor.h │ │ ├── RTSVisionComponent.h │ │ ├── RTSVisionInfo.h │ │ ├── RTSVisionInfoTileList.h │ │ ├── RTSVisionManager.h │ │ ├── RTSVisionState.h │ │ ├── RTSVisionTile.h │ │ └── RTSVisionVolume.h │ ├── Private │ ├── Combat │ │ ├── RTSAttackComponent.cpp │ │ ├── RTSBountyComponent.cpp │ │ ├── RTSHealthBarWidgetComponent.cpp │ │ ├── RTSHealthComponent.cpp │ │ └── RTSProjectile.cpp │ ├── Construction │ │ ├── RTSBuilderComponent.cpp │ │ ├── RTSBuildingCursor.cpp │ │ ├── RTSConstructionProgressBarWidgetComponent.cpp │ │ └── RTSConstructionSiteComponent.cpp │ ├── Economy │ │ ├── RTSGathererComponent.cpp │ │ ├── RTSPlayerResourcesComponent.cpp │ │ ├── RTSResourceDrainComponent.cpp │ │ ├── RTSResourceSourceComponent.cpp │ │ └── RTSResourceType.cpp │ ├── Libraries │ │ ├── RTSCollisionLibrary.cpp │ │ ├── RTSConstructionLibrary.cpp │ │ ├── RTSEconomyLibrary.cpp │ │ ├── RTSGameplayLibrary.cpp │ │ ├── RTSGameplayTagLibrary.cpp │ │ └── RTSOrderLibrary.cpp │ ├── Orders │ │ ├── RTSAttackOrder.cpp │ │ ├── RTSBeginConstructionOrder.cpp │ │ ├── RTSContinueConstructionOrder.cpp │ │ ├── RTSGatherOrder.cpp │ │ ├── RTSMoveOrder.cpp │ │ ├── RTSOrder.cpp │ │ ├── RTSOrderData.cpp │ │ ├── RTSReturnResourcesOrder.cpp │ │ ├── RTSSetRallyPointToActorOrder.cpp │ │ ├── RTSSetRallyPointToLocationOrder.cpp │ │ └── RTSStopOrder.cpp │ ├── Production │ │ ├── RTSProductionComponent.cpp │ │ ├── RTSProductionCostComponent.cpp │ │ ├── RTSProductionProgressBarWidgetComponent.cpp │ │ └── RTSProductionQueue.cpp │ ├── RTSActorComponent.cpp │ ├── RTSCheatManager.cpp │ ├── RTSContainableComponent.cpp │ ├── RTSContainerComponent.cpp │ ├── RTSDescriptionComponent.cpp │ ├── RTSGameMode.cpp │ ├── RTSGameState.cpp │ ├── RTSGameplayDebuggerCategory.cpp │ ├── RTSGameplayTagsComponent.cpp │ ├── RTSGameplayTagsProvider.cpp │ ├── RTSLog.cpp │ ├── RTSNameComponent.cpp │ ├── RTSOwnerComponent.cpp │ ├── RTSPawnAIController.cpp │ ├── RTSPawnMovementComponent.cpp │ ├── RTSPlayerAIController.cpp │ ├── RTSPlayerAdvantageComponent.cpp │ ├── RTSPlayerController.cpp │ ├── RTSPlayerStart.cpp │ ├── RTSPlayerState.cpp │ ├── RTSPortraitComponent.cpp │ ├── RTSRequirementsComponent.cpp │ ├── RTSSelectableComponent.cpp │ ├── RTSTeamInfo.cpp │ ├── RealTimeStrategy.cpp │ ├── RealTimeStrategy.h │ ├── UI │ │ ├── RTSActorWidgetComponent.cpp │ │ ├── RTSFloatingCombatTextComponent.cpp │ │ ├── RTSHUD.cpp │ │ ├── RTSMinimapVolume.cpp │ │ ├── RTSMinimapWidget.cpp │ │ └── RTSRangeIndicator.cpp │ └── Vision │ │ ├── RTSFogOfWarActor.cpp │ │ ├── RTSVisibleActor.cpp │ │ ├── RTSVisibleComponent.cpp │ │ ├── RTSVisionActor.cpp │ │ ├── RTSVisionComponent.cpp │ │ ├── RTSVisionInfo.cpp │ │ ├── RTSVisionManager.cpp │ │ ├── RTSVisionTile.cpp │ │ └── RTSVisionVolume.cpp │ ├── Public │ └── IRealTimeStrategy.h │ └── RealTimeStrategy.Build.cs ├── RTSProject.uproject └── Source ├── RTSProject.Target.cs ├── RTSProject ├── RTSProject.Build.cs ├── RTSProject.cpp └── RTSProject.h └── RTSProjectEditor.Target.cs /Assets/Fonts/NotoSansDisplay-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Assets/Fonts/NotoSansDisplay-Bold.ttf -------------------------------------------------------------------------------- /Assets/Fonts/NotoSansDisplay-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Assets/Fonts/NotoSansDisplay-Regular.ttf -------------------------------------------------------------------------------- /Assets/Fonts/README: -------------------------------------------------------------------------------- 1 | This package is part of the noto project. Visit 2 | google.com/get/noto for more information. 3 | 4 | Built on 2017-10-24 from the following noto repository: 5 | ----- 6 | Repo: noto-fonts 7 | Tag: v2017-10-24-phase3-second-cleanup 8 | Date: 2017-10-24 12:10:34 GMT 9 | Commit: 8ef14e6c606a7a0ef3943b9ca01fd49445620d79 10 | 11 | Remove some files that aren't for release. 12 | -------------------------------------------------------------------------------- /Assets/Meshes/SM_CMV.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Assets/Meshes/SM_CMV.blend -------------------------------------------------------------------------------- /Assets/Meshes/SM_CMV.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Assets/Meshes/SM_CMV.fbx -------------------------------------------------------------------------------- /Assets/Meshes/SM_OreAsteroid.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Assets/Meshes/SM_OreAsteroid.blend -------------------------------------------------------------------------------- /Assets/Meshes/SM_OreAsteroid.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Assets/Meshes/SM_OreAsteroid.fbx -------------------------------------------------------------------------------- /Assets/Meshes/SM_Starbase.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Assets/Meshes/SM_Starbase.blend -------------------------------------------------------------------------------- /Assets/Meshes/SM_Starbase.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Assets/Meshes/SM_Starbase.fbx -------------------------------------------------------------------------------- /Assets/Textures/T_Space.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Assets/Textures/T_Space.png -------------------------------------------------------------------------------- /Assets/Textures/T_Space.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Assets/Textures/T_Space.xcf -------------------------------------------------------------------------------- /Assets/UI/T_CMV_Portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Assets/UI/T_CMV_Portrait.png -------------------------------------------------------------------------------- /Assets/UI/T_OreAsteroid_Portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Assets/UI/T_OreAsteroid_Portrait.png -------------------------------------------------------------------------------- /Assets/UI/T_Starbase_Portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Assets/UI/T_Starbase_Portrait.png -------------------------------------------------------------------------------- /Documents/Manual/AIPlayers.md: -------------------------------------------------------------------------------- 1 | ## AI Players 2 | 3 | The plugin provides basic support for AI players as well. Currently, this doesn't go beyond fulfilling basic build orders, so you'll probably want to extend that, e.g. by determining when to attack other players, and where. At least, this should get you started: 4 | 5 | 1. Create an AI controller deriving from `RTSPlayerAIController`. 6 | 1. Set the _Player Behavior Tree Asset_ of your new player AI controller to `BT_RTSPlayerBehaviorTree` (or create your own one). 7 | 1. Set the _Player Blackboard Asset_ of your new player AI controller to `BB_RTSPlayerBlackboard` (or create your own one). 8 | 1. Set up the _Build Order_ of your new player AI controller. The AI will produce the specified actors in order, automatically skipping actors that are already available and replacing those that have been destroyed. 9 | 1. Set up the _Primary Resource Type_ of your new player AI controller. The AI will try and prevent blocking paths between its main building and resource sources of that type. 10 | 1. Add your resource types to the `PlayerResourcesComponent` of your player AI controller. 11 | 1. Check _Gives Bounty_ if killing actors owned by the AI should yield bounties (e.g. for neutral players). 12 | 1. Use your player AI controller in your game mode. 13 | 1. At your game mode, set _Num AI Players_ to the number of AI players you want to spawn. 14 | -------------------------------------------------------------------------------- /Documents/Manual/Cheats.md: -------------------------------------------------------------------------------- 1 | ## Cheats 2 | 3 | The plugin comes with a small set of built-in cheats you can use. Feel free to create your own cheat manager and add additional cheats. 4 | 5 | 6 | 1. Create a cheat manager deriving from `RTSCheatManager`. 7 | 1. Set the _Resource Types_ of your cheat manager. 8 | 1. At your `RTSPlayerController`, set the _Cheat Manager_ to your cheat manager. 9 | 1. At _Edit > Project Settings > Engine > Input_, set and remember your _Console Keys_. 10 | 11 | This will unlock the following built-in cheats to use in your console: 12 | 13 | | Cheat | Description | 14 | | --- | --- | 15 | | Boost | Increases construction and production speed. | 16 | | Damage | Increase damage of all own units. | 17 | | God | Invulnerability cheat. | 18 | | NoFog | Toggles fog of war on/off. | 19 | | Money | Adds resources. | 20 | | Victory | Defeat all other players. | 21 | | Weak | Decreases damage of all own units. | 22 | -------------------------------------------------------------------------------- /Documents/Manual/GameModes.md: -------------------------------------------------------------------------------- 1 | ## Game Modes 2 | 3 | Clearly, even for real-time strategy games, you may want to define multiple game modes (such as classic Skirmish or story-based campaigns). Thus, we won't restrict you too much here, but just want to provide a few basic things that you might find useful. 4 | 5 | 6 | ### Initialization 7 | 8 | 1. Set the _Initial Actors_ and their locations for your game mode. This will spawn initial units for each player at their player start as soon as the game starts. 9 | 10 | 11 | ### Teams 12 | 13 | 1. Set _Num Teams_ to the number of teams your game mode supports. 14 | 15 | 16 | ### Game Over 17 | 18 | 1. Optionally, set the _Defeat Condition Actor Classes_ for your `RTSGameMode`. This will check whether any actors of the specified types exist for a player whenever he or she loses a unit. If no actor of the specified type remains, the player is defeated. 19 | 20 | _In that case, the game mode will raise the OnPlayerDefeated event to be overridden in subclasses (either blueprint or C++). Note that it is up to you to define how defeated players should be handled, and if/when the game is over, e.g. whether you've making a 1v1, FFA or team game._ 21 | -------------------------------------------------------------------------------- /Documents/Manual/Images/AddGameplayTag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/AddGameplayTag.png -------------------------------------------------------------------------------- /Documents/Manual/Images/AddResources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/AddResources.png -------------------------------------------------------------------------------- /Documents/Manual/Images/FloatingCombatTextComponentBeginPlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/FloatingCombatTextComponentBeginPlay.png -------------------------------------------------------------------------------- /Documents/Manual/Images/FloatingCombatTextComponentOnResourcesReturned.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/FloatingCombatTextComponentOnResourcesReturned.png -------------------------------------------------------------------------------- /Documents/Manual/Images/GetGameplayTags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/GetGameplayTags.png -------------------------------------------------------------------------------- /Documents/Manual/Images/GetOwnActors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/GetOwnActors.png -------------------------------------------------------------------------------- /Documents/Manual/Images/HUDDrawFloatingCombatText.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/HUDDrawFloatingCombatText.png -------------------------------------------------------------------------------- /Documents/Manual/Images/HUDDrawSelectionFrame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/HUDDrawSelectionFrame.png -------------------------------------------------------------------------------- /Documents/Manual/Images/HUDHideSelectionFrame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/HUDHideSelectionFrame.png -------------------------------------------------------------------------------- /Documents/Manual/Images/HasGameplayTag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/HasGameplayTag.png -------------------------------------------------------------------------------- /Documents/Manual/Images/HealthBarWidget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/HealthBarWidget.png -------------------------------------------------------------------------------- /Documents/Manual/Images/HoveredActorWidget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/HoveredActorWidget.png -------------------------------------------------------------------------------- /Documents/Manual/Images/IsVisibleForActor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/IsVisibleForActor.png -------------------------------------------------------------------------------- /Documents/Manual/Images/IssueAttackOrder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/IssueAttackOrder.png -------------------------------------------------------------------------------- /Documents/Manual/Images/IssueBeginConstructionOrder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/IssueBeginConstructionOrder.png -------------------------------------------------------------------------------- /Documents/Manual/Images/IssueGatherOrder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/IssueGatherOrder.png -------------------------------------------------------------------------------- /Documents/Manual/Images/IssueMoveOrder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/IssueMoveOrder.png -------------------------------------------------------------------------------- /Documents/Manual/Images/IssueOrder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/IssueOrder.png -------------------------------------------------------------------------------- /Documents/Manual/Images/IssueStopOrder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/IssueStopOrder.png -------------------------------------------------------------------------------- /Documents/Manual/Images/LoadActor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/LoadActor.png -------------------------------------------------------------------------------- /Documents/Manual/Images/OnBountyCollected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/OnBountyCollected.png -------------------------------------------------------------------------------- /Documents/Manual/Images/OnConstructionFinished.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/OnConstructionFinished.png -------------------------------------------------------------------------------- /Documents/Manual/Images/OnHealthChanged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/OnHealthChanged.png -------------------------------------------------------------------------------- /Documents/Manual/Images/OnKilled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/OnKilled.png -------------------------------------------------------------------------------- /Documents/Manual/Images/OnOrderChanged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/OnOrderChanged.png -------------------------------------------------------------------------------- /Documents/Manual/Images/OnPlayerStateAvailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/OnPlayerStateAvailable.png -------------------------------------------------------------------------------- /Documents/Manual/Images/OnProductionFinished.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/OnProductionFinished.png -------------------------------------------------------------------------------- /Documents/Manual/Images/OnResourcesChanged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/OnResourcesChanged.png -------------------------------------------------------------------------------- /Documents/Manual/Images/RemoveGameplayTag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/RemoveGameplayTag.png -------------------------------------------------------------------------------- /Documents/Manual/Images/SelectionFrameWidget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/SelectionFrameWidget.png -------------------------------------------------------------------------------- /Documents/Manual/Images/TransferOwnership.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/TransferOwnership.png -------------------------------------------------------------------------------- /Documents/Manual/Images/UIHideSelectionFrame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/UIHideSelectionFrame.png -------------------------------------------------------------------------------- /Documents/Manual/Images/UIShowSelectionFrame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/UIShowSelectionFrame.png -------------------------------------------------------------------------------- /Documents/Manual/Images/UnloadActor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/UnloadActor.png -------------------------------------------------------------------------------- /Documents/Manual/Images/UpdateHealthBarPositionAndSize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/UpdateHealthBarPositionAndSize.png -------------------------------------------------------------------------------- /Documents/Manual/Images/UpdateHealthBarValue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/UpdateHealthBarValue.png -------------------------------------------------------------------------------- /Documents/Manual/Images/UpdateHoveredActorData.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/UpdateHoveredActorData.png -------------------------------------------------------------------------------- /Documents/Manual/Images/UpdateHoveredActorPositionAndSize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Documents/Manual/Images/UpdateHoveredActorPositionAndSize.png -------------------------------------------------------------------------------- /Documents/Manual/Manual.md: -------------------------------------------------------------------------------- 1 | # Manual 2 | 3 | ## Contents 4 | 5 | 1. [Setup](Setup.md) 6 | 1. [Game Modes](GameModes.md) 7 | 1. [Maps](Maps.md) 8 | 1. [Units](Units.md) 9 | 1. [Buildings](Buildings.md) 10 | 1. [Resources](Resources.md) 11 | 1. [User Interface](UserInterface.md) 12 | 1. [AI Players](AIPlayers.md) 13 | 1. [Scripting](Scripting.md) 14 | 1. [Cheats](Cheats.md) 15 | -------------------------------------------------------------------------------- /Documents/Manual/Resources.md: -------------------------------------------------------------------------------- 1 | ## Creating Resource Sources 2 | 3 | In case you missed that step earlier, make your to set up your resource types as explained in [Setup](Setup.md). Then, create resource sources as follows: 4 | 5 | 1. See [Creating Units](Units.md) (Appearance only; can be a standard actor). 6 | 1. Add an `RTSResourceSourceComponent`. 7 | 1. Set the resource type and maximum and current resources of the source. 8 | 1. Set the gathering factor for increasing the yield of any gatherers (e.g. golden minerals in StarCraft). 9 | 1. If you want gatherers to enter the resource source (e.g. Refinery in StarCraft), check _Gatherer Must Enter_, set the _Gatherer Capacity_, and add an `RTSContainerComponent`. In that case, add a `RTSContainableComponent` to all gatherers as well. 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Nick Pruehs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Source/RTSProject/Config/DefaultEditor.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Config/DefaultEditor.ini -------------------------------------------------------------------------------- /Source/RTSProject/Config/DefaultGameplayTags.ini: -------------------------------------------------------------------------------- 1 | 2 | [/Script/GameplayTags.GameplayTagsSettings] 3 | ImportTagsFromConfig=True 4 | WarnOnInvalidTags=True 5 | FastReplication=True 6 | +GameplayTagTableList=/RealTimeStrategy/Data/DT_RTSGameplayTags.DT_RTSGameplayTags 7 | NumBitsForContainerSize=6 8 | NetIndexFirstBitSegment=16 9 | 10 | -------------------------------------------------------------------------------- /Source/RTSProject/Content/Buildings/Spacedock/BP_Spacedock.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Buildings/Spacedock/BP_Spacedock.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Buildings/Starbase/BP_Starbase.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Buildings/Starbase/BP_Starbase.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Buildings/Starbase/M_Starbase.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Buildings/Starbase/M_Starbase.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Buildings/Starbase/SM_Starbase.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Buildings/Starbase/SM_Starbase.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Buildings/Starbase/T_Starbase_Portrait.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Buildings/Starbase/T_Starbase_Portrait.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Environment/M_Space.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Environment/M_Space.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Environment/T_Space.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Environment/T_Space.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Gameplay/BP_RTSCheatManager.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Gameplay/BP_RTSCheatManager.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Gameplay/BP_RTSGameMode.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Gameplay/BP_RTSGameMode.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Gameplay/BP_RTSGameState.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Gameplay/BP_RTSGameState.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Gameplay/BP_RTSPawnAIController.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Gameplay/BP_RTSPawnAIController.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Gameplay/BP_RTSPlayerAIController.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Gameplay/BP_RTSPlayerAIController.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Gameplay/BP_RTSPlayerController.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Gameplay/BP_RTSPlayerController.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Gameplay/BP_RTSPlayerPawn.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Gameplay/BP_RTSPlayerPawn.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Gameplay/BP_RTSPlayerStart.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Gameplay/BP_RTSPlayerStart.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Gameplay/BP_RTSPlayerState.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Gameplay/BP_RTSPlayerState.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Gameplay/BP_RTSResourceType_Gas.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Gameplay/BP_RTSResourceType_Gas.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Gameplay/BP_RTSResourceType_Ore.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Gameplay/BP_RTSResourceType_Ore.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/BP_TestGameMode.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/BP_TestGameMode.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestAreaOfEffectDamage/BP_TestAreaOfEffectDamage.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestAreaOfEffectDamage/BP_TestAreaOfEffectDamage.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestAreaOfEffectDamage/BP_TestAreaOfEffectDamage_CMV.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestAreaOfEffectDamage/BP_TestAreaOfEffectDamage_CMV.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestAreaOfEffectDamage/BP_TestAreaOfEffectDamage_CMV_Projectile.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestAreaOfEffectDamage/BP_TestAreaOfEffectDamage_CMV_Projectile.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestAreaOfEffectDamage/TEST-AreaOfEffectDamage.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestAreaOfEffectDamage/TEST-AreaOfEffectDamage.umap -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestBounty/BP_TestBounty.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestBounty/BP_TestBounty.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestBounty/BP_TestBounty_CMV.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestBounty/BP_TestBounty_CMV.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestBounty/TEST-Bounty.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestBounty/TEST-Bounty.umap -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestCombat/BP_TestCombat.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestCombat/BP_TestCombat.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestCombat/TEST-Combat.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestCombat/TEST-Combat.umap -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestConstruction/BP_TestConstruction.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestConstruction/BP_TestConstruction.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestConstruction/TEST-Construction.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestConstruction/TEST-Construction.umap -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestEconomy/BP_TestEconomy.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestEconomy/BP_TestEconomy.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestEconomy/TEST-Economy.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestEconomy/TEST-Economy.umap -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestHealthRegeneration/BP_TestHealthRegeneration.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestHealthRegeneration/BP_TestHealthRegeneration.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestHealthRegeneration/BP_TestHealthRegeneration_CMV.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestHealthRegeneration/BP_TestHealthRegeneration_CMV.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestHealthRegeneration/TEST-HealthRegeneration.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestHealthRegeneration/TEST-HealthRegeneration.umap -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestMovement/BP_TestMovement.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestMovement/BP_TestMovement.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestMovement/TEST-Movement.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestMovement/TEST-Movement.umap -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestProduction/BP_TestProduction.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestProduction/BP_TestProduction.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestProduction/TEST-Production.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestProduction/TEST-Production.umap -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestVision/BP_TestVision.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestVision/BP_TestVision.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/AutomatedTests/TestVision/TEST-Vision.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/AutomatedTests/TestVision/TEST-Vision.umap -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/SKM-DarkSpace.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/SKM-DarkSpace.umap -------------------------------------------------------------------------------- /Source/RTSProject/Content/Maps/SKM-DarkSpace_BuiltData.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Maps/SKM-DarkSpace_BuiltData.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Materials/M_RTSWhiteFogOfWar.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Materials/M_RTSWhiteFogOfWar.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Materials/M_RTSWhiteFogOfWarMinimap.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Materials/M_RTSWhiteFogOfWarMinimap.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Resources/BP_OreAsteroid.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Resources/BP_OreAsteroid.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Resources/M_OreAsteroid.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Resources/M_OreAsteroid.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Resources/SM_OreAsteroid.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Resources/SM_OreAsteroid.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Resources/T_OreAsteroid_Portrait.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Resources/T_OreAsteroid_Portrait.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/BP_RTSHUD.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/BP_RTSHUD.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Fonts/FF_NotoSansDisplay-Bold.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Fonts/FF_NotoSansDisplay-Bold.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Fonts/FF_NotoSansDisplay-Regular.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Fonts/FF_NotoSansDisplay-Regular.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Fonts/F_NotoSansDisplay.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Fonts/F_NotoSansDisplay.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/BP_RTSConstructionProgressBarWidgetComponent.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/BP_RTSConstructionProgressBarWidgetComponent.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/BP_RTSHealthBarWidgetComponent.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/BP_RTSHealthBarWidgetComponent.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/BP_RTSHoveredActorWidgetComponent.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/BP_RTSHoveredActorWidgetComponent.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/BP_RTSProductionProgressBarWidgetComponent.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/BP_RTSProductionProgressBarWidgetComponent.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/BP_RTSResourcesReturnedFloatingCombatTextComponent.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/BP_RTSResourcesReturnedFloatingCombatTextComponent.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/DT_TooltipRichTextStyle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/DT_TooltipRichTextStyle.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/WBP_CommandGrid.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/WBP_CommandGrid.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/WBP_CommandGridButton.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/WBP_CommandGridButton.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/WBP_ConstructionProgressBar.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/WBP_ConstructionProgressBar.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/WBP_HealthBar.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/WBP_HealthBar.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/WBP_HoveredActorLabel.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/WBP_HoveredActorLabel.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/WBP_IngameUI.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/WBP_IngameUI.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/WBP_MinimapWidget.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/WBP_MinimapWidget.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/WBP_ProductionProgressBar.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/WBP_ProductionProgressBar.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/WBP_ResourcePanel.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/WBP_ResourcePanel.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/WBP_SelectionFrame.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/WBP_SelectionFrame.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/WBP_StatusWindow.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/WBP_StatusWindow.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/UI/Widgets/WBP_Tooltip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/UI/Widgets/WBP_Tooltip.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Units/CMV/BP_CMV.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Units/CMV/BP_CMV.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Units/CMV/BP_CMV_Projectile.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Units/CMV/BP_CMV_Projectile.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Units/CMV/M_CMV.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Units/CMV/M_CMV.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Units/CMV/SM_CMV.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Units/CMV/SM_CMV.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Units/CMV/T_CMV_Portrait.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Units/CMV/T_CMV_Portrait.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Content/Units/Frigate/BP_Frigate.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Content/Units/Frigate/BP_Frigate.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/BP_DaeTestBlueprintMacroLibrary.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/BP_DaeTestBlueprintMacroLibrary.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysFail/BP_TestAlwaysFail.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysFail/BP_TestAlwaysFail.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysFail/TestAlwaysFail.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysFail/TestAlwaysFail.umap -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysSkip/BP_TestAlwaysSkip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysSkip/BP_TestAlwaysSkip.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysSkip/TestAlwaysSkip.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysSkip/TestAlwaysSkip.umap -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysSucceed/BP_TestAlwaysSucceed.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysSucceed/BP_TestAlwaysSucceed.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysSucceed/TestAlwaysSucceed.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysSucceed/TestAlwaysSucceed.umap -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysSucceedWithDelay/BP_TestAlwaysSucceedWithDelay.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysSucceedWithDelay/BP_TestAlwaysSucceedWithDelay.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysSucceedWithDelay/TestAlwaysSucceedWithDelay.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysSucceedWithDelay/TestAlwaysSucceedWithDelay.umap -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysTimeout/BP_TestAlwaysTimeout.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysTimeout/BP_TestAlwaysTimeout.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysTimeout/TestAlwaysTimeout.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAlwaysTimeout/TestAlwaysTimeout.umap -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAssume/BP_TestAssume.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAssume/BP_TestAssume.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAssume/TestAssume.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestAssume/TestAssume.umap -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestBeforeAfter/BP_TestBeforeAfter.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestBeforeAfter/BP_TestBeforeAfter.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestBeforeAfter/BP_TestSuiteBeforeAfter.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestBeforeAfter/BP_TestSuiteBeforeAfter.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestBeforeAfter/TestBeforeAfter.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestBeforeAfter/TestBeforeAfter.umap -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestCalculator/BP_TestCalculator.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestCalculator/BP_TestCalculator.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestCalculator/BP_TestCalculatorAddsNumbers.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestCalculator/BP_TestCalculatorAddsNumbers.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestCalculator/TestCalculator.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestCalculator/TestCalculator.umap -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestCompare/BP_TestCompare.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestCompare/BP_TestCompare.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestCompare/TestCompare.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestCompare/TestCompare.umap -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestEquals/BP_TestEquals.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestEquals/BP_TestEquals.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestEquals/TestEquals.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestEquals/TestEquals.umap -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestParameterized/BP_TestParameter1.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestParameterized/BP_TestParameter1.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestParameterized/BP_TestParameter2.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestParameterized/BP_TestParameter2.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestParameterized/BP_TestParameterProvider.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestParameterized/BP_TestParameterProvider.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestParameterized/BP_TestParameterized.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestParameterized/BP_TestParameterized.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestParameterized/TestParameterized.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestParameterized/TestParameterized.umap -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestParameterized/TestParameterized_Streaming.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Content/TestParameterized/TestParameterized_Streaming.umap -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/DaedalicTestAutomationPlugin.uplugin: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "Version": 1, 4 | "VersionName": "1.0.0", 5 | "FriendlyName": "Daedalic Test Automation Plugin", 6 | "Description": "Facilitates setting up integration test suits with Gauntlet.", 7 | "Category": "Daedalic Entertainment", 8 | "CreatedBy": "Daedalic Entertainment GmbH", 9 | "CreatedByURL": "https://www.daedalic.com/", 10 | "DocsURL": "https://github.com/DaedalicEntertainment/ue4-test-automation", 11 | "EngineVersion": "4.27.0", 12 | "MarketplaceURL": "", 13 | "SupportURL": "https://github.com/DaedalicEntertainment/ue4-test-automation/issues", 14 | "EnabledByDefault": false, 15 | "CanContainContent": true, 16 | "IsBetaVersion": false, 17 | "Installed": false, 18 | "Modules": [ 19 | { 20 | "Name": "DaedalicTestAutomationPlugin", 21 | "Type": "DeveloperTool", 22 | "LoadingPhase": "Default" 23 | }, 24 | { 25 | "Name": "DaedalicTestAutomationPluginEditor", 26 | "Type": "Editor", 27 | "LoadingPhase": "PreDefault" 28 | } 29 | ], 30 | "Plugins": [ 31 | { 32 | "Name": "Gauntlet", 33 | "Enabled": true 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Resources/Icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Resources/Icon128.png -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Private/DaeDelayFramesAction.cpp: -------------------------------------------------------------------------------- 1 | #include "DaeDelayFramesAction.h" 2 | 3 | FDaeDelayFramesAction::FDaeDelayFramesAction(const FLatentActionInfo& LatentInfo, int32 NumFrames) 4 | : FramesRemaining(NumFrames) 5 | , ExecutionFunction(LatentInfo.ExecutionFunction) 6 | , OutputLink(LatentInfo.Linkage) 7 | , CallbackTarget(LatentInfo.CallbackTarget) 8 | { 9 | } 10 | 11 | void FDaeDelayFramesAction::UpdateOperation(FLatentResponse& Response) 12 | 13 | { 14 | --FramesRemaining; 15 | Response.FinishAndTriggerIf(FramesRemaining <= 0, ExecutionFunction, OutputLink, 16 | CallbackTarget); 17 | } 18 | 19 | #if WITH_EDITOR 20 | FString FDaeDelayFramesAction::GetDescription() const 21 | { 22 | return FString::Printf(TEXT("Delay ({0} frames left)"), FramesRemaining); 23 | } 24 | #endif 25 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Private/DaeDelayUntilTriggeredAction.cpp: -------------------------------------------------------------------------------- 1 | #include "DaeDelayUntilTriggeredAction.h" 2 | #include "DaeTestTriggerBox.h" 3 | 4 | FDaeDelayUntilTriggeredAction::FDaeDelayUntilTriggeredAction(const FLatentActionInfo& LatentInfo, 5 | ADaeTestTriggerBox* InTestTriggerBox) 6 | : TestTriggerBox(InTestTriggerBox) 7 | , ExecutionFunction(LatentInfo.ExecutionFunction) 8 | , OutputLink(LatentInfo.Linkage) 9 | , CallbackTarget(LatentInfo.CallbackTarget) 10 | { 11 | } 12 | 13 | void FDaeDelayUntilTriggeredAction::UpdateOperation(FLatentResponse& Response) 14 | 15 | { 16 | bool bWasTriggered = !IsValid(TestTriggerBox) || TestTriggerBox->WasTriggered(); 17 | Response.FinishAndTriggerIf(bWasTriggered, ExecutionFunction, OutputLink, CallbackTarget); 18 | } 19 | 20 | #if WITH_EDITOR 21 | FString FDaeDelayUntilTriggeredAction::GetDescription() const 22 | { 23 | FString TriggerBoxName = IsValid(TestTriggerBox) ? TestTriggerBox->GetName() : TEXT("nullptr"); 24 | return FString::Printf(TEXT("Delay (until {0} was triggered)"), *TriggerBoxName); 25 | } 26 | #endif 27 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Private/DaeGauntletStates.cpp: -------------------------------------------------------------------------------- 1 | #include "DaeGauntletStates.h" 2 | 3 | FName FDaeGauntletStates::LoadingNextMap = TEXT("Gauntlet_LoadingNextMap"); 4 | FName FDaeGauntletStates::DiscoveringTests = TEXT("Gauntlet_DiscoveringTests"); 5 | FName FDaeGauntletStates::Running = TEXT("Gauntlet_Running"); 6 | FName FDaeGauntletStates::Finished = TEXT("Gauntlet_Finished"); 7 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Private/DaeTestActorBlueprint.cpp: -------------------------------------------------------------------------------- 1 | #include "DaeTestActorBlueprint.h" 2 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Private/DaeTestAutomationPluginSettings.cpp: -------------------------------------------------------------------------------- 1 | #include "DaeTestAutomationPluginSettings.h" 2 | 3 | UDaeTestAutomationPluginSettings::UDaeTestAutomationPluginSettings() 4 | : TestMapPath(TEXT("Maps/AutomatedTests")) 5 | { 6 | } 7 | 8 | #if WITH_EDITOR 9 | void UDaeTestAutomationPluginSettings::PostEditChangeProperty( 10 | struct FPropertyChangedEvent& PropertyChangedEvent) 11 | { 12 | if (PropertyChangedEvent.GetPropertyName() == TEXT("TestMapPath")) 13 | { 14 | OnTestMapPathChanged.Broadcast(TestMapPath); 15 | } 16 | } 17 | #endif 18 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Private/DaeTestLogCategory.cpp: -------------------------------------------------------------------------------- 1 | #include "DaeTestLogCategory.h" 2 | 3 | DEFINE_LOG_CATEGORY(LogDaeTest); 4 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Private/DaeTestParameterProviderActor.cpp: -------------------------------------------------------------------------------- 1 | #include "DaeTestParameterProviderActor.h" 2 | 3 | TArray ADaeTestParameterProviderActor::GetParameters_Implementation() 4 | { 5 | return TArray(); 6 | } 7 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Private/DaeTestParameterProviderActorBlueprint.cpp: -------------------------------------------------------------------------------- 1 | #include "DaeTestParameterProviderActorBlueprint.h" 2 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Private/DaeTestResult.cpp: -------------------------------------------------------------------------------- 1 | #include "DaeTestResult.h" 2 | 3 | FDaeTestResult::FDaeTestResult() 4 | : FDaeTestResult(FString(), 0.0f) 5 | { 6 | } 7 | 8 | FDaeTestResult::FDaeTestResult(FString InTestName, float InTimeSeconds) 9 | : TestName(InTestName) 10 | , TimeSeconds(InTimeSeconds) 11 | { 12 | } 13 | 14 | bool FDaeTestResult::WasSuccessful() const 15 | { 16 | return !HasFailed() && !WasSkipped(); 17 | } 18 | 19 | bool FDaeTestResult::HasFailed() const 20 | { 21 | return !FailureMessage.IsEmpty(); 22 | } 23 | 24 | bool FDaeTestResult::WasSkipped() const 25 | { 26 | return !SkipReason.IsEmpty(); 27 | } 28 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Private/DaeTestSuiteActorBlueprint.cpp: -------------------------------------------------------------------------------- 1 | #include "DaeTestSuiteActorBlueprint.h" 2 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Private/DaeTestSuiteResult.cpp: -------------------------------------------------------------------------------- 1 | #include "DaeTestSuiteResult.h" 2 | 3 | int32 FDaeTestSuiteResult::NumTotalTests() const 4 | { 5 | return TestResults.Num(); 6 | } 7 | 8 | int32 FDaeTestSuiteResult::NumSuccessfulTests() const 9 | { 10 | return NumTotalTests() - NumFailedTests() - NumSkippedTests(); 11 | } 12 | 13 | int32 FDaeTestSuiteResult::NumFailedTests() const 14 | { 15 | int32 FailedTests = 0; 16 | 17 | for (const FDaeTestResult& TestResult : TestResults) 18 | { 19 | if (TestResult.HasFailed()) 20 | { 21 | ++FailedTests; 22 | } 23 | } 24 | 25 | return FailedTests; 26 | } 27 | 28 | int32 FDaeTestSuiteResult::NumSkippedTests() const 29 | { 30 | int32 SkippedTests = 0; 31 | 32 | for (const FDaeTestResult& TestResult : TestResults) 33 | { 34 | if (TestResult.WasSkipped()) 35 | { 36 | ++SkippedTests; 37 | } 38 | } 39 | 40 | return SkippedTests; 41 | } 42 | 43 | float FDaeTestSuiteResult::GetTotalTimeSeconds() const 44 | { 45 | float TimeSeconds = 0.0f; 46 | 47 | for (const FDaeTestResult& TestResult : TestResults) 48 | { 49 | TimeSeconds += TestResult.TimeSeconds; 50 | } 51 | 52 | return TimeSeconds; 53 | } 54 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Private/DaeTestTriggerBox.cpp: -------------------------------------------------------------------------------- 1 | #include "DaeTestTriggerBox.h" 2 | #include "DaeTestLogCategory.h" 3 | 4 | void ADaeTestTriggerBox::BeginPlay() 5 | { 6 | Super::BeginPlay(); 7 | 8 | bWasTriggered = false; 9 | 10 | OnActorBeginOverlap.AddDynamic(this, &ADaeTestTriggerBox::OnActorBeginOverlapBroadcast); 11 | } 12 | 13 | bool ADaeTestTriggerBox::WasTriggered() const 14 | { 15 | return bWasTriggered; 16 | } 17 | 18 | void ADaeTestTriggerBox::OnActorBeginOverlapBroadcast(AActor* OverlappedActor, AActor* OtherActor) 19 | { 20 | bWasTriggered = true; 21 | 22 | UE_LOG(LogDaeTest, Log, TEXT("%s was triggered by %s."), *GetName(), *OtherActor->GetName()); 23 | } 24 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Private/DaedalicTestAutomationPlugin.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "CoreMinimal.h" 4 | #include "Modules/ModuleManager.h" 5 | #include "IDaedalicTestAutomationPlugin.h" 6 | 7 | 8 | class FDaedalicTestAutomationPlugin : public IDaedalicTestAutomationPlugin 9 | { 10 | /** IModuleInterface implementation */ 11 | virtual void StartupModule() override; 12 | virtual void ShutdownModule() override; 13 | }; 14 | 15 | IMPLEMENT_MODULE( FDaedalicTestAutomationPlugin, DaedalicTestAutomationPlugin ) 16 | 17 | 18 | 19 | void FDaedalicTestAutomationPlugin::StartupModule() 20 | { 21 | // This code will execute after your module is loaded into memory (but after global variables are initialized, of course.) 22 | } 23 | 24 | 25 | void FDaedalicTestAutomationPlugin::ShutdownModule() 26 | { 27 | // This function may be called during shutdown to clean up your module. For modules that support dynamic reloading, 28 | // we call this function before unloading the module. 29 | } 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeDelayFramesAction.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | /** Triggers the output link after the specified number of frames. */ 8 | class DAEDALICTESTAUTOMATIONPLUGIN_API FDaeDelayFramesAction : public FPendingLatentAction 9 | { 10 | public: 11 | int32 FramesRemaining; 12 | FName ExecutionFunction; 13 | int32 OutputLink; 14 | FWeakObjectPtr CallbackTarget; 15 | 16 | FDaeDelayFramesAction(const FLatentActionInfo& LatentInfo, int32 NumFrames); 17 | 18 | virtual void UpdateOperation(FLatentResponse& Response) override; 19 | 20 | #if WITH_EDITOR 21 | virtual FString GetDescription() const override; 22 | #endif 23 | }; 24 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeDelayUntilTriggeredAction.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | class ADaeTestTriggerBox; 8 | 9 | /** Triggers the output link after the specified trigger box has been triggered. */ 10 | class DAEDALICTESTAUTOMATIONPLUGIN_API FDaeDelayUntilTriggeredAction : public FPendingLatentAction 11 | { 12 | public: 13 | ADaeTestTriggerBox* TestTriggerBox; 14 | FName ExecutionFunction; 15 | int32 OutputLink; 16 | FWeakObjectPtr CallbackTarget; 17 | 18 | FDaeDelayUntilTriggeredAction(const FLatentActionInfo& LatentInfo, 19 | ADaeTestTriggerBox* InTestTriggerBox); 20 | 21 | virtual void UpdateOperation(FLatentResponse& Response) override; 22 | 23 | #if WITH_EDITOR 24 | virtual FString GetDescription() const override; 25 | #endif 26 | }; 27 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeGauntletStates.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | struct DAEDALICTESTAUTOMATIONPLUGIN_API FDaeGauntletStates : FGauntletStates 6 | { 7 | static FName LoadingNextMap; 8 | static FName DiscoveringTests; 9 | static FName Running; 10 | static FName Finished; 11 | }; 12 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeGauntletTestController.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "DaeTestSuiteResult.h" 4 | #include 5 | #include 6 | #include "DaeGauntletTestController.generated.h" 7 | 8 | class ADaeTestSuiteActor; 9 | 10 | /** Controller for automated tests run by Gauntlet. */ 11 | UCLASS() 12 | class DAEDALICTESTAUTOMATIONPLUGIN_API UDaeGauntletTestController : public UGauntletTestController 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | virtual void OnInit() override; 18 | virtual void OnPostMapChange(UWorld* World) override; 19 | virtual void OnTick(float TimeDelta) override; 20 | 21 | private: 22 | TArray MapNames; 23 | int32 MapIndex; 24 | TArray Results; 25 | 26 | void LoadNextTestMap(); 27 | 28 | UFUNCTION() 29 | void OnTestSuiteFinished(ADaeTestSuiteActor* TestSuite); 30 | 31 | FString ParseCommandLineOption(const FString& Key); 32 | }; 33 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeJUnitReportWriter.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "DaeTestSuiteResult.h" 6 | 7 | /** Writes test reports based on the Apache Ant JUnit report format (based on org.junit.platform.reporting.legacy.xml.XmlReportWriter.writeTestsuite). */ 8 | class DAEDALICTESTAUTOMATIONPLUGIN_API FDaeJUnitReportWriter 9 | { 10 | public: 11 | /** Returns an XML report based on the Apache Ant JUnit report format. */ 12 | FString CreateReport(const FString& Name, const TArray& TestSuites) const; 13 | 14 | private: 15 | int32 NumTotalTests(const TArray& TestSuites) const; 16 | int32 NumFailedTests(const TArray& TestSuites) const; 17 | int32 NumSkippedTests(const TArray& TestSuites) const; 18 | float GetTotalTimeSeconds(const TArray& TestSuites) const; 19 | FString GetTimestamp(const TArray& TestSuites) const; 20 | }; 21 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeTestActorBlueprint.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include "DaeTestActorBlueprint.generated.h" 6 | 7 | /** Single automated test to be run as part of a test suite. */ 8 | UCLASS(BlueprintType) 9 | class DAEDALICTESTAUTOMATIONPLUGIN_API UDaeTestActorBlueprint : public UBlueprint 10 | { 11 | GENERATED_BODY() 12 | 13 | public: 14 | #if WITH_EDITOR 15 | // UBlueprint interface 16 | virtual bool SupportedByDefaultBlueprintFactory() const override 17 | { 18 | return false; 19 | } 20 | // End of UBlueprint interface 21 | #endif 22 | }; 23 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeTestAssumeBlueprintFunctionLibrary.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include "DaeTestAssumeBlueprintFunctionLibrary.generated.h" 6 | 7 | /** Utility functions for assuming state before acting in automated tests. */ 8 | UCLASS() 9 | class DAEDALICTESTAUTOMATIONPLUGIN_API UDaeTestAssumeBlueprintFunctionLibrary 10 | : public UBlueprintFunctionLibrary 11 | { 12 | GENERATED_BODY() 13 | 14 | public: 15 | /** Expects the specified value to be true. Failed assumptions will cause automated tests to be skipped instead of failed. */ 16 | UFUNCTION(BlueprintCallable, meta = (HidePin = "Context", DefaultToSelf = "Context")) 17 | static void AssumeTrue(bool bValue, const FString& What, UObject* Context = nullptr); 18 | 19 | /** Expects the specified value to be true. Failed assumptions will cause automated tests to be skipped instead of failed. */ 20 | UFUNCTION(BlueprintCallable, meta = (HidePin = "Context", DefaultToSelf = "Context")) 21 | static void AssumeFalse(bool bValue, const FString& What, UObject* Context = nullptr); 22 | 23 | private: 24 | static void OnTestSkipped(UObject* Context, const FString& Message); 25 | }; 26 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeTestAutomationPluginSettings.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include "DaeTestAutomationPluginSettings.generated.h" 6 | 7 | DECLARE_MULTICAST_DELEGATE_OneParam(FDaeTestAutomationPluginSettingsTestMapPathChangedSignature, 8 | const FString&); 9 | 10 | /** Custom settings for this plugin. */ 11 | UCLASS(config = Game, defaultconfig) 12 | class DAEDALICTESTAUTOMATIONPLUGIN_API UDaeTestAutomationPluginSettings : public UObject 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | /** Path to look for test maps in. */ 18 | UPROPERTY(config, EditAnywhere) 19 | FString TestMapPath; 20 | 21 | UDaeTestAutomationPluginSettings(); 22 | 23 | #if WITH_EDITOR 24 | virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override; 25 | #endif 26 | 27 | /** Event when the path to look for test maps in has changed. */ 28 | FDaeTestAutomationPluginSettingsTestMapPathChangedSignature OnTestMapPathChanged; 29 | }; 30 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeTestBlueprintFunctionLibrary.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include "DaeTestBlueprintFunctionLibrary.generated.h" 7 | 8 | class ADaeTestTriggerBox; 9 | 10 | /** Utility functions for automating tests. */ 11 | UCLASS() 12 | class DAEDALICTESTAUTOMATIONPLUGIN_API UDaeTestBlueprintFunctionLibrary 13 | : public UBlueprintFunctionLibrary 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | /** Triggers the output link after the specified number of frames. */ 19 | UFUNCTION(BlueprintCallable, 20 | meta = (Latent, WorldContext = "WorldContextObject", LatentInfo = "LatentInfo")) 21 | static void DelayFrames(UObject* WorldContextObject, struct FLatentActionInfo LatentInfo, 22 | int32 NumFrames = 1); 23 | 24 | /** Triggers the output link after the specified trigger box has been triggered. */ 25 | UFUNCTION(BlueprintCallable, 26 | meta = (Latent, WorldContext = "WorldContextObject", LatentInfo = "LatentInfo")) 27 | static void DelayUntilTriggered(UObject* WorldContextObject, 28 | struct FLatentActionInfo LatentInfo, 29 | ADaeTestTriggerBox* TestTriggerBox); 30 | }; 31 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeTestComparisonMethod.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "DaeTestComparisonMethod.generated.h" 4 | 5 | UENUM(BlueprintType) 6 | enum class EDaeTestComparisonMethod : uint8 7 | { 8 | LessThan, 9 | LessThanOrEqualTo, 10 | GreaterThanOrEqualTo, 11 | GreaterThan 12 | }; 13 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeTestDelayBlueprintFunctionLibrary.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include "DaeTestDelayBlueprintFunctionLibrary.generated.h" 7 | 8 | class ADaeTestTriggerBox; 9 | 10 | /** Utility functions for sequencing actions in automated tests. */ 11 | UCLASS() 12 | class DAEDALICTESTAUTOMATIONPLUGIN_API UDaeTestDelayBlueprintFunctionLibrary 13 | : public UBlueprintFunctionLibrary 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | /** Triggers the output link after the specified number of frames. */ 19 | UFUNCTION(BlueprintCallable, 20 | meta = (Latent, WorldContext = "WorldContextObject", LatentInfo = "LatentInfo")) 21 | static void DelayFrames(UObject* WorldContextObject, struct FLatentActionInfo LatentInfo, 22 | int32 NumFrames = 1); 23 | 24 | /** Triggers the output link after the specified trigger box has been triggered. */ 25 | UFUNCTION(BlueprintCallable, 26 | meta = (Latent, WorldContext = "WorldContextObject", LatentInfo = "LatentInfo")) 27 | static void DelayUntilTriggered(UObject* WorldContextObject, 28 | struct FLatentActionInfo LatentInfo, 29 | ADaeTestTriggerBox* TestTriggerBox); 30 | }; 31 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeTestInputBlueprintFunctionLibrary.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include "DaeTestInputBlueprintFunctionLibrary.generated.h" 7 | 8 | /** Utility functions for simulating input in automated tests. */ 9 | UCLASS() 10 | class DAEDALICTESTAUTOMATIONPLUGIN_API UDaeTestInputBlueprintFunctionLibrary 11 | : public UBlueprintFunctionLibrary 12 | { 13 | GENERATED_BODY() 14 | 15 | public: 16 | /** Applies the input action with the specified name once. */ 17 | UFUNCTION(BlueprintCallable, meta = (HidePin = "Context", DefaultToSelf = "Context")) 18 | static void ApplyInputAction(UObject* Context, const FName& ActionName, 19 | EInputEvent InputEventType = EInputEvent::IE_Pressed); 20 | 21 | /** Applies the input axis with the specified name. Pass AxisValue 0.0f to reset the input axis. */ 22 | UFUNCTION(BlueprintCallable, meta = (HidePin = "Context", DefaultToSelf = "Context")) 23 | static void ApplyInputAxis(UObject* Context, const FName& AxisName, float AxisValue = 1.0f); 24 | }; 25 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeTestLogCategory.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | DECLARE_LOG_CATEGORY_EXTERN(LogDaeTest, Log, All); 6 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeTestParameterProviderActor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include "DaeTestParameterProviderActor.generated.h" 6 | 7 | /** Provides a set of parameters for tests, which are run once per parameter. */ 8 | UCLASS() 9 | class DAEDALICTESTAUTOMATIONPLUGIN_API ADaeTestParameterProviderActor : public AActor 10 | { 11 | GENERATED_BODY() 12 | 13 | public: 14 | /** Gets the parameters to run the test with, one per run. */ 15 | UFUNCTION(BlueprintNativeEvent) 16 | TArray GetParameters(); 17 | }; 18 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeTestParameterProviderActorBlueprint.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include "DaeTestParameterProviderActorBlueprint.generated.h" 6 | 7 | /** Provides a set of parameters for tests, which are run once per parameter. */ 8 | UCLASS(BlueprintType) 9 | class DAEDALICTESTAUTOMATIONPLUGIN_API UDaeTestParameterProviderActorBlueprint : public UBlueprint 10 | { 11 | GENERATED_BODY() 12 | 13 | public: 14 | #if WITH_EDITOR 15 | // UBlueprint interface 16 | virtual bool SupportedByDefaultBlueprintFactory() const override 17 | { 18 | return false; 19 | } 20 | // End of UBlueprint interface 21 | #endif 22 | }; 23 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeTestResult.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | /** Result set of a single test. */ 6 | class DAEDALICTESTAUTOMATIONPLUGIN_API FDaeTestResult 7 | { 8 | public: 9 | /** Name of the test. */ 10 | FString TestName; 11 | 12 | /** (Optional) Why the test failed. */ 13 | FString FailureMessage; 14 | 15 | /** (Optional) Why the test was skipped. */ 16 | FString SkipReason; 17 | 18 | /** Time the test ran, in seconds. */ 19 | float TimeSeconds; 20 | 21 | FDaeTestResult(); 22 | FDaeTestResult(FString InTestName, float InTimeSeconds); 23 | 24 | /** Whether the test finished without failure, or not. */ 25 | bool WasSuccessful() const; 26 | 27 | /** Whether the test has failed. */ 28 | bool HasFailed() const; 29 | 30 | /** Whether this test has been skipped instead of being run. */ 31 | bool WasSkipped() const; 32 | }; 33 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeTestSuiteActorBlueprint.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include "DaeTestSuiteActorBlueprint.generated.h" 6 | 7 | /** Suite of automated tests to be run one after another. */ 8 | UCLASS(BlueprintType) 9 | class DAEDALICTESTAUTOMATIONPLUGIN_API UDaeTestSuiteActorBlueprint : public UBlueprint 10 | { 11 | GENERATED_BODY() 12 | 13 | public: 14 | #if WITH_EDITOR 15 | // UBlueprint interface 16 | virtual bool SupportedByDefaultBlueprintFactory() const override 17 | { 18 | return false; 19 | } 20 | // End of UBlueprint interface 21 | #endif 22 | }; 23 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeTestSuiteResult.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "DaeTestResult.h" 4 | 5 | /** Result set of a whole test suite. */ 6 | class DAEDALICTESTAUTOMATIONPLUGIN_API FDaeTestSuiteResult 7 | { 8 | public: 9 | /** Name of the map the test suite ran in. */ 10 | FString MapName; 11 | 12 | /** Name of the test suite that ran. */ 13 | FString TestSuiteName; 14 | 15 | /** UTC date and time the test suite started running. */ 16 | FDateTime Timestamp; 17 | 18 | /** Results of all individual tests of the test suite. */ 19 | TArray TestResults; 20 | 21 | /** How many tests of the test suite have been run. */ 22 | int32 NumTotalTests() const; 23 | 24 | /** How many tests of the test suite have been successful. */ 25 | int32 NumSuccessfulTests() const; 26 | 27 | /** How many tests of the test suite have failed. */ 28 | int32 NumFailedTests() const; 29 | 30 | /** How many tests of the test suite have been skipped instead of being run. */ 31 | int32 NumSkippedTests() const; 32 | 33 | /** Combined time all tests ran, in seconds. */ 34 | float GetTotalTimeSeconds() const; 35 | }; 36 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/DaeTestTriggerBox.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include "DaeTestTriggerBox.generated.h" 6 | 7 | /** Trigger box to be used in automated tests. */ 8 | UCLASS() 9 | class DAEDALICTESTAUTOMATIONPLUGIN_API ADaeTestTriggerBox : public ATriggerBox 10 | { 11 | GENERATED_BODY() 12 | 13 | public: 14 | virtual void BeginPlay() override; 15 | 16 | /** Whether this trigger box has been triggered at least once. */ 17 | UFUNCTION(BlueprintPure) 18 | bool WasTriggered() const; 19 | 20 | private: 21 | /** Whether this trigger box has been triggered at least once. */ 22 | bool bWasTriggered; 23 | 24 | UFUNCTION() 25 | void OnActorBeginOverlapBroadcast(AActor* OverlappedActor, AActor* OtherActor); 26 | }; 27 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPlugin/Public/IDaedalicTestAutomationPlugin.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Modules/ModuleInterface.h" 7 | #include "Modules/ModuleManager.h" 8 | 9 | 10 | /** 11 | * The public interface to this module. In most cases, this interface is only public to sibling modules 12 | * within this plugin. 13 | */ 14 | class IDaedalicTestAutomationPlugin : public IModuleInterface 15 | { 16 | 17 | public: 18 | 19 | /** 20 | * Singleton-like access to this module's interface. This is just for convenience! 21 | * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. 22 | * 23 | * @return Returns singleton instance, loading the module on demand if needed 24 | */ 25 | static inline IDaedalicTestAutomationPlugin& Get() 26 | { 27 | return FModuleManager::LoadModuleChecked< IDaedalicTestAutomationPlugin >( "DaedalicTestAutomationPlugin" ); 28 | } 29 | 30 | /** 31 | * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. 32 | * 33 | * @return True if the module is loaded and ready to use 34 | */ 35 | static inline bool IsAvailable() 36 | { 37 | return FModuleManager::Get().IsModuleLoaded( "DaedalicTestAutomationPlugin" ); 38 | } 39 | }; 40 | 41 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Private/AssetTypeActions_DaeTestActorBlueprint.cpp: -------------------------------------------------------------------------------- 1 | #include "AssetTypeActions_DaeTestActorBlueprint.h" 2 | #include "DaeTestActorBlueprint.h" 3 | #include "DaeTestActorBlueprintFactory.h" 4 | 5 | #define LOCTEXT_NAMESPACE "DaedalicTestAutomationPlugin" 6 | 7 | FAssetTypeActions_DaeTestActorBlueprint::FAssetTypeActions_DaeTestActorBlueprint( 8 | EAssetTypeCategories::Type InAssetTypeCategory) 9 | : AssetTypeCategory(InAssetTypeCategory) 10 | { 11 | } 12 | 13 | FText FAssetTypeActions_DaeTestActorBlueprint::GetName() const 14 | { 15 | return NSLOCTEXT("DaedalicTestAutomationPlugin", "AssetTypeActions_DaeTestActorBlueprint", 16 | "Test Actor Blueprint"); 17 | } 18 | 19 | UClass* FAssetTypeActions_DaeTestActorBlueprint::GetSupportedClass() const 20 | { 21 | return UDaeTestActorBlueprint::StaticClass(); 22 | } 23 | 24 | uint32 FAssetTypeActions_DaeTestActorBlueprint::GetCategories() 25 | { 26 | return AssetTypeCategory; 27 | } 28 | 29 | UFactory* FAssetTypeActions_DaeTestActorBlueprint::GetFactoryForBlueprintType( 30 | UBlueprint* InBlueprint) const 31 | { 32 | return NewObject(); 33 | } 34 | 35 | #undef LOCTEXT_NAMESPACE 36 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Private/AssetTypeActions_DaeTestSuiteActorBlueprint.cpp: -------------------------------------------------------------------------------- 1 | #include "AssetTypeActions_DaeTestSuiteActorBlueprint.h" 2 | #include "DaeTestSuiteActorBlueprint.h" 3 | #include "DaeTestSuiteActorBlueprintFactory.h" 4 | 5 | #define LOCTEXT_NAMESPACE "DaedalicTestAutomationPlugin" 6 | 7 | FAssetTypeActions_DaeTestSuiteActorBlueprint::FAssetTypeActions_DaeTestSuiteActorBlueprint( 8 | EAssetTypeCategories::Type InAssetTypeCategory) 9 | : AssetTypeCategory(InAssetTypeCategory) 10 | { 11 | } 12 | 13 | FText FAssetTypeActions_DaeTestSuiteActorBlueprint::GetName() const 14 | { 15 | return NSLOCTEXT("DaedalicTestAutomationPlugin", "AssetTypeActions_DaeTestSuiteActorBlueprint", 16 | "Test Suite Actor Blueprint"); 17 | } 18 | 19 | UClass* FAssetTypeActions_DaeTestSuiteActorBlueprint::GetSupportedClass() const 20 | { 21 | return UDaeTestSuiteActorBlueprint::StaticClass(); 22 | } 23 | 24 | uint32 FAssetTypeActions_DaeTestSuiteActorBlueprint::GetCategories() 25 | { 26 | return AssetTypeCategory; 27 | } 28 | 29 | UFactory* FAssetTypeActions_DaeTestSuiteActorBlueprint::GetFactoryForBlueprintType( 30 | UBlueprint* InBlueprint) const 31 | { 32 | return NewObject(); 33 | } 34 | 35 | #undef LOCTEXT_NAMESPACE 36 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Private/AutomationTestFramework/DaeTestAutomationPluginAutomationTestFrameworkCommands.cpp: -------------------------------------------------------------------------------- 1 | #include "AutomationTestFramework/DaeTestAutomationPluginAutomationTestFrameworkCommands.h" 2 | #include "DaeTestSuiteActor.h" 3 | #include 4 | #include 5 | #include 6 | 7 | bool FDaeTestAutomationPluginWaitForEndOfTestSuite::Update() 8 | { 9 | if (!GEditor) 10 | { 11 | return false; 12 | } 13 | 14 | if (!GEditor->PlayWorld) 15 | { 16 | return false; 17 | } 18 | 19 | if (!Context.CurrentTestSuite) 20 | { 21 | for (TActorIterator Iter(GEditor->PlayWorld); Iter; ++Iter) 22 | { 23 | Context.CurrentTestSuite = *Iter; 24 | } 25 | } 26 | 27 | if (Context.CurrentTestSuite) 28 | { 29 | return !Context.CurrentTestSuite->IsRunning(); 30 | } 31 | 32 | return false; 33 | } 34 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Private/AutomationTestFramework/DaeTestAutomationPluginAutomationTestFrameworkTestContext.cpp: -------------------------------------------------------------------------------- 1 | #include "AutomationTestFramework/DaeTestAutomationPluginAutomationTestFrameworkTestContext.h" 2 | 3 | FDaeTestAutomationPluginAutomationTestFrameworkTestContext:: 4 | FDaeTestAutomationPluginAutomationTestFrameworkTestContext() 5 | : CurrentTestSuite(nullptr) 6 | { 7 | } 8 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Private/DaeTestEditorLogCategory.cpp: -------------------------------------------------------------------------------- 1 | #include "DaeTestEditorLogCategory.h" 2 | 3 | DEFINE_LOG_CATEGORY(LogDaeTestEditor); 4 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Private/DaeTestParameterProviderActorBlueprintFactory.cpp: -------------------------------------------------------------------------------- 1 | #include "DaeTestParameterProviderActorBlueprintFactory.h" 2 | #include "DaeTestParameterProviderActor.h" 3 | #include "DaeTestParameterProviderActorBlueprint.h" 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | UDaeTestParameterProviderActorBlueprintFactory::UDaeTestParameterProviderActorBlueprintFactory( 13 | const FObjectInitializer& ObjectInitializer /*= FObjectInitializer::Get()*/) 14 | : Super(ObjectInitializer) 15 | { 16 | bCreateNew = true; 17 | bEditAfterNew = true; 18 | SupportedClass = UDaeTestParameterProviderActorBlueprint::StaticClass(); 19 | } 20 | 21 | UObject* UDaeTestParameterProviderActorBlueprintFactory::FactoryCreateNew( 22 | UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, 23 | FFeedbackContext* Warn) 24 | { 25 | // Create blueprint asset. 26 | return FKismetEditorUtilities::CreateBlueprint( 27 | ADaeTestParameterProviderActor::StaticClass(), InParent, Name, BPTYPE_Normal, 28 | UDaeTestParameterProviderActorBlueprint::StaticClass(), 29 | UBlueprintGeneratedClass::StaticClass()); 30 | } 31 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Public/AssetTypeActions_DaeTestActorBlueprint.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | class UFactory; 9 | 10 | /** Asset action for creating new test actor blueprints with special initial blueprint graphs. */ 11 | class FAssetTypeActions_DaeTestActorBlueprint : public FAssetTypeActions_Blueprint 12 | { 13 | public: 14 | FAssetTypeActions_DaeTestActorBlueprint(EAssetTypeCategories::Type InAssetTypeCategory); 15 | 16 | // IAssetTypeActions Implementation 17 | virtual FText GetName() const override; 18 | virtual UClass* GetSupportedClass() const override; 19 | virtual uint32 GetCategories() override; 20 | // End IAssetTypeActions Implementation 21 | 22 | // FAssetTypeActions_Blueprint interface 23 | virtual UFactory* GetFactoryForBlueprintType(UBlueprint* InBlueprint) const override; 24 | 25 | private: 26 | EAssetTypeCategories::Type AssetTypeCategory; 27 | }; 28 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Public/AssetTypeActions_DaeTestParameterProviderActorBlueprint.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | class UFactory; 9 | 10 | /** Asset action for creating new test parameter provider actor blueprints with special initial blueprint graphs. */ 11 | class FAssetTypeActions_DaeTestParameterProviderActorBlueprint : public FAssetTypeActions_Blueprint 12 | { 13 | public: 14 | FAssetTypeActions_DaeTestParameterProviderActorBlueprint( 15 | EAssetTypeCategories::Type InAssetTypeCategory); 16 | 17 | // IAssetTypeActions Implementation 18 | virtual FText GetName() const override; 19 | virtual UClass* GetSupportedClass() const override; 20 | virtual uint32 GetCategories() override; 21 | // End IAssetTypeActions Implementation 22 | 23 | // FAssetTypeActions_Blueprint interface 24 | virtual UFactory* GetFactoryForBlueprintType(UBlueprint* InBlueprint) const override; 25 | 26 | private: 27 | EAssetTypeCategories::Type AssetTypeCategory; 28 | }; 29 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Public/AssetTypeActions_DaeTestSuiteActorBlueprint.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | class UFactory; 9 | 10 | /** Asset action for creating new test suite actor blueprints with special initial blueprint graphs. */ 11 | class FAssetTypeActions_DaeTestSuiteActorBlueprint : public FAssetTypeActions_Blueprint 12 | { 13 | public: 14 | FAssetTypeActions_DaeTestSuiteActorBlueprint(EAssetTypeCategories::Type InAssetTypeCategory); 15 | 16 | // IAssetTypeActions Implementation 17 | virtual FText GetName() const override; 18 | virtual UClass* GetSupportedClass() const override; 19 | virtual uint32 GetCategories() override; 20 | // End IAssetTypeActions Implementation 21 | 22 | // FAssetTypeActions_Blueprint interface 23 | virtual UFactory* GetFactoryForBlueprintType(UBlueprint* InBlueprint) const override; 24 | 25 | private: 26 | EAssetTypeCategories::Type AssetTypeCategory; 27 | }; 28 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Public/AutomationTestFramework/DaeTestAutomationPluginAutomationTestFrameworkCommands.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "DaeTestAutomationPluginAutomationTestFrameworkTestContext.h" 4 | #include 5 | #include 6 | 7 | class ADaeTestSuiteActor; 8 | 9 | /** Waits for the current test suite to finish. */ 10 | DEFINE_LATENT_AUTOMATION_COMMAND_ONE_PARAMETER( 11 | FDaeTestAutomationPluginWaitForEndOfTestSuite, 12 | FDaeTestAutomationPluginAutomationTestFrameworkTestContext, Context); 13 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Public/AutomationTestFramework/DaeTestAutomationPluginAutomationTestFrameworkIntegration.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "DaeTestAutomationPluginAutomationTestFrameworkTest.h" 4 | #include 5 | 6 | /** Integration with the Unreal Automation Test Framework. Discovers tests based on the plugin settings. */ 7 | class FDaeTestAutomationPluginAutomationTestFrameworkIntegration 8 | { 9 | public: 10 | /** Sets the path to look for test maps in, re-discovering tests afterwards. */ 11 | void SetTestMapPath(const FString& InTestMapPath); 12 | 13 | private: 14 | /** Path to look for test maps in. */ 15 | FString TestMapPath; 16 | 17 | /** Currently registered automation tests. */ 18 | TArray> Tests; 19 | }; 20 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Public/AutomationTestFramework/DaeTestAutomationPluginAutomationTestFrameworkTest.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | /** Single test to be registered with the Unreal Automation Test Framework. Implementation based on IMPLEMENT_SIMPLE_AUTOMATION_TEST_PRIVATE macro. */ 7 | class FDaeTestAutomationPluginAutomationTestFrameworkTest : FAutomationTestBase 8 | { 9 | public: 10 | FDaeTestAutomationPluginAutomationTestFrameworkTest(const FString& InMapName); 11 | 12 | virtual uint32 GetTestFlags() const override; 13 | virtual uint32 GetRequiredDeviceNum() const override; 14 | virtual FString GetTestSourceFileName() const override; 15 | virtual int32 GetTestSourceFileLine() const override; 16 | 17 | FString GetMapName() const; 18 | 19 | protected: 20 | virtual void GetTests(TArray& OutBeautifiedNames, 21 | TArray& OutTestCommands) const override; 22 | virtual bool RunTest(const FString& Parameters) override; 23 | virtual FString GetBeautifiedTestName() const override; 24 | 25 | private: 26 | FString MapName; 27 | }; 28 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Public/AutomationTestFramework/DaeTestAutomationPluginAutomationTestFrameworkTestContext.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | class ADaeTestSuiteActor; 6 | 7 | /** Context to run a single test for the Unreal Automation Test Framework within. */ 8 | class FDaeTestAutomationPluginAutomationTestFrameworkTestContext 9 | { 10 | public: 11 | ADaeTestSuiteActor* CurrentTestSuite; 12 | 13 | FDaeTestAutomationPluginAutomationTestFrameworkTestContext(); 14 | }; 15 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Public/DaeTestActorBlueprintFactory.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include "DaeTestActorBlueprintFactory.generated.h" 6 | 7 | /** Factory for creating new test actor blueprints with special initial blueprint graphs. */ 8 | UCLASS(HideCategories = Object, MinimalAPI) 9 | class UDaeTestActorBlueprintFactory : public UFactory 10 | { 11 | GENERATED_BODY() 12 | 13 | public: 14 | UDaeTestActorBlueprintFactory( 15 | const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 16 | 17 | //~ Begin UFactory Interface 18 | virtual UObject* FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, 19 | EObjectFlags Flags, UObject* Context, 20 | FFeedbackContext* Warn) override; 21 | //~ Begin UFactory Interface 22 | }; 23 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Public/DaeTestEditorLogCategory.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | DECLARE_LOG_CATEGORY_EXTERN(LogDaeTestEditor, Log, All); 6 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Public/DaeTestParameterProviderActorBlueprintFactory.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include "DaeTestParameterProviderActorBlueprintFactory.generated.h" 6 | 7 | /** Factory for creating new test parameter provider actor blueprints with special initial blueprint graphs. */ 8 | UCLASS(HideCategories = Object, MinimalAPI) 9 | class UDaeTestParameterProviderActorBlueprintFactory : public UFactory 10 | { 11 | GENERATED_BODY() 12 | 13 | public: 14 | UDaeTestParameterProviderActorBlueprintFactory( 15 | const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 16 | 17 | //~ Begin UFactory Interface 18 | virtual UObject* FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, 19 | EObjectFlags Flags, UObject* Context, 20 | FFeedbackContext* Warn) override; 21 | //~ Begin UFactory Interface 22 | }; 23 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/DaedalicTestAutomationPlugin/Source/DaedalicTestAutomationPluginEditor/Public/DaeTestSuiteActorBlueprintFactory.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include "DaeTestSuiteActorBlueprintFactory.generated.h" 6 | 7 | /** Factory for creating new test suite actor blueprints with special initial blueprint graphs. */ 8 | UCLASS(HideCategories = Object, MinimalAPI) 9 | class UDaeTestSuiteActorBlueprintFactory : public UFactory 10 | { 11 | GENERATED_BODY() 12 | 13 | public: 14 | UDaeTestSuiteActorBlueprintFactory( 15 | const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 16 | 17 | //~ Begin UFactory Interface 18 | virtual UObject* FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, 19 | EObjectFlags Flags, UObject* Context, 20 | FFeedbackContext* Warn) override; 21 | //~ Begin UFactory Interface 22 | }; 23 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Config/DefaultRealTimeStrategy.ini: -------------------------------------------------------------------------------- 1 | [CoreRedirects] 2 | +ClassRedirects=(OldName="RTSCharacter",NewName="/Script/Engine.Character") 3 | +ClassRedirects=(OldName="RTSPawn",NewName="/Script/Engine.Pawn") 4 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Config/FilterPlugin.ini: -------------------------------------------------------------------------------- 1 | [FilterPlugin] 2 | ; This section lists additional files which will be packaged along with your plugin. Paths should be listed relative to the root plugin directory, and 3 | ; may include "...", "*", and "?" wildcards to match directories, files, and individual characters respectively. 4 | ; 5 | ; Examples: 6 | ; /README.txt 7 | ; /Extras/... 8 | ; /Binaries/ThirdParty/*.dll 9 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/BB_RTSPawnBlackboard.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/BB_RTSPawnBlackboard.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/BT_RTSPawnBehaviorTree.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/BT_RTSPawnBehaviorTree.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/PlayerAI/BB_RTSPlayerBlackboard.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/PlayerAI/BB_RTSPlayerBlackboard.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/PlayerAI/BTTask_RTSApplyBuildOrder.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/PlayerAI/BTTask_RTSApplyBuildOrder.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/PlayerAI/BT_RTSPlayerBehaviorTree.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/PlayerAI/BT_RTSPlayerBehaviorTree.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_CanGatherFrom.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_CanGatherFrom.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_CanMove.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_CanMove.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_ConstructionIsFinished.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_ConstructionIsFinished.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_CooldownIsReady.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_CooldownIsReady.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_HasAttackOrder.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_HasAttackOrder.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_HasBeginConstructionOrder.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_HasBeginConstructionOrder.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_HasContinueConstructionOrder.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_HasContinueConstructionOrder.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_HasGatherOrder.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_HasGatherOrder.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_HasLeftChaseRadius.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_HasLeftChaseRadius.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_HasMoveOrder.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_HasMoveOrder.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_HasReturnResourcesOrder.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_HasReturnResourcesOrder.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_IsAtConstructionSite.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_IsAtConstructionSite.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_IsCarryingResources.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_IsCarryingResources.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_IsGatheringResources.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_IsGatheringResources.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_IsIdle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_IsIdle.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_IsInRange.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_IsInRange.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_IsInRangeToLocation.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_IsInRangeToLocation.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_ResourceSourceIsReady.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_ResourceSourceIsReady.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_TargetIsAlive.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTDecorator_TargetIsAlive.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTService_AcquireTargets.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTService_AcquireTargets.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_AssignToConstructionSite.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_AssignToConstructionSite.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_BeginConstruction.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_BeginConstruction.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_ContinueGatherResources.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_ContinueGatherResources.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_FaceTarget.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_FaceTarget.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_GatherResources.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_GatherResources.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_IssueMoveOrder.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_IssueMoveOrder.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_IssueReturnResourcesOrder.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_IssueReturnResourcesOrder.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_IssueStopOrder.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_IssueStopOrder.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_LeaveConstructionSite.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_LeaveConstructionSite.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_MoveIntoBlackboardRangeToActor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_MoveIntoBlackboardRangeToActor.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_MoveIntoBlackboardRangeToLocation.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_MoveIntoBlackboardRangeToLocation.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_ReturnResources.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_ReturnResources.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_SetAttackRange.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_SetAttackRange.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_SetConstructionRange.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_SetConstructionRange.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_SetGatherRange.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_SetGatherRange.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_UseAttack.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/AI/RTSBTTask_UseAttack.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/Construction/BP_RTSBuildingCursor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/Construction/BP_RTSBuildingCursor.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/Construction/BP_RTSRangeIndictator.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/Construction/BP_RTSRangeIndictator.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/Construction/M_RTSBuildingCursorInvalid.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/Construction/M_RTSBuildingCursorInvalid.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/Construction/M_RTSBuildingCursorValid.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/Construction/M_RTSBuildingCursorValid.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/Construction/M_RTSConstructionSiteGrid.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/Construction/M_RTSConstructionSiteGrid.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/Construction/M_RTSRangeIndicator.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/Construction/M_RTSRangeIndicator.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/Data/DT_RTSGameplayTags.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/Data/DT_RTSGameplayTags.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/FogOfWar/M_RTSFogOfWar.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/FogOfWar/M_RTSFogOfWar.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/Minimap/M_RTSFogOfWarMinimap.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/Minimap/M_RTSFogOfWarMinimap.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/Minimap/WBP_RTSMinimapWidget.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/Minimap/WBP_RTSMinimapWidget.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/Selection/M_RTSSelectionCircle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/Selection/M_RTSSelectionCircle.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/Selection/T_RTSSelectionCircle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/Selection/T_RTSSelectionCircle.png -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Content/Selection/T_RTSSelectionCircle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Content/Selection/T_RTSSelectionCircle.uasset -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/RealTimeStrategy.uplugin: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion" : 1, 3 | "Version" : 1, 4 | "VersionName" : "1.2.0", 5 | "FriendlyName" : "Real-Time Strategy", 6 | "Description" : "Provides a gameplay framework for developing real-time strategy games.", 7 | "Category" : "RTS", 8 | "CreatedBy" : "Nick Pruehs", 9 | "CreatedByURL" : "https://github.com/npruehs", 10 | "DocsURL" : "https://github.com/npruehs/ue4-rts", 11 | "MarketplaceURL" : "", 12 | "SupportURL" : "https://github.com/npruehs/ue4-rts/issues", 13 | "EnabledByDefault" : true, 14 | "CanContainContent" : true, 15 | "IsBetaVersion" : false, 16 | "Installed" : false, 17 | "Modules" : 18 | [ 19 | { 20 | "Name" : "RealTimeStrategy", 21 | "Type" : "Runtime", 22 | "LoadingPhase" : "Default", 23 | "WhitelistPlatforms": [ "Win64" ] 24 | } 25 | ] 26 | } -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Resources/Icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/npruehs/ue4-rts/b050e312f4ac4000356fdd4937efcdc283e52617/Source/RTSProject/Plugins/RealTimeStrategy/Resources/Icon128.png -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Combat/RTSActorDeathType.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "RTSActorDeathType.generated.h" 6 | 7 | /** How to handle depleted health. */ 8 | UENUM(BlueprintType) 9 | enum class ERTSActorDeathType : uint8 10 | { 11 | /** Do nothing. */ 12 | DEATH_DoNothing, 13 | 14 | /** Stop gameplay for the actor, removing most of its components. */ 15 | DEATH_StopGameplay, 16 | 17 | /** Destroy the actor. */ 18 | DEATH_Destroy 19 | }; 20 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Combat/RTSAttackData.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "GameFramework/DamageType.h" 6 | #include "Templates/SubclassOf.h" 7 | 8 | #include "Combat/RTSProjectile.h" 9 | 10 | #include "RTSAttackData.generated.h" 11 | 12 | 13 | USTRUCT(BlueprintType) 14 | struct REALTIMESTRATEGY_API FRTSAttackData 15 | { 16 | GENERATED_BODY() 17 | 18 | public: 19 | /** Time before this attack can be used again, in seconds. */ 20 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "RTS") 21 | float Cooldown; 22 | 23 | /** Damage dealt by this attack. Negative values could mean healing, depending on the game. */ 24 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "RTS") 25 | float Damage; 26 | 27 | /** Type of the damage caused by this attack. */ 28 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "RTS") 29 | TSubclassOf DamageType; 30 | 31 | /** Range of this attack, in cm. */ 32 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "RTS") 33 | float Range; 34 | 35 | /** Type of the projectile to spawn. If not set, damage will be dealt instantly. */ 36 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "RTS") 37 | TSubclassOf ProjectileClass; 38 | }; 39 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Combat/RTSBountyComponent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Components/ActorComponent.h" 6 | 7 | #include "Economy/RTSResourceType.h" 8 | 9 | #include "RTSBountyComponent.generated.h" 10 | 11 | 12 | class AController; 13 | 14 | 15 | DECLARE_DYNAMIC_MULTICAST_DELEGATE_FourParams(FRTSBountyComponentBountyCollectedSignature, AActor*, Actor, 16 | AController*, Player, TSubclassOf, ResourceType, float, ResourceAmount); 17 | 18 | 19 | /** Grants players resources when killing the actor. */ 20 | UCLASS(meta = (BlueprintSpawnableComponent)) 21 | class REALTIMESTRATEGY_API URTSBountyComponent : public UActorComponent 22 | { 23 | GENERATED_BODY() 24 | 25 | public: 26 | /* Event when the bounty was collected. */ 27 | UPROPERTY(BlueprintAssignable, Category = "RTS") 28 | FRTSBountyComponentBountyCollectedSignature OnBountyCollected; 29 | 30 | protected: 31 | virtual void BeginPlay() override; 32 | 33 | private: 34 | /** Resources to grant when killing the actor. */ 35 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 36 | TMap, float> Bounties; 37 | 38 | UFUNCTION() 39 | void OnKilled(AActor* Actor, AController* PreviousOwner, AActor* DamageCauser); 40 | 41 | bool GivesBounty(AController* Player); 42 | }; 43 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Combat/RTSHealthBarWidgetComponent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "UI/RTSActorWidgetComponent.h" 6 | 7 | #include "RTSHealthBarWidgetComponent.generated.h" 8 | 9 | 10 | class URTSHealthComponent; 11 | 12 | 13 | /** 14 | * Adds a health bar widget to the actor. 15 | */ 16 | UCLASS(Blueprintable) 17 | class REALTIMESTRATEGY_API URTSHealthBarWidgetComponent : public URTSActorWidgetComponent 18 | { 19 | GENERATED_BODY() 20 | 21 | public: 22 | virtual void BeginPlay() override; 23 | 24 | /** Event when the current health of the actor has changed. */ 25 | UFUNCTION(BlueprintImplementableEvent, Category = "RTS") 26 | void UpdateHealthBar(float HealthPercentage); 27 | 28 | 29 | private: 30 | UPROPERTY() 31 | URTSHealthComponent* HealthComponent; 32 | 33 | UFUNCTION() 34 | void OnHealthChanged(AActor* Actor, float OldHealth, float NewHealth, AActor* DamageCauser); 35 | }; 36 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Combat/RTSProjectileTargetComponent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Components/ActorComponent.h" 6 | 7 | #include "RTSProjectileTargetComponent.generated.h" 8 | 9 | 10 | class UMeshComponent; 11 | 12 | 13 | /** Specifies valid locations to fire projectiles at. */ 14 | UCLASS(meta = (BlueprintSpawnableComponent)) 15 | class REALTIMESTRATEGY_API URTSProjectileTargetComponent : public UActorComponent 16 | { 17 | GENERATED_BODY() 18 | 19 | public: 20 | virtual void BeginPlay() override; 21 | 22 | /** Gets a random world location to fire a projectile at. */ 23 | UFUNCTION(BlueprintPure) 24 | FVector GetRandomProjectileTargetLocation() const; 25 | 26 | private: 27 | /** Sockets to fire projectiles at. */ 28 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 29 | TArray TargetSockets; 30 | 31 | /** Component tag of the mesh component to look for sockets at. */ 32 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 33 | FName PrimaryMeshComponentTag; 34 | 35 | UPROPERTY() 36 | UMeshComponent* MeshComponent; 37 | }; 38 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Construction/RTSConstructionProgressBarWidgetComponent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "UI/RTSActorWidgetComponent.h" 6 | 7 | #include "RTSConstructionProgressBarWidgetComponent.generated.h" 8 | 9 | 10 | /** 11 | * Adds a construction progress bar widget to the actor. 12 | */ 13 | UCLASS(Blueprintable) 14 | class REALTIMESTRATEGY_API URTSConstructionProgressBarWidgetComponent : public URTSActorWidgetComponent 15 | { 16 | GENERATED_BODY() 17 | 18 | public: 19 | virtual void BeginPlay() override; 20 | 21 | /** Event when the current construction progress of the actor has changed. */ 22 | UFUNCTION(BlueprintImplementableEvent, Category = "RTS") 23 | void UpdateConstructionProgressBar(float ProgressPercentage); 24 | 25 | 26 | private: 27 | UFUNCTION() 28 | void OnConstructionProgressChanged(AActor* Actor, float ProgressPercentage); 29 | }; 30 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Construction/RTSConstructionState.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "RTSConstructionState.generated.h" 6 | 7 | 8 | UENUM(BlueprintType) 9 | enum class ERTSConstructionState : uint8 10 | { 11 | /** Construction has not yet started. */ 12 | CONSTRUCTIONSTATE_NotStarted, 13 | 14 | /** Building is being constructed right now. */ 15 | CONSTRUCTIONSTATE_Constructing, 16 | 17 | /** Construction timer is paused. */ 18 | CONSTRUCTIONSTATE_Paused, 19 | 20 | /** Construction has finished. */ 21 | CONSTRUCTIONSTATE_Finished 22 | }; 23 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Economy/RTSGatherData.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Templates/SubclassOf.h" 6 | 7 | #include "Economy/RTSResourceType.h" 8 | 9 | #include "RTSGatherData.generated.h" 10 | 11 | 12 | USTRUCT(BlueprintType) 13 | struct REALTIMESTRATEGY_API FRTSGatherData 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | /** Type of resources that can be gathered. */ 19 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "RTS") 20 | TSubclassOf ResourceType; 21 | 22 | /** Amount of resources gathered after each cooldown. */ 23 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "RTS") 24 | float AmountPerGathering; 25 | 26 | /** Maximum amount of resources that can be carried. */ 27 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "RTS") 28 | float Capacity; 29 | 30 | /** Time between two gatherings, in seconds. */ 31 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "RTS") 32 | float Cooldown; 33 | 34 | /** Whether the actor needs to return to the drain in order to drop resources. */ 35 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "RTS") 36 | bool bNeedsReturnToDrain; 37 | 38 | /** Range in which resources can be gathered, in cm. */ 39 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "RTS") 40 | float Range; 41 | }; 42 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Economy/RTSPaymentType.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "RTSPaymentType.generated.h" 6 | 7 | 8 | UENUM(BlueprintType) 9 | enum class ERTSPaymentType : uint8 10 | { 11 | /** Pay whole production cost as soon as production starts. */ 12 | PAYMENT_PayImmediately, 13 | 14 | /** Pay production costs every tick while production proceeds. */ 15 | PAYMENT_PayOverTime, 16 | 17 | /** Don't pay production costs automatically. */ 18 | PAYMENT_PayCustom 19 | }; 20 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Economy/RTSResourceType.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "RTSResourceType.generated.h" 6 | 7 | 8 | class UTexture2D; 9 | 10 | 11 | /** Resource that can be gathered and spent for construction, production and research. */ 12 | UCLASS(Blueprintable, BlueprintType) 13 | class REALTIMESTRATEGY_API URTSResourceType : public UObject 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | /** Gets the display name of the resource. */ 19 | UFUNCTION(BlueprintPure) 20 | FText GetResourceName() const; 21 | 22 | /** Gets the icon to show next to resource amounts in the UI. */ 23 | UFUNCTION(BlueprintPure) 24 | UTexture2D* GetResourceIcon() const; 25 | 26 | /** Gets the color to use when showing resource amounts in the UI. */ 27 | UFUNCTION(BlueprintPure) 28 | FLinearColor GetResourceColor() const; 29 | 30 | private: 31 | /** Display name of the resource. */ 32 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 33 | FText ResourceName; 34 | 35 | /** Icon to show next to resource amounts in the UI. */ 36 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 37 | UTexture2D* ResourceIcon; 38 | 39 | /** Color to use when showing resource amounts in the UI. */ 40 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 41 | FLinearColor ResourceColor; 42 | }; 43 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Libraries/RTSConstructionLibrary.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Kismet/BlueprintFunctionLibrary.h" 6 | 7 | #include "GameFramework/Actor.h" 8 | #include "Templates/SubclassOf.h" 9 | 10 | #include "RTSConstructionLibrary.generated.h" 11 | 12 | 13 | /** Utility functions for real-time strategy building construction. */ 14 | UCLASS() 15 | class REALTIMESTRATEGY_API URTSConstructionLibrary : public UBlueprintFunctionLibrary 16 | { 17 | GENERATED_BODY() 18 | 19 | public: 20 | /** Gets the index of the specified building class in the list of buildings the passed actor can construct. */ 21 | UFUNCTION(BlueprintPure, Category = "RTS") 22 | static int32 GetConstructableBuildingIndex(AActor* Builder, TSubclassOf BuildingClass); 23 | 24 | /** Gets the building class in the list of buildings the passed actor can construct. */ 25 | UFUNCTION(BlueprintPure, Category = "RTS") 26 | static TSubclassOf GetConstructableBuildingClass(AActor* Builder, int32 BuildingIndex); 27 | }; 28 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Libraries/RTSEconomyLibrary.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Kismet/BlueprintFunctionLibrary.h" 6 | #include "Templates/SubclassOf.h" 7 | 8 | #include "Economy/RTSResourceType.h" 9 | 10 | #include "RTSEconomyLibrary.generated.h" 11 | 12 | 13 | /** 14 | * Utility functions for real-time strategy economy. 15 | */ 16 | UCLASS() 17 | class REALTIMESTRATEGY_API URTSEconomyLibrary : public UBlueprintFunctionLibrary 18 | { 19 | GENERATED_BODY() 20 | 21 | public: 22 | /** Gets the display name of the specified resource. */ 23 | UFUNCTION(BlueprintPure, Category = "RTS") 24 | static FText GetResourceName(TSubclassOf ResourceClass); 25 | 26 | /** Gets the icon to show next to resource amounts in the UI. */ 27 | UFUNCTION(BlueprintPure, Category = "RTS") 28 | static UTexture2D* GetResourceIcon(TSubclassOf ResourceClass); 29 | 30 | /** Gets the color to use when showing resource amounts in the UI. */ 31 | UFUNCTION(BlueprintPure, Category = "RTS") 32 | static FLinearColor GetResourceColor(TSubclassOf ResourceClass); 33 | }; 34 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Orders/RTSAttackOrder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Orders/RTSOrder.h" 6 | 7 | #include "RTSAttackOrder.generated.h" 8 | 9 | 10 | /** Orders the actor to attack another actor. */ 11 | UCLASS() 12 | class REALTIMESTRATEGY_API URTSAttackOrder : public URTSOrder 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | URTSAttackOrder(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 18 | }; 19 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Orders/RTSBeginConstructionOrder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Orders/RTSOrder.h" 6 | 7 | #include "RTSBeginConstructionOrder.generated.h" 8 | 9 | 10 | /** Orders the actor to start constructing a building. */ 11 | UCLASS() 12 | class REALTIMESTRATEGY_API URTSBeginConstructionOrder : public URTSOrder 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | URTSBeginConstructionOrder(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 18 | }; 19 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Orders/RTSContinueConstructionOrder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Orders/RTSOrder.h" 6 | 7 | #include "RTSContinueConstructionOrder.generated.h" 8 | 9 | 10 | /** Orders the actor to continue constructing a building. */ 11 | UCLASS() 12 | class REALTIMESTRATEGY_API URTSContinueConstructionOrder : public URTSOrder 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | URTSContinueConstructionOrder(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 18 | }; 19 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Orders/RTSGatherOrder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Orders/RTSOrder.h" 6 | 7 | #include "RTSGatherOrder.generated.h" 8 | 9 | 10 | /** Orders the actor to gather resources from another actor. */ 11 | UCLASS() 12 | class REALTIMESTRATEGY_API URTSGatherOrder : public URTSOrder 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | URTSGatherOrder(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 18 | 19 | virtual bool IsValidTarget(const AActor* OrderedActor, const FRTSOrderTargetData& TargetData, int32 Index) const override; 20 | }; 21 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Orders/RTSMoveOrder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Orders/RTSOrder.h" 6 | 7 | #include "RTSMoveOrder.generated.h" 8 | 9 | 10 | /** Orders the actor to move to the specified location. */ 11 | UCLASS() 12 | class REALTIMESTRATEGY_API URTSMoveOrder : public URTSOrder 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | URTSMoveOrder(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 18 | }; 19 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Orders/RTSOrderData.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Templates/SubclassOf.h" 6 | 7 | #include "Orders/RTSOrder.h" 8 | 9 | #include "RTSOrderData.generated.h" 10 | 11 | 12 | class AActor; 13 | 14 | 15 | /** Order to be issued to an actor. */ 16 | USTRUCT(BlueprintType) 17 | struct REALTIMESTRATEGY_API FRTSOrderData 18 | { 19 | GENERATED_BODY() 20 | 21 | public: 22 | FRTSOrderData(); 23 | 24 | /** Type of the order to issue. */ 25 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "RTS") 26 | TSubclassOf OrderClass; 27 | 28 | /** Target actor. */ 29 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "RTS") 30 | AActor* TargetActor; 31 | 32 | /** Target location. */ 33 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "RTS") 34 | FVector TargetLocation; 35 | 36 | /** Additional index. */ 37 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "RTS") 38 | int32 Index; 39 | }; 40 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Orders/RTSOrderGroupExecutionType.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "RTSOrderGroupExecutionType.generated.h" 6 | 7 | /** How many and which of the selected actors an order should be issued to. */ 8 | UENUM(BlueprintType) 9 | enum class ERTSOrderGroupExecutionType : uint8 10 | { 11 | /** Order is simply issued to all selected actors. */ 12 | ORDERGROUPEXECUTION_All, 13 | 14 | /** Order is issued to a single selected actor. */ 15 | ORDERGROUPEXECUTION_Any, 16 | }; 17 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Orders/RTSOrderTagRequirements.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "GameplayTagContainer.h" 6 | 7 | #include "RTSOrderTagRequirements.generated.h" 8 | 9 | 10 | /** Tag requirements for ordered actors and order targets. */ 11 | USTRUCT(BlueprintType) 12 | struct REALTIMESTRATEGY_API FRTSOrderTagRequirements 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | /** Gameplay tags required by the ordered actor. */ 18 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 19 | FGameplayTagContainer SourceRequiredTags; 20 | 21 | /** Gameplay tags the ordered actor is not allowed to have. */ 22 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 23 | FGameplayTagContainer SourceBlockedTags; 24 | 25 | /** Gameplay tags required by the target actor. */ 26 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 27 | FGameplayTagContainer TargetRequiredTags; 28 | 29 | /** Gameplay tags the target actor is not allowed to have. */ 30 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 31 | FGameplayTagContainer TargetBlockedTags; 32 | }; 33 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Orders/RTSOrderTargetData.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "GameplayTagContainer.h" 6 | 7 | #include "RTSOrderTargetData.generated.h" 8 | 9 | 10 | class AActor; 11 | 12 | 13 | /** Target data (actor, location) for an order. */ 14 | USTRUCT(BlueprintType) 15 | struct REALTIMESTRATEGY_API FRTSOrderTargetData 16 | { 17 | GENERATED_BODY() 18 | 19 | public: 20 | /** Target actor. */ 21 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 22 | AActor* Actor; 23 | 24 | /** Target location. */ 25 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 26 | FVector Location; 27 | 28 | /** Gameplay tags of the target. */ 29 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 30 | FGameplayTagContainer TargetTags; 31 | }; 32 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Orders/RTSOrderTargetType.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "RTSOrderTargetType.generated.h" 6 | 7 | 8 | /** Possible target types of an order. */ 9 | UENUM(BlueprintType) 10 | enum class ERTSOrderTargetType : uint8 11 | { 12 | /** No specific target (e.g. aura or automatically applied to self). */ 13 | ORDERTARGET_None, 14 | 15 | /** Order needs an actor as target. */ 16 | ORDERTARGET_Actor, 17 | 18 | /** Order needs a vector location as target. */ 19 | ORDERTARGET_Location 20 | }; 21 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Orders/RTSReturnResourcesOrder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Orders/RTSOrder.h" 6 | 7 | #include "RTSReturnResourcesOrder.generated.h" 8 | 9 | 10 | /** Orders the actor to return resources to another actor. */ 11 | UCLASS() 12 | class REALTIMESTRATEGY_API URTSReturnResourcesOrder : public URTSOrder 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | URTSReturnResourcesOrder(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 18 | 19 | virtual bool IsValidTarget(const AActor* OrderedActor, const FRTSOrderTargetData& TargetData, int32 Index) const override; 20 | }; 21 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Orders/RTSSetRallyPointToActorOrder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Orders/RTSOrder.h" 6 | 7 | #include "RTSSetRallyPointToActorOrder.generated.h" 8 | 9 | 10 | /** Orders a production actor to set its rally point to a specific target actor. */ 11 | UCLASS() 12 | class REALTIMESTRATEGY_API URTSSetRallyPointToActorOrder : public URTSOrder 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | URTSSetRallyPointToActorOrder(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 18 | 19 | virtual void IssueOrder(AActor* OrderedActor, const FRTSOrderTargetData& TargetData, int32 Index) const override; 20 | }; 21 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Orders/RTSSetRallyPointToLocationOrder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Orders/RTSOrder.h" 6 | 7 | #include "RTSSetRallyPointToLocationOrder.generated.h" 8 | 9 | 10 | /** Orders a production actor to set its rally point to a specific target location. */ 11 | UCLASS() 12 | class REALTIMESTRATEGY_API URTSSetRallyPointToLocationOrder : public URTSOrder 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | URTSSetRallyPointToLocationOrder(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 18 | 19 | virtual void IssueOrder(AActor* OrderedActor, const FRTSOrderTargetData& TargetData, int32 Index) const override; 20 | }; 21 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Orders/RTSStopOrder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Orders/RTSOrder.h" 6 | 7 | #include "RTSStopOrder.generated.h" 8 | 9 | 10 | /** Orders the actor to stop whatever they're currently doing. */ 11 | UCLASS() 12 | class REALTIMESTRATEGY_API URTSStopOrder : public URTSOrder 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | URTSStopOrder(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 18 | }; 19 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Production/RTSProductionProgressBarWidgetComponent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "UI/RTSActorWidgetComponent.h" 6 | 7 | #include "RTSProductionProgressBarWidgetComponent.generated.h" 8 | 9 | 10 | /** 11 | * Adds a production progress bar widget to the actor. 12 | */ 13 | UCLASS(Blueprintable) 14 | class REALTIMESTRATEGY_API URTSProductionProgressBarWidgetComponent : public URTSActorWidgetComponent 15 | { 16 | GENERATED_BODY() 17 | 18 | public: 19 | virtual void BeginPlay() override; 20 | 21 | /** Event when the current production progress of the actor has changed. */ 22 | UFUNCTION(BlueprintImplementableEvent, Category = "RTS") 23 | void UpdateProductionProgressBar(int32 QueueIndex, float ProgressPercentage); 24 | 25 | 26 | private: 27 | UFUNCTION() 28 | void OnProductionProgressChanged(AActor* Actor, int32 QueueIndex, float ProgressPercentage); 29 | }; 30 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Production/RTSProductionQueue.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "GameFramework/Actor.h" 6 | #include "Templates/SubclassOf.h" 7 | 8 | #include "RTSProductionQueue.generated.h" 9 | 10 | 11 | USTRUCT(BlueprintType) 12 | struct REALTIMESTRATEGY_API FRTSProductionQueue 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | /** Products queued for production. */ 18 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "RTS") 19 | TArray> Queue; 20 | 21 | /** Time before the current actor in the queue is produced, in seconds. */ 22 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "RTS") 23 | float RemainingProductionTime; 24 | 25 | 26 | /** Gets the product with the specified index in this queue. */ 27 | TSubclassOf operator[](int32 Index) const; 28 | 29 | 30 | /** Enqueues the specified product. */ 31 | void Add(TSubclassOf Product); 32 | 33 | /** Gets the number of products in this queue. */ 34 | int32 Num() const; 35 | 36 | /** Removes the product with the specified index in this queue, advancing all later products. */ 37 | void RemoveAt(int32 Index); 38 | }; 39 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Production/RTSProductionRallyPoint.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "GameFramework/Actor.h" 6 | 7 | #include "RTSProductionRallyPoint.generated.h" 8 | 9 | 10 | /** Actor or location to send new actors to. */ 11 | USTRUCT(BlueprintType) 12 | struct REALTIMESTRATEGY_API FRTSProductionRallyPoint 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | /** Location to send new actors to. */ 18 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "RTS") 19 | FVector TargetLocation; 20 | 21 | /** Actor to send new actors to. */ 22 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "RTS") 23 | AActor* TargetActor; 24 | 25 | /** Whether this rally is currently active. */ 26 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "RTS") 27 | bool bIsSet; 28 | }; 29 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSActorComponent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Components/ActorComponent.h" 6 | #include "RTSGameplayTagsProvider.h" 7 | 8 | #include "GameplayTagContainer.h" 9 | 10 | #include "RTSActorComponent.generated.h" 11 | 12 | 13 | /** Base class for actor components with additional functionality, e.g. initial gameplay tags. */ 14 | UCLASS(meta = (BlueprintSpawnableComponent)) 15 | class REALTIMESTRATEGY_API URTSActorComponent : public UActorComponent, public IRTSGameplayTagsProvider 16 | { 17 | GENERATED_BODY() 18 | 19 | public: 20 | virtual void AddGameplayTags(FGameplayTagContainer& InOutTagContainer) override; 21 | 22 | protected: 23 | /** Gameplay tags to add to the actor on BeginPlay. */ 24 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 25 | FGameplayTagContainer InitialGameplayTags; 26 | }; 27 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSCameraBoundsVolume.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "GameFramework/Volume.h" 6 | 7 | #include "RTSCameraBoundsVolume.generated.h" 8 | 9 | 10 | /** 11 | * Volume that restricts RTS camera movement. 12 | * RTS cameras are not allowed to move outside of this volume. 13 | * There should never be more than one camera bounds volume per level. 14 | */ 15 | UCLASS() 16 | class REALTIMESTRATEGY_API ARTSCameraBoundsVolume : public AVolume 17 | { 18 | GENERATED_BODY() 19 | }; 20 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSControlGroup.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "GameFramework/Actor.h" 6 | 7 | #include "RTSControlGroup.generated.h" 8 | 9 | /** Group of actors. */ 10 | USTRUCT(BlueprintType) 11 | struct REALTIMESTRATEGY_API FRTSControlGroup 12 | { 13 | GENERATED_BODY() 14 | 15 | public: 16 | /** Actors of this control group. */ 17 | UPROPERTY() 18 | TArray Actors; 19 | }; 20 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSDescriptionComponent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Components/ActorComponent.h" 6 | #include "UObject/TextProperty.h" 7 | 8 | #include "RTSDescriptionComponent.generated.h" 9 | 10 | 11 | /** 12 | * Adds a localizable description to the actor. 13 | */ 14 | UCLASS(meta = (BlueprintSpawnableComponent)) 15 | class REALTIMESTRATEGY_API URTSDescriptionComponent : public UActorComponent 16 | { 17 | GENERATED_BODY() 18 | 19 | public: 20 | /** Gets the description of the actor. */ 21 | UFUNCTION(BlueprintPure) 22 | FText GetDescription() const; 23 | 24 | /** Sets the description of the actor. */ 25 | UFUNCTION(BlueprintCallable) 26 | void SetDescription(const FText& NewDescription); 27 | 28 | private: 29 | /** Description of the actor. */ 30 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 31 | FText Description; 32 | }; 33 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSGameState.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "GameFramework/GameStateBase.h" 6 | 7 | #include "RTSGameState.generated.h" 8 | 9 | 10 | class ARTSVisionManager; 11 | 12 | 13 | /** 14 | * Game state with RTS features. 15 | */ 16 | UCLASS() 17 | class REALTIMESTRATEGY_API ARTSGameState : public AGameStateBase 18 | { 19 | GENERATED_BODY() 20 | 21 | public: 22 | virtual void BeginPlay() override; 23 | 24 | /** Gets the manager for updating actor vision and visibility. */ 25 | ARTSVisionManager* GetVisionManager() const; 26 | 27 | private: 28 | /** Manager for updating actor vision and visibility. */ 29 | UPROPERTY() 30 | ARTSVisionManager* VisionManager; 31 | }; 32 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSGameplayDebuggerCategory.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if WITH_GAMEPLAY_DEBUGGER 4 | 5 | #include "CoreMinimal.h" 6 | 7 | #include "GameplayDebuggerCategory.h" 8 | 9 | class FRTSGameplayDebuggerCategory : public FGameplayDebuggerCategory 10 | { 11 | public: 12 | FRTSGameplayDebuggerCategory(); 13 | 14 | virtual void DrawData(APlayerController* OwnerPC, FGameplayDebuggerCanvasContext& CanvasContext) override; 15 | 16 | static TSharedRef MakeInstance(); 17 | }; 18 | 19 | #endif // WITH_GAMEPLAY_DEBUGGER 20 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSGameplayTagsProvider.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | #include "UObject/Interface.h" 5 | #include "GameplayTagContainer.h" 6 | #include "RTSGameplayTagsProvider.generated.h" 7 | 8 | /** Provides initial gameplay tags for actors. */ 9 | UINTERFACE(MinimalAPI) 10 | class URTSGameplayTagsProvider : public UInterface 11 | { 12 | GENERATED_BODY() 13 | }; 14 | 15 | /** Provides initial gameplay tags for actors. */ 16 | class REALTIMESTRATEGY_API IRTSGameplayTagsProvider 17 | { 18 | GENERATED_BODY() 19 | 20 | public: 21 | /** Adds gameplay tags to the specified tag container. */ 22 | virtual void AddGameplayTags(FGameplayTagContainer& InOutTagContainer); 23 | }; 24 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSLog.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | DECLARE_LOG_CATEGORY_EXTERN(LogRTS, Log, All); 6 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSNameComponent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Components/ActorComponent.h" 6 | #include "UObject/TextProperty.h" 7 | 8 | #include "RTSNameComponent.generated.h" 9 | 10 | 11 | /** 12 | * Adds a localizable name to the actor. 13 | */ 14 | UCLASS(meta = (BlueprintSpawnableComponent)) 15 | class REALTIMESTRATEGY_API URTSNameComponent : public UActorComponent 16 | { 17 | GENERATED_BODY() 18 | 19 | public: 20 | /** Gets the name of the actor. */ 21 | UFUNCTION(BlueprintPure) 22 | FText GetName() const; 23 | 24 | /** Sets the name of the actor. */ 25 | UFUNCTION(BlueprintCallable) 26 | void SetName(const FText& NewName); 27 | 28 | private: 29 | /** Name of the actor. */ 30 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 31 | FText Name; 32 | }; 33 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSOrderType.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "RTSOrderType.generated.h" 6 | 7 | 8 | UENUM(BlueprintType) 9 | enum class ERTSOrderType : uint8 10 | { 11 | /** Idle. */ 12 | ORDER_None, 13 | 14 | /** Move to a destination in the world. */ 15 | ORDER_Move, 16 | 17 | /** Attack another actor. */ 18 | ORDER_Attack, 19 | 20 | /** Create a new construction site. */ 21 | ORDER_BeginConstruction, 22 | 23 | /** Finish a building construction. */ 24 | ORDER_ContinueConstruction, 25 | 26 | /** Gather resources. */ 27 | ORDER_Gather, 28 | 29 | /** Return carried resources. */ 30 | ORDER_ReturnResources 31 | }; 32 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSPawnMovementComponent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "GameFramework/FloatingPawnMovement.h" 6 | 7 | #include "RTSPawnMovementComponent.generated.h" 8 | 9 | 10 | /** Simple pawn movement that also updates rotation. */ 11 | UCLASS(meta = (BlueprintSpawnableComponent)) 12 | class REALTIMESTRATEGY_API URTSPawnMovementComponent : public UFloatingPawnMovement 13 | { 14 | GENERATED_BODY() 15 | 16 | public: 17 | URTSPawnMovementComponent(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 18 | 19 | virtual void UpdateComponentVelocity() override; 20 | 21 | private: 22 | /** Whether to automatically update the pawn rotation to match its velocity. */ 23 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 24 | bool bUpdateRotation; 25 | }; 26 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSPlayerStart.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "GameFramework/PlayerStart.h" 6 | 7 | #include "RTSPlayerStart.generated.h" 8 | 9 | 10 | /** 11 | * Player start with RTS features, such as which player has been spawned at this start. 12 | */ 13 | UCLASS() 14 | class REALTIMESTRATEGY_API ARTSPlayerStart : public APlayerStart 15 | { 16 | GENERATED_BODY() 17 | 18 | public: 19 | /** Gets the team to add the spawned player to. */ 20 | UFUNCTION(BlueprintPure) 21 | int32 GetTeamIndex() const; 22 | 23 | /** Gets the player who has been spawned at this start. */ 24 | UFUNCTION(BlueprintPure) 25 | AController* GetPlayer() const; 26 | 27 | /** Sets the player who's been spawned at this start. */ 28 | void SetPlayer(AController* InPlayer); 29 | 30 | private: 31 | /** Team to add the spawned player to. */ 32 | UPROPERTY(EditInstanceOnly, Category = "Team") 33 | uint8 TeamIndex; 34 | 35 | /** Player who's been spawned at this start. */ 36 | UPROPERTY() 37 | AController* Player; 38 | }; 39 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSPortraitComponent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Components/ActorComponent.h" 6 | 7 | #include "RTSPortraitComponent.generated.h" 8 | 9 | 10 | class UTexture2D; 11 | 12 | 13 | /** 14 | * Adds a portrait to the actor that can be shown in the UI. 15 | */ 16 | UCLASS(meta = (BlueprintSpawnableComponent)) 17 | class REALTIMESTRATEGY_API URTSPortraitComponent : public UActorComponent 18 | { 19 | GENERATED_BODY() 20 | 21 | public: 22 | /** Gets the portrait of the actor. Can be shown in the UI. */ 23 | UFUNCTION(BlueprintPure) 24 | UTexture2D* GetPortrait() const; 25 | 26 | /** Sets the portrait of the actor. */ 27 | UFUNCTION(BlueprintCallable) 28 | void SetPortrait(UTexture2D* NewPortrait); 29 | 30 | private: 31 | /** Portrait of the actor. Can be shown in the UI. */ 32 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 33 | UTexture2D* Portrait; 34 | }; 35 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSRequirementsComponent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Components/ActorComponent.h" 6 | #include "Templates/SubclassOf.h" 7 | 8 | #include "RTSRequirementsComponent.generated.h" 9 | 10 | 11 | class AActor; 12 | 13 | 14 | /** Adds tech tree requirements to the actor. */ 15 | UCLASS(meta = (BlueprintSpawnableComponent)) 16 | class REALTIMESTRATEGY_API URTSRequirementsComponent : public UActorComponent 17 | { 18 | GENERATED_BODY() 19 | 20 | public: 21 | /** Gets the types of actors the player needs to own in order to create this actor. */ 22 | UFUNCTION(BlueprintPure) 23 | TArray> GetRequiredActors() const; 24 | 25 | private: 26 | /** Types of actors the player needs to own in order to create this actor. */ 27 | UPROPERTY(EditDefaultsOnly, Category = "RTS") 28 | TArray> RequiredActors; 29 | }; 30 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/RTSSelectionCameraFocusMode.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "RTSSelectionCameraFocusMode.generated.h" 6 | 7 | /** How to handle camera focus for selected actors. */ 8 | UENUM(BlueprintType) 9 | enum class ERTSSelectionCameraFocusMode : uint8 10 | { 11 | /** Do nothing. */ 12 | SELECTIONFOCUS_DoNothing, 13 | 14 | /** Focus the camera on the selected actor if it's rapidly selected twice. */ 15 | SELECTIONFOCUS_FocusOnDoubleSelection, 16 | }; 17 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/UI/RTSActorWidgetComponent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Components/WidgetComponent.h" 6 | 7 | #include "RTSActorWidgetComponent.generated.h" 8 | 9 | 10 | /** 11 | * Adds a customizable UI widget to the actor. 12 | */ 13 | UCLASS() 14 | class REALTIMESTRATEGY_API URTSActorWidgetComponent : public UWidgetComponent 15 | { 16 | GENERATED_BODY() 17 | 18 | public: 19 | URTSActorWidgetComponent(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 20 | 21 | /** Event when the size of the actor on screen been calculated from its collision size. */ 22 | UFUNCTION(BlueprintImplementableEvent, Category = "RTS") 23 | void UpdatePositionAndSize(const FVector2D& ActorScreenSize); 24 | }; 25 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/UI/RTSFloatingCombatTextComponent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "Components/ActorComponent.h" 6 | 7 | #include "UI/RTSFloatingCombatTextData.h" 8 | 9 | #include "RTSFloatingCombatTextComponent.generated.h" 10 | 11 | 12 | /** 13 | * Stores floating texts to be displayed above the actor. 14 | */ 15 | UCLASS(meta = (BlueprintSpawnableComponent)) 16 | class REALTIMESTRATEGY_API URTSFloatingCombatTextComponent : public UActorComponent 17 | { 18 | GENERATED_BODY() 19 | 20 | public: 21 | URTSFloatingCombatTextComponent(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 22 | 23 | 24 | virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) override; 25 | 26 | 27 | /** Adds the specified text to be displayed above the actor in the HUD for a short time. */ 28 | UFUNCTION(BlueprintCallable) 29 | void AddText(const FString& Text, const FLinearColor& Color, float Scale, float Lifetime); 30 | 31 | /** Gets the floating combat texts currently being displayed to the player. */ 32 | TArray GetTexts() const; 33 | 34 | private: 35 | /** Floating combat texts currently being displayed to the player. */ 36 | TArray Texts; 37 | }; 38 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/UI/RTSFloatingCombatTextData.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | 6 | struct REALTIMESTRATEGY_API FRTSFloatingCombatTextData 7 | { 8 | /** Text to display. */ 9 | FString Text; 10 | 11 | /** Color to display the text with. */ 12 | FLinearColor Color; 13 | 14 | /** Scale to display the text with. */ 15 | float Scale; 16 | 17 | /** Total time to show the text on screen before removing it. */ 18 | float Lifetime; 19 | 20 | /** Remaining time to show the text on screen before removing it. */ 21 | float RemainingLifetime; 22 | }; 23 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/UI/RTSHoveredActorWidgetComponent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "UI/RTSActorWidgetComponent.h" 6 | 7 | #include "RTSHoveredActorWidgetComponent.generated.h" 8 | 9 | 10 | /** 11 | * Adds a widget for showing hovered actor data to the actor. 12 | */ 13 | UCLASS(Blueprintable) 14 | class REALTIMESTRATEGY_API URTSHoveredActorWidgetComponent : public URTSActorWidgetComponent 15 | { 16 | GENERATED_BODY() 17 | 18 | public: 19 | /** Event when the actor was hovered. */ 20 | UFUNCTION(BlueprintImplementableEvent, Category = "RTS") 21 | void UpdateData(AActor* Actor); 22 | }; 23 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/UI/RTSMinimapVolume.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "GameFramework/Volume.h" 6 | 7 | #include "RTSMinimapVolume.generated.h" 8 | 9 | 10 | class UTexture2D; 11 | 12 | 13 | /** 14 | * Volume that defines the size and resolution of the minimap. 15 | */ 16 | UCLASS(Blueprintable) 17 | class REALTIMESTRATEGY_API ARTSMinimapVolume : public AVolume 18 | { 19 | GENERATED_BODY() 20 | 21 | public: 22 | /** Gets the Background image of the minimap. */ 23 | UFUNCTION(BlueprintPure) 24 | UTexture2D* GetMinimapImage() const; 25 | 26 | private: 27 | /** Background image of the minimap. */ 28 | UPROPERTY(EditInstanceOnly, Category = "RTS") 29 | UTexture2D* MinimapImage; 30 | }; 31 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/UI/RTSRangeIndicator.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | #include "GameFramework/Actor.h" 5 | #include "RTSRangeIndicator.generated.h" 6 | 7 | /** Previews the range of an action.*/ 8 | UCLASS() 9 | class REALTIMESTRATEGY_API ARTSRangeIndicator : public AActor 10 | { 11 | GENERATED_BODY() 12 | 13 | public: 14 | /** Gets the range currently indicated by this actor. */ 15 | UFUNCTION(BlueprintPure, Category = RTS) 16 | float GetRange() const; 17 | 18 | /** Sets the range to indicate with this actor. */ 19 | UFUNCTION(BlueprintCallable, Category = RTS) 20 | void SetRange(float InRange); 21 | 22 | /** Event when the range to indicate has changed. */ 23 | virtual void NotifyOnRangeChanged(float NewRange); 24 | 25 | /** Event when the range to indicate has changed. */ 26 | UFUNCTION(BlueprintImplementableEvent, Category = "RTS", meta = (DisplayName = "OnRangeChanged")) 27 | void ReceiveOnRangeChanged(float NewRange); 28 | 29 | private: 30 | /** Range currently indicated by this actor. */ 31 | float Range; 32 | }; 33 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Vision/RTSVisibleActor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "RTSVisibleActor.generated.h" 6 | 7 | 8 | class AActor; 9 | class URTSVisibleComponent; 10 | class URTSVisionComponent; 11 | class URTSOwnerComponent; 12 | 13 | 14 | /** Performance optimization. Caches an actor that can be visible or hidden, along with relevant components. */ 15 | USTRUCT() 16 | struct REALTIMESTRATEGY_API FRTSVisibleActor 17 | { 18 | GENERATED_BODY() 19 | 20 | public: 21 | FRTSVisibleActor(); 22 | FRTSVisibleActor(AActor* InActor); 23 | 24 | UPROPERTY() 25 | AActor* Actor; 26 | 27 | UPROPERTY() 28 | URTSOwnerComponent* OwnerComponent; 29 | 30 | UPROPERTY() 31 | URTSVisibleComponent* VisibleComponent; 32 | 33 | UPROPERTY() 34 | URTSVisionComponent* VisionComponent; 35 | 36 | bool IsActorValid() const; 37 | }; 38 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Vision/RTSVisionActor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "RTSVisionActor.generated.h" 6 | 7 | 8 | class AActor; 9 | class URTSVisionComponent; 10 | 11 | 12 | /** Performance optimization. Caches an actor that can update team vision, along with relevant components. */ 13 | USTRUCT() 14 | struct REALTIMESTRATEGY_API FRTSVisionActor 15 | { 16 | GENERATED_BODY() 17 | 18 | public: 19 | FRTSVisionActor(); 20 | FRTSVisionActor(AActor* InActor); 21 | 22 | UPROPERTY() 23 | AActor* Actor; 24 | 25 | UPROPERTY() 26 | URTSVisionComponent* VisionComponent; 27 | 28 | bool IsActorValid() const; 29 | }; 30 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Vision/RTSVisionInfoTileList.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "RTSVisionInfoTileList.generated.h" 6 | 7 | class ARTSVisionInfo; 8 | 9 | /** Tiles associated with a specific vision info. */ 10 | USTRUCT() 11 | struct REALTIMESTRATEGY_API FRTSVisionInfoTileList 12 | { 13 | GENERATED_BODY() 14 | 15 | public: 16 | UPROPERTY() 17 | ARTSVisionInfo* VisionInfo; 18 | 19 | TArray VisibleTiles; 20 | }; 21 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Vision/RTSVisionState.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "RTSVisionState.generated.h" 6 | 7 | 8 | UENUM(BlueprintType) 9 | enum class ERTSVisionState : uint8 10 | { 11 | /** Area has never been visited before. */ 12 | VISION_Unknown, 13 | 14 | /** Area has been visited before, but is currently not. */ 15 | VISION_Known, 16 | 17 | /** Area is revealed right now. */ 18 | VISION_Visible 19 | }; 20 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Classes/Vision/RTSVisionTile.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | 5 | #include "RTSVisionTile.generated.h" 6 | 7 | 8 | class AActor; 9 | 10 | 11 | /** Tile of the vision grid. */ 12 | USTRUCT(BlueprintType) 13 | struct REALTIMESTRATEGY_API FRTSVisionTile 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | /** Adds the specified actor as having vision on this tile. */ 19 | void AddActor(AActor* Actor); 20 | 21 | /** Removes the specified actor from having vision on this tile. */ 22 | void RemoveActor(AActor* Actor); 23 | 24 | /** Checks whether any actor has vision on this tile. */ 25 | bool IsVisible() const; 26 | 27 | private: 28 | /** Number of actors seeing this tile. */ 29 | UPROPERTY() 30 | int32 NumActors = 0; 31 | }; 32 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Combat/RTSHealthBarWidgetComponent.cpp: -------------------------------------------------------------------------------- 1 | #include "Combat/RTSHealthBarWidgetComponent.h" 2 | 3 | #include "GameFramework/Actor.h" 4 | 5 | #include "Combat/RTSHealthComponent.h" 6 | 7 | 8 | void URTSHealthBarWidgetComponent::BeginPlay() 9 | { 10 | Super::BeginPlay(); 11 | 12 | AActor* Owner = GetOwner(); 13 | 14 | if (!IsValid(Owner)) 15 | { 16 | return; 17 | } 18 | 19 | HealthComponent = Owner->FindComponentByClass(); 20 | 21 | if (!IsValid(HealthComponent)) 22 | { 23 | return; 24 | } 25 | 26 | HealthComponent->OnHealthChanged.AddDynamic(this, &URTSHealthBarWidgetComponent::OnHealthChanged); 27 | } 28 | 29 | void URTSHealthBarWidgetComponent::OnHealthChanged(AActor* Actor, float OldHealth, float NewHealth, AActor* DamageCauser) 30 | { 31 | UpdateHealthBar(HealthComponent->GetCurrentHealth() / HealthComponent->GetMaximumHealth()); 32 | } 33 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Construction/RTSConstructionProgressBarWidgetComponent.cpp: -------------------------------------------------------------------------------- 1 | #include "Construction/RTSConstructionProgressBarWidgetComponent.h" 2 | 3 | #include "GameFramework/Actor.h" 4 | 5 | #include "Construction/RTSConstructionSiteComponent.h" 6 | 7 | 8 | void URTSConstructionProgressBarWidgetComponent::BeginPlay() 9 | { 10 | Super::BeginPlay(); 11 | 12 | AActor* Owner = GetOwner(); 13 | 14 | if (!IsValid(Owner)) 15 | { 16 | return; 17 | } 18 | 19 | URTSConstructionSiteComponent* ConstructionSiteComponent = Owner->FindComponentByClass(); 20 | 21 | if (!IsValid(ConstructionSiteComponent)) 22 | { 23 | return; 24 | } 25 | 26 | ConstructionSiteComponent->OnConstructionProgressChanged.AddDynamic(this, 27 | &URTSConstructionProgressBarWidgetComponent::OnConstructionProgressChanged); 28 | } 29 | 30 | void URTSConstructionProgressBarWidgetComponent::OnConstructionProgressChanged(AActor* Actor, float ProgressPercentage) 31 | { 32 | UpdateConstructionProgressBar(ProgressPercentage); 33 | } 34 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Economy/RTSResourceType.cpp: -------------------------------------------------------------------------------- 1 | #include "Economy/RTSResourceType.h" 2 | 3 | FText URTSResourceType::GetResourceName() const 4 | { 5 | return ResourceName; 6 | } 7 | 8 | UTexture2D* URTSResourceType::GetResourceIcon() const 9 | { 10 | return ResourceIcon; 11 | } 12 | 13 | FLinearColor URTSResourceType::GetResourceColor() const 14 | { 15 | return ResourceColor; 16 | } 17 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Libraries/RTSConstructionLibrary.cpp: -------------------------------------------------------------------------------- 1 | #include "Libraries/RTSConstructionLibrary.h" 2 | 3 | #include "Construction/RTSBuilderComponent.h" 4 | 5 | 6 | int32 URTSConstructionLibrary::GetConstructableBuildingIndex(AActor* Builder, TSubclassOf BuildingClass) 7 | { 8 | if (!IsValid(Builder)) 9 | { 10 | return INDEX_NONE; 11 | } 12 | 13 | URTSBuilderComponent* BuilderComponent = Builder->FindComponentByClass(); 14 | 15 | if (!IsValid(BuilderComponent)) 16 | { 17 | return INDEX_NONE; 18 | } 19 | 20 | return BuilderComponent->GetConstructibleBuildingClasses().IndexOfByKey(BuildingClass); 21 | } 22 | 23 | TSubclassOf URTSConstructionLibrary::GetConstructableBuildingClass(AActor* Builder, int32 BuildingIndex) 24 | { 25 | if (!IsValid(Builder)) 26 | { 27 | return nullptr; 28 | } 29 | 30 | URTSBuilderComponent* BuilderComponent = Builder->FindComponentByClass(); 31 | 32 | if (!IsValid(BuilderComponent)) 33 | { 34 | return nullptr; 35 | } 36 | 37 | TArray> ConstructableBuildings = BuilderComponent->GetConstructibleBuildingClasses(); 38 | return ConstructableBuildings.IsValidIndex(BuildingIndex) ? ConstructableBuildings[BuildingIndex] : nullptr; 39 | } 40 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Libraries/RTSEconomyLibrary.cpp: -------------------------------------------------------------------------------- 1 | #include "Libraries/RTSEconomyLibrary.h" 2 | 3 | FText URTSEconomyLibrary::GetResourceName(TSubclassOf ResourceClass) 4 | { 5 | return ResourceClass ? ResourceClass->GetDefaultObject()->GetResourceName() : FText(); 6 | } 7 | 8 | UTexture2D* URTSEconomyLibrary::GetResourceIcon(TSubclassOf ResourceClass) 9 | { 10 | return ResourceClass ? ResourceClass->GetDefaultObject()->GetResourceIcon() : nullptr; 11 | } 12 | 13 | FLinearColor URTSEconomyLibrary::GetResourceColor(TSubclassOf ResourceClass) 14 | { 15 | return ResourceClass ? ResourceClass->GetDefaultObject()->GetResourceColor() : FLinearColor(); 16 | } 17 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Orders/RTSAttackOrder.cpp: -------------------------------------------------------------------------------- 1 | #include "Orders/RTSAttackOrder.h" 2 | 3 | #include "Combat/RTSAttackComponent.h" 4 | #include "Libraries/RTSGameplayTagLibrary.h" 5 | 6 | URTSAttackOrder::URTSAttackOrder(const FObjectInitializer& ObjectInitializer /*= FObjectInitializer::Get()*/) 7 | : Super(ObjectInitializer) 8 | { 9 | TargetType = ERTSOrderTargetType::ORDERTARGET_Actor; 10 | GroupExecutionType = ERTSOrderGroupExecutionType::ORDERGROUPEXECUTION_All; 11 | 12 | IssueTagRequirements.SourceRequiredTags.AddTag(URTSGameplayTagLibrary::Status_Permanent_CanAttack()); 13 | 14 | IssueTagRequirements.SourceBlockedTags.AddTag(URTSGameplayTagLibrary::Status_Changing_Unarmed()); 15 | 16 | IssueTagRequirements.TargetRequiredTags.AddTag(URTSGameplayTagLibrary::Status_Permanent_CanBeAttacked()); 17 | IssueTagRequirements.TargetRequiredTags.AddTag(URTSGameplayTagLibrary::Status_Changing_Alive()); 18 | IssueTagRequirements.TargetRequiredTags.AddTag(URTSGameplayTagLibrary::Relationship_Visible()); 19 | 20 | IssueTagRequirements.TargetBlockedTags.AddTag(URTSGameplayTagLibrary::Status_Changing_Invulnerable()); 21 | IssueTagRequirements.TargetBlockedTags.AddTag(URTSGameplayTagLibrary::Relationship_Friendly()); 22 | 23 | SuccessTagRequirements.TargetBlockedTags.AddTag(URTSGameplayTagLibrary::Status_Changing_Alive()); 24 | } 25 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Orders/RTSBeginConstructionOrder.cpp: -------------------------------------------------------------------------------- 1 | #include "Orders/RTSBeginConstructionOrder.h" 2 | 3 | #include "Libraries/RTSGameplayTagLibrary.h" 4 | #include "Orders/RTSOrderTargetType.h" 5 | 6 | 7 | URTSBeginConstructionOrder::URTSBeginConstructionOrder(const FObjectInitializer& ObjectInitializer /*= FObjectInitializer::Get()*/) 8 | : Super(ObjectInitializer) 9 | { 10 | TargetType = ERTSOrderTargetType::ORDERTARGET_Location; 11 | GroupExecutionType = ERTSOrderGroupExecutionType::ORDERGROUPEXECUTION_Any; 12 | 13 | IssueTagRequirements.SourceRequiredTags.AddTag(URTSGameplayTagLibrary::Status_Permanent_CanConstruct()); 14 | 15 | IssueTagRequirements.SourceBlockedTags.AddTag(URTSGameplayTagLibrary::Status_Changing_Immobilized()); 16 | IssueTagRequirements.SourceBlockedTags.AddTag(URTSGameplayTagLibrary::Status_Changing_Constructing()); 17 | } 18 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Orders/RTSContinueConstructionOrder.cpp: -------------------------------------------------------------------------------- 1 | #include "Orders/RTSContinueConstructionOrder.h" 2 | 3 | #include "Libraries/RTSGameplayTagLibrary.h" 4 | #include "Orders/RTSOrderTargetType.h" 5 | 6 | 7 | URTSContinueConstructionOrder::URTSContinueConstructionOrder(const FObjectInitializer& ObjectInitializer /*= FObjectInitializer::Get()*/) 8 | : Super(ObjectInitializer) 9 | { 10 | TargetType = ERTSOrderTargetType::ORDERTARGET_Actor; 11 | GroupExecutionType = ERTSOrderGroupExecutionType::ORDERGROUPEXECUTION_Any; 12 | 13 | IssueTagRequirements.SourceRequiredTags.AddTag(URTSGameplayTagLibrary::Status_Permanent_CanConstruct()); 14 | 15 | IssueTagRequirements.TargetRequiredTags.AddTag(URTSGameplayTagLibrary::Status_Permanent_CanBeConstructed()); 16 | IssueTagRequirements.TargetRequiredTags.AddTag(URTSGameplayTagLibrary::Status_Changing_UnderConstruction()); 17 | IssueTagRequirements.TargetRequiredTags.AddTag(URTSGameplayTagLibrary::Relationship_SamePlayer()); 18 | 19 | SuccessTagRequirements.TargetBlockedTags.AddTag(URTSGameplayTagLibrary::Status_Changing_UnderConstruction()); 20 | } 21 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Orders/RTSMoveOrder.cpp: -------------------------------------------------------------------------------- 1 | #include "Orders/RTSMoveOrder.h" 2 | 3 | #include "Libraries/RTSGameplayTagLibrary.h" 4 | #include "Orders/RTSOrderTargetType.h" 5 | 6 | 7 | URTSMoveOrder::URTSMoveOrder(const FObjectInitializer& ObjectInitializer /*= FObjectInitializer::Get()*/) 8 | : Super(ObjectInitializer) 9 | { 10 | TargetType = ERTSOrderTargetType::ORDERTARGET_Location; 11 | GroupExecutionType = ERTSOrderGroupExecutionType::ORDERGROUPEXECUTION_All; 12 | 13 | IssueTagRequirements.SourceBlockedTags.AddTag(URTSGameplayTagLibrary::Status_Changing_Immobilized()); 14 | IssueTagRequirements.SourceBlockedTags.AddTag(URTSGameplayTagLibrary::Status_Changing_Constructing()); 15 | } 16 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Orders/RTSOrderData.cpp: -------------------------------------------------------------------------------- 1 | #include "Orders/RTSOrderData.h" 2 | 3 | FRTSOrderData::FRTSOrderData() 4 | : OrderClass(nullptr), 5 | TargetActor(nullptr), 6 | TargetLocation(FVector::ZeroVector), 7 | Index(INDEX_NONE) 8 | { 9 | } 10 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Orders/RTSSetRallyPointToActorOrder.cpp: -------------------------------------------------------------------------------- 1 | #include "Orders/RTSSetRallyPointToActorOrder.h" 2 | 3 | #include "Libraries/RTSGameplayTagLibrary.h" 4 | #include "Production/RTSProductionComponent.h" 5 | 6 | URTSSetRallyPointToActorOrder::URTSSetRallyPointToActorOrder(const FObjectInitializer& ObjectInitializer /*= FObjectInitializer::Get()*/) 7 | : Super(ObjectInitializer) 8 | { 9 | TargetType = ERTSOrderTargetType::ORDERTARGET_Actor; 10 | GroupExecutionType = ERTSOrderGroupExecutionType::ORDERGROUPEXECUTION_All; 11 | 12 | IssueTagRequirements.SourceRequiredTags.AddTag(URTSGameplayTagLibrary::Status_Permanent_CanProduce()); 13 | 14 | IssueTagRequirements.TargetRequiredTags.AddTag(URTSGameplayTagLibrary::Status_Changing_Alive()); 15 | } 16 | 17 | void URTSSetRallyPointToActorOrder::IssueOrder(AActor* OrderedActor, const FRTSOrderTargetData& TargetData, int32 Index) const 18 | { 19 | URTSProductionComponent* ProductionComponent = OrderedActor->FindComponentByClass(); 20 | 21 | if (IsValid(ProductionComponent)) 22 | { 23 | ProductionComponent->SetRallyPointToActor(TargetData.Actor); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Orders/RTSSetRallyPointToLocationOrder.cpp: -------------------------------------------------------------------------------- 1 | #include "Orders/RTSSetRallyPointToLocationOrder.h" 2 | 3 | #include "Libraries/RTSGameplayTagLibrary.h" 4 | #include "Production/RTSProductionComponent.h" 5 | 6 | URTSSetRallyPointToLocationOrder::URTSSetRallyPointToLocationOrder(const FObjectInitializer& ObjectInitializer /*= FObjectInitializer::Get()*/) 7 | : Super(ObjectInitializer) 8 | { 9 | TargetType = ERTSOrderTargetType::ORDERTARGET_Location; 10 | GroupExecutionType = ERTSOrderGroupExecutionType::ORDERGROUPEXECUTION_All; 11 | 12 | IssueTagRequirements.SourceRequiredTags.AddTag(URTSGameplayTagLibrary::Status_Permanent_CanProduce()); 13 | } 14 | 15 | void URTSSetRallyPointToLocationOrder::IssueOrder(AActor* OrderedActor, const FRTSOrderTargetData& TargetData, int32 Index) const 16 | { 17 | URTSProductionComponent* ProductionComponent = OrderedActor->FindComponentByClass(); 18 | 19 | if (IsValid(ProductionComponent)) 20 | { 21 | ProductionComponent->SetRallyPointToLocation(TargetData.Location); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Orders/RTSStopOrder.cpp: -------------------------------------------------------------------------------- 1 | #include "Orders/RTSStopOrder.h" 2 | 3 | #include "Libraries/RTSGameplayTagLibrary.h" 4 | #include "Orders/RTSOrderTargetType.h" 5 | 6 | 7 | URTSStopOrder::URTSStopOrder(const FObjectInitializer& ObjectInitializer /*= FObjectInitializer::Get()*/) 8 | : Super(ObjectInitializer) 9 | { 10 | TargetType = ERTSOrderTargetType::ORDERTARGET_None; 11 | GroupExecutionType = ERTSOrderGroupExecutionType::ORDERGROUPEXECUTION_All; 12 | 13 | IssueTagRequirements.SourceBlockedTags.AddTag(URTSGameplayTagLibrary::Status_Changing_Constructing()); 14 | } 15 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Production/RTSProductionCostComponent.cpp: -------------------------------------------------------------------------------- 1 | #include "Production/RTSProductionCostComponent.h" 2 | 3 | #include "Economy/RTSResourceType.h" 4 | 5 | 6 | URTSProductionCostComponent::URTSProductionCostComponent(const FObjectInitializer& ObjectInitializer /*= FObjectInitializer::Get()*/) 7 | : Super(ObjectInitializer) 8 | { 9 | // Set reasonable default values. 10 | ProductionCostType = ERTSPaymentType::PAYMENT_PayImmediately; 11 | ProductionTime = 5.0f; 12 | RefundFactor = 0.5f; 13 | } 14 | 15 | ERTSPaymentType URTSProductionCostComponent::GetProductionCostType() const 16 | { 17 | return ProductionCostType; 18 | } 19 | 20 | float URTSProductionCostComponent::GetProductionTime() const 21 | { 22 | return ProductionTime; 23 | } 24 | 25 | TMap, float> URTSProductionCostComponent::GetResources() const 26 | { 27 | return Resources; 28 | } 29 | 30 | float URTSProductionCostComponent::GetRefundFactor() const 31 | { 32 | return RefundFactor; 33 | } 34 | 35 | USoundCue* URTSProductionCostComponent::GetFinishedSound() const 36 | { 37 | return FinishedSound; 38 | } 39 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Production/RTSProductionProgressBarWidgetComponent.cpp: -------------------------------------------------------------------------------- 1 | #include "Production/RTSProductionProgressBarWidgetComponent.h" 2 | 3 | #include "GameFramework/Actor.h" 4 | 5 | #include "Production/RTSProductionComponent.h" 6 | 7 | void URTSProductionProgressBarWidgetComponent::BeginPlay() 8 | { 9 | Super::BeginPlay(); 10 | 11 | AActor* Owner = GetOwner(); 12 | 13 | if (!IsValid(Owner)) 14 | { 15 | return; 16 | } 17 | 18 | URTSProductionComponent* ProductionComponent = Owner->FindComponentByClass(); 19 | 20 | if (!IsValid(ProductionComponent)) 21 | { 22 | return; 23 | } 24 | 25 | ProductionComponent->OnProductionProgressChanged.AddDynamic(this, 26 | &URTSProductionProgressBarWidgetComponent::OnProductionProgressChanged); 27 | } 28 | 29 | void URTSProductionProgressBarWidgetComponent::OnProductionProgressChanged(AActor* Actor, int32 QueueIndex, float ProgressPercentage) 30 | { 31 | UpdateProductionProgressBar(QueueIndex, ProgressPercentage); 32 | } 33 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Production/RTSProductionQueue.cpp: -------------------------------------------------------------------------------- 1 | #include "Production/RTSProductionQueue.h" 2 | 3 | 4 | TSubclassOf FRTSProductionQueue::operator[](int32 Index) const 5 | { 6 | return Queue[Index]; 7 | } 8 | 9 | void FRTSProductionQueue::Add(TSubclassOf Product) 10 | { 11 | Queue.Add(Product); 12 | } 13 | 14 | int32 FRTSProductionQueue::Num() const 15 | { 16 | return Queue.Num(); 17 | } 18 | 19 | void FRTSProductionQueue::RemoveAt(int32 Index) 20 | { 21 | // Advance all products. 22 | int32 Slots = Queue.Num(); 23 | 24 | for (int32 SlotToUpdate = Index; SlotToUpdate < Slots - 1; ++SlotToUpdate) 25 | { 26 | Queue[SlotToUpdate] = Queue[SlotToUpdate + 1]; 27 | } 28 | 29 | Queue.RemoveAt(Slots - 1); 30 | } 31 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/RTSActorComponent.cpp: -------------------------------------------------------------------------------- 1 | #include "RTSActorComponent.h" 2 | 3 | void URTSActorComponent::AddGameplayTags(FGameplayTagContainer& InOutTagContainer) 4 | { 5 | InOutTagContainer.AppendTags(InitialGameplayTags); 6 | } 7 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/RTSDescriptionComponent.cpp: -------------------------------------------------------------------------------- 1 | #include "RTSDescriptionComponent.h" 2 | 3 | FText URTSDescriptionComponent::GetDescription() const 4 | { 5 | return Description; 6 | } 7 | 8 | void URTSDescriptionComponent::SetDescription(const FText& NewDescription) 9 | { 10 | Description = NewDescription; 11 | } 12 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/RTSGameState.cpp: -------------------------------------------------------------------------------- 1 | #include "RTSGameState.h" 2 | 3 | #include "Engine/World.h" 4 | 5 | #include "Vision/RTSVisionManager.h" 6 | 7 | 8 | void ARTSGameState::BeginPlay() 9 | { 10 | // Make sure all actors have begun play. 11 | Super::BeginPlay(); 12 | 13 | // Setup vision. 14 | VisionManager = GetWorld()->SpawnActor(); 15 | VisionManager->Initialize(); 16 | } 17 | 18 | ARTSVisionManager* ARTSGameState::GetVisionManager() const 19 | { 20 | return VisionManager; 21 | } 22 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/RTSGameplayTagsProvider.cpp: -------------------------------------------------------------------------------- 1 | #include "RTSGameplayTagsProvider.h" 2 | 3 | void IRTSGameplayTagsProvider::AddGameplayTags(FGameplayTagContainer& InOutTagContainer) 4 | { 5 | } 6 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/RTSLog.cpp: -------------------------------------------------------------------------------- 1 | #include "RTSLog.h" 2 | 3 | DEFINE_LOG_CATEGORY(LogRTS); 4 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/RTSNameComponent.cpp: -------------------------------------------------------------------------------- 1 | #include "RTSNameComponent.h" 2 | 3 | FText URTSNameComponent::GetName() const 4 | { 5 | return Name; 6 | } 7 | 8 | void URTSNameComponent::SetName(const FText& NewName) 9 | { 10 | Name = NewName; 11 | } 12 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/RTSPawnMovementComponent.cpp: -------------------------------------------------------------------------------- 1 | #include "RTSPawnMovementComponent.h" 2 | 3 | 4 | URTSPawnMovementComponent::URTSPawnMovementComponent(const FObjectInitializer& ObjectInitializer /*= FObjectInitializer::Get()*/) 5 | : Super(ObjectInitializer) 6 | { 7 | // Set reasonable default values. 8 | bUpdateRotation = true; 9 | } 10 | 11 | void URTSPawnMovementComponent::UpdateComponentVelocity() 12 | { 13 | Super::UpdateComponentVelocity(); 14 | 15 | if (bUpdateRotation && !Velocity.IsNearlyZero()) 16 | { 17 | MoveUpdatedComponent(FVector::ZeroVector, Velocity.Rotation(), false); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/RTSPlayerAdvantageComponent.cpp: -------------------------------------------------------------------------------- 1 | #include "RTSPlayerAdvantageComponent.h" 2 | 3 | URTSPlayerAdvantageComponent::URTSPlayerAdvantageComponent(const FObjectInitializer& ObjectInitializer /*= FObjectInitializer::Get()*/) 4 | : Super(ObjectInitializer) 5 | { 6 | bGodModeEnabled = false; 7 | OutgoingDamageFactor = 1.0f; 8 | SpeedBoostFactor = 1.0f; 9 | } 10 | 11 | bool URTSPlayerAdvantageComponent::IsGodModeEnabled() const 12 | { 13 | return bGodModeEnabled; 14 | } 15 | 16 | float URTSPlayerAdvantageComponent::GetSpeedBoostFactor() const 17 | { 18 | return SpeedBoostFactor; 19 | } 20 | 21 | float URTSPlayerAdvantageComponent::GetOutgoingDamageFactor() const 22 | { 23 | return OutgoingDamageFactor; 24 | } 25 | 26 | void URTSPlayerAdvantageComponent::SetGodModeEnabled(bool bInGodModeEnabled) 27 | { 28 | bGodModeEnabled = bInGodModeEnabled; 29 | } 30 | 31 | void URTSPlayerAdvantageComponent::SetSpeedBoostFactor(float InSpeedBoostFactor) 32 | { 33 | SpeedBoostFactor = InSpeedBoostFactor; 34 | } 35 | 36 | void URTSPlayerAdvantageComponent::SetOutgoingDamageFactor(float InOutgoingDamageFactor) 37 | { 38 | OutgoingDamageFactor = InOutgoingDamageFactor; 39 | } 40 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/RTSPlayerStart.cpp: -------------------------------------------------------------------------------- 1 | #include "RTSPlayerStart.h" 2 | 3 | int32 ARTSPlayerStart::GetTeamIndex() const 4 | { 5 | return TeamIndex; 6 | } 7 | 8 | AController* ARTSPlayerStart::GetPlayer() const 9 | { 10 | return Player; 11 | } 12 | 13 | void ARTSPlayerStart::SetPlayer(AController* InPlayer) 14 | { 15 | Player = InPlayer; 16 | } 17 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/RTSPortraitComponent.cpp: -------------------------------------------------------------------------------- 1 | #include "RTSPortraitComponent.h" 2 | 3 | #include "Engine/Texture2D.h" 4 | 5 | 6 | UTexture2D* URTSPortraitComponent::GetPortrait() const 7 | { 8 | return Portrait; 9 | } 10 | 11 | void URTSPortraitComponent::SetPortrait(UTexture2D* NewPortrait) 12 | { 13 | Portrait = NewPortrait; 14 | } 15 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/RTSRequirementsComponent.cpp: -------------------------------------------------------------------------------- 1 | #include "RTSRequirementsComponent.h" 2 | 3 | TArray> URTSRequirementsComponent::GetRequiredActors() const 4 | { 5 | return RequiredActors; 6 | } 7 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/RealTimeStrategy.cpp: -------------------------------------------------------------------------------- 1 | #include "RealTimeStrategy.h" 2 | 3 | #include "Modules/ModuleManager.h" 4 | 5 | #if WITH_GAMEPLAY_DEBUGGER 6 | #include "GameplayDebugger.h" 7 | 8 | #include "RTSGameplayDebuggerCategory.h" 9 | #endif 10 | 11 | 12 | void FRealTimeStrategy::StartupModule() 13 | { 14 | #if WITH_GAMEPLAY_DEBUGGER 15 | IGameplayDebugger& GameplayDebuggerModule = IGameplayDebugger::Get(); 16 | GameplayDebuggerModule.RegisterCategory("RTS", 17 | IGameplayDebugger::FOnGetCategory::CreateStatic(&FRTSGameplayDebuggerCategory::MakeInstance), 18 | EGameplayDebuggerCategoryState::Disabled); 19 | GameplayDebuggerModule.NotifyCategoriesChanged(); 20 | #endif 21 | } 22 | 23 | void FRealTimeStrategy::ShutdownModule() 24 | { 25 | #if WITH_GAMEPLAY_DEBUGGER 26 | if (IGameplayDebugger::IsAvailable()) 27 | { 28 | IGameplayDebugger& GameplayDebuggerModule = IGameplayDebugger::Get(); 29 | GameplayDebuggerModule.UnregisterCategory("RTS"); 30 | GameplayDebuggerModule.NotifyCategoriesChanged(); 31 | } 32 | #endif 33 | } 34 | 35 | IMPLEMENT_MODULE(FRealTimeStrategy, RealTimeStrategy) 36 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/RealTimeStrategy.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "IRealTimeStrategy.h" 4 | 5 | class FRealTimeStrategy : public IRealTimeStrategy 6 | { 7 | /** IModuleInterface implementation */ 8 | virtual void StartupModule() override; 9 | virtual void ShutdownModule() override; 10 | }; 11 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/UI/RTSActorWidgetComponent.cpp: -------------------------------------------------------------------------------- 1 | #include "UI/RTSActorWidgetComponent.h" 2 | 3 | 4 | URTSActorWidgetComponent::URTSActorWidgetComponent(const FObjectInitializer& ObjectInitializer /*= FObjectInitializer::Get()*/) 5 | : Super(ObjectInitializer) 6 | { 7 | // Set reasonable default values. 8 | Space = EWidgetSpace::Screen; 9 | } 10 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/UI/RTSFloatingCombatTextComponent.cpp: -------------------------------------------------------------------------------- 1 | #include "UI/RTSFloatingCombatTextComponent.h" 2 | 3 | 4 | URTSFloatingCombatTextComponent::URTSFloatingCombatTextComponent(const FObjectInitializer& ObjectInitializer /*= FObjectInitializer::Get()*/) 5 | : Super(ObjectInitializer) 6 | { 7 | PrimaryComponentTick.bCanEverTick = true; 8 | } 9 | 10 | void URTSFloatingCombatTextComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) 11 | { 12 | for (int32 Index = Texts.Num() - 1; Index >= 0; --Index) 13 | { 14 | FRTSFloatingCombatTextData& TextData = Texts[Index]; 15 | TextData.RemainingLifetime -= DeltaTime; 16 | 17 | if (TextData.RemainingLifetime <= 0.0f) 18 | { 19 | Texts.RemoveAt(Index); 20 | } 21 | } 22 | } 23 | 24 | void URTSFloatingCombatTextComponent::AddText(const FString& Text, const FLinearColor& Color, float Scale, float Lifetime) 25 | { 26 | FRTSFloatingCombatTextData TextData; 27 | TextData.Text = Text; 28 | TextData.Color = Color; 29 | TextData.Scale = Scale; 30 | TextData.Lifetime = Lifetime; 31 | TextData.RemainingLifetime = Lifetime; 32 | 33 | Texts.Add(TextData); 34 | } 35 | 36 | TArray URTSFloatingCombatTextComponent::GetTexts() const 37 | { 38 | return Texts; 39 | } 40 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/UI/RTSMinimapVolume.cpp: -------------------------------------------------------------------------------- 1 | #include "UI/RTSMinimapVolume.h" 2 | 3 | 4 | UTexture2D* ARTSMinimapVolume::GetMinimapImage() const 5 | { 6 | return MinimapImage; 7 | } 8 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/UI/RTSRangeIndicator.cpp: -------------------------------------------------------------------------------- 1 | #include "UI/RTSRangeIndicator.h" 2 | 3 | 4 | float ARTSRangeIndicator::GetRange() const 5 | { 6 | return Range; 7 | } 8 | 9 | void ARTSRangeIndicator::SetRange(float InRange) 10 | { 11 | Range = InRange; 12 | 13 | NotifyOnRangeChanged(Range); 14 | } 15 | 16 | void ARTSRangeIndicator::NotifyOnRangeChanged(float NewRange) 17 | { 18 | ReceiveOnRangeChanged(NewRange); 19 | } 20 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Vision/RTSVisibleActor.cpp: -------------------------------------------------------------------------------- 1 | #include "Vision/RTSVisibleActor.h" 2 | 3 | #include "GameFramework/Actor.h" 4 | 5 | #include "RTSOwnerComponent.h" 6 | #include "Vision/RTSVisibleComponent.h" 7 | #include "Vision/RTSVisionComponent.h" 8 | 9 | 10 | FRTSVisibleActor::FRTSVisibleActor() 11 | : Actor(nullptr), 12 | OwnerComponent(nullptr), 13 | VisibleComponent(nullptr), 14 | VisionComponent(nullptr) 15 | { 16 | } 17 | 18 | FRTSVisibleActor::FRTSVisibleActor(AActor* InActor) 19 | : Actor(InActor) 20 | { 21 | OwnerComponent = InActor->FindComponentByClass(); 22 | VisibleComponent = InActor->FindComponentByClass(); 23 | VisionComponent = InActor->FindComponentByClass(); 24 | } 25 | 26 | bool FRTSVisibleActor::IsActorValid() const 27 | { 28 | return IsValid(Actor) && IsValid(OwnerComponent) && IsValid(VisibleComponent); 29 | } 30 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Vision/RTSVisionActor.cpp: -------------------------------------------------------------------------------- 1 | #include "Vision/RTSVisionActor.h" 2 | 3 | #include "GameFramework/Actor.h" 4 | 5 | #include "Vision/RTSVisionComponent.h" 6 | 7 | 8 | FRTSVisionActor::FRTSVisionActor() 9 | : Actor(nullptr), 10 | VisionComponent(nullptr) 11 | { 12 | } 13 | 14 | FRTSVisionActor::FRTSVisionActor(AActor* InActor) 15 | : Actor(InActor) 16 | { 17 | VisionComponent = InActor->FindComponentByClass(); 18 | } 19 | 20 | bool FRTSVisionActor::IsActorValid() const 21 | { 22 | return IsValid(Actor) && IsValid(VisionComponent); 23 | } 24 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Private/Vision/RTSVisionTile.cpp: -------------------------------------------------------------------------------- 1 | #include "Vision/RTSVisionTile.h" 2 | 3 | #include "GameFramework/Actor.h" 4 | 5 | 6 | void FRTSVisionTile::AddActor(AActor* Actor) 7 | { 8 | ++NumActors; 9 | } 10 | 11 | void FRTSVisionTile::RemoveActor(AActor* Actor) 12 | { 13 | --NumActors; 14 | } 15 | 16 | bool FRTSVisionTile::IsVisible() const 17 | { 18 | return NumActors > 0; 19 | } 20 | -------------------------------------------------------------------------------- /Source/RTSProject/Plugins/RealTimeStrategy/Source/RealTimeStrategy/Public/IRealTimeStrategy.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CoreMinimal.h" 4 | #include "Modules/ModuleInterface.h" 5 | #include "Modules/ModuleManager.h" 6 | 7 | class IRealTimeStrategy : public IModuleInterface 8 | { 9 | public: 10 | 11 | /** 12 | * Singleton-like access to this module's interface. This is just for convenience! 13 | * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. 14 | * 15 | * @return Returns singleton instance, loading the module on demand if needed 16 | */ 17 | static inline IRealTimeStrategy& Get() 18 | { 19 | return FModuleManager::LoadModuleChecked< IRealTimeStrategy >( "RealTimeStrategy" ); 20 | } 21 | 22 | /** 23 | * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. 24 | * 25 | * @return True if the module is loaded and ready to use 26 | */ 27 | static inline bool IsAvailable() 28 | { 29 | return FModuleManager::Get().IsModuleLoaded( "RealTimeStrategy" ); 30 | } 31 | }; 32 | -------------------------------------------------------------------------------- /Source/RTSProject/RTSProject.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "4.27", 4 | "Category": "", 5 | "Description": "", 6 | "Modules": [ 7 | { 8 | "Name": "RTSProject", 9 | "Type": "Runtime", 10 | "LoadingPhase": "Default" 11 | } 12 | ], 13 | "Plugins": [ 14 | { 15 | "Name": "DaedalicTestAutomationPlugin", 16 | "Enabled": true 17 | } 18 | ] 19 | } -------------------------------------------------------------------------------- /Source/RTSProject/Source/RTSProject.Target.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class RTSProjectTarget : TargetRules 7 | { 8 | public RTSProjectTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Game; 11 | 12 | bUseUnityBuild = false; 13 | bUsePCHFiles = false; 14 | 15 | ExtraModuleNames.AddRange( new string[] { "RTSProject" } ); 16 | 17 | DefaultBuildSettings = BuildSettingsVersion.V2; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/RTSProject/Source/RTSProject/RTSProject.Build.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class RTSProject : ModuleRules 6 | { 7 | public RTSProject(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); 12 | 13 | PrivateDependencyModuleNames.AddRange(new string[] { }); 14 | 15 | // Uncomment if you are using Slate UI 16 | // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); 17 | 18 | // Uncomment if you are using online features 19 | // PrivateDependencyModuleNames.Add("OnlineSubsystem"); 20 | 21 | // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Source/RTSProject/Source/RTSProject/RTSProject.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "RTSProject.h" 4 | #include "Modules/ModuleManager.h" 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, RTSProject, "RTSProject" ); 7 | -------------------------------------------------------------------------------- /Source/RTSProject/Source/RTSProject/RTSProject.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | 7 | -------------------------------------------------------------------------------- /Source/RTSProject/Source/RTSProjectEditor.Target.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class RTSProjectEditorTarget : TargetRules 7 | { 8 | public RTSProjectEditorTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Editor; 11 | 12 | bUseUnityBuild = false; 13 | bUsePCHFiles = false; 14 | 15 | ExtraModuleNames.AddRange( new string[] { "RTSProject" } ); 16 | 17 | DefaultBuildSettings = BuildSettingsVersion.V2; 18 | } 19 | } 20 | --------------------------------------------------------------------------------