Changelog
From DiceRoller Documentation
2.0.0
- Backwards-incompatible changes:
- RollPost now roundtrips when serializing using default BinaryFormatter (so it is usable in .NET remoting now). A new serialization format has been added (exposed via Serialize and Deserialize convenience methods) for RollPost, RollResult, and DieResult that is meant for persistence. This still uses BinaryFormatter behind the scenes, it is recommended that you compress the output before storing in the database.
- Unary negations cannot be stacked on a number. Previously an expression
----1
was valid (and evaluated to positive 1). Now, such an expression is no longer valid. This hides the implementation detail of negation being implemented as an operator rather than part of a number. To get the same result, parenthesis are now needed-(-(-(-1)))
. Existing rolls using the old method will now throw parse errors. - When evaluating macros, leading/trailing spaces are trimmed, and the Param string is exploded along the colon character as Name and Arguments. A future version will expose the ability to register a macro callback with a specific name, rather than having a handler listen to every macro.
- Allow subclasses of DiceAST outside of Dice.dll to override UnderlyingRollNode in preparation for the ability for outside assemblies to extend the parser (planned for a later 2.x version).
- Additional documentation comments, and fixing some inaccuracies in existing comments.
- Additional unit tests.
- Bugfixes:
- Throw more informational exceptions rather than having an internal detail throw an exception (ArgumentNullException instead of NullReferenceException, InvalidOperationException with a more meaningful error message rather than ArgumentException on Dictionary.Add, etc.).
- Fix roll macro argument parsing.
- Expose Dice.Grammar.DiceErrorListener (was documented as public but not marked as such in the code).
1.1.0
- New Play-by-Post helper class RollPost, found in the Dice.PbP namespace.
- Rolls can be serialized and saved to a database (or somewhere else, I don't judge) so that rolls within a post remain fixed between previews/edits.
- Contains the ability to detect tampering of roll expressions within a post (deleting/modifying rolls). Adding new rolls at the end is ok, everything else causes validation errors.
- A new
[roll]
macro which can be used to obtain results of previous rolls in the same post.
- DieResult and RollResult are now Serializable and Equatable.
- Group rolls can now be rerolled.
- New
if()
global function, which lets you test an expression against a comparison, and return one of two expressions depending on whether or not the comparison succeeded.
1.0.0
- Initial version