Перейти к содержанию

Класс Object (базовый класс)

Класс, от которого в ZScript неявно наследуется любой (вообще любой) другой класс.

Поля

native bool bDestroyed;

"true", если объект может быть удалён автоматическим сборщиком мусора. Обычно устанавливается сам, через вызов "Destroy()". В подавляющем большинстве случаев проверять его нет смысла.

Статические методы

native static String G_SkillName();

Возвращает название текущего уровня сложности (например, "Hurt me plenty").

native static int G_SkillPropertyInt(int p);

Позволяет узнать параметры типа int или bool, принятые на данном уровне сложности. Список констант, задаваемых в качестве параметра, можно узнать здесь.

native static double G_SkillPropertyFloat(int p);

Позволяет узнать параметры типа double, принятые на данном уровне сложности. Список констант, задаваемых в качестве параметра, можно узнать здесь.

native static vector3, int G_PickDeathmatchStart();

Возвращает позицию случайного Deathmatch-старта и его порядковый номер.

native static vector3, int G_PickPlayerStart(int pnum, int flags = 0);

Возвращает позицию старта игрока в кооперативе и его поряядковый номер.

native static void S_Sound (Sound sound_id, int channel, float volume = 1, float attenuation = ATTN_NORM);

Проигрывает указанный звук.

native static void S_PauseSound (bool notmusic, bool notsfx);

Приостанавливает музыку и все звуки на уровне.

native static void S_ResumeSound (bool notsfx);

Возобновляет музыку и звуки.

native static bool S_ChangeMusic(String music_name, int order = 0, bool looping = true, bool force = false);

Изменяет музыку на уровне.

native static float S_GetLength(Sound sound_id);

Получает длину звука в секундах (появилась в GZDoom v3.3.0).

native static uint BAM(double angle);

Конвертирует [0.0; 360.0) в диапазон uint [0; 4,294,967,295].

native static void SetMusicVolume(float vol);

Устанавлиавет громкость музыки.

native static uint MSTime();

Возвращает количество внутренних тактов виртуальной машины. Асинхронен.

native vararg static void ThrowAbortException(String fmt, ...);

Вызывает пользовательское исключение с вылетом в консоль.

Другие методы

native virtualscope void Destroy();

Уничтожает объект при вызове (устанавливает флаг bDestroyed и делает ещё несколько невидимых операций). До следующего такта сборщика мусора указатель на объект будет невалидным!

virtual virtualscope void OnDestroy() {}

Переопределяемый метод, вызываемый прямо перед уничтожением объекта их памяти.

Работа с классами

Основная статья: 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' ) );