quinta-feira, 20 de outubro de 2011

Usando Timers em UnrealScript

Timers são contadores existentes na classe Actor. Para cada Timer deve haver uma função associada que será executada quando a contagem chegar ao fim.

Vamos iniciar com um exemplo bem simples de Timer que conta 3 segundos e depois explode :)
class SimplesTimer extends Actor
      placeable;

event PostBeginPlay()
{
    SetTimer(3);
}
function Timer()
{    
    //o comando abaixo escreve um texto na tela
    worldinfo.game.broadcast(self, "KABOOM");
}

A função SetTimer() recebe como parâmetro a quantidade de segundos que deve contar. Quando esse tempo acabar será executada uma função com o nome de Timer() e depois disso este Timer será encerrado.

A função SetTimer() possui alguns parâmetros opcionais como pode ser visto abaixo:

function SetTimer(float InRate, optional bool inbLoop, optional Name inTimerFunc='Timer', optional Object inObj)

Descrição dos parâmetros:
  • InRate: Tempo de execução do Timer em segundos;
  • inbLoop: Variável booleana (true ou false) que indica se o Timer deve ser repetido;
  • inTimerFunc: Nome da função que o Timer deve chamar quando acabar a contagem;
  • inObj: Nome do objeto que contém a função que será chamada;
    No próximo exemplo vamos fazer um Timer que criará um inimigo no cenário a cada 10 segundos. Quando já tiverem sido criados 4 inimigos esse Timer será desativado.
    class TesteTimer extends Actor
          placeable;
    
    var int numInimigos;    
        
    event PostBeginPlay()
    {
        SetTimer(10, true, 'criarInimigo');    
        numInimigos = 0;    
    }
    function criarInimigo()
    {
        local Pawn inimigo;
        inimigo = spawn(class 'UTGame.UTPawn'); 
        inimigo.SpawnDefaultController();
        
        numInimigos++;    
        if( numInimigos >= 4 )
        {
            ClearTimer('criarInimigo');        
        }    
    }
    

    Para testar este código basta colocar no cenário um objeto dessa classe TesteTimer. Os inimigos serão criados na posição em que estiver o TesteTimer.

    Existem outras funções relacionadas a Timers, segue abaixo a descrição de algumas delas:
    • function ClearTimer(optional Name inTimerFunc='Timer', optional Object inObj): Desativa o Timer informado.
    • function ClearAllTimers(optional Object inObj): Desativa todos os Timers.
    • function PauseTimer( bool bPause, optional Name inTimerFunc='Timer', optional Object inObj ): Pausa/Despausa o Timer informado.
    • function bool IsTimerActive(optional Name inTimerFunc='Timer', optional Object inObj): Verifica se o Timer informado está ativo.
    • function float GetTimerCount(optional Name inTimerFunc='Timer', optional Object inObj): Retorna o tempo que já passou no Timer.
    • function float GetTimerRate(optional name TimerFuncName = 'Timer', optional Object inObj): Retorna o tempo de execução do Timer.
    • function float GetRemainingTimeForTimer(optional name TimerFuncName = 'Timer', optional Object inObj): Retorna o tempo restante do Timer.

    Nenhum comentário:

    Postar um comentário