Time areas are fully implemented and working!
- Audio player is now deduplicated and works properly with forward time travel
- New internal concept of a “pausable” entity, which fixes the majority of time area logic
- Implemented time areas by applying an override state to pausable entities
- Fixed bugs with Rewind, Unwind, and Execute actions not restoring the timeline state correctly in all cases of repeated undo/redo
The circular sprites represent the consumable “time items”, and the black sprites represent the reusable “time areas”. Here’s a short demonstration of the mechanic:
While this is not a real level, it shows how you can go forwards and backwards in time arbitrarily. A very important point shown is that when a paused object’s state changes, it does not modify the timeline - you can see forward time travel AFTER the paused player pushes the paused block. At the very end, I held the undo button, which undoes everything including the player’s forward and backward time travel moves.
It is apparent from the video that I need to work on sprites and sprite states. I also need to work on an order-based priority input system - basically, this just means if you press multiple buttons at the same time, it will always prioritize the latest keys pressed, over the earlier keys. It should fix buggy behavior when holding multiple keys down, AND keep controls feeling responsive.
I still want to test out allowing items to be pushable (life points and time changers).
Hopefully this week, I will be more productive.