Complete early roadmap foundation and calendar helpers

This commit is contained in:
2026-05-15 21:41:37 -07:00
parent 6cd6729b7b
commit 8ee1f83b16
80 changed files with 3354 additions and 157 deletions
+37 -2
View File
@@ -21,6 +21,10 @@
AAgrarianGameCharacter::AAgrarianGameCharacter()
{
PrimaryActorTick.bCanEverTick = true;
bReplicates = true;
SetReplicateMovement(true);
SetNetUpdateFrequency(30.0f);
SetMinNetUpdateFrequency(10.0f);
// Set size for collision capsule
GetCapsuleComponent()->InitCapsuleSize(42.f, 96.0f);
@@ -286,6 +290,7 @@ bool AAgrarianGameCharacter::CanSprint() const
&& SurvivalComponent->IsAlive()
&& !bIsProne
&& !bIsCrouched
&& SurvivalComponent->Survival.Exhaustion < 85.0f
&& SurvivalComponent->Survival.Stamina > MinSprintStamina;
}
@@ -329,7 +334,19 @@ void AAgrarianGameCharacter::SetProne(bool bNewProne)
void AAgrarianGameCharacter::SetTerrainMovementMultiplier(float NewTerrainMovementMultiplier)
{
TerrainMovementMultiplier = FMath::Clamp(NewTerrainMovementMultiplier, 0.25f, 1.25f);
const float ClampedTerrainMovementMultiplier = FMath::Clamp(NewTerrainMovementMultiplier, 0.25f, 1.25f);
if (!HasAuthority())
{
ServerSetTerrainMovementMultiplier(ClampedTerrainMovementMultiplier);
return;
}
if (FMath::IsNearlyEqual(TerrainMovementMultiplier, ClampedTerrainMovementMultiplier))
{
return;
}
TerrainMovementMultiplier = ClampedTerrainMovementMultiplier;
ApplyMovementSpeed();
}
@@ -403,8 +420,16 @@ float AAgrarianGameCharacter::CalculateSurvivalMovementMultiplier() const
FVector2D(0.0f, 100.0f),
FVector2D(1.0f, 0.5f),
Survival.InjurySeverity);
const float SicknessMultiplier = FMath::GetMappedRangeValueClamped(
FVector2D(0.0f, 100.0f),
FVector2D(1.0f, 0.7f),
Survival.SicknessSeverity);
const float ExhaustionMultiplier = FMath::GetMappedRangeValueClamped(
FVector2D(0.0f, 100.0f),
FVector2D(1.0f, 0.55f),
Survival.Exhaustion);
return HungerMultiplier * ThirstMultiplier * InjuryMultiplier;
return HungerMultiplier * ThirstMultiplier * InjuryMultiplier * SicknessMultiplier * ExhaustionMultiplier;
}
float AAgrarianGameCharacter::CalculateCarryWeightMovementMultiplier() const
@@ -460,6 +485,11 @@ void AAgrarianGameCharacter::OnRep_ProneState()
ApplyMovementSpeed();
}
void AAgrarianGameCharacter::OnRep_MovementModifierState()
{
ApplyMovementSpeed();
}
void AAgrarianGameCharacter::DoMove(float Right, float Forward)
{
if (GetController() != nullptr)
@@ -585,6 +615,11 @@ void AAgrarianGameCharacter::ServerSetProne_Implementation(bool bNewProne)
SetProne(bNewProne);
}
void AAgrarianGameCharacter::ServerSetTerrainMovementMultiplier_Implementation(float NewTerrainMovementMultiplier)
{
SetTerrainMovementMultiplier(NewTerrainMovementMultiplier);
}
void AAgrarianGameCharacter::ServerInteract_Implementation(AActor* TargetActor)
{
if (!TargetActor || !TargetActor->GetClass()->ImplementsInterface(UAgrarianInteractable::StaticClass()))