LSF CabinBrake

Библиотека Locomotive Script Framework
Имя класса LSF_CabinBrake
Файл скрипта lsf_cabinbrake.gs
Тип Базовый класс кабины
Класс данных кабины LSF_CabinDataBrake
Базовые классы -- --

LSF_CabinBrake - Базовый класс для реализации кабины с тормозными кранами №254 и №594/595. Входит в состав Locomotive Script Framework.

Для работы требуется чтобы локомотив предоставлял данные кабины унаследованные от класса LSF_CabinDataBrake

Настройка

Для работы скрипта необходимо выполнить настройку в файле конфигурации кабины Настройки выполняются в контейнере "brake-settings" расположенном в стандартном контейнере "extensions".

Пример части файла конфигурации. Теги содержат значения по умолчанию

extensions{
  
  brake-settings{
    control-brakeunlock                ""
    control-locobrake                  ""
    control-trainbrake                 ""
    control-reducer                    ""
    needle-brakecylinderfront          ""
    needle-brakecylinderback           ""
    needle-mainreservoir               ""
    needle-brakepipe                   ""
    needle-equaliser                   ""
    proxymesh-offset                   ""
    attsound-locobrake                 ""
    attsound-trainbrake                ""
    attsound-epv                       ""
    sound-locobrakechange              ""
    offset-limit                       9
    offset-correct                     0
  }

}
control-brakeunlock
Тип: Строка
Обязательный: Нет
Описание: Наименование контрола кабины который является рукояткой блокировки тормозов. Два состояния: 0 - заблокировано, 1 - разблокировано
Примечание: Если тег не задан, то управление блокировкой через функцию setBrakeUnlock
control-locobrake
Тип: Строка
Обязательный: Нет
Описание: Наименование контрола кабины который является рукояткой локомотивного тормоза №254.
Примечание: Если тег не задан, то управление позицией крана через функцию setBrakeLocoPosition
control-trainbrake
Тип: Строка
Обязательный: Нет
Описание: Наименование контрола кабины который является рукояткой поездного тормоза №594/595.
Примечание: Если тег не задан, то управление позицией крана через функцию setBrakeTrainPosition
control-reducer
Тип: Строка
Обязательный: Нет
Описание: Наименование контрола кабины который является рукояткой редуктора
Примечание: Если тег не задан, то управление давлением редуктора через функцию setBrakeReducer
needle-brakecylinderfront
Тип: Строка
Обязательный: Нет
Описание: Наименование контрола кабины который является стрелкой манометра тормозных цилиндров передней (относительно кабины) телеги
Примечание: Настройки стрелки должны быть рассчитаны на давление в кгс/см2. При отсутствии стрелки или управлением её из другого места, тэг не задавать
needle-brakecylinderback
Тип: Строка
Обязательный: Нет
Описание: Наименование контрола кабины который является стрелкой манометра тормозных цилиндров задней (относительно кабины) телеги
Примечание: Настройки стрелки должны быть рассчитаны на давление в кгс/см2. При отсутствии стрелки или управлением её из другого места, тэг не задавать
needle-mainreservoir
Тип: Строка
Обязательный: Нет
Описание: Наименование контрола кабины который является стрелкой манометра главного резервуара
Примечание: Настройки стрелки должны быть рассчитаны на давление в кгс/см2. При отсутствии стрелки или управлением её из другого места, тэг не задавать
needle-brakepipe
Тип: Строка
Обязательный: Нет
Описание: Наименование контрола кабины который является стрелкой манометра тормозной магистрали
Примечание: Настройки стрелки должны быть рассчитаны на давление в кгс/см2. При отсутствии стрелки или управлением её из другого места, тэг не задавать
needle-equaliser
Тип: Строка
Обязательный: Нет
Описание: Наименование контрола кабины который является стрелкой манометра уравнительного резервуара
Примечание: Если нет перемещения ручки крана №254 тэг не задавать
proxymesh-offset
Тип: Строка
Обязательный: Нет
Описание: Наименование сетки кабины которая является посредником для анимации вертикального перемещения ручки крана №254
Примечание: звук должен находиться в активе кабины. Нужен для перемещения в буфер
attsound-locobrake
Тип: Строка
Обязательный: Да
Описание: Наименование точки в сетки кабины, которая будет источником звука крана №254
attsound-trainbrake
Тип: Строка
Обязательный: Да
Описание: Наименование точки в сетки кабины, которая будет источником звука крана №594/595
attsound-epv
Тип: Строка
Обязательный: Да
Описание: Наименование точки в сетки кабины, которая будет источником звука выпуска воздуха ЭПК
sound-locobrakechange
Тип: Строка
Обязательный: Да
Описание: путь к файлу звука перемещения крана №254
Примечание: звук должен находиться в активе кабины. Нужен для перемещения в буфер
offset-limit
Тип: Целое число
Обязательный: Нет
Описание: Расстояние в мм на которое происходит смещение ручки крана
offset-correct
Тип: Целое число
Обязательный: Нет
Описание: Корректировочное смещение в мм

