Skip to content

Releases: matortheeternal/xedit-lib

Hotfix release v0.2.1

16 Nov 18:56
Compare
Choose a tag to compare
Hotfix release v0.2.1 Pre-release
Pre-release

Hotfix release for v0.2, resolves issues with system locale settings causing floats to parse incorrectly (decimal separator issues), and the SSE/FO4 load order issue (load order being sorted by date incorrectly).

Beta Release v0.3

24 Oct 06:29
Compare
Choose a tag to compare

v0.2 never got a proper release here on GitHub, so this changelog will list all changes going back to v0.1.

Changes

  • Refactored hardcoded dat files to use a shorter filename (gameName.Hardcoded.dat)
  • Added a bunch of tests
  • Added element sorting for GetElements
  • Introduced an option to hide child groups when using GetElements.
  • Refactored
    • OverrideRecordCount to GetOverrideRecordCount
  • Removed functions:
    • ConflictThis
    • ConflictAll
    • GetLoaderDone
  • Added functions:
    • GetDuplicateHandles
    • FindNextRecord
    • FindPreviousRecord
    • SetSortMode
    • GetMasterRecord
    • GetDefNames
    • GetNodes
    • ReleaseNodes
    • GetConflictData
    • GetNodeElements
    • ValueType
    • GetEnumOptions
    • GetIsModified
    • GetIsEditable
    • GetIsRemoveable
    • GetAddList
    • GetCanAdd
    • RenameFile
    • IsSorted
    • SetElement
    • FindValidReferences
    • GetIsEditable
    • GetMasterFileNames
    • GetLoaderState
    • NukeFile
    • RemoveIdenticalRecords
    • GetRecord
    • GetPreviousOverride
    • SetLinksTo
    • GetFileLoadOrder
    • AddElementValue
    • GetRecordCount
    • GetWinningOverride
    • GetAllowedSignatures
    • FindNextElement
    • FindPreviousElement
    • SetIsEditable
  • Path now supports two boolean arguments - short and local
  • Fixed some issues with looking up records by EditorID/Name
  • Fixed bug with resolving File Header paths and child elements
  • Now preserving log properly
  • Added custom file path support to SaveFile
  • Fixed GetExceptionMessage not returning true
  • Added custom BackupPath support, now saving backups in zEdit Backups folder
  • Optimized functions to use const with ref counted function parameters
  • Fixed some load order issues with SSE/FO4
  • Added support for "smart" plugin loading (automatic loading of masters)
  • Removed mte library units - they were unnecessary bloat
  • Fixed bugs with element resolution by FormID
  • Fixed issue with struct defs being out of order in certain circumstances
  • Fixed serious issue with releasing null ids causing duplicate allocation
  • Fixed bug with GetDefNames not include additional element names
  • Fixed GetResultString access violations
  • Fixed issues with detecting ITPOs
  • Records with child records are now excluded from ITM/ITPO error results
  • Updated xEdit code to allow removing the last element in an array
  • Now also using placement name when sorting records by name data
  • Fixed BuildReferences breaking things

Beta Release v0.1.0

24 Jul 23:17
Compare
Choose a tag to compare

Changes

  • Added missing export for GetElementRecord
  • Added tests for CloseXEdit and extended SaveFile tests.
  • Fixed bugs with renaming saved files.
  • Added MD5Hash and CRCHash functions to xeFiles.
  • Removed TSettings in favor of two functions to set game path and language before setting game mode (SetGamePath and SetLanguage, respectively).
  • Fixed the incomplete GetOverrides function.
  • Fixed some issues with error checking - now properly detecting UDRs and deleted navmeshes, logging error checking properly, and parsing error data correctly.
  • Name will now return the FormID of a record if no other name information is found.

Alpha Release v0.0.1

22 Jun 18:59
Compare
Choose a tag to compare

