Cleanup of old seed stuff

This commit is contained in:
2026-09-17 21:43:02 +02:00
parent 69372fde46
commit 0af47d7bc3
36 changed files with 39 additions and 358 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -74,18 +74,6 @@ TArray<UItemDataAsset*> UItemDatabase::GetItemsOfElement(Element InElement, Cate
return ItemList;
}
void UItemDatabase::WaterAllSeeds()
{
for (ASeedCarousel* Seed : SeedsPlanted)
{
if (IsValid(Seed))
{
Seed->Water();
}
}
}
bool UItemDatabase::DoChemicalAlignmentsMatch(TArray<int32> Alignments, TArray<int32> PotionAlignments)
{
for (int32 i = 0; i < PotionAlignments.Num(); i++)

View File

@@ -4,8 +4,6 @@
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "PotionItem.h"
#include "SeedCarousel.h"
#include "ItemContainer.h"
#include "DataAssets/ItemDataAsset.h"
@@ -72,13 +70,7 @@ public:
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Item Database")
TMap<Category, FArrayOfItemRefs> LoadedItemsByCategory;
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "Item Database")
TArray<ASeedCarousel*> SeedsPlanted;
public:
UFUNCTION(BlueprintCallable, Category = "Item Database")
void WaterAllSeeds();
UFUNCTION(BlueprintCallable, Category = "Item Database")
bool DoChemicalAlignmentsMatch(TArray<int32> Alignments, TArray<int32> PotionAlignments);

View File

@@ -1,92 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "SeedCarousel.h"
#include "ItemDatabase.h"
#include "Kismet/GameplayStatics.h"
#include "MyCharacter.h"
#include "ProjectEleri/System/MainBlueprintFunctionLibrary.h"
#include "ProjectEleri/System/EleriGameplayTags.h"
FSeedSaveData::FSeedSaveData(): SeedGrowTime(0), ProduceGrowTime(0), SeedAge(0), ProduceDaysSinceLastBloom(0),
SeedWateredTimes(0),
bBloomed(false),
bWatered(false),
bPlanted(false), bDied(false),
bPlayerInside(false),
bInfoDialogueOpen(false)
{
}
FSeedSaveData::FSeedSaveData(const ASeedCarousel* SeedActorRef)
{
if(!SeedActorRef) return;
ObjectTransform = SeedActorRef->GetTransform();
SeedGrowTime = SeedActorRef->SeedGrowTime;
ProduceGrowTime = SeedActorRef->ProduceGrowTime;
SeedAge = SeedActorRef->SeedAge;
ProduceDaysSinceLastBloom = SeedActorRef->ProduceDaysSinceLastBloom;
SeedWateredTimes = SeedActorRef->SeedWateredTimes;
bBloomed = SeedActorRef->bBloomed;
bWatered = SeedActorRef->bWatered;
bPlanted = SeedActorRef->bPlanted;
bDied = SeedActorRef->bDied;
bPlayerInside = SeedActorRef->bPlayerInside;
bInfoDialogueOpen = SeedActorRef->bInfoDialogueOpen;
bHighQuality = SeedActorRef->bHighQuality;
SeedAssetId = SeedActorRef->SeedAssetData->GetPrimaryAssetId();
}
void ASeedCarousel::BeginPlay()
{
Super::BeginPlay();
}
// Called every frame
void ASeedCarousel::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
void ASeedCarousel::Water()
{
OnWatered.Broadcast();
}
void ASeedCarousel::LoadDataFromSaveStruct(FSeedSaveData& SaveStruct, UItemDatabase* ItemDatabase)
{
SeedGrowTime = SaveStruct.SeedGrowTime;
ProduceGrowTime = SaveStruct.ProduceGrowTime;
SeedAge = SaveStruct.SeedAge;
ProduceDaysSinceLastBloom = SaveStruct.ProduceDaysSinceLastBloom;
SeedWateredTimes = SaveStruct.SeedWateredTimes;
bBloomed = SaveStruct.bBloomed;
bWatered = SaveStruct.bWatered;
bPlanted = SaveStruct.bPlanted;
bDied = SaveStruct.bDied;
bHighQuality = SaveStruct.bHighQuality;
bPlayerInside = false;
bInfoDialogueOpen = false;
SeedAssetData = ItemDatabase->GetDataAssetFromId(SaveStruct.SeedAssetId);
}
void ASeedCarousel::SetSeedData(UItemDataAsset* InSeedAssetData)
{
if (!InSeedAssetData) return;
SeedAssetData = InSeedAssetData;
DataAssetId = InSeedAssetData->GetPrimaryAssetId();
}
bool ASeedCarousel::CanPlace()
{
/*if (UGameplayStatsComponent* GSC = UMainBlueprintFunctionLibrary::GetGameplayStatsComponentFromPlayer(this))
{
return GSC->GetGameplayStatValue(Stats::Energy) > 0;
}*/
return false;
}

