Implemented remaining time-travel compatible, player-laser interactions.

Overview

Now, lasers kill player segments. Edge cases such as single/multiple middle segments being hit by laser(s), are all handled. When middle segments are destroyed, new player “head” entities are formed by upgrading the next available segments, which forms player clone groups that all move together.

Changes

  • Implemented CreateEntity action and new addEffect queue to ActionTimeline
    • CreateEntity has callbacks for running events at different points in the redo/undo life cycle
    • An addEffect callback now is passed to action methods, to be able to safely queue up additional actions to run during redo/undo - after getEffects already has run. This is used to run additional actions after CreateEntity runs when adding player segments.
  • Fixed DestroyEntity time travel issue
    • Detached entities were not considered valid with regular PicoES entity.valid() check
    • Added “valid” component to use in default mutates()
  • Fixed RemoveComponent undo bug changing class instance type to vanilla object type
    • Caused by using PicoES entity.update() on undo() to restore previous component data
    • Updated PicoES 0.5.3 to include a new entity.setRaw() method to more easily restore component data by reference to an existing/previous component
  • Other fixes not listed here

Next Tasks

  • Implement pausing followed entities (like the new player)
  • Merging logic
  • Camera positioning logic
  • Proper player sprites (2.5D)
    • Animation for walking
    • Animation for death
  • Screenshots and more gameplay recordings to share