Changes

  • Added a number of functions:
    • Meta
      Switch
    • Setup
      GetActivePlugins, LoadPlugin, UnloadPlugin
    • File Handling
      SortNames, SortEditorIDs
    • Master Handling
      GetMissingMasters
    • Element Handling
      MoveArrayItem, SmashType, ConflictThis, ConflictAll, ElementMatches, HasArrayElement, GetArrayElement, AddArrayElement, RemoveArrayElement, GetElementIndex, GetElementRecord
    • Element Values
      GetAllFlags, SetEnabledFlags
  • Changed or extended a number of functions:
    • Path can now give a full or "local" path.
    • Extended signature name map functions to work with all record definitions, not just top level groups.
    • Added support for resolving records by EditorID or FULL name with GetElement.
    • AddElement now traverses paths and adds missing elements during its traversal.
    • AddElement now appends a new element to a container if the key is ..
    • GetElements now allows for an optional path argument.
    • Added File Header resolution for GetElement and AddElement.
    • Renamed ElementExists to HasElement.
    • ElementFromJson can now deserialize from root.
    • ElementFromJson can now create override records.
    • Now able to set references from EditorID, FULL name, and a number of different FormID strings.
    • GetFormID and SetFormID can now accept a load order FormID or a file FormID - handled based on a boolean parameter.
    • Removed deep copy parameter from CopyElement. I can't think of any circumstance in which a user would not want to deep copy an element.
    • GetRecords now works with root, files, and groups, can accept a search string (comma separated list of record signatures/signature-names to find), and allows ignoring override records.
    • Renamed GetReferences to GetReferencedBy for clarity.
    • Now excluding a number of unnecessary values from File and Record headers when serializing them.
  • Removed a number of redundant functions:
    • GetGroupSignatures: Removed in favor of iterating over GetElements with Signature.
    • GetMaster: Removed in favor of using GetMasters.
    • GetExpectedSignatures: Removed in favor of the GetSignatureAllowed function.
    • ToggleFlag: Not needed often, can be done fairly easily with SetFlag and GetFlag.
    • GetFileHeader: Removed in favor of using GetElement.
    • GetNextObjectId: Removed in favor of using GetIntValue.
    • SetNextObjectId: Removed in favor of using SetIntValue.
    • GetFileName: Removed in favor of using Name.
    • GetAuthor: Removed in favor of using GetValue.
    • SetAuthor: Removed in favor of using SetValue.
    • GetDescription: Removed in favor of using GetValue.
    • SetDescription: Removed in favor of using SetValue.
    • GetIsEsm: Removed in favor of using GetFlag.
    • SetIsEsm: Removed in favor of using SetFlag.
    • HasGroup: Removed in favor of using HasElement.
    • AddGroup: Removed in favor of using AddElement.
    • GetChildGroup: Removed in favor of using GetElement.
    • EditorID: Removed in favor of using GetValue.
    • FullName: Removed in favor of using GetValue.
    • GetErrorString: Removed in favor of using GetErrors.
    • RecordsBySignature: Removed in favor of using GetRecords.
    • AddRecord: Removed in favor of using AddElement.
    • RecordByFormID: Removed in favor of using GetElement.
    • RecordByEditorID: Removed in favor of using GetElement.
    • RecordByName: Removed in favor of using GetElement.
  • Fixed several bugs:
    • Fixed how interfaces were handled by the Release function.
    • Fixed serialization order of record elements.
    • Fixed JSON serialization of subrecord flags.
    • Fixed bug with flag functions when flags were 64-bits wide.
    • ElementFromJson is now working.
    • File creation now updates the FileCount global.
    • Now ignoring injected records when checking for ITM/ITPO records.
    • Now reporting ITM/ITPO records even if they have child groups. It will be the responsibility of the calling code to identify when these can be removed.
  • Added tests for a number of functions:
    • Setup
      SetGameMode, GetLoadOrder, GetActivePlugins, LoadPlugins, UnloadPlugin, LoadPlugin
    • File Handling
      AddFile, SaveFile, GetRequiredBy
    • Master Handling
      AddMaster, AddMasters, SortMasters, CleanMasters, GetMasters
    • Element Handling
      ElementMatches, GetArrayItem, HasArrayItem, AddArrayItem, CopyElement
    • Element Values
      SignatureFromName, NameFromSignature, GetSignatureNameMap, GetFlag, SetFlag, GetEnabledFlags, SetEnabledFlags, GetAllFlags
    • Record Handling
      GetRecords
    • Serialization
      ElementFromJson
    • Plugin Errors
      GetErrors
  • Updated xEdit codebase for several extensions:
    • Added functions for searching for records by FULL name.
    • Sorting records of a particular signature in a particular file by FULL name for searching.
    • Sorting records of a particular signature in a particular file by EditorID for searching.
    • Added a way to allow invalid FormID reference values to be set (UERs and URRs)
    • Now assigning subrecords to definitions even when they are out of order (still reporting them as errors).
  • Updated all test plugins (mainly for testing error checking functions)
  • Added renaming of saved files when CloseXEdit is called.
  • Now using library version information in test project.
  • Now using regions throughout the code
  • Most functions will now raise an exception when they do not succeed, providing better context to the user.
  • Heavily refactored test code to use more helper functions for testing.
  • Moved a number of functions around to make code organization more consistent.

