99 lines
3.1 KiB
C++
99 lines
3.1 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "UTAD_UICharacter.h"
|
|
#include "UObject/ConstructorHelpers.h"
|
|
#include "Camera/CameraComponent.h"
|
|
#include "Components/DecalComponent.h"
|
|
#include "Components/CapsuleComponent.h"
|
|
#include "GameFramework/CharacterMovementComponent.h"
|
|
#include "GameFramework/PlayerController.h"
|
|
#include "GameFramework/SpringArmComponent.h"
|
|
#include "Materials/Material.h"
|
|
#include "Engine/World.h"
|
|
#include "SkillTree/SkillTreeComponent.h"
|
|
#include "SkillTree/SkillTreeSubsystem.h"
|
|
#include "SkillTree/CharacterStatsComponent.h"
|
|
|
|
AUTAD_UICharacter::AUTAD_UICharacter()
|
|
{
|
|
// Set size for player capsule
|
|
GetCapsuleComponent()->InitCapsuleSize(42.f, 96.0f);
|
|
|
|
// Don't rotate character to camera direction
|
|
bUseControllerRotationPitch = false;
|
|
bUseControllerRotationYaw = false;
|
|
bUseControllerRotationRoll = false;
|
|
|
|
// Configure character movement
|
|
GetCharacterMovement()->bOrientRotationToMovement =
|
|
true; // Rotate character to moving direction
|
|
GetCharacterMovement()->RotationRate = FRotator(0.f, 640.f, 0.f);
|
|
GetCharacterMovement()->bConstrainToPlane = true;
|
|
GetCharacterMovement()->bSnapToPlaneAtStart = true;
|
|
|
|
// Create a camera boom...
|
|
CameraBoom =
|
|
CreateDefaultSubobject<USpringArmComponent>(TEXT("CameraBoom"));
|
|
CameraBoom->SetupAttachment(RootComponent);
|
|
CameraBoom->SetUsingAbsoluteRotation(
|
|
true); // Don't want arm to rotate when character does
|
|
CameraBoom->TargetArmLength = 800.f;
|
|
CameraBoom->SetRelativeRotation(FRotator(-60.f, 0.f, 0.f));
|
|
CameraBoom->bDoCollisionTest =
|
|
false; // Don't want to pull camera in when it collides with level
|
|
|
|
// Create a camera...
|
|
TopDownCameraComponent =
|
|
CreateDefaultSubobject<UCameraComponent>(TEXT("TopDownCamera"));
|
|
TopDownCameraComponent->SetupAttachment(CameraBoom,
|
|
USpringArmComponent::SocketName);
|
|
TopDownCameraComponent->bUsePawnControlRotation =
|
|
false; // Camera does not rotate relative to arm
|
|
|
|
// Activate ticking in order to update the cursor every frame.
|
|
PrimaryActorTick.bCanEverTick = true;
|
|
PrimaryActorTick.bStartWithTickEnabled = true;
|
|
|
|
// Create the skill tree component
|
|
SkillTreeComponent = CreateDefaultSubobject<USkillTreeComponent>(TEXT("SkillTreeComponent"));
|
|
|
|
// Create the character stats component
|
|
CharacterStatsComponent = CreateDefaultSubobject<UCharacterStatsComponent>(TEXT("CharacterStatsComponent"));
|
|
|
|
// Initialize character level
|
|
CharacterLevel = 1;
|
|
}
|
|
|
|
void AUTAD_UICharacter::BeginPlay()
|
|
{
|
|
Super::BeginPlay();
|
|
|
|
// Register the skill tree component with the manager
|
|
if (SkillTreeComponent)
|
|
{
|
|
if (USkillTreeSubsystem* Manager = USkillTreeSubsystem::GetSkillTreeManager(this))
|
|
{
|
|
Manager->RegisterPlayerSkillTree(SkillTreeComponent);
|
|
}
|
|
}
|
|
}
|
|
|
|
void AUTAD_UICharacter::Tick(float DeltaSeconds)
|
|
{
|
|
Super::Tick(DeltaSeconds);
|
|
}
|
|
|
|
void AUTAD_UICharacter::LevelUp()
|
|
{
|
|
CharacterLevel++;
|
|
|
|
// Grant skill points on level up
|
|
if (SkillTreeComponent)
|
|
{
|
|
// Grant 1 skill point per level (can be configured)
|
|
SkillTreeComponent->AddSkillPoints(1);
|
|
|
|
UE_LOG(LogTemp, Log, TEXT("Character leveled up to %d! Gained 1 skill point."), CharacterLevel);
|
|
}
|
|
}
|