Подключение и инициализация

Для подключения необходимо добавить ссылку на Locomotive Script Framework в контейнер script-include-table конфигурационного файла актива со скриптом кабины (кабина или библиотека скриптов)

Пример

script-include-table{
  locomotivescriptframework   <kuid:151055:60067>   
}

Должен быть указан актуальный kuid номер

К скрипту кабины необходимо подключить файл базового скрипта "lsf_cabinbrake.gs", а так же унаследовать класс кабины от класса LSF_CabinBrake множественным наследованием. Класс кабины должен обязательно наследоваться от класса Cabin игры или его потомков.

Пример типового скрипта

include "cabin.gs"
include "lsf_cabinbrake.gs"

class mycabin isclass Cabin, LSF_CabinBrake
{

  public void Init(Asset myasset){
    me.initCabinBrake();
  }

  public void Attach(GameObject obj){
    me.attachCabinBrake(cast<Locomotive>obj);
  }

  public void UserSetControl(CabinControl control, float value){
    me.userSetControlBrake(control, value);
  }

  void Update(void){
    me.updateCabinBrake(); //Здесь один из необходимых вариантов функции updateCabinBrake
  }

};

Интерфейс

initCabinBrake

Выполняет инициализацию скрипта c тормозными кранами

final void initCabinBrake(void)
Примечание: Эта функция обязательно должна быть вызвана 1 раз в Init скрипта кабины.

attachCabinBrake

Выполняет подключение локомотива к скрипту

final void attachCabinBrake(Locomotive loco)
Аргументы:
  • loco - ссылка на локомотив к которому будет привязана кабина.
Примечание: Эта функция обязательно должна вызываться в Attach кабины

userSetControlBrake

Обновляет состояние контролов

final void userSetControlAGS8(CabinControl control, float value)
Аргументы:
  • control - Контрол, который изменил своё состояние
  • value - Новое значение состояния контрола
Примечание: Эта функция обязательно должна вызываться в UserSetControl кабины

updateCabinBrake

Выполняет обновление состояния скрипта

final void updateCabinBrake(float mainReservoirPressure, float brakePipePressure, float equalizerPressure, float brakeCylinderPressure, bool epvFailure)
Аргументы:
  • mainReservoirPressure - Текущее давление в главном резервуара в кгс/см2
  • brakePipePressure - Текущее давление в тормозной магистрали в кгс/см2
  • equalizerPressure - Текущее давление в уравнительном резервуара в кгс/см2
  • brakeCylinderPressure - Текущее давление в тормозных цилиндрах в кгс/см2
  • epvFailure - Указатель, что сорван ЭПК: true - ЭПК сорван; false - ЭПК не сорван
Примечание: Не рекомендуется использовать для кабины унаследованной от LSF_CabinALSN

updateCabinBrake

Выполняет обновление состояния скрипта

