Neste artigo vamos criar a 1ª versão do dispositivo Verse que será responsável por controlar nosso jogo. No aprendizado de programação é importante começar com pequenos blocos de código e tentar entender todos os elementos que estão sendo usados.
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 round_based_device e clique no botão Create para usar o código do template.Se você tiver dúvida sobre a criação de um arquivo Verse, eu recomendo a leitura deste artigo da Parte I:
Criando o primeiro dispositivo Verse
Adicione uma constante com o atributo @editable para referenciar o End Game device e um array para referenciar as Capture Areas como mostra o código abaixo:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
round_based_device := class(creative_device):
@editable
EndGameDevice : end_game_device = end_game_device{}
@editable
CaptureAreas: []capture_area_device = array{}
Se você não sabe o que são arrays, leia este artigo da Parte I:
Armazenando os Item Spawners em um Array
Crie uma função com o nome AreaCaptured. Esta função será executada quando o jogador capturar uma área. Para que isso ocorra, vamos registrar a função no evento AreaIsScoredEvent da Capture Area device. Nesta 1ª versão, a função AreaCaptured irá apenas ativar o End Game device que finalizará o round.
Remova o código do template que está na função OnBegin e adicione o código abaixo:
OnBegin<override>()<suspends>:void=
for (Area : CaptureAreas):
Area.AreaIsScoredEvent.Subscribe(AreaCaptured)
AreaCaptured(Agent:agent):void=
EndGameDevice.Activate(Agent)
Na função OnBegin temos um loop for que é usado para iterar nos elementos do array CaptureAreas e registrar a função AreaCaptured no evento AreaIsScoredEvent de cada uma das Capture Areas.
O código Verse da 1ª versão do round_based_device fica assim:
# v0.1
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
round_based_device := class(creative_device):
@editable
EndGameDevice : end_game_device = end_game_device{}
@editable
CaptureAreas: []capture_area_device = array{}
OnBegin<override>()<suspends>:void=
for (Area : CaptureAreas):
Area.AreaIsScoredEvent.Subscribe(AreaCaptured)
AreaCaptured(Agent:agent):void=
EndGameDevice.Activate(Agent)
Salve o arquivo e compile o código Verse usando a opção Verse > Build Verse Code do menu do UEFN.
Para adicionar o nosso dispositivo Verse ao nível, acesse o Content Drawer e a pasta CreativeDevices:
Arraste o round_based_device e solte-o no nível no local indicado na imagem abaixo. Este dispositivo Verse também será útil como proteção contra os tiros dos guardas.
Selecione o round_based_device no nível. Na aba Details selecione a referência do EndGameDevice e adicione 5 elementos no array CaptureAreas. Selecione as referências das Capture Areas.
Salve o nível e inicie a sessão. Capture uma das áreas para encerrar o round atual. No final do Round 5 será exibida a tela de fim de jogo.
No próximo artigo vamos aprender sobre o dispositivo Round Settings.