Developer Build 358

29 May 22:19
Compare
Choose a tag to compare
Developer Build 358 Pre-release
Pre-release

This is an early access developer build. Please note that this version is not stable and breaking changes can and will occur. This version is meant only to be used for early testing purposes.

See previous releases for instructions.

Changes

  • Switched from SuperObject to Argo for serializing and deserializing JSON.
  • Now returning boolean results through PWordBool arguments
  • Refactored and cleaned up tests
  • Refactored how string results are returned, functions now return the length of the result buffer in characters and you can get the buffer by calling GetResultString.
  • Refactored how cardinal array results are returned, the function now returns the length of the result array in items and you can get the array by calling GetResultArray.
  • Fixed memory leaks.
  • Refactored Initialize and Finalize to InitXEdit and CloseXEdit to avoid collisions with Delphi system functions.
  • Fixes #2.

Developer Build 321

18 May 17:17
Compare
Choose a tag to compare
Developer Build 321 Pre-release
Pre-release

This is an early access developer build. Please note that this version is not stable and breaking changes can and will occur. This version is meant only to be used for early testing purposes.

See previous releases for instructions.

Changes

  • Removed ElementAssigned function - ElementExists provides this functionality.
  • Removed LinksTo function - GetLinksTo provides this functionality.
  • Refactored Equals to ElementEquals.
  • Refactored NewElement to AddElement.
  • Refactored NewFile to AddFile
  • Added tests for ElementEquals, GetLinksTo,
  • SetNativeValue now raises an exception if element is not found.
  • Added tests and fixed issues with ElementToJSON serialization. Serialization is now operating to desired specifications.
  • Added element deserialization functions (untested).

Developer Build 303

12 May 01:00
Compare
Choose a tag to compare
Developer Build 303 Pre-release
Pre-release

This is an early access developer build. Please note that this version is not stable and breaking changes can and will occur. This version is meant only to be used for early testing purposes.

See previous releases for instructions.

Changes

  • Added tests for ElementCount and ElementExists
  • Fixed tests for RemoveElement
  • ElementCount now returns FileCount if id 0 is passed
  • Added tests for SetFloatValue, SetUIntValue, SetIntValue, SetValue, GetFloatValue, GetIntValue, and GetUIntValue
  • Now including test plugins with builds.

Developer Build 283

10 May 20:05
Compare
Choose a tag to compare
Developer Build 283 Pre-release
Pre-release

This is an early access developer build. Please note that this version is not stable and breaking changes can and will occur. This version is meant only to be used for early testing purposes.

See previous release for instructions.

Developer Build 219

04 Jan 10:49
Compare
Choose a tag to compare
Developer Build 219 Pre-release
Pre-release

This is an early access developer build. Please note that this version is not stable and breaking changes can and will occur. This version is meant only to be used for early testing purposes.

Instructions

Run DelphiTest.exe from a command line window to run tests. Refer to the source code for how to import and use functions from the DLL.

NOTE: There is an issue with a runtime error when the library is unloaded (usually when the parent application is terminated). This is most likely due to bad finalization code, but I'm not yet certain. This issue will be fixed before the first proper release.