- 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>
93 lines
3.2 KiB
C
93 lines
3.2 KiB
C
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Engine/DataTable.h"
|
|
#include "Engine/World.h"
|
|
#include "ZoneRow.h"
|
|
#include "MapDef.generated.h"
|
|
|
|
/**
|
|
* FZeusMapSpawn
|
|
*
|
|
* Ponto de spawn dentro de um mapa, identificado por `Tag`. Usado pelo
|
|
* server pra decidir onde materializar um char quando ele entra:
|
|
* - Char sem posicao salva: usa spawn com tag="default"
|
|
* - Char saindo de raid: pode pedir tag="raid_return"
|
|
* - Char morto: pode pedir tag="graveyard"
|
|
*
|
|
* ZeusEditorTools pode auto-popular o `Spawns[]` do FZeusMapDef varrendo
|
|
* todos APlayerStart (ou ator custom AZeusMapSpawnPoint) presentes no
|
|
* `.umap` do `ClientLevel` — botao "Sync from level".
|
|
*/
|
|
USTRUCT(BlueprintType)
|
|
struct ZMMO_API FZeusMapSpawn
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
/** Identificador do spawn (ex.: "default", "raid_return"). "default" e obrigatorio. */
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Spawn")
|
|
FName Tag = TEXT("default");
|
|
|
|
/** Posicao em cm (espaco do mundo). */
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Spawn")
|
|
FVector PositionCm = FVector::ZeroVector;
|
|
|
|
/** Yaw em graus. */
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Spawn")
|
|
float YawDeg = 0.f;
|
|
};
|
|
|
|
/**
|
|
* FZeusMapDef
|
|
*
|
|
* Definicao canonica de um mapa do MMO. Linha da DT_Maps no cliente.
|
|
* Exportada para `Server/ZeusServerEngine/Config/DataTables/maps_config.json`
|
|
* pelo plugin ZeusEditorTools — o JSON e a fonte que o WorldServer consome.
|
|
*
|
|
* Identidade:
|
|
* - `MapId` (uint16) e a chave estavel cross-cliente/server. 0 = invalido
|
|
* (detecta bug de leitura de DB / migration esquecida).
|
|
* - RowName na DataTable e o nome interno (ex.: "TestWorld") — usado no
|
|
* exporter como `name` do JSON. Nao duplicamos em campo `Name`.
|
|
*
|
|
* Wire economy:
|
|
* - `S_CHAR_SELECT_OK` envia `mapId` como uint16 (2 bytes) em vez de
|
|
* `mapName` (string), evitando ~10-30 bytes por handoff.
|
|
*/
|
|
USTRUCT(BlueprintType)
|
|
struct ZMMO_API FZeusMapDef : public FTableRowBase
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
/** ID estavel uint16. 0 = invalido. int32 aqui pois UE nao expoe uint16 em UPROPERTY. */
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Map", meta = (ClampMin = "1", ClampMax = "65535"))
|
|
int32 MapId = 0;
|
|
|
|
/** Nome de exibicao localizavel. Aparece em UI/loading screen. */
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Map")
|
|
FText DisplayName;
|
|
|
|
/** Asset do level no cliente. Exporter converte pra string canonica no JSON do server. */
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Map|Level")
|
|
TSoftObjectPtr<UWorld> ClientLevel;
|
|
|
|
/**
|
|
* Pontos de spawn taggeados. Editavel inline na DataTable;
|
|
* ZeusEditorTools pode auto-popular varrendo PlayerStart do .umap.
|
|
* Pelo menos um com Tag="default" e esperado.
|
|
*/
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Map|Spawns")
|
|
TArray<FZeusMapSpawn> Spawns;
|
|
|
|
/** Regras PvP/Safe/Dungeon. Reusa enum de FZoneRow. */
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Map")
|
|
EZoneRules Rules = EZoneRules::PvE;
|
|
|
|
/** Faixa de level recomendada — display only. */
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Map|Display")
|
|
int32 RecommendedLevelMin = 1;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Map|Display")
|
|
int32 RecommendedLevelMax = 99;
|
|
};
|