* BEFORE 1.00

. different model for st-laserbreak
. potential memory leak when Timer::clear() is called before all
   alarms are triggered
. z coordinate for actors
. no respawning in mediation landscapes
. what happens to bombs when bombstone explodes?
o parse "special" entries in Oxyd levels
o odd number of oxyd stones -> turn one into a fake oxyd
o use objects IDs for oxyd->enigma translation
o it-cross
. most stones can turn hollow when receiving signal 1 (pox 11)
. graphics for st-spitter
. stone destruction by spitter
o rubber band item
. add missing models for small whiteball (swamp, jump) or disable
  "jump" and "sink" messages
. execute Lua scripts from .zip files
. improve st-oneway_{black,white} graphics

* OXYD IMPORTER

o oxyd: initialize game variables (force factors etc.)
. lightmover stone
. seed turns directly into fl-wood under certain st-grate's

* OXYD 1 LEVELS

. ox1 23: screen filled with desintegrating stones when starting
. ox1 27: solvable, but only by suiciding...; CHECK
. ox1 32: stone does not turn hollow
. ox1 34: force multiplier on floor wrong
. ox1 38: border stone not destructible!
. ox1 47: bridge not working properly
. ox1 53: signal problems
. ox1 62: force field missing
. ox1 63: exploding glass stone should desintegrate into floor tiles
. ox1 72: exploding glass stone should desintegrate into floor tiles
. ox1 75: path completely visible at the beginning?
. ox1 78: white balls should fall into abyss
. ox1 82: odd # of oxyd stones
. ox1 84: right border floor a bridge (how does that work?)
. ox1 88: odd # of oxyd stones
. ox1 89: laser does not turn on
. ox1 90: magnets too strong
. ox1 100: 
o ox1 124: solvable? test
. ox1 126: hide invisible death stones when switching players
. ox1 138: unsolvable because of magnets? check
o ox1 152: electric force not strong enough
. ox1 153: missing item it-drop
. ox1 155: signals ok? check
. ox1 158: explosion should ignite all 8 neighbours
. ox1 171: missing item it-drop
. ox1 173: infinite magnet range 
o ox1 180: wormhole too strong
. ox1 184: bomb should destroy all 8 adjacent bomb stones
. ox1 191: 
o ox1 199: what do switches do? 
. ox1 200: 

* PER.OXYD LEVELS

. pox 11: stone doesn't turn hollow
. pox 13: strange timing (check)
. pox 14: solvable? check
. pox 19: door does not close, spitter not working
. pox 20: rubber band a little too strong
o pox 22: solvable?
. pox 23: stone undef (fourswitch)
. pox 29: should floor change?
. pox 30: only one meditation marble controllable?
. pox 32: cannot jump on horse, horse too fast
. pox 35: magic wand-puzzle interaction wrong
. pox 37: blockers connected to multiple triggers don't work
   correctly; CHECK