final void updateCabinBrake(float mainReservoirPressure, float brakePipePressure, float equalizerPressure, float brakeCylinderPressure)
Аргументы:
  • mainReservoirPressure - Текущее давление в главном резервуара в кгс/см2
  • brakePipePressure - Текущее давление в тормозной магистрали в кгс/см2
  • equalizerPressure - Текущее давление в уравнительном резервуара в кгс/см2
  • brakeCylinderPressure - Текущее давление в тормозных цилиндрах в кгс/см2
Примечание: Если кабина унаследована от LSF_CabinALSN, то состояние срыва ЭПК определяется автоматически

updateCabinBrake

Выполняет обновление состояния скрипта

final void updateCabinBrake(bool epvFailure)
Аргументы:
  • epvFailure - Указатель, что сорван ЭПК: true - ЭПК сорван; false - ЭПК не сорван
Примечание: Не рекомендуется использовать для кабины унаследованной от LSF_CabinALSN

updateCabinBrake

Выполняет обновление состояния скрипта

final void updateCabinBrake(void)
Примечание: Если кабина унаследована от LSF_CabinALSN, то состояние срыва ЭПК определяется автоматически

getBrakeLocoPosition

Получение позиции локомотивного тормоза №254

public final int getBrakeLocoPosition(void)
Возвращает: Одна из констант LOCOBRAKE

getBrakeTrainPosition

Получение позиции крана машиниста №594/595

public final int getBrakeTrainPosition(void)
Возвращает: Одна из констант TRAINBRAKE

checkBrakeIsUnlock

Проверяет, снята ли блокировка с тормозов

public final bool checkBrakeIsUnlock(void)
Возвращает: true - тормоза разблокированы; false - тормоза заблокированны

getBrakeReducer

Получение значения давления установленного редуктором

public final float getBrakeReducer(void)
Возвращает: значение давления заданное редуктором в кгс/см2

getBrakeUnlockAvailableState

Получение состояния доступности изменения состояния блокировки тормозов

public final bool getBrakeUnlockAvailableState(void)
Возвращает: true - блокировка и разблокировка доступны; false - блокировка и разблокировка недоступны

setBrakeLocoPosition

Установка положения ручки локомотивного тормоза №254

public final void setBrakeLocoPosition(int position)
Аргументы:
  • position - Значение одной из LOCOBRAKE
Примечание: Не рекомендуется использовать если ручки крана заданы через конфиг

setBrakeTrainPosition

Установка положения ручки крана машиниста №594/595

public final void setBrakeTrainPosition(int position)
Аргументы:
  • position - Значение одной из TRAINBRAKE
Примечание: Не рекомендуется использовать если ручки крана заданы через конфиг

setBrakeUnlock

Установка состояния блокировки тормозов

public final void setBrakeTrainPosition(bool unlock)
Аргументы:
  • unlock - Состояние блокировки тормозов: true - тормоза разблокированы: false - тормоза заблокированы
Примечание: Не рекомендуется использовать если ручки крана заданы через конфиг

setBrakeReducer

Установка значения давления редуктора

public final void setBrakeReducer(float reducer)
Аргументы:
  • reducer - Значение давления редуктора в кгс/см2
Примечание: Не рекомендуется использовать если ручки крана заданы через конфиг

setBrakeUnlockAvailableState

Установка состояния возможности изменения состояния блокировки тормозов

public final void setBrakeUnlockAvailableState(bool state)
Аргументы:
  • state - true - блокировка и разблокировка доступны; false - блокировка и разблокировка недоступны

setBrakeMainResevoirNeedleBeating

Установка предела биения стрелки ГР

public final void setBrakeMainResevoirNeedleBeating(float beating)
Аргументы:
  • beating - Предел биения стрелки ГР в кгс/см2
Примечание: Биение стрелки возможна только в сторону уменьшения

cabinBrakeControlValue2LocoBarkePosition

Преобразование значений контрола крана локомотивного тормоза №254 в позиции крана

int cabinBrakeControlValue2LocoBarkePosition(float value)
Аргументы:
  • value - значение контрола крана локомотивного тормоза №254
