Revision as of 16:09, 11 August 2017 by Skizzerz (talk | contribs)

Changelog

From DiceRoller Documentation

3.0.0

  • Backwards-incompatible changes:
    • DiceAST subclasses have their RollerConfig parameters swapped with RollData. This change is only breaking if you have implemented custom AST nodes. If you have not implemented custom AST nodes, no code changes need to be made to your project.
    • Grouped rolls now always aggregate their values. In other words, {4d6} will return a single number such as 20 rather than list all 4 individual die rolls. It is no longer necessary to nest groups in order to accomplish this. If you want all individual dice listed, do not use a grouped roll.
  • New features:
    • RollerConfig.MacroRegistry can be used to associate macro callbacks to specific names instead of registering a global handler.
    • A new [DiceMacro] attribute is added to be used in conjunction with MacroRegistry.RegisterType.
    • Roller.Roll can now take an optional RollData object as a 3rd parameter. This can be used to add in custom functions or macros only valid for that roll (as opposed to global across multiple rolls as is the case for RollerConfig). Functions or macros defined here with the same name as global ones override the global ones.
    • A Metadata object can be passed as part of RollData and is passed as-is to the RollResult. This allows you to attach additional data to RollResults when serializing them to the database, which can be useful when reconstructing something pulled from the database.
  • Deprecated:

2.0.2

  • Bugfixes:
    • Invalid dice expressions are now tracked in RollPost, so that fixing these expressions in an edit does not invalidate rolls that took place afterwards.
    • Turning a previously-rolled result into an invalid expression is now marked as a modified post.

2.0.1

  • Bugfixes:
    • Errors when lexing the dice expression now throw an error instead of being silently ignored.

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