From 272f0bf877703c8ca04358145fb3a513e91fcea9 Mon Sep 17 00:00:00 2001 From: CatChow0 Date: Thu, 16 Oct 2025 16:12:50 +0200 Subject: [PATCH 1/4] Minor - Ajoute le support LFS - V01.08.00 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Initialise le support de Large File Storage (LFS) pour gérer efficacement les fichiers binaires volumineux au sein du projet. Ceci assure que les fichiers tels que les niveaux Unreal Engine soient correctement versionnés et stockés. --- .gitattributes | 1 + Content/CTP/01_Level/L_Default.umap | Bin 42809 -> 30325 bytes 2 files changed, 1 insertion(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8a88fc5 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +UnrealToolbox.exe filter=lfs diff=lfs merge=lfs -text diff --git a/Content/CTP/01_Level/L_Default.umap b/Content/CTP/01_Level/L_Default.umap index 183c4277b23a7154ce76ae8154c734aa942d477c..c957fa72e4a7c495e5758a84572f01b517a9b55a 100644 GIT binary patch literal 30325 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 utMa$i_^=TFmFtHsxa;>ttHQeO@ From d8497da0bd1ffef770d2c8730354bfa1f20df30f Mon Sep 17 00:00:00 2001 From: CatChow0 Date: Thu, 16 Oct 2025 16:20:04 +0200 Subject: [PATCH 2/4] Patch - Ajoute une fin de ligne - V01.00.01 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ajoute un caractère de fin de ligne manquant dans le fichier .gitattributes. --- .gitattributes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index 8a88fc5..aa76900 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1 @@ -UnrealToolbox.exe filter=lfs diff=lfs merge=lfs -text +UnrealToolbox.exe filter=lfs diff=lfs merge=lfs -text \ No newline at end of file From 134883273ec8dbf392681ec9a5a597d4d36f739b Mon Sep 17 00:00:00 2001 From: CatChow0 Date: Thu, 16 Oct 2025 16:30:33 +0200 Subject: [PATCH 3/4] Minor - Ajoute des fonctions de score et pv - V01.09.00 Ajoute la gestion du score, des vies et des limites de mouvement du joueur. --- Source/M4_CPP/public/M4_Gamemode.h | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/Source/M4_CPP/public/M4_Gamemode.h b/Source/M4_CPP/public/M4_Gamemode.h index a81d4fb..43ff7ad 100644 --- a/Source/M4_CPP/public/M4_Gamemode.h +++ b/Source/M4_CPP/public/M4_Gamemode.h @@ -20,6 +20,40 @@ public: virtual void BeginPlay() override; + /** + * The movement bounds for the player pawn + */ UPROPERTY(EditAnywhere) FBox2D Bounds = FBox2D(FVector2D(-400.0f, -750.0f), FVector2D(-200.0f, 750.0f)); + + /** + * Add to the player's score + * @param Amount + */ + UFUNCTION(BlueprintCallable) + void AddScore(int Amount) { Score += Amount; } + + /** + * Get the player's current score + * @return Current score + */ + UFUNCTION(BlueprintCallable) + int GetScore() const { return Score; } + + /** + * Decrease the player's lives by 1, but not below 0 + */ + UFUNCTION(BlueprintCallable) + void LoseLife() { Lives = FMath::Max(0, Lives - 1); } + + /** + * Get the player's current lives + * @return Current lives + */ + UFUNCTION(BlueprintCallable) + int GetLives() const { return Lives; } + +private: + int Score = 0; + int Lives = 3; }; From dc2002fbb1eb8c2299b7c1973069403be7f6b7e8 Mon Sep 17 00:00:00 2001 From: CatChow0 Date: Thu, 16 Oct 2025 18:47:10 +0200 Subject: [PATCH 4/4] Minor - Ajoute l'instanciation des champignons dans un grid - V01.10.00 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instanciation et placement aléatoire des champignons dans une zone définie. --- Source/M4_CPP/private/M4_Gamemode.cpp | 46 ++++++++++++++++++++++++++- Source/M4_CPP/private/M4_Mushroom.cpp | 42 ++++++++++++++++++++++++ Source/M4_CPP/public/M4_Gamemode.h | 13 ++++++++ Source/M4_CPP/public/M4_Mushroom.h | 21 ++++++++++++ 4 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 Source/M4_CPP/private/M4_Mushroom.cpp create mode 100644 Source/M4_CPP/public/M4_Mushroom.h diff --git a/Source/M4_CPP/private/M4_Gamemode.cpp b/Source/M4_CPP/private/M4_Gamemode.cpp index ebfccda..8a98972 100644 --- a/Source/M4_CPP/private/M4_Gamemode.cpp +++ b/Source/M4_CPP/private/M4_Gamemode.cpp @@ -1,6 +1,7 @@ // Fill out your copyright notice in the Description page of Project Settings. #include "M4_Gamemode.h" +#include "M4_Mushroom.h" #include "M4_PlayerController.h" #include "M4_PlayerPawn.h" @@ -11,10 +12,53 @@ AM4_Gamemode::AM4_Gamemode() PlayerControllerClass = AM4_PlayerController::StaticClass(); DefaultPawnClass = AM4_PlayerPawn::StaticClass(); + + MushroomCount = FMath::RandRange(20, 25); } void AM4_Gamemode::BeginPlay() { Super::BeginPlay(); -} \ No newline at end of file + + Score = 0; + Lives = 3; + + // Get mushroom size from the class + AM4_Mushroom* TempMushroom = GetWorld()->SpawnActor(AM4_Mushroom::StaticClass()); + if (TempMushroom) + { + FVector MushroomSize = TempMushroom->GetStaticMeshComponent()->Bounds.BoxExtent * 2.0f; + CellSize = FMath::Max(MushroomSize.Y, MushroomSize.Z); // Use largest dimension + TempMushroom->Destroy(); + } + + // Calculate grid dimensions based on cell size + const int32 GridRows = FMath::FloorToInt(MushroomSpawnBounds.GetSize().X / CellSize); + const int32 GridCols = FMath::FloorToInt(MushroomSpawnBounds.GetSize().Y / CellSize); + + // spawn mushrooms in a grid inside the spawn bounds and in random cell + if (MushroomCount > 0) + { + TSet OccupiedCells; + + for (int32 i = 0; i < MushroomCount; ++i) + { + FIntPoint Cell; + do + { + Cell.X = FMath::RandRange(0, GridRows - 1); + Cell.Y = FMath::RandRange(0, GridCols - 1); + } while (OccupiedCells.Contains(Cell)); + + OccupiedCells.Add(Cell); + + FVector SpawnLocation; + SpawnLocation.Z = MushroomSpawnBounds.Min.X + Cell.X * CellSize + CellSize / 2.0f; + SpawnLocation.Y = MushroomSpawnBounds.Min.Y + Cell.Y * CellSize + CellSize / 2.0f; + SpawnLocation.X = -400.0f; + + GetWorld()->SpawnActor(AM4_Mushroom::StaticClass(), SpawnLocation, FRotator::ZeroRotator); + } + } +} diff --git a/Source/M4_CPP/private/M4_Mushroom.cpp b/Source/M4_CPP/private/M4_Mushroom.cpp new file mode 100644 index 0000000..234932a --- /dev/null +++ b/Source/M4_CPP/private/M4_Mushroom.cpp @@ -0,0 +1,42 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "M4_Mushroom.h" + +#include "M4_CTP_Macros.h" +#include "Kismet/GameplayStatics.h" +#include "M4_Gamemode.h" + + +// Sets default values +AM4_Mushroom::AM4_Mushroom() +{ + // Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it. + PrimaryActorTick.bCanEverTick = true; + + static ConstructorHelpers::FObjectFinder StaticMeshRef(TEXT("/Game/CTP/04_Mesh/SM_Cube.SM_Cube")); + if (StaticMeshRef.Succeeded()) + { + GetStaticMeshComponent()->SetStaticMesh(StaticMeshRef.Object); + } + + GetStaticMeshComponent()->SetDefaultCustomPrimitiveDataVector4(0, FVector4(0.0, 0.2, 0.2, 1.0)); + + GetStaticMeshComponent()->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + GetStaticMeshComponent()->SetGenerateOverlapEvents(true); + // Set as static object + GetStaticMeshComponent()->SetMobility(EComponentMobility::Static); + + // Set scale + const FVector2D MushroomScale = FVector2D(0.3f, 0.25f); + GetStaticMeshComponent()->SetRelativeScale3D(FVector(1.f, 0.45f, 0.20f)); + + // Custom preset for more advanced collision configuration + GetStaticMeshComponent()->SetCollisionProfileName(UCollisionProfile::CustomCollisionProfileName); + GetStaticMeshComponent()->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); +} + +void AM4_Mushroom::BeginPlay() +{ + Super::BeginPlay(); +} \ No newline at end of file diff --git a/Source/M4_CPP/public/M4_Gamemode.h b/Source/M4_CPP/public/M4_Gamemode.h index 43ff7ad..ef577a8 100644 --- a/Source/M4_CPP/public/M4_Gamemode.h +++ b/Source/M4_CPP/public/M4_Gamemode.h @@ -26,6 +26,12 @@ public: UPROPERTY(EditAnywhere) FBox2D Bounds = FBox2D(FVector2D(-400.0f, -750.0f), FVector2D(-200.0f, 750.0f)); + /** + * Bounds for spawning mushrooms + */ + UPROPERTY(EditAnywhere) + FBox2D MushroomSpawnBounds = FBox2D(FVector2D(-300.0f, -750.0f), FVector2D(550.0f, 750.0f)); + /** * Add to the player's score * @param Amount @@ -52,8 +58,15 @@ public: */ UFUNCTION(BlueprintCallable) int GetLives() const { return Lives; } + private: int Score = 0; int Lives = 3; + + // default mushroom count + int MushroomCount; + float CellSize = 50.f; + + }; diff --git a/Source/M4_CPP/public/M4_Mushroom.h b/Source/M4_CPP/public/M4_Mushroom.h new file mode 100644 index 0000000..7dbe9ce --- /dev/null +++ b/Source/M4_CPP/public/M4_Mushroom.h @@ -0,0 +1,21 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Engine/StaticMeshActor.h" +#include "GameFramework/Pawn.h" +#include "M4_Mushroom.generated.h" + +UCLASS() +class M4_CPP_API AM4_Mushroom : public AStaticMeshActor +{ + GENERATED_BODY() + +public: + // Sets default values for this pawn's properties + AM4_Mushroom(); + +protected: + virtual void BeginPlay() override; +};