feat(jobs): Jobs.1 client — DA expandido + 7 DA_Job assets organizados por tier
* UZMMOJobDataAsset (Source/ZMMOJobs/Public/) ganha 3 campos novos
espelhando o JobDef do server:
- Tier (EZMMOJobTier)
- ParentClassId (int32)
- AllowedWeapons (TArray<EZMMOWeaponType>)
* Novo header ZMMOJobTypes.h com 2 UENUM(BlueprintType):
- EZMMOJobTier (6 valores: Beginner..Mastery)
- EZMMOWeaponType (19 valores: Fist..Gun)
Todos com UMETA(DisplayName="pt-BR") pro Editor mostrar nomes
amigaveis em dropdowns. Ordem casa byte-a-byte com EJobTier/
EWeaponType do server (necessario pq snapshot carrega tier u8 + mask).
* 7 DA_Job_*.uasset criados via MCP Python, organizados por tier:
Content/ZMMO/Data/Jobs/Beginner/
DA_Job_Novice (ClassId=0, AllowedWeapons=[Fist,Dagger])
Content/ZMMO/Data/Jobs/Vocation/
DA_Job_Warrior (ClassId=1, 8 armas: Sword+Spear+Axe variations)
DA_Job_Arcanist (ClassId=2, 5 armas: Staff+Book)
DA_Job_Ranger (ClassId=3, 5 armas: Bow+Musical+Whip)
DA_Job_Artisan (ClassId=4, 5 armas: Sword1H+Mace1H+Axe1H)
DA_Job_Rogue (ClassId=5, 5 armas: Sword1H+Bow+Katar)
DA_Job_Devout (ClassId=6, 5 armas: Mace+Staff1H+Knuckle)
ParentClassId=0 (Novice) em todas Vocacoes. Tier=Vocation.
JobIcon/Sound/Anim ficam None — preencher conforme arte for produzida.
ZMMOJobsSubsystem busca por classe (GetAssetsByClass), entao a
reorganizacao em subpastas NAO requer mudanca em .cpp/.h.
* ZMMOAttributeTypes.h: comentario de opcode 1200 -> 1500 (espelha
refactor Open-Closed do server ranges; valores wire format mudaram).
Boot esperado: [ZMMOJobsSubsystem] Initialize: 7 job(s) carregados.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Engine/DataAsset.h"
|
||||
#include "ZMMOJobTypes.h"
|
||||
#include "ZMMOJobDataAsset.generated.h"
|
||||
|
||||
class UTexture2D;
|
||||
@@ -39,11 +40,28 @@ public:
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Zeus|Job")
|
||||
FString TechnicalName;
|
||||
|
||||
/// Nome localizado exibido na UI (pt-BR no projeto base). Ex: "Aprendiz".
|
||||
/// 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")
|
||||
EZMMOJobTier Tier = EZMMOJobTier::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<EZMMOWeaponType> 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")
|
||||
|
||||
Reference in New Issue
Block a user