Skip to content

ConfSE is an Oblivion Script Extender (OBSE) plugin that aims to enable the use of JSON to save and load data

License

Notifications You must be signed in to change notification settings

surilindur/confse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

CI C++ License: MIT

ConfSE is an experimental Oblivion Script Extender (OBSE) plugin that aims to enable the loading and saving of JSON files from within Oblivion scripts. This is accomplished through the use of OBSE's array_var data type, that be either an array or map. The plugin uses an existing JSON library for C++ together with some simple Oblivion-specific type conversions.

The following type conversions are performed.

Oblivion JSON Notes
array_var array [] Uninitialized saved as null
array_var map {} Uninitialized saved as null
string_var String Uninitialized saved as null
ref "plugin.esp:00000000" Unbound is saved as null
short, int, long, float Number Each value gets loaded as the smallest possible type

The design goal of the plugin is to offer a straightforward mapping from OBSE's array_vars, including nested ones, to a corresponding JSON strcture and vice versa.

This is a work-in-progress thing and is NOT intended for use. At the moment, it does not even compile.

This project depends on the following external projects and libraries:

  • llde/xOBSE as the targeted OBSE version
  • nlohmann/json as the JSON library used to load and save files
  • MSBuild for building the plugin project

The latest compiled DLL at a given time should be available from the GitHub Actions artifacts for the CI workflow.

Development Setup

The repository has all its dependencies linked as Git submodules, so they need to be fetched when cloning, as well:

git clone --recurse-submodules https://github.com/surilindur/confse

Any changes can then be made, and building the plugin should be possible via

msbuild confse/confse.vcxproj -p:BuildInParallel=true

Added Script Commands

The following new commands are added by the plugin to load JSON:

JsonLoadFile - attempts to load the contents of the specified file as JSON, returning the result as an array_var. When loading fails, returns either the array_var passed as default or an uninitialized value.

(array_var) JsonLoadFile filename:string_var default:array_var

JsonLoadString - attempts to load the contents of the provided string_var as JSON, returning the result as an array_var. When loading fails, returns either the array_var passed as default or an uninitialized value.

(array_var) JsonLoadString data:string_var default:array_var

JsonSaveFile - attempts to serialize the provided array_var to the specificed file as JSON, returning 0 after success or -1 if an error occurred.

(status:int) JsonSaveFile data:array_var filename:string_var

JsonSaveString - attempts to serialize the provided array_var as a string, returning a string_var that will either contain the resulting string or be uninitialized if an error occurred.

(string_var) JsonSaveString data:array_var

Issues

Please feel free to report any issues on the GitHub issue tracker.

License

This code is copyrighted and released under the MIT license.

About

ConfSE is an Oblivion Script Extender (OBSE) plugin that aims to enable the use of JSON to save and load data

Topics

Resources

License

Stars

Watchers

Forks