. pox 40: only one meditation marble controllable?
. pox 39: door in the way (CHECK)
. pox 41: dynamite thrower
. pox 43: magnet range
. pox 48: spitter does not work
. pox 49: cannot open vortices; CHECK
. pox 51: replace document, replace pencils?
. pox 53: items undef
o pox 55: 
o pox 57: 
o pox 61: should bolders destroy stones?
. pox 63: fourswitches behave wrong
. pox 65: rubberband a little too strong
. pox 66: can bolders crush st-plain? CHECK
. pox 67: spitter not working
o pox 68: laser can rotate puzzle stones
. pox 69: flat force constant has other sign in per.oxyd? CHECK
. pox 72: how does rotor move? CHECK
o pox 74: CHECK
. pox 75: floor undef
. pox 77: can rotors activate switches? CHECK
. pox 78: 
. pox 81: door opens right away (why?)
. pox 91: do doors press buttons? CHECK
. pox 95: playtest
. pox 97: spitter not working
. pos 98: bolder-laser interaction correct? CHECK
. pox 100: stones, items undef
. pox 105: 
o pox 112: horse moves strangely; CHECK
. pox 114: too easy? CHECK
. pox 117: stones, items undef, check
. pox 120: wormholes too strong
. pox 121: cannot jump on horse
. pox 126: item 0x3e undef, gravity in space correct? check
. pox 128: forces wrong? check
. pox 129: small balls deadly; cannot move through grate
. pox 134: item 0x14 undef
. pox 135: bolder-laser interaction correct? check
. pox 140
. pox 142: stone undef
. pox 143: stone undef
. pox 146: item undef
. pox 152: stone, item undef; gravity? check
. pox 153: forces wrong
. pox 154: item undef
. pox 160: meditation marble deadly
. pox 162: unsolvable -- can glass push triggers?
. pox 163: item 0x3e undef, floor undef
. pox 164: stone undef
. pox 166: item undef; timer correct? check
. pox 167: item undef
. pox 168: spitter not working
. pox 169: floor undef
. pox 174: stone undef
. pox 177: "+" as signal handler not working
. pox 178: stone undef
. pox 179: stone undef
. pox 181: check
. pox 182: wormhole range
. pox 183: rotor movable? check
. pox 184: stone, floor undef
. pox 186: item, stone undef
. pox 187: item, stone, floor undef
. pox 190: item undef, meditation marble deadly
. pox 191: floor undef
. pox 192: stone undef
. pox 194: "+" as signal handler, wormhole range
. pox 195: solvable? check
. pox 196: signals correct? check
. pox 198: item undef, strange rotor behaviour
. pox 199: stone undef
. pox 200: floor, item, stone undef

* OXYD MAGNUM LEVELS

. oxm 13: ?
. oxm 17: stones should slide on ice, wooden stone should not drop into abyss
. oxm 25: TEST
. oxm 28: triggers don' work; TEST
. oxm 32: fake oxyds; rotor too strong / too little friction
. oxm 33: stones should not break
. oxm 34: ?
. oxm 35: fake oxyds
. oxm 36: missing stone 0xa7
. oxm 37: friction not correct
. oxm 39: ac-bug should be frictionless over abyss
. oxm 41: missing stone 0xa7
. oxm 43: ?
. oxm 45: missing stone 0xa7
. oxm 46: ?
. oxm 48: wrong stones for passage
. oxm 49: magnets too strong?
. oxm 51: missing stone 0x92
. oxm 52: ?s
. oxm 53: missing floor 0x42
. oxm 57: missing stone 0xa7
. oxm 64: missing stone 0xa7


* OXYD EXTRA LEVELS

. oxe 2: is item really a bag? fake oxyds should look like oxyds
. oxe 3: fake oxyds
. oxe 5: bridge not working
. oxe 12: fake oxyds
. oxe 13: correct mirrors?
. oxe 15: rotor too strong?
. oxe 21: add yinyang? how to destroy the cracked stones? wrong stone type?
. oxe 23: switches working correctly?

* LEVELS

. Fix 'Push and Pull' (very easy)
o polish existing levels (easy mode etc.)

* MISC

. traits / IDs for floors, stones
o Use numeric object IDs internally instead of object names
  (we need this for (a) a data-only level format, and (b) an efficient
  network protocol)

* GAME

. use material properties (restitution coefficient, sound) for collisions

* DISPLAY / GRAPHICS

. models: st-fart
. fix ShogunDot graphics (size=2+3)

* SPECIAL OBJECTS / ACTORS

o "horse"
. spermbird

* STONES


* DEFERRED TASKS
. configure.ac: add --with-enet=, --with-zipios= etc.
. maybe integrate startup.lua into binary to make initialization more
   robust
. properly handle collision between flying actors
. real 3D coordinates for actors
. sort levels into level packs / subdirectories
. turnstiles: animate when rotating (how?)
. add ability to change keybindings
. odometer
. background behind floors: water/abyss/space/swamp
. animation for falling st-wood, st-block
. "Exit Program" in game menu / on SDL_QUIT
. clean up Lua interface
o network/internet game
- Editor
. icon bar
. signal layer
. object selection menus
. loading
. saving
. change level size
. documents -- how?
. level attributes (name, author, gravity, ...)

