Files
ZMMO/Source/ZeusJobs/Public/ZeusJobsLibrary.h
Mateus Rodrigues 6a6a28a086 refactor: prefixo ZMMO -> Zeus em classes/módulos C++ do cliente
- 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>
2026-06-02 17:24:38 -03:00

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);
};