Fix peeking and turnstiles, add :restart and level
* Fix peeking in test runner because of the larger levels
* Make pulled not to pass turnstiles
* Add :restart input
* Add level
Add autoplay, level and :back input, fix timers in test mode
Add initial automatic play testing feature
* 'make test' runs automatic play test. It plays the game
from start to finish automatically, without any user
intervention and as fast as possible (without delays)
and checks that everything looks as it should be.
This play testing uses the textual ASCII "renderer", so this
visual representation is tested at the same time and no
graphical or TUI libraries are needed. Of course any 2D or 3D
representation is not tested by this test, but as
the different visual representations should be very
simple (only show the current situation visually, possibly
doing linear interpolation for the motion of crates), and all
the logic and animating is done in inside the game, the game logic,
animating and playability should be pretty comprehensively tested.
Fix and update 'Block Timer', change frame duration
* Remove magic number for frame duration and use different value.
* Use separate visuals for time and crate in 'Block Timer'.
* Fix initarg for uptime slot in 'Block Timer'.
* Add new test level.
* Add textual visuals for some counts (usable as times and counts).
Fix bugs and optimize for debugging in 'make slime'
* Optimize for debugging in 'make slime'.
* Fix initarg for 'west' slot of 'Pulled' crate.
* Add new test level.
* Fix state handling in 'Pulled' crate.
* Fix and refactor function 'between-inclusive-p'.
Add initial 'Pulled' crate, change visual representation, etc.
* Add Helper script for running from Makefile (because of
the W^X protection used in OpenBSD).
* Add platform specific notes for OpenBSD.
* Add initial 'Pulled' crate.
* Fix 'slime.sh' helper script for OpenBSD.
* Change visual representation to allow more than
one visual for a crate. This is needed for example
in 'Pulled' crates where the "handles" can be
drawn with much fewer assets by allowing the
separation of the base crate from the different
visuals for the handles. This can be used in other
places too (for example counters and timers can
have the time from a separate visual).
* Update all existing visual representations to use
lists of identifiers (instead of scalar identifiers).
* Check for NIL in function 'on-which-side-is-other'
Add 'Pass Counter' and delayed attach, fix wall collisions
Use correct test function, fix test level
* Use correct test function (for string keys) in
the textual visuals hash table.
* Fix the fake input in one of the test levels.
Add block counter, remove lamented slot and escape method
Continue with turnstiles, refactor level information
* Add rest of the turnstiles, both the 'one step'
and the regular ones.
* Refactor level data and fake input - make
fake input part of each level definition
and change the way the level data is defined.
* Add more initial test levels.
Purge lamented crates, add 'on-which-side-i-am'