The underlying level and game state data model is completely rewritten, and all necessary components were updated to support that new format. The goal of the rewrite was to make the data and event flow unidirectional and as explicit as possible (think vuex state and actions), while also making it non-global (there are many boards with their own simulations).
internal level data model is separated from JSON representation (with explicit import and export)
the game controller logic (simulation driving and level updates) is separated from the view
all data is either totally immutable (vast majority) or reactive (board state)
piece rotation value is now an enum Rotation with eight distinct values (Right, UpRight, ...)
all user actions are applied through explicit controller methods (e.g. grabPiece(Coord))
controllers are split into fairly independent blocks (level loading, grab and release, win conditions)
many components were updated into defineComponent syntax
the main game board and encyclopedia board logic is now shared
quantum-tensors dependency is now imported only through a single file (with the Complex and Vector being reexported)
The underlying level and game state data model is completely rewritten, and all necessary components were updated to support that new format. The goal of the rewrite was to make the data and event flow unidirectional and as explicit as possible (think vuex state and actions), while also making it non-global (there are many boards with their own simulations).
Rotation
with eight distinct values (Right
,UpRight
, ...)grabPiece(Coord)
)defineComponent
syntaxquantum-tensors
dependency is now imported only through a single file (with theComplex
andVector
being reexported)