ConfigFile
Секции, ключи и типизированные Variant в памяти с явной загрузкой и записью файла.
SetValue меняет память; Save записывает файл. Load и Parse объединяют данные с существующим экземпляром. Для независимой загрузки используйте новый ConfigFile, проверяйте Error и только затем изменяйте игровое состояние.
Обычный Save создаёт текстовый файл с синтаксисом Variant. Шифрованные варианты — отдельные методы; сам ConfigFile не является проверкой достоверности прогресса. Комментарии и исходная вёрстка файла не сохраняются.
GetValue возвращает Variant. У значений, требующих освобождения, есть финализатор как запасной механизм; using освобождает их предсказуемо при выходе из области. В примере тип и конечность позиции проверяются до её выдачи вызывающему коду. ConfigFile уже должен содержать загруженные данные.
using Reckfell;
public static class ConfigPositionExample
{
public static bool TryReadPosition(ConfigFile data, out Vector3 position)
{
position = default;
if (!data.HasSectionKey("player", "position"))
return false;
using Variant value = data.GetValue("player", "position");
if (value.VariantType != Variant.Type.Vector3)
return false;
Vector3 candidate = value.AsVector3();
if (!candidate.IsFinite())
return false;
position = candidate;
return true;
}
}Для записи с резервной копией см. сохранение прогресса.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
ConfigFileКонструктор
public ConfigFile();Создаёт пустое хранилище секций, ключей и Variant в памяти. Сам по себе не открывает файл и не загружает прежние данные.
Методы19
Clearvoid
public void Clear();Удаляет все секции и значения только из памяти этого экземпляра. Не удаляет файл и не сохраняет изменение на диск.
EncodeToTextstring
public string EncodeToText();Создаёт текстовое представление текущих значений без записи файла. Комментарии и исходное форматирование не сохраняются. Не обещает побайтового совпадения с Save: в текущем движке имя секции a]b здесь записывается как [a]b], тогда как Save экранирует закрывающую скобку. Для файлов с такими именами используйте Save.
stringТекст секций и значений; пустая строка для пустого ConfigFile.
EraseSectionvoid
public void EraseSection(string section);Удаляет секцию вместе со всеми ключами в памяти. Для отсутствующей секции сообщает native-ошибку, а не гарантированное исключение CLR. Сначала используйте HasSection, если отсутствие допустимо. Файл на диске не изменяется.
| Имя | Тип | По умолчанию |
|---|---|---|
section | string | — |
sectionИмя существующей секции.
EraseSectionKeyvoid
public void EraseSectionKey(string section, string key);Удаляет ключ из секции в памяти. Если ключ был последним, удаляется и секция. Отсутствующие секция или ключ вызывают native-ошибку; для безопасного условного удаления сначала проверяйте HasSectionKey. На диск изменение записывается отдельным Save.
| Имя | Тип | По умолчанию |
|---|---|---|
section | string | — |
key | string | — |
sectionИмя существующей секции.
keyИмя существующего ключа.
GetSectionKeysstring[]
public string[] GetSectionKeys(string section);Возвращает имена ключей существующей секции. Для отсутствующей секции сообщает native-ошибку и возвращает пустой массив. Проверяйте HasSection, чтобы отличать допустимое отсутствие без сообщения об ошибке.
| Имя | Тип | По умолчанию |
|---|---|---|
section | string | — |
sectionИмя секции в памяти, не путь к файлу.
string[]Массив string[] с именами ключей.
GetSectionsstring[]
public string[] GetSections();Возвращает массив имён секций текущего экземпляра. Это не список файлов и не значения секций. Не привязывайте логику формата сохранения к позиции имени в массиве.
string[]Массив string[]; пустой, если секций нет.
GetValueVariant
public Variant GetValue(string section, string key, Variant @default = default);Возвращает значение указанного ключа. Если секция или ключ отсутствуют, возвращает переданный default. При отсутствующем значении и default типа Nil движок также сообщает об ошибке; это не замена явной проверке наличия ключа.
| Имя | Тип | По умолчанию |
|---|---|---|
section | string | — |
key | string | — |
default | Variant | default |
sectionИмя секции. Пустая строка обозначает значения вне секции.
keyИмя ключа внутри указанной секции.
defaultЗначение при отсутствии секции или ключа. Передайте явный ненулевой Variant, например 7 или false, чтобы штатно обработать отсутствие значения.
VariantХранимый Variant либо переданное значение default. Тип результата зависит от сохранённых данных: приведение к нужному C#-типу выполняет вызывающий код.
HasSectionbool
public bool HasSection(string section);Проверяет наличие секции в памяти без загрузки файла и без ошибки при её отсутствии. Не подтверждает, что в секции есть данные требуемого типа.
| Имя | Тип | По умолчанию |
|---|---|---|
section | string | — |
sectionИмя проверяемой секции.
booltrue, если секция есть; иначе false.
HasSectionKeybool
public bool HasSectionKey(string section, string key);Проверяет наличие пары секция/ключ в памяти. При отсутствующей секции возвращает false без ошибки. Тип и диапазон значения проверяйте отдельно после GetValue.
| Имя | Тип | По умолчанию |
|---|---|---|
section | string | — |
key | string | — |
sectionИмя секции.
keyИмя ключа внутри секции.
booltrue только при наличии секции и ключа.
LoadError
public Error Load(string path);Читает и разбирает файл в текущий ConfigFile. Одноимённые значения заменяются, а отсутствующие в файле существующие значения остаются: Load не очищает объект. Для полной замены используйте новый ConfigFile или Clear() перед загрузкой. Проверяйте возвращённый Error.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathПуть к читаемому конфигурационному файлу; например, user://settings.ini. Load не создаёт отсутствующий файл.
ErrorError.Ok при успешном чтении и разборе; иначе код ошибки открытия или разбора. Не считайте объект автоматически очищенным после неудачной загрузки.
LoadEncrypted2 перегрузки
public Error LoadEncrypted(string path, byte[] key);Открывает шифрованный файл с указанным 32-байтным ключом, затем разбирает значения в текущий экземпляр. Как Load, объединяет данные, не очищая старые. Неверный ключ, повреждённый файл или ошибка разбора не означают успешную загрузку: проверяйте Error и применяйте данные из нового объекта только после валидации.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
key | byte[] | — |
pathПуть к файлу; для пользовательских данных обычно user://.
keyРовно 32 байта ключа AES. byte[] и ReadOnlySpan<byte> — формы передачи одного ключа, а не разные форматы файла.
ErrorError.Ok при успешной расшифровке и разборе; иначе ошибка открытия, формата, ключа или разбора.
public Error LoadEncrypted(string path, ReadOnlySpan<byte> key);Открывает шифрованный файл с указанным 32-байтным ключом, затем разбирает значения в текущий экземпляр. Как Load, объединяет данные, не очищая старые. Неверный ключ, повреждённый файл или ошибка разбора не означают успешную загрузку: проверяйте Error и применяйте данные из нового объекта только после валидации.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
key | ReadOnlySpan<byte> | — |
pathПуть к файлу; для пользовательских данных обычно user://.
keyРовно 32 байта ключа AES. byte[] и ReadOnlySpan<byte> — формы передачи одного ключа, а не разные форматы файла.
ErrorError.Ok при успешной расшифровке и разборе; иначе ошибка открытия, формата, ключа или разбора.
LoadEncryptedPassError
public Error LoadEncryptedPass(string path, string password);Загружает файл, записанный SaveEncryptedPass, используя тот же пароль, затем объединяет значения с текущим объектом. Не очищает прежнее состояние и не подтверждает корректность игровых данных: проверяйте Error, типы и диапазоны.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
password | string | — |
pathПуть к файлу; родительская папка должна существовать.
passwordПароль для встроенного преобразования в ключ. Для чтения используйте тот же пароль, не передавайте его строку вместо byte[] в другом overload.
ErrorError.Ok при успешной загрузке; иначе код ошибки расшифровки, открытия или разбора.
ParseError
public Error Parse(string data);Разбирает текст и добавляет значения в текущий экземпляр, заменяя совпавшие ключи. Не очищает прежние данные. Изменяет объект по ходу разбора: ошибка не гарантирует откат уже прочитанных значений. Для независимой загрузки разбирайте в новом ConfigFile и проверяйте Error до применения данных к игре.
| Имя | Тип | По умолчанию |
|---|---|---|
data | string | — |
dataТекст в формате ConfigFile, не имя файла. Значения используют формат Variant; не считайте его полностью совместимым с произвольным INI-парсером.
ErrorError.Ok при успешном разборе; иначе ошибка разбора. Объект мог быть изменён частично.
SaveError
public Error Save(string path);Записывает текущие значения ConfigFile в файл с INI-подобной структурой. SetValue меняет только память; для записи нужен отдельный Save. Метод не создаёт отсутствующие родительские каталоги.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathПуть файла назначения. Для пользовательских настроек используйте доступный для записи путь, например user://settings.ini.
ErrorError.Ok при успешной записи, иначе код ошибки. Проверяйте результат перед сообщением об успешном сохранении.
SaveEncrypted2 перегрузки
public Error SaveEncrypted(string path, byte[] key);Записывает текущие значения в файл с шифрованием AES-256 и указанным 32-байтным ключом. Не создаёт родительские папки и не выполняет атомарную замену с резервной копией. Ошибка не гарантирует сохранность прежнего файла: открытие на запись происходит до завершения операции.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
key | byte[] | — |
pathПуть к файлу; для пользовательских данных обычно user://.
keyРовно 32 байта ключа AES. byte[] и ReadOnlySpan<byte> — формы передачи одного ключа, а не разные форматы файла.
ErrorError.Ok при успешном выполнении; иначе код ошибки. Это не гарантия устойчивости при потере питания.
public Error SaveEncrypted(string path, ReadOnlySpan<byte> key);Записывает текущие значения в файл с шифрованием AES-256 и указанным 32-байтным ключом. Не создаёт родительские папки и не выполняет атомарную замену с резервной копией. Ошибка не гарантирует сохранность прежнего файла: открытие на запись происходит до завершения операции.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
key | ReadOnlySpan<byte> | — |
pathПуть к файлу; для пользовательских данных обычно user://.
keyРовно 32 байта ключа AES. byte[] и ReadOnlySpan<byte> — формы передачи одного ключа, а не разные форматы файла.
ErrorError.Ok при успешном выполнении; иначе код ошибки. Это не гарантия устойчивости при потере питания.
SaveEncryptedPassError
public Error SaveEncryptedPass(string path, string password);Сохраняет значения с шифрованием и ключом, полученным из пароля встроенным алгоритмом. Это другой способ задания ключа, чем 32 байта в SaveEncrypted. Не выполняет резервное копирование или атомарную замену существующего файла.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
password | string | — |
pathПуть к файлу; родительская папка должна существовать.
passwordПароль для встроенного преобразования в ключ. Для чтения используйте тот же пароль, не передавайте его строку вместо byte[] в другом overload.
ErrorError.Ok при успешном выполнении; иначе код ошибки.
SetValuevoid
public void SetValue(string section, string key, Variant value);Назначает значение в памяти, создавая при необходимости секцию и ключ. Значение Nil, в том числе default(Variant), удаляет ключ; опустевшая секция также удаляется. Сам файл не изменяется до Save.
| Имя | Тип | По умолчанию |
|---|---|---|
section | string | — |
key | string | — |
value | Variant | — |
sectionИмя секции. Пустая строка обозначает значения вне секции.
keyИмя ключа внутри указанной секции.
valueСохраняемое в памяти значение Variant. Nil означает удаление ключа, а не запись пустого значения.