terça-feira, 9 de setembro de 2025

UEFN Verse: Enum (enumeração)

A Enumeração (Enum) é usada para criar um novo tipo de dado cujo possíveis valores são restritos ao conjunto de constantes definidas na enumeração.

No exemplo abaixo, difficulty é uma Enumeração com cinco possíveis valores.

difficulty := enum{Story, Easy, Normal, Hard, Expert}

Para definir uma constante do tipo difficulty que pode ser modificada no editor, faça assim:

@editable
Difficulty : difficulty = difficulty.Normal


Uma Enumeração pode ser closed ou open. A Enumeração difficulty que criamos é closed por que este é o padrão. Uma Enumeração closed não pode ser modificada depois que a ilha (mapa ou experiência) foi publicada no Fortnite, por isso ela deve ser usada somente quando você tem certeza de que a Enumeração não vai mudar.

Para criar uma Enumeração open, use o especificador <open> como mostra o código abaixo que define alguns estados que serão usados por um guarda NPC:

guard_states := enum<open>{Idle, Patrolling, Searching, Attacking}


Vamos criar um dispositivo no UEFN para demonstrar o uso da Enumeração. Em qualquer projeto UEFN, abra o Verse Explorer, clique com o botão-direito no nome do projeto e escolha a opção Add new Verse file to project.

Em Device Name coloque enum_device clique no botão Create Empty.

Copie o código Verse abaixo para o dispositivo enum_device:

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

difficulty := enum{Story, Easy, Normal, Hard, Expert}

enum_device := class(creative_device):

    @editable
    Difficulty : difficulty = difficulty.Normal 

    var EnemyAttackModifier : float = 1.0

    OnBegin<override>()<suspends>:void=

        case(Difficulty):
            difficulty.Story => 
                set EnemyAttackModifier = 0.5
                Print("Enemy Attack Modifier of 50% in Story Difficulty.")

            difficulty.Easy =>
                set EnemyAttackModifier = 0.75
                Print("Enemy Attack Modifier of 75% in Easy Difficulty.")

            difficulty.Normal =>
                set EnemyAttackModifier = 1.0
                Print("Enemy Attack Modifier of 100% in Normal Difficulty.")

            difficulty.Hard =>
                set EnemyAttackModifier = 1.25
                Print("Enemy Attack Modifier of 125% in Hard Difficulty.")

            difficulty.Expert =>
                set EnemyAttackModifier = 1.5
                Print("Enemy Attack Modifier of 150% in Expert Difficulty.")


Este exemplo irá atribuir valores diferentes para a variável EnemyAttackModifier conforme a dificuldade selecionada no enum_device.

Observe que o case não contém o bloco padrão "_". Ele não é obrigatório quando a Enumeração usada no case é closed e todos os valores da Enumeração possuem blocos de código.

Salve o arquivo e compile o código Verse usando a opção Verse > Build Verse Code do menu do UEFN. 

Acesse o Content Drawer e adicione o dispositivo enum_device ao nível. Selecione o enum_device no nível e na aba Details, clique no dropdown do campo Difficulty para selecionar um dos valores da Enumeração.



Salve o nível e clique no botão Launch Session para carregar o nível no Fortnite.  Após iniciar a partida no Fortnite, pressione a tecla Tab e selecione a aba Registro para visualizar o log com a mensagem escrita conforme a dificuldade selecionada.