* OPEN QUESTIONS / DUBIOUS IDEAS
? special menu entries (editable)
? warp tunnels (a la sonic)
? script for levelpack creation
? rotating marble
? add simple window manager (for editor?)
? also use angular velocities for the marbles
? only distribute Intro level pack with Enigma
? wire
? opengl display
? use Object reference counts
? edge radius as parameter for stones
? run actor_enter() / actor_leave() when jumping (necessary for
   trigger, conflicts with floor changing item)

* DONE

** --- before 0.90 ---

x assign priorities to sound effects
x (highlight current item in inventory)
x implement bbox() for models
x fix time hunt
x draw game menu on top of _tinted_ background (options menu looks
   horrible otherwise)
x fix win32 build -- why two copies of zlib.dll ???
x fix enigma levels with keys/locks
x it-drop
x move oxyd->enigma mapping to enigma sources
x Screenshot (F10) crashes enigma in most cases (on P4/2.4)
x better error handling
x solve thumbs problem
x fix error handling in .zip level packs
x (thumbnails: Put them into ~/.enigma/thumbs32|48|... on Unix) no,
  keep one thumbnail size for now
x 40x40 it-cross, it-pencil, it-squashed
x configure.ac: add --enable-experimental
x better resampling code for sound rate conversion
x improved graphics for color-blind players
x fix: restart level after last life is gone
x st-whiteballs, st-blackballs
x fix: growing wooden stones replaces bolder -> crash
x user bigger thumbnails is higher resolutions
x create high-quality thumbnails using Lanczos filter
x show marbles with shadow when creating previews
x it-wormhole-off
x rotors don't follow invisible marbles
x oxyd: parse electric force strength
x does it-seed respond to signals? No
x the white bombs are supposed to destroy 5 fields
x fix bomb / dynamite behaviour
x oxyd: wormhole / magnet range
x it-surprise -> dynamite, spring1, coffee, umbrella, hammer
x laser turns banana into cherry
x Oxyd: international messages
x item traits
x add $(srcdir)/*.jpg to the pkgdata_DATA variable (thanks to Erich Schubert)
x faster loading of Oxyd level packs
x crushed cherry
x pencil (does nothing so far)
x bags
x variable item radius
x (error dialog) displaying short error text enough for now
x exit client when server encounters error; show error message
x oxyd1: actors sink more slowly in water
x removed emergency shield for marbles
x adjustable sink speed in swamp and water
x (redesign signal mechanism) good enough; rest can be done with callbacks
x (use pnglib directly instead of SDL_image) we need jpeg support for
   the menu background
x fix rounding errors in display.cc
x change video modes on the fly
x moving stones should shatter all marbles inside the new field (no
   reliance on actor_inside() etc)
x remove magic stones only if hit heavily
x support for higher resolution video modes
x (exchange F3 and Shift-F3)
x level menu: mark level as solved (for users of old releases or those
   who lost their enigmarc file)
x fix: all other stones that can be destroyed
x it-burnable should ignite if a neighboring bomb explodes
x remove it-ring after using it (only in singleplayer mode? not sure)
x expose signal mechanism to Lua scripts
x oxyd: shuffle oxyd stones (not documented so far)
x stones which are falling into abyss are supposed to disappear in the
  swamp
x plain stone like in oxyd (mostly there? check)
x st-bug
x flash stone (transfers impulse from one actor to the other)
x fixed vortices to handle multiple targets
x cherry
x fix: blocker stones appear at beginning of level (peroxyd)
x spoon
x oxyd: timers, wormholes
x st-blocker is technically not floating (buttons get pressed), but
   actors can enter it (conflicts with Actor::can_move())
x st-surprise
x fourway switches (use up to four signals or send numbers 1 to 4)
x oxyd: rubber bands
x Extend LevelPack class to include get_status, set_status, 
  count_solved_levels, etc [dh]
x spitting stone [dh]
x remove in-game documentation (replace by tutorial levels)
x new file format for .enigmarc [dh]
x redesign options menu [dh]
x (re-implement stippled shadows)
x fall back to 640x480 window if video mode initialization fails [dh]
x cleanly separated the global and the level-local Lua environments [dh]
x time hunt mode [rw]
x cache automatic previews on disk (pnglib) [rw]
x (low detail graphics)
x (different oxyd stone animations in 8bit mode)
x new graphics for normal/black/white switches [dh]
x new scheme for level metadata (author, level name, revision,
  hints, par time, has easy variant, etc.) [rw]
x bottles (that make the actor drunk, see esprit) [dh]
x "essential" attribute for actors -> restart level if actor dead [rw]
x "essential" hollows -> must be filled with meditation ball to finish level [rw]
x level revision used instead of time to flag as changed [rw]
x improved game restart (essential/unmovable actors) [rw]
x fix: movable impulse stones got stuck after first move [rw]
x prefer ~/.enigmarc under Windows if %HOME% is set [rw]
x smart respawn [rw]

** --- before 0.81 ---

x fix level-restart bug
x display state of coinslots
x renamed *vulcano* to *volcano*
x dynamite explosions in space don't create abyss

** --- before 0.80 ---

x (move zipios configuration to toplevel) no need to do so
n (rethink coin implementation) works fine as it is
x "Slinky Racing" solvable?
x fix door bug
x fix: intersecting actors getting stuck
x umbrellas protect against thieves
x fixed timing problem with st-stoneimpulse stones
x fixed bug where triggers can get stuck
x Fix shadow rendering on OS X
x give marble an emergency shield if it would die after respawning
x update credits
x disallow starting locked levels with the "Start Game" button
x open pair of oxyds only if first one was already blinking
x mouseforce attribute for actors acts as multiplicator, not boolean flag
x fix extinguisher display bug
x finish user manual
x flip arrow on st-oneway on "signal" or "flip" message
x only handle actor-actor collisions if both actors are alive and on
   the floor
x horizontal and vertical strips
x toggle holes and hills on signal
x disco stones: normal messages
x fix Oxyd 2p meditation landscapes
x fix fl-acwhite, fl-acblack
x killer balls
x do not make all level in a levelpack freely playable (force players to solve levels).
x ac-bug
x rotors shatter the marbles
x knight
x remember stones<->actor contacts, don't treat these as collisions
x fix: inventory does not show when starting a level [rw]
x draw rubber bands to gc, not to screen
x update credits
x remove lib-src/libtolua directory from CVS
x build tools optionally (configure --enable-tools)
x sunglasses [rw]
x fix: blocker stones (use Model::reverse() like in other doors) [rw]
x fix floor traits problem (see DefineSimpleFloor for note)
x protection shields
x swamp (tweak parameters)
x add missing models for whiteball [rw]
x warp tunnel (a la oxyd) [rw]
x cherry
x add Menu::tick() and move update_info() calls there
x display warning when option cannot be activated immediately
x item radius [rw]
x bolder stone falls into abyss [rw]
x Fix all memory leaks [ant]
x cup of coffee
x rotors
x spinning tops
x fix: actor animations
x make fart stones destructible (laser, dynamite, hammer, bomb) [rw]
x disco stones
x floating stones do not activate triggers
x bridge items for Oxyd
x time game
x redesign level menu
x different screen sizes
x white and black tiles
x electric stones
x fix puzzle stone <> magic wand interaction [rw]
x added oxyd-compatible puzzle stones [rw]
x make black ball shine
x include zipios in distribution
x turnstiles: fix strange behaviour when trying to turn them with
  pullers / rotator stones [rw]
x brittle floor [mh,dh]
x Draw rubber bands in one pass
x update autogen.sh to configure libraries
x do not use global Lua state for model initialization
x display-lua.pkg
x move parts of init.lua to startup.lua
x add parameters for friction/slope for oxyd compatibility
x flags [rw]
x mail stone
x update zipios++ from CVS to fix compilation problems
x get rid of pink border in oxyd mode
x self-contained level packs
x white/black switches [sf]
x two modes: easy/hard [rw]
x implement easy mode stone
x bolder stones: do not change direction when pushed by
  st-stoneimpulse
x allow using the mouse wheel for rotating inventory entries [ant]
x white bombs [mh]
x rotators
x blocker stones [rw]
x use signals for oxyd levels
x better scrolling (marble cannot leave the screen)
x signals
x track down mingw compilation bug [none found]
x improve documentation
x move display code into a class
x reuse display code in level editor
x try to get rid of global variables as much as possible
x use only 2d coordinates
x don't crash when creating unknown objects or models
x pullers
x fix remaining problems with shadow rendering (memory consumption &
  slow screen flips in large levels)
x turnstiles
x turnstiles: allow use of pullers to rotate
x turnstiles: crush actors
x rotary switch [sf]
x Import oxyd level pack if .dat file present
x Save config file more often
x trampoline (springboard) floor [mh]
x turnstiles: draw pivot stone
x impulse stones: interaction with stones; movable version
x puzzle stones: allow use of pullers

** --- before 0.70 ---

x reorder levels
x fix sound effect volume (explosions in particular)
x run levels in a "sandbox"
x help screen
x elastic bands
x scissors stone
x rubber band stone
x finish worm hole
x spatialize sound effects

** --- before 0.60 ---
x redesign level menu
x speed up level loading (profile - where is the bottleneck?)
x fix blackball- graphics (make them smaller)
x sound volume in options menu
x music volume in options menu
x improve collisions with stone corners (finally!)
x mouse speed in options menu
x options in game menu
x level pack menu
x player switcher
x let main actors appear/disappear when level is beginning/finished
x new main menu
x fix shogun stone graphics
x save par times for levels
x grab mouse cursor in windowed mode; release it in the menus
x save information about completed levels
x change sprite being followed when switching players
x level packs
x let main actor decide whether an item may be dropped
  (eg, only if in state IDLE)
x remove main actors as soon as level is completed
x properly update changed models on the screen
x fix laser--stone interaction
x update AUTHORS and credits
x fix trigger signal of holes/hollows
x magic stones
x spade
x finish yinyang item
x sword
x ice
x pipes
x fix bridges
x finish magnets
x add alias model
x fix graphics bugs
x fix shadows
x white ball
x convert level previews to 8bpp
x try out NSIS for win32 packaging
x merge gfx8 and gfx directories
x fix webpage--main server now nongnu.org
x stop scrolling messages when rotating the inventory
x redraw status bar only when necessary
x puzzle stones transform to gray floors on water/abyss
x support for 8bit gfx
x replace dictionary in Object with assoc list and save loads of
   memory
x improve menu redraw speed
x stone seed
x laser switch (mh)
x yin-yang stones of all sorts (mh)
x impulse stone that pushes actors
x generic rectangle class
x credits
x magnets
x worm holes
x implement soft scrolling
x check for and raise errors in Lua interface routines (handled by tolua)
x save configuration file

** --- before 0.50 ---

x models: st-timer
x springs
x impulse stones
x pause game if program is deactivated
x speed up complex screen updates
x finish implementation of meditation landscapes
x models: fl-gradient
x subimage models
x sloped floor
x emerging/disappearing floor (mh)
x alpha blended shadows
x re-do actor shadows properly
x breakable stone (sf)
x new door types (st-doora, st-doorb) (sf)
x enigma.GetTicks() function for Nat's maze generator
x thief stone (mh)
x options menu
x mouse cursor for menus
x new menu system
x keys in various colors (sf)
x key switches (sf)
x in-game menu
x activate menu entries with the mouse
x slot machine (jf)
x coins (jf)
x ball--ball collisions
x small balls (different colors?)
x "bolder" stones
x floppy switch (mh)
x stone impulse stones (mh)
x reorganize objects.cc into smaller pieces
x cross-compile using mingw
x finish rpm spec (as)
x bomb explosions destroy nearby items and the floor underneath

** --- before 0.40 ---

x flavor "c" and "d" oxyd stones (thanks to Johannes Fortmann)
x removed in-game music and the .texi documentation (for now)
x puzzle,door: destroy marble
x flavor "a" oxyd stones
x --nomusic switch
x fart stone (st-fart)
x timer stone (st-timer)
x extend and fix tools::Timer class
x wooden floor
x wooden stone
x modify PUZ_0000 so that it's fully connected and actors can pass through
x make moving & swapping work for animated stones
x kill actors inside a closing door

** --- before 0.39 ---

x oxyd_shuffle
x polish puzzle stone gfx
x allow definition of new object types in Lua (restricted to simple
  floors and stones so far)
x distinguish between "touching" and "hitting" a stone
x nice background image for main menu
x pause (enter in-game menu)
x handle contact with floor tiles and items
x new "items": hills and hollows
x new floor: water
x death's head stones
x extend configure.in to distinguish Lua 4.0 and 4.1
x add Lua 4.1 support
x remove Lua from distribution
x soft fading of music
x background music for main menu
x tint_rect()
x upload CVS snapshot
x let objects create force fields

** --- before 0.38 ---

x there seems to be a subtle bug in the laser code. track down and fix.
x new level: mirrors
x fix LaserSensitive to handle laser stones and mirrors
x fix interaction laser beams <-> doors
x glass stone
x new level: space
x switch gfx
x shogun dot/stone gfx
x switch
x shogun stones
x shogun dots
x doors
x door gfx
x inverse motion floor
x space
x put together a small homepage
x puzzle stones
x chameleon stone


** --- before 0.37 ---

x submit project description for savannah
x level preview
x finish levels if certain criteria are met
x play music during the game
x implement image cache
x level selection menu
x return error codes from lua::Dofile
x add license information in all source files
x register at savannah
x add fadein/fadeout effect when (re-)starting a level
x move to next level when all oxyd stones are open
x oxyd stones open when hit by a laser beam
x re-start level when all main actors have been killed
x explosion as new item type
x different model for extra life in inventory
x animation for falling marble
x abyss
x time limited text display in the inventory area
x more accurate collision detection with laser beams
x implement on/off actions for switches etc.
x marble shatters when hit by a laser or an explosion
x paint laser stones in other orientations
x message handler for LaserStone
x fix update of inventory when displaying messages
x make it easier to create objects in level description files
x clean up display_2d.cc
x let laser beams pass through floating stones
x ignite dynamite and bombs when hit by laser
x do screen updates more cleverly
x recalc light only once, and at the end of a turn
x laser recalc on changes to "illuminated" fields
x invoke removal() when objects are removed from the grid
x fix laser recalc when moving mirrors
x fix laserhv gfx
x laser beams
x laser
x mirrors
x mirror gfx / impl
x oneway stone gfx + impl
x use GridPos instead of explicit (int x, int y) specifications
x GridObject _always_ know about their position (heck, memory is cheap
  these days, 8 bytes more for each object won't hurt that much)
x interface for naming objects/retrieving objects by name
x image cache
x animation for active laser stone
x LoadImage, LoadFont routines in enigma.cc
x configure.in: create config.h, including DEFAULT_DATA_PATH
x enigma::FindDataFile
x load data from the installation directory
x add a way to define overlay images
x paint missing oxyd stones
x make data path configurable
x make "make install" work
x adapt item_under, floor_under in SetFloor, SetItem, etc. [removed
  these fields from ActorInfo]
x include LUA in distribution (convert to autoconf?)
x call Item::on_drop for dropped items
x clean up state transition in dynamite and bombs
x play sound on collisions with stones
x fake oxyd stones
x complete implementation of oxyd stones
x remove generic model manager in display.cc (use map<> instead)
x reversible animations
x animation callbacks
x remove class Model, do not pass Model objects between display and world
x gfx swap stone
x proper state transitions for oxyd stones
x opening and closing animations for oxyd stones
x composite model
x make --help actually output something
x complete bomb impl.
x complete dynamite impl.
x active objects in world::
x add --nosound option
x easier ways to define animations in models-2d.lua
x burning dynamite animation
x oxyd stones
x reset text display when entering a new world
x complete menu implementation
x colored fonts (in ttf2bmf ?)
x main menu
x check for SDL_ttf
x build ttf2bmf only if SDL_ttf present
x oxyd stone animation
x implement text display (only in inventory? on the screen? scrolling?)
x px/font.cc|hh
x fonts/ttf22bmf
x option for mouse sensitivity
x object callbacks to LUA functions
x calling Object::on_message from LUA
x only redraw sprites that have actually changed
x add border stones that keep objects from leaving the level
x fix add_contact()
x swap stones
x distribute all necessary files
x implement scrolling (also soft scrolling?)
x scroll if main actor of current player reaches the border of the screen
x set tile width/height in model description file
x make certain stones movable
x gfx: bombstone
x remove scheme code, adjust configure.in/Makefile.am
x write lua interface code
x lua interface code for display_2d, models-2d.lua completed
x load a configuration file
x rewrite guile files in LUA
x bomb stone
x make px::Array2 exception safe
x write .spec file
x it-dynamite
x it-black bombs
x it-magic wand
x it-hammer
x it-umbrella
x it-one up
x it-trigger
x actor-stone collision fine tuning (rounded edges for stones)
x make marble a little smaller
x vector reflection: use plane instead of line
x drop items or kill them if they so desire
x scanlines are seldomly used in px::Surface; calculate on demand
x insert picked up items at the beginning of the inventory
x do not pick up items if any mouse button is pressed
x activate objects
x player:: must have a way to determine the main actor for every player
x pick up items => on_pickup
x inventory management
x build and link LUA
x fix type checks in scheme interface
x object attributes (en-set-attrib / en-get-attrib)
x find and plug memory leaks
x random model factory
x reduce screen overdraw (particularly bad for many collision animation)
x make it compatible with older Guile versions
x inventory window
x two sprite types: ACTOR and EFFECT
x remove finished animations
x allow animationens for stones, items etc.
x px::abs(Vector) --> px::length(Vector)
x rename project to Enigma
x fix strange bug: ball can penetrate (and pass) solid stones
x fix rebounding from adjacent stones
x define animations
x show animation at collision points
x collision with stones => stone->on_hit()
x draw marble above stone shadows
x display2d: ShadedModel new
x remove `max_force' method
x collision handling (how?)
x physics simulation
x ball--stone collisions
x rebound from stones
x friction
x pass mouse force to world::
x use Assert<TypeError> in Value::get* instead of assert()
x world::get_force(Object *obj) -> friction, force fields etc
x force management in world.cc
x bewegung + position von actors in Terra richtig (->on_creation...)
x use o2-make-object instead of -make-actor, -item, ...
x correctly set window caption
x sprite movement: also redraw old position
x display_2d: fix screen update
x scheme-interface for model definitions in display_2d.cc
x display_2d.cc: do not save sprite positions in the model itself but
  keep it separate -> unified meaning of draw_at()
x display_2d.cc: implement animations as a vector<Model2d*>
x evtl: draw_at() und draw_shadow_at() für jedes Model2d?
x define models in scheme; remove init.cc
x redraw sprites only if they really moved on the screen
x World::tick
x rewrite main loop / screen update
x fix crash when reloading levels
x at program start: flush the event queue to avoid mouse jumps
x mouse force
x mouse grab
x make_actor, set_actor
x animation, sprite, animatedsprite
x timing module
x link to guile
