Для примера: скрипт таймера 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;
) ;