 * - TODO
 . - DONE
 ? - SOLVE
 ! - HURRY!
!! - HURRY!!

Short time goals:

! keyboard handling...
! better table for snooker, round table
! 8,9,14.1ball
! score (tez zaporne...)


  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

[0rfelyus] * OpenGL
           *   Selective display, bounding boxes
          !!   Respect level of detail
[t0rf]     .   Skins
[tomby]	   *     texture skins
           .     sphere with mark
[0rf]	   .     sphere with strip
          !!   tune lighting & material constants
           .   rotate spheres
           .   show FPS
	   .   fix realistic cue shadow
	              
[tomby]	   * Fyjik
 	   .   bouncing from polygons
	   .   holes
	   .     in hole detection
	   .	 hole collisions
	   *   cue
	   .      6 quads approx
 	   *      quadric
	   *	  handling waitings and movings after shot
 	   .   fix superman buxie
	   .   fix jojo buxie
           .   ground level (OOT), send event
	   !   discard all poted balls from further computations
	   * Fyjik optimalisations:
	   *    optimize colisions with table borders parallel to the x (y,z) axis
	   *    speed it up, up, up :)
    
[0rf]      * Geometry
           .   (Correctly) tesselate (round :) table holes
           .   Table & gluTesselator: ensure CCW orientation of table
           .   Table borders
           .   cue top & bottom
	   .   lod > 1 -=> better top           
	   *   better snooker table !!!

           * Control:
           .  bind cue to viewport
	   *  bind viewport to sphere, focus folows fastest sphere ...
          !!   cue should not colide with table (or spheres)
[t0rf]    !!   do not allow to come closer to objects that 16cm...
	   .  No more cue big bang!!!
           
           * Animation:
          !!   take off cue, place cue after query anwers
           *   sound events
           .   viewport: interpolate between various views
	   .       fix shortest path...
           .   better handling of cue & viewport rotation
	   .   after end of animation views should be rebound to cue
	   *   [foppish] - reverse direction first at replay (like vrsnooker)
	   *   [foppish] - move cue during start of animation replay
	   .   hide cue during animation until all balls are placed
           
           * Bindings
           .   game - allow to define game variants
           .   table setup - allow to define various standard table views
           .   init reload
           .   paths for loading files 
	   .   use lazy_catch & show backtrace...(see trapas console)           
	   .   beatutify pool-rules arguments & merge with add-querry...
	   .   disable garbage colector during shoot
	   .   ball in hand validate callback
	   .   (ensure that game can start with ball in hand...)

	   * Mature undo:
[0rf]	   .   	undo also game state (may needs cooperation from glue side)
	   ?    most of scheme functions (place-ball, place-cue...) should
	   ?    be realised through game events -=> so they can be easily undone
	     ?? (they just change last frame of animation -> undone automatically)
	     ?? (or they are called by appropriate next-stroke -=> undo (reset) automatically)

           * Documentation
          !!   WWW page
[jumbid]   .     graphics
          !!   document guile bindings and game creation
	  !!   user documentation, key bindings
           
           * Game
	   *   localize games using guile-gettext package
          !!   write basic games 
	   *	 8-ball
	   *	 9-ball
	   *     14.1-ball
	   .	 snooker
	   *       better snooker table (round pocket entries)
	   .     carom
	   .   sphere's angles should not be initilised to 0 0 ... - ugly uniformity
[rodo]     .   changing players
[rodo]     *   implement network game
      	   .   ball in hand
	   .   allow cue ball movement...
           
[rodo]     * Gui
[0rf]      .   SGI - fix score
	   .   extra views
	   .   show/hide mini views
	   *   widget for showing `ball-on'
	   *   finer score: distinguish between frames, games, points and breaks, 
	         consecutive fauls...
	   *   finer faul reporting
		- faul description, ...
           *   some games (14.1 for ex) shoud count number of fauls...
           .   multi line score
[rodo]     !   strength of shoot widget 
	   !   preferences: mouse sensitivity ...
[0rfelyus] !   after game_select set all views to default view

 FUTURE: 
-=-=-=-=-
	   * Fyjik:
	   *   Fyjik engine based on physical laws of cartoon world

           * Sound:
           *   initialise
           *   event handler
           *   wavs..

	   * Game:
	   !   split Game (rules) & 
	       Game (state of current game, players, queries, anwers, points,
	   !	     event queues !!!)
	   *   network game should also requre some level of abstraction 
	   *     over user's input (like shooting...) - move it from poolview.c

	   * AI
	   *   rules side: there should be function which returns
	   *     (?all?) possible sequences of events (like: shoot
	   *	 in cue bal, hit ball num. 5 first, than do what ever
	   *     you want and finally pocket ball 5 in hole 2 (or any hole)
	   *   pythie side: chose one of possible sequences and find appropriate
	   *     initial shoot strength/direction/... and add some error (according
	   *     to AI's game level

BUXIES:
[rodo]   !! game id bugs (games should not be saved to .gnome/gtulpas as ids)