View File

@@ -1,137 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "DataAssets/ItemDataAsset.h"
#include "GameFramework/Actor.h"
#include "../GameObjects/RemovableStaticMeshActor.h"
#include "SeedCarousel.generated.h"
class UItemDatabase;
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnWatered);
USTRUCT(BlueprintType)
struct FSeedSaveData {
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FTransform ObjectTransform;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 SeedGrowTime;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 ProduceGrowTime;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 SeedAge;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 ProduceDaysSinceLastBloom;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 SeedWateredTimes;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bBloomed;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bWatered;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bPlanted;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bDied;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bPlayerInside;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bInfoDialogueOpen;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FPrimaryAssetId SeedAssetId;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bHighQuality;
FSeedSaveData();
FSeedSaveData(const ASeedCarousel* SeedActorRef);
};
UCLASS()
class PROJECTELERI_API ASeedCarousel : public ARemovableStaticMeshActor
{
GENERATED_BODY()
virtual void BeginPlay() override;
public:
UPROPERTY(BlueprintAssignable)
FOnWatered OnWatered;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 SeedGrowTime;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 ProduceGrowTime;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 SeedAge;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 ProduceDaysSinceLastBloom;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 SeedWateredTimes;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bBloomed;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bWatered;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bPlanted;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bDied;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bPlayerInside;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bInfoDialogueOpen;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
UItemDataAsset* SeedAssetData;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bHighQuality;
protected:
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
UFUNCTION(BlueprintImplementableEvent, BlueprintCallable)
void OnUpdatePlantEvent();
UFUNCTION(BlueprintCallable)
void Water();
void LoadDataFromSaveStruct(FSeedSaveData& SaveStruct, UItemDatabase* ItemDatabase);
UFUNCTION(BlueprintCallable)
void SetSeedData(UItemDataAsset* InSeedAssetData);
virtual bool CanPlace() override;
};

View File

@@ -30,7 +30,6 @@ void AAlchemyManager::CalculateRewardStack() {
if (!PotionOutput) return;
FinalRewardStack.ItemId = PotionOutput->GetPrimaryAssetId();
FinalRewardStack.Seed = false;
FinalRewardStack.HQ = PotionMinigameHqScore >= 99.f;
FinalRewardStack.Stack = PotionMinigameStackNum;
}

View File

