Класс Object (базовый класс)¶
Класс, от которого в ZScript неявно наследуется любой (вообще любой) другой класс.
Поля¶
"true", если объект может быть удалён автоматическим сборщиком мусора. Обычно устанавливается сам, через вызов "Destroy()". В подавляющем большинстве случаев проверять его нет смысла.
Статические методы¶
Возвращает название текущего уровня сложности (например, "Hurt me plenty").
Позволяет узнать параметры типа int или bool, принятые на данном уровне сложности. Список констант, задаваемых в качестве параметра, можно узнать здесь.
Позволяет узнать параметры типа double, принятые на данном уровне сложности. Список констант, задаваемых в качестве параметра, можно узнать здесь.
Возвращает позицию случайного Deathmatch-старта и его порядковый номер.
Возвращает позицию старта игрока в кооперативе и его поряядковый номер.
native static void S_Sound (Sound sound_id, int channel, float volume = 1, float attenuation = ATTN_NORM);
Проигрывает указанный звук.
Приостанавливает музыку и все звуки на уровне.
Возобновляет музыку и звуки.
native static bool S_ChangeMusic(String music_name, int order = 0, bool looping = true, bool force = false);
Изменяет музыку на уровне.
Получает длину звука в секундах (появилась в GZDoom v3.3.0).
Конвертирует [0.0; 360.0) в диапазон uint [0; 4,294,967,295].
Устанавлиавет громкость музыки.
Возвращает количество внутренних тактов виртуальной машины. Асинхронен.
Вызывает пользовательское исключение с вылетом в консоль.
Другие методы¶
Уничтожает объект при вызове (устанавливает флаг bDestroyed и делает ещё несколько невидимых операций). До следующего такта сборщика мусора указатель на объект будет невалидным!
Переопределяемый метод, вызываемый прямо перед уничтожением объекта их памяти.
Работа с классами¶
Основная статья: 2.07.
Также базовый класс имеет несколько методов, не указанных в ZScript-объявлении из-за некоторых ограничений движка. Но они крайне полезны:
// Возвращает указатель на класс.
native class<Object> GetClass();
// Возвращает строковое название класса.
native String GetClassName();
// Возвращает указатель на родительский класс. Для всех, кроме самого класса
//"Object", возвращаемое значение не будет равно "NULL".
native class<Object> GetParentClass();
Для того, чтобы проверить принадлежность объекта одному определённому классу, необходимо проверять равенство "GetClass()" названию класса; для того, чтобы проверить принадлежность объекта к цепочке наследований, можно использовать ключевое слово "is".
class Actor {}
class DoomImp: Actor {}
class DarkDoomImp: Actor {}
// <...>
Actor testactor; // Положим, указатель на него не NULL.
DarkDoomImp testimp; // И на него.
// Здесь будет "0"/"false" (класс не точно такой же):
console.printf( "testimp.GetClass() == DoomImp.GetClass(): " .. ( testimp.GetClass() == testactor.GetClass() ) );
// А здесь — "1"/"true" (так как одна цепь наследования):
console.printf( "testimp.GetClass() is 'Actor': " .. ( testimp.GetClass() is 'Actor' ) );