Releases: cmkushnir/NMSModBuilder
Releases · cmkushnir/NMSModBuilder
4.12.0.4
Requires libmbin >= 4.12.1.1 (included)
- change:
- Add Sleep(1) hack to Log.Add method (will likely be removed in future version)
- Add AutoSelect to custom listbox control, set to false
for search tab lists so as to not cause a flood of
selection changed events after search completes,
each of which would call clipboard settext.
- update:
- Octokit NuGet package from 5.0.0 to 5.0.2.
- Roslyn NuGet package from 4.4.0 to 4.5.0.
4.10.0.0
Requires libmbin >= 4.10.0.2
- fix:
- NMS.PAK.MBIN.Data.Save was not passing Log to libmbin methods,
thus potentially loosing any errors reported by libmbin. - PAK Item tab not reloading item if it's pak is updated e.g. mod pak rebuilt.
- script ProgressReport no longer takes script object as a parameter to
remove the chance of it accidently pinning the script assembly. - NMSAttribute.Size was mislabled as Length.
- NMS.PAK.MBIN.Data.Save was not passing Log to libmbin methods,
- change:
- handle changes introduced in NMS "4.1".
- refactor how NMSAttribute's are queried and handled.
- refactor how MBINC enums and fake enum's are handled.
- libMBIN tab enum list now shows bitmap enums in bold,
and values as binary with hex and dec value in tooltip.
- add:
- libmbin API tab, add enum name to array fields indexed by an enum.
- update:
- Octokit NuGet package from 4.0.3 to 5.0.0.
- Pfim NuGet package from 0.11.1 to 0.11.2.
4.6.0.4
4.6.0.4: libmbin >= 4.6.0.1
- add:
- selecting a result in one of the search tabs will copy the item path to the clipboard.
- when the right pak item tab selection changes, the left search tabs will
try to find and select an entry that contains the path. does not change
current selection if no match found. - double-clicking a script error log item will select that script,
scroll to error location, set cursor to error location, and set focus to editor.
- change:
- Dialog.SelectFolder now uses System.Windows.Forms.FolderBrowserDialog
instead of custom WPF cmk.SelectFolderDialog. - Log viewers shows selected line with yellow background.
- Auto-scrolling ListBox sets selected item to last item when item added.
- Dialog.SelectFolder now uses System.Windows.Forms.FolderBrowserDialog
- update:
- Code completion symbols.
- Tooltips.
- Avalon Edit NuGet package from 6.1.3.50 to 6.2.0.78.
Minor bug fixes and changes framework dep from .NET 5 to .NET 6.
4.6.0.3
- fix
- MBINC class support older libmbin w/o implicit string conversion methods.
- saving a pak item with multiple '.' in name was truncating part of name,
e.g. WARPLARGEPORTAL.SCENE.MBIN => WARPLARGEPORTAL.MBIN
- change:
- add assembly name and version to "is a blah not a blah" error messages
e.g. "path is a blah not a blah" => "path is a libmbin:4.3.0.1 blah not a libmbin:4.6.0.1 blah" - double-click main icon in recipe tab opens dds in PAK Item tab,
previously only did this for substance, product, technology tabs.
Ingredient icons do not pass double-click to parent, so they don't work. - resize PAK Item tab viewer icons to match other icon sizes.
- first line of ebin from "EBIN: " to "EBIN "
to make it easier to parse by 3rd party tools.
- add assembly name and version to "is a blah not a blah" error messages
- add
- Language tab double-click on entry opens entry in right-side PAK Item tab.
- update:
- Octokit NuGet package from 4.0.2 to 4.0.3.
4.6.0.2
- fix:
- public AS_T CreateMbin<AS_T>( string PATH, bool NORMALIZE = true, AS_T NMSTEMPLATE = null, bool LOG = true )
Wasn't creating a header for the raw mbin stream when passed a NMSTEMPLATE.
- public AS_T CreateMbin<AS_T>( string PATH, bool NORMALIZE = true, AS_T NMSTEMPLATE = null, bool LOG = true )
- update:
- Octokit NuGet package from 4.0.1 to 4.0.2.
- MS Roslyn NuGet package from 4.3.1 to 4.4.0.
4.6.0.1
- fix:
- uncomment Reset call when file changed, was preventing compiled assembly from being
released when a script was edited externally, which in turn prevented the toolbar
buttons from updating, which in turn prevented recompiling the assembly.
- uncomment Reset call when file changed, was preventing compiled assembly from being
- change:
- PAK Item tab Paste now uses regex to extract item path from clipboard text.
- number of warnings and failures added to Build tab "Finished executing all mods ..." log entry.
- ebin highlighting for enum assignments e.g. fooEnum.bar in "blah = fooEnum.bar"
- public AS_T CreateMbin<AS_T>( string PATH, bool NORMALIZE = true, bool LOG = true )
to
public AS_T CreateMbin<AS_T>( string PATH, bool NORMALIZE = true, AS_T NMSTEMPLATE = null, bool LOG = true )
- add:
- Summary of multiple scripts that extracted a given modified item rolled into app instead of being in script.
- PAK Item tab has another toolbar combobox to select the lhs pak item tree.
Can only select if rhs tree is a mod.
4.6.0.0
libmbin >= 4.5.0.2
- add:
- Search Text tab now has optional path filter.
- change:
- modified lines in text diff views now highlight modified pieces, not just lines,
the diffplex alg to identify modified pieces is 'per word' so hex diff will not be exact. - ebin will now print header, even if it can't decompile mbin (so can see header version | guid).
- Scripts.csproj target updated to match app in order to remove warning when using in VS or VS Code.
- modified lines in text diff views now highlight modified pieces, not just lines,
- fix:
- util (Global) script enum's,and cmk mod scripts, broken by recent game update.
4.5.0.0
includes and requires libmbin >= 4.4.0.3
- fix:
- Log GUID mismatch was checking mbin header class guid not raw guid,
so would never log a mismatch warning.
- Log GUID mismatch was checking mbin header class guid not raw guid,
- update:
- Octokit NuGet package from 4.0.0 to 4.0.1.
- change:
- conflict mod paks sorted by load order (was sorted by mbinc version then load order).
- game pub release versions are formatted as #.## or #.##.#.
exp releases use 4th version part and are formatted as "#.## exp #" or "#.##.# exp #". - mbinc pub version formatted as "#.##" or "#.##.#".
mbinc pre version formatted as "#.##.#-pre#" if command-line pre option specified, else "#.##.#.#". - 'play-as' changed to 'profile' in code and documentation.
- substance, product, tech tabs move ID after name (compress view of data).
- add:
- detected Xbox Game Pass instance can auto-load on start using lx command-line option.
- command-line option pre, to use pre notation for mbinc versions.
- text editor search box now shows previous result index based on cursor position
e.g. "10 / 32" instead of just "32". - compiler Analyzer NMSMB0001: error if a script contains a static field or property,
they can lead to the generated Assembly being pinned, which prevents them and the containing ALC from being unloaded. - substance name now includes its symbol.
- libmbin api tab, add selected struct guid to name in toolbar.
- pak item tab, add mbin header guid to ebin (2nd line, before path).
- PAK Item tab toolbar now includes buttons for all available viewers|differs for selected item,
including any added by plugins. - hex viewer that can be used to view any pak item.
note: hex differ is per line, but doesn't highlight the changes on the line,
a future update may fix this by updating the text diff logic to return and highlight sub-line changes. - substance, product, tech tabs have toggle button on toolbar to incude requirement ids & names in search.
- recipe tabs have toggle button on toolbar to incude ingredient ids & names in search.
4.3.0.0
- update:
- libmbin 4.3.0.2
- change:
- cmk.NMS.Script.GetLanguage*() and SetLanguage*() methods reworked to avoid pulling
language mbin's into mod DataCache unless they are going to be updated. - Scripts/Mod/cmk/Lang_All_English.cs rewritten to use updated|new language methods.
- cmk.NMS.PAK.File.Builder now breaks save and compress loop into two loops.
The save loop saves each item and logs any unedited items,
the compress loop compresses edited items and adds them to the mod pak stream.
This should help identify long builds due to many unedited items in DataCache;
scripts should be reworked to avoid those cases.
- cmk.NMS.Script.GetLanguage*() and SetLanguage*() methods reworked to avoid pulling
See change.log for notes on new|updated language methods.
4.0.0.2
- fix:
- cmk.NMS.Game.Language.Collection.FindLanguageInfo was taking a language id arg that
was always null, resulting in it always returning the info for the current language.
The method does not need an arg, it should always use the Collection Identifier.
- cmk.NMS.Game.Language.Collection.FindLanguageInfo was taking a language id arg that
- update:
- cmk mod script Lang_All_English. added Cancel checks, added ProgressReport calls,
new optimized method that uses new GetLanguage mod script method.
note: ProgressReport report updates both Script tab and Build tab toolbars. - GitHub Octokit NuGet package from 3.0.0 to 4.0.0.
- cmk mod script Lang_All_English. added Cancel checks, added ProgressReport calls,
- change:
- rename util script Global LangId to LanguageId (to be consistant w/ code).
- rename cmk.NMS.Script.GetLanguageGamePrefixes to GetGameLanguagePrefixes.
- rename cmk.NMS.Script.GetLanguageAddedPrefixes to GetAddedLanguagePrefixes.
- GetLanguageData loops through all GetLanguagePrefixes in parallel to look for ID.
- GitHub Octokit extensions to replace deprecated methods.
- add:
- List cmk.NMS.Script.GetLanguage( NMS.Game.Language.Identifier IDENTIFIER )
to get a sorted list snapshot of all ID's for IDENTIFIER, including any cached and|or
new ID's in from new prefixes. List sorted on TkLocalisationEntry.Id using string.Compare. - cmk.NMS.Script.GetLanguagePrefixes to get currently cached prefixes.
- cmk.NMS.Script.GetLanguageEntry like GetLanguageData but returns cached TkLocalisationEntry.
- progress report textbox to Build tab.
- List cmk.NMS.Script.GetLanguage( NMS.Game.Language.Identifier IDENTIFIER )
- notes:
- if doing infrequent language changes (< 10,000) then can just use SetLanguageText,
if doing a lot then use GetLanguage, Bsearch, Ref to find and change entries. - libmbin 4.0.0.2.
- if doing infrequent language changes (< 10,000) then can just use SetLanguageText,