@@ -660,7 +660,7 @@ void AEleriPlayerController::OnPlaceObjectAction(const FInputActionValue &Value)
if (!MoveActorsComp->PlaceableActionUsed(ERemovalAction::PLACE))
return;
int32 StackCount = Inventory->GetStackForItem(DataAsset->GetPrimaryAssetId(), false, false);
int32 StackCount = Inventory->GetStackForItem(DataAsset->GetPrimaryAssetId(), false);
if (StackCount > 0)
{
ensure(ItemDatabase);
@@ -1267,15 +1267,15 @@ void AEleriPlayerController::TryPlantSelectedSeed()
// The seed is paid for before it is planted, so a slot can never hold a seed the inventory never had
const FPrimaryAssetId SeedAssetId = SeedToPlant->GetPrimaryAssetId();
if (Inventory->HasItem(SeedAssetId, true, bSeedToPlantHighQuality) <= 0)
if (Inventory->HasItem(SeedAssetId, true) <= 0)
return;
if (!SeedBed->PlantSeedInSlot(SlotCoordinate, SeedToPlant, bSeedToPlantHighQuality))
return;
Inventory->RemoveItemFromInventory(SeedAssetId, 1, true, bSeedToPlantHighQuality);
Inventory->RemoveItemFromInventory(SeedAssetId, 1, true);
if (Inventory->HasItem(SeedAssetId, true, bSeedToPlantHighQuality) == INDEX_NONE)
if (Inventory->HasItem(SeedAssetId, true) == INDEX_NONE)
{
ClearSeedToPlant();
}

View File

@@ -36,12 +36,11 @@ void UInventoryComponent::BeginPlay()
InitializeInventory();
}
int32 UInventoryComponent::HasItem(FPrimaryAssetId ItemId, bool Seed, bool HQ)
int32 UInventoryComponent::HasItem(FPrimaryAssetId ItemId, bool HQ)
{
for (int32 i = 0; i < ItemList.Num(); i++)
{
if (ItemId == ItemList[i].ItemId &&
Seed == ItemList[i].Seed &&
HQ == ItemList[i].HQ)
{
return i;
@@ -50,11 +49,11 @@ int32 UInventoryComponent::HasItem(FPrimaryAssetId ItemId, bool Seed, bool HQ)
return -1;
}
int32 UInventoryComponent::ItemExists(FPrimaryAssetId ItemToCheck, bool IsSeed, bool IsHq)
int32 UInventoryComponent::ItemExists(FPrimaryAssetId ItemToCheck, bool IsHq)
{
for (int32 i = 0; i < ItemList.Num(); i++)
{
if (ItemList[i].ItemId == ItemToCheck && ItemList[i].Seed == IsSeed && ItemList[i].HQ == IsHq)
if (ItemList[i].ItemId == ItemToCheck && ItemList[i].HQ == IsHq)
{
return i;
}
@@ -62,16 +61,15 @@ int32 UInventoryComponent::ItemExists(FPrimaryAssetId ItemToCheck, bool IsSeed,
return -1;
}
bool UInventoryComponent::AddItemToInventory(FPrimaryAssetId ItemToAdd, int32 StackSize, bool Seed, bool HighQuality)
bool UInventoryComponent::AddItemToInventory(FPrimaryAssetId ItemToAdd, int32 StackSize, bool HighQuality)
{
if (!ItemToAdd.IsValid()) return false;
int32 itemIndex = ItemExists(ItemToAdd, Seed, HighQuality);
int32 itemIndex = ItemExists(ItemToAdd, HighQuality);
if (itemIndex == -1)
{
FItemStack ItemStack;
ItemStack.ItemId = ItemToAdd;
ItemStack.Seed = Seed;
ItemStack.Stack = StackSize;
ItemStack.HQ = HighQuality;
ItemList.Add(ItemStack);
@@ -85,11 +83,11 @@ bool UInventoryComponent::AddItemToInventory(FPrimaryAssetId ItemToAdd, int32 St
return true;
}
bool UInventoryComponent::RemoveItemFromInventory(FPrimaryAssetId ItemId, int32 Amount, bool Seed, bool HighQuality)
bool UInventoryComponent::RemoveItemFromInventory(FPrimaryAssetId ItemId, int32 Amount, bool HighQuality)
{
if (ItemId.IsValid())
{
int32 ItemIndex = ItemExists(ItemId, Seed, HighQuality);
int32 ItemIndex = ItemExists(ItemId, HighQuality);
if (ItemIndex == -1)
{
return false;
@@ -120,7 +118,7 @@ void UInventoryComponent::InitializeInventory()
{
if (IsValid(ItemData.Item))
{
AddItemToInventory(ItemData.Item->GetPrimaryAssetId(), ItemData.StackSize, ItemData.Seed, ItemData.HQ);
AddItemToInventory(ItemData.Item->GetPrimaryAssetId(), ItemData.StackSize, ItemData.HQ);
}
}
}
@@ -133,17 +131,11 @@ void UInventoryComponent::EmptyInventory()
OnInventoryUpdated.Broadcast();
}
int UInventoryComponent::CheckItemCost(FPrimaryAssetId ItemId, bool Seed, bool HQ)
{
return 0;
}
int32 UInventoryComponent::GetStackForItem(FPrimaryAssetId ItemId, bool Seed, bool HQ)
int32 UInventoryComponent::GetStackForItem(FPrimaryAssetId ItemId, bool HQ)
{
for (int32 i = 0; i < ItemList.Num(); i++)
{
if (ItemList[i].ItemId == ItemId && ItemList[i].HQ == HQ && ItemList[i].Seed == Seed)
if (ItemList[i].ItemId == ItemId && ItemList[i].HQ == HQ)
return ItemList[i].Stack;
}
return 0;
@@ -175,7 +167,7 @@ void UInventoryComponent::LoadFromSave(const FInventorySaveData& LoadData)
EmptyInventory();
for (const FItemStack& SaveDataEntry : LoadData.ItemStacks)
{
AddItemToInventory(SaveDataEntry.ItemId, SaveDataEntry.Stack, SaveDataEntry.Seed, SaveDataEntry.HQ);
AddItemToInventory(SaveDataEntry.ItemId, SaveDataEntry.Stack, SaveDataEntry.HQ);
}
}

View File

@@ -1,7 +1,6 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "TimeOfDayManager.h"
#include "../Items/SeedCarousel.h"
#include "Components/DirectionalLightComponent.h"
#include "Components/ExponentialHeightFogComponent.h"
#include "Components/SkyAtmosphereComponent.h"

View File

@@ -23,10 +23,7 @@ class PROJECTELERI_API AEleriGameState : public AGameStateBase
public:
static AEleriGameState* Get(const UObject* WorldContext);
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
TSubclassOf<ASeedCarousel> SeedCarouselBpClass;
UFUNCTION(BlueprintCallable, BlueprintPure, Category = "Game State", meta=(WorldContext="WorldContext", GameplayTagFilter = "Characters"))
static int32 GetFriendshipAmount(const UObject* WorldContext, FGameplayTag NpcTag);
UFUNCTION(BlueprintCallable, Category = "Game State", meta = (WorldContext = "WorldContext", GameplayTagFilter = "Characters"))

View File

@@ -29,9 +29,6 @@ struct FDefaultItemStack {
UPROPERTY(EditAnywhere)
int32 StackSize = 1;
UPROPERTY(EditAnywhere)
bool Seed;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool HQ = false;
};
@@ -46,9 +43,6 @@ struct FItemStack {
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 Stack = 1;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool Seed = false;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool HQ = false;
};
@@ -81,7 +75,7 @@ class PROJECTELERI_API UInventoryComponent : public UActorComponent
private:
int32 CheckIfItemExists(class UItem* item);
int32 ItemExists(FPrimaryAssetId ItemToCheck, bool IsSeed, bool IsHq);
int32 ItemExists(FPrimaryAssetId ItemToCheck, bool IsHq);
UPROPERTY()
UItemDatabase* ItemDatabase;
@@ -123,25 +117,22 @@ public:
public:
UFUNCTION(BlueprintCallable)
bool AddItemToInventory(FPrimaryAssetId ItemToAdd, int32 StackSize = 1, bool Seed = false, bool HighQuality = false);
bool AddItemToInventory(FPrimaryAssetId ItemToAdd, int32 StackSize = 1, bool HighQuality = false);
UFUNCTION(BlueprintCallable)
bool RemoveItemFromInventory(FPrimaryAssetId ItemId, int32 Amount = 1, bool Seed = false, bool HighQuality = false);
bool RemoveItemFromInventory(FPrimaryAssetId ItemId, int32 Amount = 1, bool HighQuality = false);
UFUNCTION(BlueprintCallable)
void InitializeInventory();
UFUNCTION(BlueprintCallable)
void EmptyInventory();
UFUNCTION(BlueprintCallable, meta = (DeprecatedFunction))
int CheckItemCost(FPrimaryAssetId ItemId, bool Seed = false, bool HQ = false);
UFUNCTION(BlueprintCallable)
int32 GetStackForItem(FPrimaryAssetId ItemId, bool Seed = false, bool HQ = false);
int32 GetStackForItem(FPrimaryAssetId ItemId, bool HQ = false);
UFUNCTION(BlueprintCallable)
int32 HasItem(FPrimaryAssetId ItemToCheck, bool Seed = false, bool HQ = false);
int32 HasItem(FPrimaryAssetId ItemToCheck, bool HQ = false);
UFUNCTION(BlueprintCallable)
TArray<FPrimaryAssetId> GetItemAssetIds();