390 lines
12 KiB
C
390 lines
12 KiB
C
// Copyright Pacificao. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "AgrarianTypes.generated.h"
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EAgrarianWeatherType : uint8
|
|
{
|
|
Clear UMETA(DisplayName = "Clear"),
|
|
Rain UMETA(DisplayName = "Rain"),
|
|
ColdWind UMETA(DisplayName = "Cold Wind"),
|
|
Storm UMETA(DisplayName = "Storm")
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FAgrarianMappedWeatherInputs
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
FName TileId = NAME_None;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float Latitude = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float Longitude = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float TemperatureC = 12.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float DailyLowTemperatureC = 9.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float DailyHighTemperatureC = 18.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float PrecipitationMm = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float WindSpeedKmh = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float CloudCoverPercent = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float RelativeHumidityPercent = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float PressureMslHpa = 1013.25f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float VisibilityMeters = 10000.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
int32 ProviderWeatherCode = 0;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
EAgrarianWeatherType MappedWeather = EAgrarianWeatherType::Clear;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
FString Provider = TEXT("deterministic");
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
FString ProviderTimestamp;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
bool bHasProviderData = false;
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FAgrarianWeatherDebugSnapshot
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
FName TileId = NAME_None;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float Latitude = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float Longitude = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
FString Provider = TEXT("deterministic");
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
FString ProviderTimestamp;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
EAgrarianWeatherType AppliedWeather = EAgrarianWeatherType::Clear;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
int32 ProviderWeatherCode = 0;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float TemperatureC = 12.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float PrecipitationMm = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float WindSpeedKmh = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float CloudCoverPercent = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float RelativeHumidityPercent = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float PressureMslHpa = 1013.25f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
float VisibilityMeters = 10000.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Weather")
|
|
bool bHasProviderData = false;
|
|
};
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EAgrarianSeason : uint8
|
|
{
|
|
Winter UMETA(DisplayName = "Winter"),
|
|
Spring UMETA(DisplayName = "Spring"),
|
|
Summer UMETA(DisplayName = "Summer"),
|
|
Autumn UMETA(DisplayName = "Autumn")
|
|
};
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EAgrarianCropSeasonFit : uint8
|
|
{
|
|
Unknown UMETA(DisplayName = "Unknown"),
|
|
FitsSeason UMETA(DisplayName = "Fits Season"),
|
|
Marginal UMETA(DisplayName = "Marginal"),
|
|
TooLong UMETA(DisplayName = "Too Long"),
|
|
OutOfSeason UMETA(DisplayName = "Out Of Season")
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FAgrarianCalendarSnapshot
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Calendar")
|
|
int32 DayOfYear = 1;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Calendar")
|
|
int32 Year = 1;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Calendar")
|
|
int32 AbsoluteDay = 1;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Calendar")
|
|
int32 DayOfSeason = 1;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Calendar")
|
|
EAgrarianSeason Season = EAgrarianSeason::Winter;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Calendar")
|
|
float HourOfDay = 8.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Calendar")
|
|
bool bInsideGrowingSeason = false;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Calendar")
|
|
int32 GrowingSeasonDaysRemaining = 0;
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FAgrarianGrowingSeasonProfile
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season")
|
|
FName TileId = NAME_None;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season")
|
|
FString GrowingZoneLabel = TEXT("unknown");
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season", meta = (ClampMin = "1", ClampMax = "366"))
|
|
int32 GrowingSeasonStartDay = 80;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season", meta = (ClampMin = "1", ClampMax = "366"))
|
|
int32 GrowingSeasonEndDay = 300;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season", meta = (ClampMin = "0", ClampMax = "366"))
|
|
int32 FrostFreeDays = 220;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season")
|
|
float MinAverageGrowingTempC = 7.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season", meta = (ClampMin = "0", ClampMax = "90"))
|
|
int32 CropSafetyBufferDays = 14;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season")
|
|
FString ClimateProfile = TEXT("unknown");
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FAgrarianCropSeasonAssessment
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season")
|
|
EAgrarianCropSeasonFit Fit = EAgrarianCropSeasonFit::Unknown;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season")
|
|
int32 DaysAvailable = 0;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season")
|
|
int32 DaysRequired = 0;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season")
|
|
int32 SafetyBufferDays = 0;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season")
|
|
bool bCanPlantToday = false;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season")
|
|
FString GrowingZoneLabel = TEXT("unknown");
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Growing Season")
|
|
FText Reason;
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FAgrarianItemStack
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Inventory")
|
|
FName ItemId = NAME_None;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Inventory")
|
|
FText DisplayName;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Inventory", meta = (ClampMin = "0"))
|
|
int32 Quantity = 0;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Inventory", meta = (ClampMin = "0"))
|
|
float UnitWeight = 0.0f;
|
|
|
|
bool IsValidStack() const
|
|
{
|
|
return ItemId != NAME_None && Quantity > 0;
|
|
}
|
|
};
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EAgrarianItemType : uint8
|
|
{
|
|
Resource UMETA(DisplayName = "Resource"),
|
|
Food UMETA(DisplayName = "Food"),
|
|
Tool UMETA(DisplayName = "Tool"),
|
|
Structure UMETA(DisplayName = "Structure"),
|
|
Medicine UMETA(DisplayName = "Medicine"),
|
|
Currency UMETA(DisplayName = "Currency")
|
|
};
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EAgrarianWildlifeDisposition : uint8
|
|
{
|
|
Passive UMETA(DisplayName = "Passive"),
|
|
Fleeing UMETA(DisplayName = "Fleeing"),
|
|
Aggressive UMETA(DisplayName = "Aggressive")
|
|
};
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EAgrarianWildlifeState : uint8
|
|
{
|
|
Idle UMETA(DisplayName = "Idle"),
|
|
Wandering UMETA(DisplayName = "Wandering"),
|
|
Fleeing UMETA(DisplayName = "Fleeing"),
|
|
Chasing UMETA(DisplayName = "Chasing"),
|
|
Dead UMETA(DisplayName = "Dead")
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FAgrarianItemDefinition
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Items")
|
|
FName ItemId = NAME_None;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Items")
|
|
FText DisplayName;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Items")
|
|
FText Description;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Items")
|
|
EAgrarianItemType ItemType = EAgrarianItemType::Resource;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Items", meta = (ClampMin = "0"))
|
|
float UnitWeight = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Items", meta = (ClampMin = "1"))
|
|
int32 MaxStackSize = 99;
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FAgrarianRecipe
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Crafting")
|
|
FName RecipeId = NAME_None;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Crafting")
|
|
FText DisplayName;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Crafting")
|
|
TArray<FAgrarianItemStack> Ingredients;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Crafting")
|
|
FAgrarianItemStack Result;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Crafting", meta = (ClampMin = "0"))
|
|
float CraftSeconds = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Crafting")
|
|
bool bRequiresCampfire = false;
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FAgrarianSurvivalSnapshot
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Survival")
|
|
float Health = 100.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Survival")
|
|
float Stamina = 100.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Survival")
|
|
float Exhaustion = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Survival")
|
|
float Hunger = 100.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Survival")
|
|
float Thirst = 100.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Survival")
|
|
float BodyTemperature = 37.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Survival")
|
|
float InjurySeverity = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Survival")
|
|
float SicknessSeverity = 0.0f;
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FAgrarianCareHistorySnapshot
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Care History")
|
|
float NutritionQuality = 1.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Care History")
|
|
float IllnessBurden = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Care History")
|
|
float InjuryBurden = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Care History")
|
|
float SleepQuality = 1.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Care History")
|
|
float ShelterQuality = 1.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Care History")
|
|
float StressBurden = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Care History")
|
|
float WorkloadBurden = 0.0f;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Care History")
|
|
float TreatmentQuality = 1.0f;
|
|
};
|