Releases: exodrifter/unity-rumor
5.0.0
In addition to some new features, the syntax of Rumor has been made more consistent in this update.
If you find Rumor useful, consider supporting continued development of this framework by becoming a patron.
Added
- Added support for automatically advancing the dialog.
- Added
GetVars
toRumorScope
as a way for getting all of the variables. - Added
Choosing
,Waiting
, andPausing
flags to see what kind of yield is currently active. - Added serialization support for Rumor.
- Added ability to set a timeout and default jump on choose. For example,
choose in 2 seconds or jump foobar
. - Added
call
command, which moves execution to the specified label and returns back after execution of the label is completed. This is the same behaviour that it had in Rumor 3.X.
Changed
- Choices may now be empty.
- The
Label
andText
properties onAddChoiceNode
are now public. - Changed
jump
to work to move execution to the specified label and not return back after execution of the label is completed. This is the same behaviour that it had in Rumor 3.X. choose
andpause
now require the{}
block syntax when specifying an amount of time.choice
no longer uses>
to prefix every line; instead, it works similar to:
and+
commands.
Fixed
- Injecting nodes clears the current yield and continues execution instead of getting stuck.
Removed
Exodrifter.Rumor.Engine.Util
is now internal instead of public.
4.0.0
Rumor has been completely rehauled in this release. It now features...
- Simplified syntax
- Simplified engine API (it no longer requires the use of a coroutine)
- Stronger type checking
...among many other changes which will soon be described in detail on the wiki.
Some features have been lost in the rehaul. Specifically:
- You can no longer bind any function you want; they can only use the types
bool
double
andstring
(this will likely never be re-added). - You can no longer serialize the state (this will be fixed in a future release).
3.0.1
Just a few bugfixes in this release.
If you find Rumor useful, consider supporting continued development of this framework by becoming a patron.
Fixed
- Fix
true
andfalse
always being treated as variables when they should be a boolean literal - Fix scope serialization not working when .NET 4.x runtime is selected
3.0.0
This update fixes a lot of bugs involving compilation and script execution. In particular, the ==
operator is much more strict. Only comparisons between objects of the same type are allowed with the notable exception of int
and float
, which can be compared to each other.
If you find Rumor useful, consider supporting continued development of this framework by becoming a patron.
Changed
==
now only works when comparing values of the same type, with the notable
exception of Int and Floats which can be compared to each other.
Fixed
- Fix compilation error when comment directly follows a statement expecting a
block - Fix pauses not ending if a choice has been picked
- Better parsing errors
- Allow function and variable names to start with keywords
- Fix math operator precedence
null + null
returnsnull
instead of throwingInvalidOperationException
- Fix comparing any non-empty string with another, different non-empty string
with==
would always returntrue
instead offalse
- Fix
>=
and<=
not working due to comparing the wrapper type instead of
the wrapped values - Fix using
!
on a non-null object would throw an exception clear choices
andclear dialog
compile instead of throwing a compilation
error
2.0.1
This update fixes a compilation error and speeds up the compiler.
If you find Rumor useful, consider supporting continued development of this framework by becoming a patron.
Changed
- Compiler performance improvements
Fixed
- Fix
elif
andelse
compilation errors
Compiler Rewrite
This update contains a complete rewrite of the Rumor compiler.
If you find Rumor useful, consider supporting continued development of this framework by becoming a patron.
Added
- You can now add the enum argument
cant_skip
to the end of a pause statement
to ignore advances until the pause ends - You can now add the enum argument
no_wait
to the end of an add or say
statement to auto advance the dialog - Variable substitution with
{
and}
in strings is now supported
Changed
- The compiler no longer uses a tokenizer except when parsing expressions
- Compiler errors are more specific and descriptive
- The
Exodrifter.Rumor.Lang
namespace has been renamed to
Exodrifter.Rumor.Language
- All unit tests and examples are wrapped in a
UNITY_EDITOR
ifdef to make
it easier to use this repository as a submodule in non-unity project - Bindings are no longer stored in
Rumor
; instead, it is now stored in
Bindings
Rumor.Run
has been renamed toRumor.Start
in order to match the language
used in C#Thread.Start
and Unity'sStartCoroutine
method to improve
consistency
Bugfixes
This update fixes a bug with conditional statements and makes an compiler error message more helpful.
If you find Rumor useful, consider supporting continued development of this framework by becoming a patron.
Changed
- More descriptive error for tokens after string
Fixed
- If conditional statements no longer require a following else or elif
statement
Bugfixes
This update fixes a few bugs reported this evening. A new full Unity scene example was added as well.
If you find Rumor useful, consider supporting continued development of this framework by becoming a patron.
Added
- Full Unity scene example
Fixed
- Fix
+=
,-=
,*=
,/=
operators not working - Fix exception when script execution finishes in some cases
More Events and Bugfixes
This update fixes a few bugs related to the performance changes made in the last update. A few new events were added as well.
If you find Rumor useful, consider supporting continued development of this framework by becoming a patron.
Added
- Added
OnAddChoice
andOnRemoveChoice
events to RumorState
Fixed
- Fix unit test failures caused by Tokenize performance optimization code
- Fix Rumor bindings no longer attempting to convert arguments
Performance Improvements and Bugfixes
This update improves performance of Rumor significantly. Many bugs have also been fixed.
If you find Rumor useful, consider supporting continued development of this framework by becoming a patron.
Changed
Rumor.CallBinding
no longer calls DynamicInvoke and is much faster- Tokenize step of compilation is much faster
Fixed
- Fix
Rumor.Choosing
throwing an error if Rumor has not been started - Fix scope not being initialized when passed as null when constructing Rumor
- Fix Add statements behaving like Say statements
- Fix null pointer exception in Equals expression
- Fix incorrect equality checking
- Fix improper deserialization of values caused by wrapper types (Json.NET will
wrap object values in its own type, JValue, which causes logic to fail) - Rumor no longer clears the scope when starting
- Null ObjectValues are now treated the same as an uninitialized (null)
variable