diff --git a/Content/Blueprints/BP_EndlessZombieGameMode.uasset b/Content/Blueprints/BP_EndlessZombieGameMode.uasset index 119eb43..ccfdd3a 100644 --- a/Content/Blueprints/BP_EndlessZombieGameMode.uasset +++ b/Content/Blueprints/BP_EndlessZombieGameMode.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96f7e82c945dfc3cff65055bbb2c536680775ea3efe9f3fd79e5f51899530725 -size 19642 +oid sha256:428d9ef2344016cdbd889195ca121a99f3eae544a690837d2ef3a1418c0f4725 +size 20641 diff --git a/Content/Blueprints/BP_PathGenerator.uasset b/Content/Blueprints/BP_PathGenerator.uasset new file mode 100644 index 0000000..5aa17df --- /dev/null +++ b/Content/Blueprints/BP_PathGenerator.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc4a19c1ae87566ebbdb231db20b810988e9022fd62025b1932346aed0c81174 +size 22366 diff --git a/Content/Blueprints/Tiles/BP_Tile.uasset b/Content/Blueprints/Tiles/BP_Tile.uasset new file mode 100644 index 0000000..e2baf46 --- /dev/null +++ b/Content/Blueprints/Tiles/BP_Tile.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0ce635ee19dc02c30fa73fe2dee1bcfe605b6e6413bf24b4230502154192ad1 +size 2400 diff --git a/Content/Blueprints/Tiles/BP_TileStraight.uasset b/Content/Blueprints/Tiles/BP_TileStraight.uasset new file mode 100644 index 0000000..bc54b6e --- /dev/null +++ b/Content/Blueprints/Tiles/BP_TileStraight.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b3317be7c9d4042271396c2952f0717b70fcfbf100aa15ff2d131554ae0de06 +size 30566 diff --git a/Content/StaticMeshes/Road/asphalt.uasset b/Content/StaticMeshes/Road/asphalt.uasset new file mode 100644 index 0000000..c7e04f2 --- /dev/null +++ b/Content/StaticMeshes/Road/asphalt.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bdca1d457f6265a170d43d32fbf626d02388f133300955d886598dae2af2d2f +size 7610 diff --git a/Content/StaticMeshes/Road/asphalt_ncl1_1.uasset b/Content/StaticMeshes/Road/asphalt_ncl1_1.uasset new file mode 100644 index 0000000..7436cc6 --- /dev/null +++ b/Content/StaticMeshes/Road/asphalt_ncl1_1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ab65bae67ecad95ca916659ff245eed062c6d6903ab984e315b5fad26bc211a +size 11041 diff --git a/Content/StaticMeshes/Road/concreteSmooth.uasset b/Content/StaticMeshes/Road/concreteSmooth.uasset new file mode 100644 index 0000000..9bf6dbd --- /dev/null +++ b/Content/StaticMeshes/Road/concreteSmooth.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eac930395c1f093e08d773799c061f18e5d290085cf2ff3abdfd17720b8b2d7e +size 8258 diff --git a/Content/StaticMeshes/Road/concreteSmooth_ncl1_1.uasset b/Content/StaticMeshes/Road/concreteSmooth_ncl1_1.uasset new file mode 100644 index 0000000..3d8b958 --- /dev/null +++ b/Content/StaticMeshes/Road/concreteSmooth_ncl1_1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d14956114b5db06fe2f34d8718d595f23c2e546462d04afcba3e2d0bb6bc99a0 +size 12364 diff --git a/Content/StaticMeshes/Road/roadAsphalt_center.uasset b/Content/StaticMeshes/Road/roadAsphalt_center.uasset new file mode 100644 index 0000000..675ac9d --- /dev/null +++ b/Content/StaticMeshes/Road/roadAsphalt_center.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96a6d368a11976c3d0d0b299b7d83318c4268b2efee9d1c773d7cc1282e9c379 +size 14692 diff --git a/Content/StaticMeshes/Road/roadAsphalt_corner.uasset b/Content/StaticMeshes/Road/roadAsphalt_corner.uasset new file mode 100644 index 0000000..b0b79a0 --- /dev/null +++ b/Content/StaticMeshes/Road/roadAsphalt_corner.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4e620fed07f31f7c8b4d0fb8dd2ed2573c0eeb3fafe04db388fee2392bf4cad +size 19728 diff --git a/Content/StaticMeshes/Road/roadAsphalt_cornerInner.uasset b/Content/StaticMeshes/Road/roadAsphalt_cornerInner.uasset new file mode 100644 index 0000000..341a8e0 --- /dev/null +++ b/Content/StaticMeshes/Road/roadAsphalt_cornerInner.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ba7b6f0e3244cbd1108ffefd5df4fd7ff2bcc10201d8c1fd8a83493d5ef9c10 +size 18548 diff --git a/Content/StaticMeshes/Road/roadAsphalt_cornerOuter.uasset b/Content/StaticMeshes/Road/roadAsphalt_cornerOuter.uasset new file mode 100644 index 0000000..81862cd --- /dev/null +++ b/Content/StaticMeshes/Road/roadAsphalt_cornerOuter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9bb1320ab856150b03d45f1fb73c5066d724f6746b76c363bf3261d705ce3ec +size 18317 diff --git a/Content/StaticMeshes/Road/roadAsphalt_damaged.uasset b/Content/StaticMeshes/Road/roadAsphalt_damaged.uasset new file mode 100644 index 0000000..1ba2035 --- /dev/null +++ b/Content/StaticMeshes/Road/roadAsphalt_damaged.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76fd2733d412935aa3da6532e642fc1a7c2a5db097449639c84ee2f9a1488e43 +size 18403 diff --git a/Content/StaticMeshes/Road/roadAsphalt_pavement.uasset b/Content/StaticMeshes/Road/roadAsphalt_pavement.uasset new file mode 100644 index 0000000..5b9785a --- /dev/null +++ b/Content/StaticMeshes/Road/roadAsphalt_pavement.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6881707c1ccd677159f8b7b8aa7b01ce610dcc4e68a3d70321dc0d02b1a315bb +size 14929 diff --git a/Content/StaticMeshes/Road/roadAsphalt_side.uasset b/Content/StaticMeshes/Road/roadAsphalt_side.uasset new file mode 100644 index 0000000..f045020 --- /dev/null +++ b/Content/StaticMeshes/Road/roadAsphalt_side.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f523b5fa6dd23cae06ed835e31b5bdd6aec1143ef710dde216c6fb9ee8861813 +size 17729 diff --git a/Content/StaticMeshes/Road/roadAsphalt_straight.uasset b/Content/StaticMeshes/Road/roadAsphalt_straight.uasset new file mode 100644 index 0000000..fd55f7d --- /dev/null +++ b/Content/StaticMeshes/Road/roadAsphalt_straight.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46d64a64b6685028f5ab93687fe901f70585fe2bbcd0efc8428ba8ab9ff6abc6 +size 21266 diff --git a/Content/StaticMeshes/Wall/concrete.uasset b/Content/StaticMeshes/Wall/concrete.uasset new file mode 100644 index 0000000..d77f845 --- /dev/null +++ b/Content/StaticMeshes/Wall/concrete.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f57fad7e6e6f1a5594f7393ef8067777577ef92cf99b6de474d59c3369fb1800 +size 8685 diff --git a/Content/StaticMeshes/Wall/concrete_ncl1_1.uasset b/Content/StaticMeshes/Wall/concrete_ncl1_1.uasset new file mode 100644 index 0000000..591d514 --- /dev/null +++ b/Content/StaticMeshes/Wall/concrete_ncl1_1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:463c8794635a53e2d0affa2ac813ef27423bfc2a0ed24bb39e9ee7c566c0ff64 +size 13630 diff --git a/Content/StaticMeshes/Wall/wall_lines.uasset b/Content/StaticMeshes/Wall/wall_lines.uasset new file mode 100644 index 0000000..ad443bc --- /dev/null +++ b/Content/StaticMeshes/Wall/wall_lines.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d186be31354901a5a32f2c587d609b6bc3335c61775eac6d826b281ddea9338 +size 9244 diff --git a/Content/StaticMeshes/Wall/wall_lines_ncl1_1.uasset b/Content/StaticMeshes/Wall/wall_lines_ncl1_1.uasset new file mode 100644 index 0000000..396695d --- /dev/null +++ b/Content/StaticMeshes/Wall/wall_lines_ncl1_1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d57379ba020776971b4b5e4604de7597ded80ff2bb5814f7e5d4602222b084de +size 13599 diff --git a/Content/StaticMeshes/Wall/wall_typeA.uasset b/Content/StaticMeshes/Wall/wall_typeA.uasset new file mode 100644 index 0000000..e2c85b7 --- /dev/null +++ b/Content/StaticMeshes/Wall/wall_typeA.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77d71b8e7da2bde181549beabfe6e096f4ac34fa52abdac3d31d6449106d9ff4 +size 18645 diff --git a/Source/EndlessZombie/PathGenerator.cpp b/Source/EndlessZombie/PathGenerator.cpp new file mode 100644 index 0000000..d40c812 --- /dev/null +++ b/Source/EndlessZombie/PathGenerator.cpp @@ -0,0 +1,41 @@ +// Copyright Jorge Kuijper. All Rights Reserved. + + +#include "PathGenerator.h" + +// Sets default values +APathGenerator::APathGenerator() +{ + // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. + PrimaryActorTick.bCanEverTick = true; + +} + +// Called when the game starts or when spawned +void APathGenerator::BeginPlay() +{ + Super::BeginPlay(); + + for (int i = 0; i < 10; i++) + { + AddFloorTile(); + } + +} + +// Called every frame +void APathGenerator::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); + +} + +void APathGenerator::AddFloorTile() +{ + if (Tile != nullptr) + { + ATile* GeneratedTile = GetWorld()->SpawnActor(Tile, tNextSpawnPoint); + tNextSpawnPoint = GeneratedTile->GetAttachTransform(); + } +} + diff --git a/Source/EndlessZombie/PathGenerator.h b/Source/EndlessZombie/PathGenerator.h new file mode 100644 index 0000000..daa8601 --- /dev/null +++ b/Source/EndlessZombie/PathGenerator.h @@ -0,0 +1,34 @@ +// Copyright Jorge Kuijper. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "Tile.h" +#include "PathGenerator.generated.h" + +UCLASS() +class ENDLESSZOMBIE_API APathGenerator : public AActor +{ + GENERATED_BODY() + +public: + // Sets default values for this actor's properties + APathGenerator(); + +protected: + // Called when the game starts or when spawned + virtual void BeginPlay() override; + +public: + // Called every frame + virtual void Tick(float DeltaTime) override; + + UPROPERTY(EditAnywhere, Category = "Tiles") + TSubclassOf Tile; + + UFUNCTION(Category = "Tiles") + void AddFloorTile(); + + FTransform tNextSpawnPoint = FTransform(FVector(90.0f, 1110.0f, 0.0f)); +}; diff --git a/Source/EndlessZombie/Tile.cpp b/Source/EndlessZombie/Tile.cpp new file mode 100644 index 0000000..7eab2f9 --- /dev/null +++ b/Source/EndlessZombie/Tile.cpp @@ -0,0 +1,78 @@ +// Copyright Jorge Kuijper. All Rights Reserved. + + +#include "Tile.h" +#include "ZombieCharacter.h" +#include "PathGenerator.h" +#include "Kismet/GameplayStatics.h" +#include "Kismet/KismetSystemLibrary.h" + +// Sets default values +ATile::ATile() +{ + // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. + PrimaryActorTick.bCanEverTick = true; + // Add scene component + SceneComponent = CreateDefaultSubobject(TEXT("Scene")); + SceneComponent->SetupAttachment(RootComponent); + // Add arrow component like attach point + ArrowComponent = CreateDefaultSubobject(TEXT("AttachPoint")); + ArrowComponent->SetupAttachment(SceneComponent); + + // Add box collider + EndTrigger = CreateDefaultSubobject(TEXT("EndPoint")); + EndTrigger->SetupAttachment(SceneComponent); + EndTrigger->SetCollisionProfileName(TEXT("OverlapOnlyPawn")); +} + +// Called when the game starts or when spawned +void ATile::BeginPlay() +{ + Super::BeginPlay(); + + EndTrigger->OnComponentBeginOverlap.AddDynamic(this, &ATile::OnBeginOverlap); +} + +// Called every frame +void ATile::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); + +} + +FTransform ATile::GetAttachTransform() +{ + FTransform tAttachPoint; + + tAttachPoint = ArrowComponent->GetComponentTransform(); + + return tAttachPoint; +} + +void ATile::OnBeginOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) +{ + AZombieCharacter* ZombieCharacter = Cast(OtherActor); + + if (ZombieCharacter != nullptr) + { + TArray ActorsToFind; + UGameplayStatics::GetAllActorsOfClass(GetWorld(), APathGenerator::StaticClass(), ActorsToFind); + if (ActorsToFind.Num() > 0) + { + APathGenerator* FoundPathGenerator = Cast(ActorsToFind[0]); + FoundPathGenerator->AddFloorTile(); + + FTimerHandle TimerHandle; + + //GetWorldTimerManager().SetTimer(TimerHandle, this, &ATimeKollapsed_PlayerController::AddWidgetToViewPort, GameOverDelay, false); + GetWorldTimerManager().SetTimer(TimerHandle, this, &ATile::test, 2.f, false); + + } + } +} + +void ATile::DestroyTile() +{ + this->Destroy(); +} + diff --git a/Source/EndlessZombie/Tile.h b/Source/EndlessZombie/Tile.h new file mode 100644 index 0000000..006cbef --- /dev/null +++ b/Source/EndlessZombie/Tile.h @@ -0,0 +1,42 @@ +// Copyright Jorge Kuijper. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "Components/ArrowComponent.h" +#include "Components/BoxComponent.h" +#include "Tile.generated.h" + +UCLASS() +class ENDLESSZOMBIE_API ATile : public AActor +{ + GENERATED_BODY() + +public: + // Sets default values for this actor's properties + ATile(); + +protected: + // Called when the game starts or when spawned + virtual void BeginPlay() override; + +public: + // Called every frame + virtual void Tick(float DeltaTime) override; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + USceneComponent* SceneComponent; + UPROPERTY(EditAnywhere, BlueprintReadWrite) + UArrowComponent* ArrowComponent; + UPROPERTY(EditAnywhere, BlueprintReadWrite) + UBoxComponent* EndTrigger; + + UFUNCTION(BlueprintCallable, Category = "AttachedPoint") + FTransform GetAttachTransform(); + UFUNCTION() + virtual void OnBeginOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult); + +private: + void DestroyTile(); +};