При всей мощи скриптового движка Trainz, в нём часто не хватает различных простых функций. Так, например, напрочь отсутствует оператор возведения в степень. Или нет полезных функций работы со строками, которые позволяли бы откусывать от строки справа, слева или из середины. А ведь все эти инструменты вполне могут пригодиться при решении той или иной задачи.
В своё время, я сделал для себя библиотеку, которая собрала небольшой набор инструментов, которые я часто использую в своих проектах. Их можно было бы включать в код каждого проекта, но на мой взгляд, гораздо правильнее вынести их в библиотеку, ибо используются они постоянно.
Здесь бы я хотел поделиться описанием классов для всех желающих, ибо реализация скрыта от глаз под gse
Библиотека находится на ДЛС <kuid2:151055:60038:3>
Так же можно скачать здесь
Библиотека по ссылке устанавливается как Original
Для использования библиотеки её необходимо подключить через script-include-table.
Файл: string.gs
Содержит статический класс: String
Предназначен для работы со строками. Пока содержит только одну функцию: Left
public final void Left(string str, int length)
Функция урезает переданную строку до указанного числа знаков слева.
Аргументы:
- str - Строка, которая должна быть урезана и её результат после отработки функции
- length - Количество знаков сначала строки, которое необходимо оставить
Файл: logic.gs
Содержит статический класс: Logic
Класс содержит функции для логических и бинарных операций
Функция: SetStat
public final int SetStat(int currStat, int stat, bool value)
Позволяет изменять значения битовых ключей в группе
Аргументы:Возвращает: Изменённую группу ключей
- currStat - текущая группа ключей
- stat - бинарная маска ключей которые необходимо изменить
- value - устанавливаемое состояние
Функция: GetStat
public final bool GetStat(int сurrStat, int stat)
Позволяет определить состояние ключей в группе по указанной маске. Функция вернёт true, если все ключи в маске будут присутствовать
Возвращает: true - если все ключи в маске установлены, иначе false
- currStat - текущая группа ключей
- stat - бинарная маска ключей состояние которых необходимо получить
Функция: ConvertHexToInt
public final int ConvertHexToInt(string hex)
Преобразует HEX значение в int
Аргументы:Возвращает: int значение числа
- hex - строка с hex числом
Функция: XOR
public final bool XOR(bool arg1, bool arg2)
Функция исключающего ИЛИ, которая почему-то так же отсутствует среди стандартных операторов.
Аргументы:Возвращает: true - если аргументы имеют разное значение, false - если они равны
- arg1 - первый логический аргумент
- arg2 - второй логический аргумент
Файл: interfaceprovider.gs
Содержит статический класс: InterfaceProvider
Содержит функции для упрощения создание интерфейса настроек в браузере. Поскольку каждый автор создаёт свой интерфейс, не думаю что кому-то будет шипко интересно использовать мой, потому класс описывать не буду. Приведу только одну функцию, которая может быть полезна
Функция: GetCleanFloatString
public final string GetCleanFloatString(float val)
Округляет число с плавающей точкой до 2х знаков с запятой, преобразуя его в строку в формате 0.00
Аргументы:
val - число с плавающей точкой, которое нужно преобразовать в строку
Возвращает: строку с округлённым до 2х знаков после запятой числом в формате 0.00
Файл: utilitylibrary.gs
Содержит класс библиотеки: UtilityLibrary
Содержит набор дополнительных инструментов. Для работы необходимо получить ссылку на библиотеку через TrainzScript.GetLibrary(KUID kuidlib)
Функция: SetLocalStorageData
public final void SetLocalStorageData(string key, Soup data)
Позволяет сохранят данные в локальное хранилище Trainz, а не в сессию
Аргументы:
- key - уникальный ключ, под которым будут храниться данные
- data - суп с данными
Функция: GetLocalStorageData
public final Soup GetLocalStorageData(string key)
Восстанавливает данные из локального хранилища Trainz
Аргументы:Возвращает: суп с данными, если они есть, или пустой суп, если данных нет
- key - уникальный ключ, под которым хранятся данные
Функция: RemoveLocalStorageData
public final void RemoveLocalStorageData(string key)
Удаляет данные из локального хранилища Trainz
Аргументы:
- key - уникальный ключ, под которым хранятся данные
Функция: ContainsDataInLocalStorage
public final bool ContainsDataInLocalStorage(string key)
Проверяет наличие данных в локальном хранилище TrainzВозвращает: true - если данные есть, иначе false
- key - уникальный ключ, под которым хранятся данные
Функция: SetClipboardData
public final void SetClipboardData(string key, Soup data)
Записывает данные в буфер обмена. Данные хранятся пока запущен Trainz
- key - уникальный ключ, под которым будут храниться данные
- data - суп с данными
Функция: GetClipboardData
public final Soup GetClipboardData(string key)
Получение данных из буфера обмена
Аргументы:Возвращает: суп с данными, если они есть, или пустой суп, если данных нет
- key - уникальный ключ, под которым хранятся данные
Функция: ContainsDataInClipboard
public final bool ContainsDataInClipboard(string key)
Проверяет наличие данных в буфере обменаВозвращает: true - если данные есть, иначе false
- key - уникальный ключ, под которым хранятся данные
Функция: GetUsername
public final string GetUsername(void)
Возвращает имя пользователя, которое указано в настройках
Функция: TrainControlOfCurrentUser
public final bool TrainControlOfCurrentUser(Train train)
Предназначена для мультиплеера. Позволяет определить, управляет ли текущий пользователь указанным поездом.
Аргументы:Возвращает: true - текущий пользователь управляет поездом, иначе false
- train - поезд, который надо проверить
Надеюсь, что эти инструменты будут кому-нибудь полезны. В будущем библиотека будет пополняться новыми инструментами. Так же, с удовольствием выслушаю предложения, что можно добавить ещё.