Возвращает: Значение одной из констант LOCOBRAKE
Примечание: Вызывается автоматически (если краны прописаны в конфиге). Необходимо переопределить в производном классе

cabinBrakeControlValue2TrainBarkePosition

Преобразование значений контрола крана машиниста №594/595 в позиции крана

int cabinBrakeControlValue2TrainBarkePosition(float value)
Аргументы:
  • value - значение контрола крана машиниста №954/595
Возвращает: Значение одной из констант TRAINBRAKE
Примечание: Вызывается автоматически (если краны прописаны в конфиге). Необходимо переопределить в производном классе

cabinBrakeLocoBarkePosition2ControlValue

Преобразование позицию крана локомотивного тормоза №254 в значение контрола

float cabinBrakeLocoBarkePosition2ControlValue(int position)
Аргументы:
  • position - Значение одной из констант LOCOBRAKE
Возвращает: Значение контрола крана соответствующее позиции
Примечание: Вызывается автоматически (если краны прописаны в конфиге). Необходимо переопределить в производном классе

cabinBrakeTrainBarkePosition2ControlValue

Преобразование позицию крана машиниста №594/595 в значение контрола

float cabinBrakeTrainBarkePosition2ControlValue(int position)
Аргументы:
  • position - Значение одной из констант TRAINBRAKE
Возвращает: Значение контрола крана соответствующее позиции
Примечание: Вызывается автоматически (если краны прописаны в конфиге). Необходимо переопределить в производном классе

onCabinBrakeUnlockChanged

Обработчик события изменения состояния блокировки тормозов

void cabinBrakeTrainBarkePosition2ControlValue(void)
Примечание: Вызывается автоматически. Необходимо переопределить в производном классе

onCabinBrakeLocoBrakeChanged

Обработчик события изменения положения крана локомотивного тормоза №254

void onCabinBrakeLocoBrakeChanged(void)
Примечание: Вызывается автоматически. Необходимо переопределить в производном классе

onCabinBrakeTrainBrakeChanged

Обработчик события изменения положения крана машиниста №594/595

void onCabinBrakeTrainBrakeChanged(void)
Примечание: Вызывается автоматически. Необходимо переопределить в производном классе

onCabinBrakeReducerChanged

Обработчик события изменения значения давления редуктора

void onCabinBrakeReducerChanged(void)
Примечание: Вызывается автоматически. Необходимо переопределить в производном классе

onCabinBrakeLocoBrakeBufferStatusChanged

Обработчик события перевода крана локомотивного тормоза №254 в положение "БУФЕР" и возврата из него

void onCabinBrakeLocoBrakeBufferStatusChanged(void)
Примечание: Вызывается автоматически. Необходимо переопределить в производном классе

Константы

Константы LOCOBRAKE описывают позиции локомотивного тормоза №254

Константа Значение Описание
LOCOBRAKE_RELEASE 0 Отпуск тормоза
LOCOBRAKE_POSITION_1 1 Первая позиция
LOCOBRAKE_POSITION_2 2 Вторая позиция
LOCOBRAKE_POSITION_3 3 Третья позиция
LOCOBRAKE_POSITION_4 4 Четвертая позиция

Константы TRAINBRAKE описывают позиции крана машиниста №594/595

Константа Значение Описание
TRAINBRAKE_POSITION_I 0 Отпуск
TRAINBRAKE_POSITION_II 1 Поездное положение
TRAINBRAKE_POSITION_III 2 Перекрышка без питания
TRAINBRAKE_POSITION_IV 3 Перекрышка с питанием
TRAINBRAKE_POSITION_VA 4 Торможение медленным темпом
TRAINBRAKE_POSITION_V 5 Служебное торможение
TRAINBRAKE_POSITION_VI 6 Экстренное торможение

Сетка посредник

Необходима для реализации визуального перемещения ручки локомотивного тормоза №254 в вертикальной плоскости. Представляет собой сетку-пустышку с точкой, на которую крепиться сетка ручки крана.