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 e 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.