Сферы влияния¶
Ради синхронизации в мультиплеере и в записанных демо все классы в мире принадлежат той или иной "сфере влияния" внутри движка — к миру, к интерфейсу или к общим данным. В оригинале эта система называется "Scoping", её также можно перевести как "принадлежность".
play¶
Любой объект непосредственно игрового мира — актор, Thinker, LineTracer и так далее.
Синтаксис объявления для методов (уточнить: кейворд можно ставить и до, и после объявления):
Синтаксис объявления для класса:
Наследовать от класса, принадлежащего игровому миру, класс другой области влияния нельзя.
ui¶
Любой объект пользовательского интерфейса. Не записывается в демо и не передаётся кому-либо в мультплеере.
Синтаксис объявления для методов (уточнить: кейворд можно ставить и до, и после объявления):
Синтаксис объявления для класса:
Также, как и в play, изменить область влияния при наследовании нельзя.
data¶
Всё, что не относится к предыдущим двум пунктам; просто некие нейтральные данные.
Синтаксис объявления для методов ("очищаем" предыдущую назначенную область влияния):
Любой класс, не наследованный от play или ui, по умолчанию принадлежит сфере влияния данных — поэтому ключевого слова для классов нет. От класса данных можно наследовать в обе других сферы влияния — и в play, и в ui.
Таблица взаимодействий¶
Если не указано чего-либо иного явно, то все методы внутри класса с модификатором "play" будут относиться к игровому миру; все методы внутри класса с модификатором "ui" — к интерфейсу; все методы в классах без модификаторов — соответственно, к данным.
Далее представлена таблица возможности взаимодействия разных сфер влияния друг с другом. При "Полном доступе" можно делать с целевым объектом всё, что может осуществить язык: читать и записывать в переменные, вызывать методы, вызывать конструкторы. Если стоит "Только чтение" — можно только считывать переменные, без записи в них и без возможности вызова методов.
…Вызывается play |
…Вызывается ui |
…Вызывается data |
|
|---|---|---|---|
Из-под play… |
Полный доступ | - | Полный доступ |
Из-под ui… |
Только чтение | Полный доступ | Полный доступ |
Из-под data… |
Только чтение | - | Полный доступ |
Из-под play:
- Можно свободно читать/записывать и в
play, и вdata; - Не удастся сделать хоть что-нибудь с пользовательским интерфейсом.
Из-под ui:
- Свободное чтение/запись в
uiи вdata; - Можно только видеть игровую вселенную (но не вызывать
play-методы!).
Из-под data:
- Нет ограничений на чтение/запись в свою область влияния — в
data; - Игровую вселенную можно лишь видеть (вызывать
play-методы также нельзя); uiнедоступен вовсе.
По той же причине невозможно создавать классы, принадлежащие к той или иной сфере влияния, внутри не взаимодействующих с ней сфер (к примеру, play из-под ui).
(Эта же таблица на ZDoom Wiki.)