IMPORTANT . "Exit Program" in game menu / on SDL_QUIT . fix remaining problems with shadow rendering (memory consumption & slow screen flips in large levels) o reorder levels . two modes: easy/hard . re-implement stippled shadows ? track down mingw compilation bug o polish existing levels . move additional configuration scripts to etc/ . fix sound effect volume (explosions in particular) . run levels in a "sandbox" . make fart stones destructible (laser, dynamite, hammer, bomb) . fix puzzle stone <> magic wand interaction o add missing models for whiteball MISC . different oxyd stone animations in 8bit mode . low detail graphics o level editor x add simple window manager x move display code into a class x reuse display code in level editor GAME . don't crash when creating unknown objects or models . do no allow items on certain floors (like abyss for example) . background behind floors: water/abyss/space/swamp . allow using the mouse wheel for rotating inventory entries . remember stones<->actor contacts, don't treat these as collisions . restitution coefficient for collisions ? use proper 3d coordinates throughout . error handling in world:: (eg world not created) . client-server architecture . network/internet game (use quake networking code?) . also use angular velocities for the marbles DISPLAY / GRAPHICS . models: st-fart . help screen . highlight current item in inventory . implement bbox() for models . make black ball shine . opengl display . rotating marble o special menu entries (editable) SPECIAL OBJECTS / ACTORS . rotors . elastic bands ? level teleporter . warp tunnels (a la sonic) . protection shields . "horse" ITEMS . cherry ? wire . white bombs . warp tunnel (a la oxyd) . flags . bags . sunglasses . cup of coffee FLOORS . trampoline o brittle floor . swamp STONES . remove magic stones when key is pressed . make complete puzzle stones explode . rotary switch . white/black switches o electric stones . rotating stone . knight . mail stone . spitting stone . scissors stone . rubber band stone . turnstile OPEN QUESTIONS ? use Object reference counts ? edge radius as parameter for stones ? world invariant: no objects are killed during a tick DONE --- before 0.64 --- 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 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 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