-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This puzzle further strengthens the rules introduced in previous portal puzzles. It is also the most difficult portal puzzle to this point. This PR also includes a number of other bug fixes and improvements: - Beam step-specific state (which is ultimately stored in the terminal opening state configuration, which is the basis for beam state configuration) has been refactored so that it is attached to specific steps and will be automatically added and removed when the steps are added and removed. This state is currently only used by portals, but could be used by other things in the future. - Items can now specify 'immutable' in the state configuration, which should basically act the same as setting each individual modifier key to false (e.g. movable, toggleable, rotatable, etc.). Beam and wall items will have immutable set by default. - Item IDs are now retained in cache, making them stable IDs. Previously, item IDs were re-generated when the page was refreshed, which meant that if an item had been moved its ID could change. The generation and storage of item IDs on the loading of a puzzle is not stored as a delta, so it won't show up as a move and won't be undo-able. - Swap now requires tiles to contain movable items, instead of any items. - Masks are now re-evaluated when dequeued, with the potential to cancel the mask. This is because state can change in between when the mask is queued and when it gets processed. For example, if multiple portals are reached at the same time, the resolution of one of the portals may cause a subsequent portal mask to no longer be valid. - The tile indicator has been refactored to apply an "is not immutable" filter. The primary purpose of the indicator is to show the user they can interact with something in that tile, and immutable modifiers are not interactable, so it just creates noise. The lock and immutable modifiers mostly apply when moving something anyways. - Fixed getting color elements for a newly selected tile, if it contained merge beams it was throwing an error using because it was using `step.color` instead of `step.colors` (which is an array). - Updated the portal collision logic in `beam.onCollision` was not handling every case. - Fixed state index not being updated correctly if `keepDelta` was false on state update. - Fixed state actions like undo and redo not being properly prevented even if they were disabled visually. The reset action is also now being disabled in cases where it should be. - Fixed the puzzle mask queue not being emptied when the puzzle was reloaded, which caused some strange undo/redo behaviors.
- Loading branch information
Showing
18 changed files
with
723 additions
and
149 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.