Для примера: скрипт таймера SecondsTimer.as

/* – — – — – — – — – — – — – — – — – — – — – — – — —

Этот пример демонстрирует, как функция сценария Now () может использоваться для поддержки произвольного числа таймеров с разрешением 1 с.

Чтобы использовать таймеры в вашем собственном скрипте, просто включите этот файл в ваш скрипт, используя директиву #include.

Затем создайте экземпляр класса «SecondsTimer’ для каждого необходимого вам таймера. Обратите внимание, что функции таймера содержат отладочный код, который печатает сообщения в окне трассировки MemBrain.

Вы можете удалить соответствующий код, если не хотите, чтобы какие-либо сообщения печатались функциями таймера.

– — – — – — – — – — – — – — – — – — – — – — – — – —

*/


/* Глобальная переменная для подсчета экземпляров класса. Используется только для генерации отладочных сообщений.

AngelScript пока не поддерживает статические члены класса. Вот почему это должна быть глобальная переменная.

*/

uint gSecondsTimerInstanceCount = 0;


class SecondsTimer

(

// Constructor without arguments

SecondsTimer ()

(

mId = gSecondsTimerInstanceCount++;

mReferenceTime = Now ();

)


// Constructor with initial elapse time [s] (начальное время истечения)

SecondsTimer (uint seconds)

(

mId = gSecondsTimerInstanceCount++;

// Получить текущее время, добавить прошедшие секунды и сохранить полученное время.

int now = Now ();


mReferenceTime = now + seconds;


// Только для целей отладки:

/*

string timeStr;

TimeToString (now, timeStr);

Trace (timeStr);

TimeToString (mReferenceTime, timeStr);

Trace (» Timer " + mId + " started. Will elapse at:" + timeStr + "\n»);

строка timeStr;

TimeToString (now (сейчас), timeStr);

Trace (Трассировка) (timeStr);

TimeToString (mReferenceTime, timeStr);

Trace («Таймер» + mId + «запущен. Пройдет по адресу (закончится):" + timeStr + "\ n»);

*/

)


~SecondsTimer ()

(

gSecondsTimerInstanceCount – ;

)


// Проверяем, истек ли таймер

bool IsElapsed ()

(

int now = Now ();

bool elapsed = now> = mReferenceTime;

return elapsed;

)


// Запускаем таймер по истечении заданного времени

void Start (uint seconds)

(

// Получить текущее время, добавить прошедшие секунды и сохранить полученное время.

int now = Now ();

mReferenceTime = now + seconds;

)


// Запускаем таймер для подсчета секунд

void Start ()

(

// Получить текущее время, установить время истечения на то же значение.

int now = Now ();

mReferenceTime = now;

)


// Return the elapsed seconds since the timer was started

int SecondsSinceStart ()

(

// Получить текущее время

return Now () – mReferenceTime;

)


// Контрольное время для этого таймера

int mReferenceTime;

// ID таймера для этого таймера (необходим только для отладочных сообщений)

uint mId;

) ;

СкороКнижный режим