Skip to content
Snippets Groups Projects
Commit f4d702d9 authored by Yannis ROCHE's avatar Yannis ROCHE :x:
Browse files

Merging the merge

parent fe564607
Branches
No related tags found
No related merge requests found
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -18,7 +18,8 @@ ACustomGameMode::ACustomGameMode()
TrafficVehicles = TArray<ATrafficVehicle*>();
// Create empty array of ADiamondSquare
DiamondSquares = TArray<TObjectPtr<ADiamondSquare>>();
DiamondSquares1 = TArray<TObjectPtr<ADiamondSquare>>();
DiamondSquares2 = TArray<TObjectPtr<ADiamondSquare>>();
}
void ACustomGameMode::BeginPlay()
......@@ -32,14 +33,17 @@ void ACustomGameMode::BeginPlay()
}
}
int NumPlayers = UGameplayStatics::GetNumPlayerControllers(GetWorld());
for (int i = 0; i < NumPlayers; i++)
ACustomGameState* CustomGameState = GetGameState<ACustomGameState>();
iNumberOfPlayers = UGameplayStatics::GetNumPlayerControllers(GetWorld());
for (int i = 0; i < iNumberOfPlayers; i++)
{
NextRowSpawnPoint = FTransform(FRotator(), FVector(-iNumberOfBackwardTiles * fTileSize, 0, 100000.0f * i));
NextHillSpawnPoint1 = FTransform(FRotator(), FVector(-2 * fTileSize - fTileSize / 2.0f, (CustomGameState->iNumberOfLane * fTileSize) - fTileSize / 2.0f, 0.0f));
NextHillSpawnPoint2 = FTransform(FRotator(), FVector(-2 * fTileSize - fTileSize / 2.0f, (CustomGameState->iNumberOfLane * fTileSize) - fTileSize / 2.0f, 100000.0f * i));
PlaceUnspawnCollisionBox(i);
PlaceScoreCollisionBox(i);
CreateInitialRoadTiles();
CreateInitialDiamondSquare();
CreateInitialDiamondSquare(i);
if(i > 0)
PlacePlayerCar(i);
PlaceTrafficVehicle(i);
......@@ -63,13 +67,26 @@ void ACustomGameMode::Tick(float DeltaTime)
}
// Add DiamondSquare if number of DiamondSquare is less than iNumberOfInitHills
int iNumberOfHills = DiamondSquares.Num();
if (iNumberOfHills < iNumberOfInitHills)
int iNumberOfHills1 = DiamondSquares1.Num();
if (iNumberOfHills1 < iNumberOfInitHills)
{
for (int i = 0; i < iNumberOfInitHills - iNumberOfHills1; i++)
{
NextHillSpawnPoint1 = DiamondSquares1.Last()->GetAttachTransform();
AddDiamondSquare(0);
}
}
if (iNumberOfPlayers > 1)
{
int iNumberOfHills2 = DiamondSquares2.Num();
if (iNumberOfHills2 < iNumberOfInitHills)
{
for (int i = 0; i < iNumberOfInitHills - iNumberOfHills; i++)
for (int i = 0; i < iNumberOfInitHills - iNumberOfHills2; i++)
{
NextHillSpawnPoint = DiamondSquares.Last()->GetAttachTransform();
AddDiamondSquare();
NextHillSpawnPoint2 = DiamondSquares2.Last()->GetAttachTransform();
AddDiamondSquare(1);
}
}
}
}
......@@ -211,30 +228,23 @@ void ACustomGameMode::CreateInitialRoadTiles()
}
}
void ACustomGameMode::CreateInitialDiamondSquare()
void ACustomGameMode::CreateInitialDiamondSquare(int player)
{
ACustomGameState* CustomGameState = GetGameState<ACustomGameState>();
// Spawn Position of box
float fSpawnPositionX = -2 * fTileSize - fTileSize / 2.0f;
float fSpawnPositionY = (CustomGameState->iNumberOfLane * fTileSize) - fTileSize / 2.0f;
float fSpawnPositionZ = 0.0f;
FVector SpawnPosition = FVector(fSpawnPositionX, fSpawnPositionY, fSpawnPositionZ);
NextHillSpawnPoint = FTransform(FRotator(), SpawnPosition);
for (int i = 0; i < 30; i++)
for (int i = 0; i < iNumberOfInitHills; i++)
{
AddDiamondSquare();
AddDiamondSquare(player);
}
}
void ACustomGameMode::AddDiamondSquare()
void ACustomGameMode::AddDiamondSquare(int player)
{
ACustomGameState* CustomGameState = GetGameState<ACustomGameState>();
UWorld* World = GetWorld();
if (World)
{
FTransform NextHillSpawnPoint = player == 0 ? NextHillSpawnPoint1 : NextHillSpawnPoint2;
auto DeferredDiamondSquare = Cast<ADiamondSquare>(UGameplayStatics::BeginDeferredActorSpawnFromClass(this, DiamondSquareClass, NextHillSpawnPoint));
if (DeferredDiamondSquare != nullptr)
{
......@@ -242,11 +252,19 @@ void ACustomGameMode::AddDiamondSquare()
fHillStartX += DeferredDiamondSquare->XSize;
UGameplayStatics::FinishSpawningActor(DeferredDiamondSquare, NextHillSpawnPoint);
NextHillSpawnPoint = DeferredDiamondSquare->GetAttachTransform();
DeferredDiamondSquare->fSpeed = CustomGameState->fSpeed;
DiamondSquares.Add(DeferredDiamondSquare);
if (player == 0)
{
NextHillSpawnPoint1 = DeferredDiamondSquare->GetAttachTransform();
DiamondSquares1.Add(DeferredDiamondSquare);
}
else
{
NextHillSpawnPoint2 = DeferredDiamondSquare->GetAttachTransform();
DiamondSquares2.Add(DeferredDiamondSquare);
}
}
}
}
......@@ -302,8 +320,10 @@ void ACustomGameMode::OnUnspawnCollisionBoxOverlap(UPrimitiveComponent* Overlapp
ADiamondSquare* DiamondSquare = Cast<ADiamondSquare>(OtherActor);
if (DiamondSquare)
{
// Remove the DiamondSquare from the array
DiamondSquares.Remove(DiamondSquare);
if (DiamondSquare->GetAttachTransform().GetLocation().Z < 500.0f)
DiamondSquares1.Remove(DiamondSquare);
else
DiamondSquares2.Remove(DiamondSquare);
// Destroy the actor
DiamondSquare->Destroy();
}
......@@ -318,10 +338,14 @@ void ACustomGameMode::OnScoreCollisionBoxEndOverlap(UPrimitiveComponent* Overlap
// Get the game state
ACustomGameState* CustomGameState = GetGameState<ACustomGameState>();
CustomGameState->fSpeed *= 1.05;
CustomGameState->fSpeed = FMath::Clamp(CustomGameState->fSpeed * 1.05, 0.0f, 7777.78);
// Update the speed of all DiamonSquares
for (auto DiamondSquare : DiamondSquares)
for (auto DiamondSquare : DiamondSquares1)
{
DiamondSquare->fSpeed = CustomGameState->fSpeed;
}
for (auto DiamondSquare : DiamondSquares2)
{
DiamondSquare->fSpeed = CustomGameState->fSpeed;
}
......
......@@ -130,7 +130,7 @@ void ATrafficVehicle::FrontCollisionCheck()
if ((fDirection > 0 && fTargetLane < CustomGameState->iNumberOfLane) ||
(fDirection < 0 && fTargetLane >= CustomGameState->iNumberOfLane))
{
bIsBlinking = true;
bIsBlinking = false;
LaneChangeCheck();
}
}
......@@ -194,7 +194,7 @@ void ATrafficVehicle::BlinkLeft(float DeltaTime)
fBlinkElapsedTime = 0.0f;
}
if (LaneChangeComponent->bIsMoving)
if (!LaneChangeComponent->bIsMoving)
{
bIsBlinking = false;
RearLeftBlinker->SetVisibility(false);
......
......@@ -69,7 +69,10 @@ public:
FTransform NextRowSpawnPoint;
UPROPERTY(VisibleInstanceOnly, Category = "Runtime")
FTransform NextHillSpawnPoint;
FTransform NextHillSpawnPoint1;
UPROPERTY(VisibleInstanceOnly, Category = "Runtime")
FTransform NextHillSpawnPoint2;
UPROPERTY(VisibleInstanceOnly, Category = "Runtime", BlueprintReadWrite)
float fSpeed = 100.0f;
......@@ -82,11 +85,12 @@ public:
private:
TArray<ATrafficVehicle*> TrafficVehicles;
float fSpawnElapsedTime = 0.0f;
int iNumberOfPlayers = 1;
private:
void CreateInitialRoadTiles();
void CreateInitialDiamondSquare();
void AddDiamondSquare();
void CreateInitialDiamondSquare(int player);
void AddDiamondSquare(int player);
ARoadTile* AddRoadTile(TSubclassOf<ARoadTile> RoadTileClass);
void AddRoadTileRow();
void PlacePlayerCar(int player);
......@@ -94,8 +98,8 @@ private:
void PlaceUnspawnCollisionBox(int player);
void PlaceScoreCollisionBox(int player);
TArray<TObjectPtr<ADiamondSquare>> DiamondSquares;
TArray<TObjectPtr<ADiamondSquare>> DiamondSquares1;
TArray<TObjectPtr<ADiamondSquare>> DiamondSquares2;
// On collision with the unspawn box
UFUNCTION()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment