- Renomeia ~50 classes UCLASS/USTRUCT/UENUM/UINTERFACE pra Zeus* (AZeusGameMode, AZeusCharacter, UZeusGameInstance, IZeusEntityInterface, UZeusWorldSubsystem, FZeusEntitySnapshot, etc.) - Encurta AZMMOPlayerCharacter -> AZeusCharacter - Renomeia módulos satélite ZMMOAttributes -> ZeusAttributes e ZMMOJobs -> ZeusJobs (pasta + .Build.cs + .uproject) - Mantém módulo principal ZMMO (renomeia depois quando jogo ganhar nome) - DefaultEngine.ini: ActiveClassRedirects ZMMOX -> ZeusX (preserva BPs/assets) - DefaultGame.ini: sections atualizadas pra ZeusThemeSubsystem/ZeusPlayerState - Category="ZMMO|..." -> "Zeus|..." em UPROPERTYs - Preserva LogZMMO, ZMMO_API, /Script/ZMMO., /Game/ZMMO/, classes Target Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
94 lines
3.9 KiB
C++
94 lines
3.9 KiB
C++
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Engine/DataAsset.h"
|
|
#include "ZeusJobTypes.h"
|
|
#include "ZeusJobDataAsset.generated.h"
|
|
|
|
class UTexture2D;
|
|
class USoundBase;
|
|
class UAnimInstance;
|
|
class UAnimMontage;
|
|
|
|
/**
|
|
* Dados visuais/UI de UM job (classe). 1 .uasset por job em
|
|
* `Content/ZMMO/Data/Jobs/DA_Job_<Nome>.uasset`.
|
|
*
|
|
* ClassId eh a CHAVE — bate com `classId` do snapshot do server (rathena
|
|
* pc.hpp `job_class`, ex: Novice=0, Swordsman=1, Mage=2, ...).
|
|
*
|
|
* Soft pointers (TSoftObjectPtr) sao usados pra assets pesados (textures,
|
|
* sounds) — lazy-loaded quando precisar (level up, hover icon). DataAsset
|
|
* em si fica em memoria depois do scan do Subsystem.
|
|
*
|
|
* Async pointers (TSubclassOf) sao sync — anim BP precisa estar carregada
|
|
* quando o player spawna.
|
|
*/
|
|
UCLASS(BlueprintType)
|
|
class ZEUSJOBS_API UZeusJobDataAsset : public UPrimaryDataAsset
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
/// Chave estavel (bate com `Config/Jobs/<Name>.json:Id` no server e com
|
|
/// `FZeusAttributesSnapshot::ClassId` recebido do server).
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Zeus|Job")
|
|
int32 ClassId = 0;
|
|
|
|
/// Nome tecnico estavel (en-US). Ex: "Novice", "Swordsman". Aparece em
|
|
/// logs e telemetria — NUNCA exibido pro player.
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Zeus|Job")
|
|
FString TechnicalName;
|
|
|
|
/// Nome localizado exibido na UI (pt-BR no projeto base). Ex: "Novato".
|
|
/// Pode usar FText Localization tables pra multi-idioma futuro.
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Zeus|Job")
|
|
FText DisplayName;
|
|
|
|
/// Tier hierarquico — espelha `JobDef::tier` do server. UI usa pra agrupar
|
|
/// jobs (ex: lista de Vocacoes possiveis quando promovendo Novato).
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Zeus|Job")
|
|
EZeusJobTier Tier = EZeusJobTier::Beginner;
|
|
|
|
/// ClassId do parent na arvore de promocao. 0 = sem parent (Novato eh root).
|
|
/// Espelha `JobDef::parentJobId` do server. UI usa pra filtrar destinos
|
|
/// possiveis ao mostrar painel de promocao.
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Zeus|Job")
|
|
int32 ParentClassId = 0;
|
|
|
|
/// Lista de armas que o job pode equipar. Espelha `JobDef::allowedWeaponsMask`
|
|
/// do server (mas como TArray pra editor visual em vez de bitmask cru).
|
|
/// Inventory UI usa pra hint "nao pode equipar" + filtro de catalogo.
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Zeus|Job")
|
|
TArray<EZeusWeaponType> AllowedWeapons;
|
|
|
|
/// Icone do job — usado em StatusWindow, CharacterCard, JobChangeUI.
|
|
/// Soft ptr: nao carrega ate alguem chamar LoadSynchronous() ou async load.
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Zeus|Job|Assets")
|
|
TSoftObjectPtr<UTexture2D> JobIcon;
|
|
|
|
/// AnimInstance class override (opcional). Quando nao-null, AnimBP
|
|
/// padrao do PlayerCharacter eh substituido por esta classe no spawn
|
|
/// (jobs com move set diferente — Monge bate, Assassin furtivo, etc.).
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Zeus|Job|Anim")
|
|
TSubclassOf<UAnimInstance> DefaultAnimInstanceClass;
|
|
|
|
/// Montage de "job change" (animacao de transformacao). Tocada quando
|
|
/// player promove de Novice → 1a classe. V1 nao implementado.
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Zeus|Job|Anim")
|
|
TSoftObjectPtr<UAnimMontage> JobChangeMontage;
|
|
|
|
/// Som de level up override. Quando null, HUD usa som generico do projeto.
|
|
/// Soft ptr: lazy load no primeiro level up.
|
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Zeus|Job|Audio")
|
|
TSoftObjectPtr<USoundBase> LevelUpSoundCue;
|
|
|
|
/// PrimaryAssetType pro AssetManager (precisa pra GetPrimaryAssetIdList).
|
|
/// Hardcoded "ZeusJob" — registry classifica todos os DAs deste tipo.
|
|
virtual FPrimaryAssetId GetPrimaryAssetId() const override
|
|
{
|
|
return FPrimaryAssetId(FPrimaryAssetType(TEXT("ZeusJob")),
|
|
*FString::Printf(TEXT("Job_%d_%s"), ClassId, *TechnicalName));
|
|
}
|
|
};
|