- 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>
63 lines
2.5 KiB
C++
63 lines
2.5 KiB
C++
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Kismet/BlueprintFunctionLibrary.h"
|
|
#include "ZeusJobTypes.h"
|
|
#include "ZeusJobsLibrary.generated.h"
|
|
|
|
class UZeusJobDataAsset;
|
|
|
|
/**
|
|
* Helpers Blueprint pra UI/HUD acessar dados de job sem precisar pegar o
|
|
* Subsystem manualmente. Todos usam WorldContextObject pra resolver
|
|
* GameInstance → Subsystem internamente.
|
|
*
|
|
* Padrao de uso em UMG:
|
|
* - Text binding: `JobsLibrary::GetJobDisplayName(Self, AttrComp.Current.ClassId)`
|
|
* - Image binding: `JobsLibrary::GetJobIcon(Self, ClassId).LoadSynchronous()`
|
|
*/
|
|
UCLASS()
|
|
class ZEUSJOBS_API UZeusJobsLibrary : public UBlueprintFunctionLibrary
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
/// Nome localizado do job. Fallback "Classe N" se ClassId nao tem DA
|
|
/// correspondente (job nao registrado no Content/ZMMO/Data/Jobs/).
|
|
UFUNCTION(BlueprintPure, Category = "Zeus|Jobs",
|
|
meta = (WorldContext = "WorldContextObject"))
|
|
static FText GetJobDisplayName(const UObject* WorldContextObject, int32 ClassId);
|
|
|
|
/// DataAsset completo (pode ser nullptr — caller checa).
|
|
UFUNCTION(BlueprintPure, Category = "Zeus|Jobs",
|
|
meta = (WorldContext = "WorldContextObject"))
|
|
static UZeusJobDataAsset* GetJobData(const UObject* WorldContextObject, int32 ClassId);
|
|
|
|
/// Helper de UI: retorna true se ClassId tem DA registrado.
|
|
UFUNCTION(BlueprintPure, Category = "Zeus|Jobs",
|
|
meta = (WorldContext = "WorldContextObject"))
|
|
static bool IsJobRegistered(const UObject* WorldContextObject, int32 ClassId);
|
|
|
|
/// Lista jobs num tier (UI dropdown). Vazio se subsystem indisponivel.
|
|
UFUNCTION(BlueprintPure, Category = "Zeus|Jobs",
|
|
meta = (WorldContext = "WorldContextObject"))
|
|
static TArray<UZeusJobDataAsset*> GetJobsByTier(
|
|
const UObject* WorldContextObject, EZeusJobTier Tier);
|
|
|
|
/// Destinos de promocao a partir do char atual. WBP de promocao consome
|
|
/// direto. Vazio se nao houver filhos (ex: char ja' esta em Tier 3
|
|
/// Mastery — Jobs.4 introduzira terminal de progressao).
|
|
UFUNCTION(BlueprintPure, Category = "Zeus|Jobs",
|
|
meta = (WorldContext = "WorldContextObject"))
|
|
static TArray<UZeusJobDataAsset*> GetEligibleNextJobs(
|
|
const UObject* WorldContextObject, int32 CurrentClassId);
|
|
|
|
/// Helper de send via ZeusNetworkSubsystem. Conveniencia pra WBP nao
|
|
/// precisar pegar o subsystem manualmente. Idempotente: rejeitado
|
|
/// silenciosamente se nao conectado.
|
|
UFUNCTION(BlueprintCallable, Category = "Zeus|Jobs",
|
|
meta = (WorldContext = "WorldContextObject"))
|
|
static void SendJobChangeRequest(
|
|
const UObject* WorldContextObject, int32 TargetClassId);
|
|
};
|