PDA

Просмотр полной версии : Инструменты и утилиты



Эрендир
17.01.2015, 10:27
При всей мощи скриптового движка Trainz, в нём часто не хватает различных простых функций. Так, например, напрочь отсутствует оператор возведения в степень. Или нет полезных функций работы со строками, которые позволяли бы откусывать от строки справа, слева или из середины. А ведь все эти инструменты вполне могут пригодиться при решении той или иной задачи.
В своё время, я сделал для себя библиотеку, которая собрала небольшой набор инструментов, которые я часто использую в своих проектах. Их можно было бы включать в код каждого проекта, но на мой взгляд, гораздо правильнее вынести их в библиотеку, ибо используются они постоянно.
Здесь бы я хотел поделиться описанием классов для всех желающих, ибо реализация скрыта от глаз под gse

Библиотека находится на ДЛС <kuid2:151055:60038:3>
Так же можно скачать здесь https://yadi.sk/d/CtabFx2Ke3VdL
Библиотека по ссылке устанавливается как 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, если все ключи в маске будут присутствовать


currStat - текущая группа ключей
stat - бинарная маска ключей состояние которых необходимо получить

Возвращает: true - если все ключи в маске установлены, иначе false

Функция: ConvertHexToInt

public final int ConvertHexToInt(string hex)

Преобразует HEX значение в int
Аргументы:

hex - строка с hex числом

Возвращает: int значение числа

Функция: XOR

public final bool XOR(bool arg1, bool arg2)

Функция исключающего ИЛИ, которая почему-то так же отсутствует среди стандартных операторов.
Аргументы:

arg1 - первый логический аргумент
arg2 - второй логический аргумент

Возвращает: true - если аргументы имеют разное значение, false - если они равны

Файл: 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

key - уникальный ключ, под которым хранятся данные

Возвращает: true - если данные есть, иначе false

Функция: 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)

Проверяет наличие данных в буфере обмена

key - уникальный ключ, под которым хранятся данные

Возвращает: true - если данные есть, иначе false

Функция: GetUsername

public final string GetUsername(void)

Возвращает имя пользователя, которое указано в настройках

Функция: TrainControlOfCurrentUser

public final bool TrainControlOfCurrentUser(Train train)

Предназначена для мультиплеера. Позволяет определить, управляет ли текущий пользователь указанным поездом.
Аргументы:

train - поезд, который надо проверить

Возвращает: true - текущий пользователь управляет поездом, иначе false


Надеюсь, что эти инструменты будут кому-нибудь полезны. В будущем библиотека будет пополняться новыми инструментами. Так же, с удовольствием выслушаю предложения, что можно добавить ещё.



New