Wiki

Clone wiki

ALSN Provider / alsn_circuitrepeater

ALSN_CircuitRepeater

Базовый класс для реализации специального типа сигнальной точки "Рельсовая цепь повторителя" типа: ALSN_Provider.TYPE_CIRCUITREPEATER (смотри ALSN_Provider). Является наследником класса ALSN_Provider

Подключение

include "alsn_circuitrepeater.gs"

Интерфейс класса

class ALSN_CircuitRepeater isclass Trackside, ALSN_Provider
{

  public bool Enabled(void);

  public Signal ControlSignal(void);

  public ALSN_Provider ControlProvider(void);

};

Описание интерфейса

Enabled

public bool Enabled(void);
* Описание: Возвращает значение, указывающее, работает ли повторитель * Возвращает: Значение true, если повторитель работает, в противном случае - значение false * Реализация: Эта функция должна быть реализована в классе наследнике, реализующем функционал повторителя. * Заметка: Система дешифровки должна пропускать повторитель, который возвращает false.

ControlSignal

public Signal ControlSignal(void);
* Описание: Возвращает светофор, с которым связан повторитель. * Возвращает: Объект Signal, представляющий светофор с которым связан повторитель, или null, если светофор отсутствует. * Реализация: Эта функция должна быть реализована в классе наследнике, реализующем функционал повторителя.

ControlProvider

public ALSN_Provider ControlProvider(void);
* Описание: Возвращает провайдер с которым связан повторитель * Возвращает: Объект ALSN_Provider, с которым связан повторитель. * Реализация: Эта функция должна быть реализована в классе наследнике, реализующем функционал повторителя. * Заметка: Функция всегда должна возвращать провайдер, для которого выполняется повторение. null не допускается.

Реализация

Для реализации повторителя необходимо унаследовать от него свой класс. Например:

class MyRepeater isclass ALSN_CircuitRepeater
{
    //Здесь реализация функционала
};
Так же, необходимо реализовать в классе наследнике все необходимые функции интерфейса, в том числе функции ALSN_Provider, кроме следующих функций:

  • public int GetALSNTypeSignal(void);

Так как они реализованы в базовом классе повторителе

Получение провайдера в дешифраторе

Для получение данных с провайдера в реализации АЛСН или КЛУБ необходимо приводить MapObject объекты получаемые из GSTrackSearch к классу повторителя. Так как класс повторителя не является наследником MapObject, необходимо выполнять преобразование через object.

ALSN_CircuitRepeater repeater = cast<ALSN_CircuitRepeater>((object)mapobject);

Updated