All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
chore: Targetnet6.0
TFM. (#140)- deps: update dependencies and build tools. (#140)
- refactor: simplify getting
SourceText
in source generator. First-time contribution from @Neme12. Thanks you! (#138) - rename default branch to
main
. - build: use .NET 7 SDK.
- chore: Target
net7.0
TFM.
0.13.0 - 2021-09-16
ListNode<T>
-derived classes (e.g.ItemListNode
) now have covariant return with self type inWithNodes
method override (e.g.ItemListNode ItemListNode.WithNodes(nodes)
). (#133)wham publish
fixed to work on repositories with nogst
file. (#135)
0.12.0 - 2020-11-12
- Feat: Add support for roster migrations (#131).
- deps: Use .NET 5 SDK for build, target only .NET 5 with NuGet packages.
- Fix: RosterTag name in v2.03 XSD schema (was
tags
, istag
) (#121). - Refactor: Core types are now C# 9 nominal records (#125).
- Refactor: Xml serializers are now manually crafted using C# 9/.NET 5 Source Generators; this allows Xml serialization to work with C#9 records and (primarily) ImmutableArrays, as well as greatly reduce warmup-time in deployments like Blazor WASM, and remove any Reflection from that process (#130).
0.11.0 - 2020-07-15
- Added some base classes:
- added QueryFilteredBase (QueryBase with ChildId), inherits from QueryBase
- added SelectionParentBase, base of Force and Selection
- added ModifierBase, base of Modifier and ModifierGroup
- Added descriptive comments to ModifierKind
- Added RosterTag type
- Added missing fields to be fully 2.03 schema compliant:
- added CostType.Hidden
- added ModifierGroup.ModifierGroups
- added many fields to Publication:
- ShortName
- Publisher
- PublicationDate
- PublisherUrl
- added CustomNotes and Tags to Roster
- added CustomName and CustomNotes to RosterElementBase
- CharacteristicType now inherits Commentable
- renamed SelectorBase to QueryBase
- BSv2.03 schema with the above changes
0.10.0 - 2020-06-03
readme
field on datafile root elements (gamesystem and catalogue) in code and in 2.03 schema (#115).
- In
WarHub.ArmouryModel.ProjectModel.IDatafileInfo
interfaceSourceNode? GetData()
changed toasync Task<SourceNode?> GetDataAsync()
; this also results in some APIs changing to beasync
as well, especially inWorkspaces.BattleScribe
namespace (#117).
0.9.0 - 2020-05-21
- C# 8.0 Nullable Reference Types support (NRTs) (#111).
netstandard2.1
targets in libraries to support NRT-enabled TFMs.
WhamNodeCoreAttribute
class from.Source
library (added by accident in v0.8).
0.8.0 - 2020-05-14
NodeList<T>.Slice(int, int)
method to support ranges in C#8 (#89).comment
field on data elements (and in 2.03 schema) (#108).
- Renamed
BattleScribeVersion
static well-known values fromV0_00
toV0x00
(#86). - Renamed
Resources
toXmlResources
(.Source
library) (#86). - Changed
NodeList<T>.GetEnumerator()
andListNode<T>.GetEnumerator()
return type to custom enumeratorNodeList<T>.Enumerator
that's optimized for performance (#89). - Changed all parameter names across the board to be camelCased. Also changed
parameter names of
With
methods tovalue
to mirror setters (#90). - All Node
With
methods for collection properties are now extension methods, with the exception the ones where parameter name is the same as the property's that's being modified (#90). - Renamed a couple of Source Core/Node properties (#91):
- Category: IsPrimary -> Primary
- CategoryLink: IsPrimary -> Primary
- EntryBase: IsHidden -> Hidden
- Repeat:
- Repeats -> RepeatCount
- IsRoundUp -> RoundUp
- SelectorBase: PercentValue -> IsValuePercentage
- SelectionEntryBase: Import -> Exported
0.7.0 - 2019-11-05
- Support for BattleScribe v2.03 data format (#47)
- "Latest" channel (folder) for
Catalogue.xsd
. wham --info
command that displays more detailed program info (#64).- EntryLink now has
SelectionEntries
,SelectionEntryGroups
andEntryLinks
lists (#77).
- Current version of schema changed to v2.03 (latest)
NodeFactory
inWarHub.ArmouryModel.Source
namespace was rewritten to provide much more defaults, use other Nodes as value providers, and add more methods (#58).INodeWithCore<TCore>
is now covariant onTCore
parameter, updating it's signature tointerface INodeWithCore<out TCore>
(#63).- Cores and Nodes' With and Update methods now check for equality of old and new, and when they're equal, return current instance (#75).
SourceRewriter
implementation fixed to actually work (#75).- EntryLink now inherits from SelectionEntryBase instead of EntryBase (#77).
SelectionEntryNode.CategoryEntryId
property was removed. It was a leftover from old format, pre-2.01 (#59).SourceNode.Core
property was removed (#59). All other classes that previously declared it still have it.SourceNode(NodeCore core, SourceNode parent)
constructor was replaced with a new one:SourceNode(SourceNode parent)
since theCore
property is no longer part of this type (#63).SourceNode
no longer implementsINodeWithCore<NodeCore>
(#63).
0.6.17 - 2019-08-16
- Support for BattleScribe v2.02 data format (#39)
- CLI tool
wham
installable viadotnet install tool -g wham
- XSD for
catalogue
,roster
andgame system
XML, accessible viaWarHub.AmouryModel.Source.XmlFormat.Resources
class - Migration XSL transforms for
game system
andcatalogue
XML files, accessible viaWarHub.AmouryModel.Source.XmlFormat.Resources
class. Supported BattleScribe versions:- 1.15
- 2.00
- 2.01
- 2.02
- Migrations can be applied via
WarHub.ArmourtModel.Source.BattleScribe.DataVersionManagement
type. This type has methods that allow applying single migration XSL, as well as applying migrations that take given input to newest version known.