Release Checklist:
~~~~~~~~~~~~~~~~~~

- make sure all important strings are translatable

- run ./extract-po.sh && ./update-po.sh

- update ChangeLog: svn2cl --break-before-msg

- make sure that the game still runs after install.sh

- check NEWS, README, INSTALL.*

Make a release:

(export can also work with a already checked out version)
svn export ~/projects/pingus/svn/trunk/pingus/ pingus-0.7.2
tar cvjf pingus-0.7.2.tar.bz2 pingus-0.7.2


Stuff to do at all times:
~~~~~~~~~~~~~~~~~~~~~~~~~

- grep for all the FIXME's and '#if 0' and find those that might be
  important, add what you find to this TODO

Roadmap for Pingus 0.8.0:
~~~~~~~~~~~~~~~~~~~~~~~~~

"Important" Stuff and Random Notes:
===================================

* CollisionMask cleanup

* add "Save Demo" to the result screen

* add "Replay" to the result screen

* incooperate xskat levels

* animate the flag or remove it for single-player

* make GUI resizable

* playfield scrolling should be float

* generate thumbnails for the editor, loading times are inacceptable

* Repaint Exit pannel

* write level 'screenshot' tool

* split Pingus into base and extra user contributed content

* intro/end story and credits are not properly displayed currently

* do SurfaceButton with signals

* toggle buttons for the editor toolbar would be good
                             _________
* replace eraser-abort with ( <- Back ) button

* drawing context defaults to display::get_width/height, need to adjust that

* clicking while the screen changes is weird

* tooltip missing for actions (got removed in refactoring)

* fullscreen must use a different size then the current window size (round to nearest 'normal' resolution or so)

* input recording in the ScreenManager can't work when the underlying
  savegame or screensize is different, having assert() or so to catch
  that would be nice

* ScreenManager::fade_over should be integrated into
  ScreenManager::update, so that the mainloop is never left

* make all Vector classes inline

* add alternative fullscreen, screenshot and print-fps shortcuts for the OLPC, which doesn't have Fxx keys
  Ctrl-f -> fullscreen, Ctrl-s screenshot, Ctrl->p printfps

* add WorldObjs that provide hint to the solution

* remove default_screen_width/height, doesn't serve any purpose and is abused in a few places, same for screen_width/height

* How to handle clipping? In DeltaFramebuffer? -> 1) do it via srcrect? 2) make it a DrawOp?

* DeltaFramebuffer issues: clipping not yet implemented, particle effects are slow (to many small rectangles)

* Integrade Input-Demo recording somewhat better, like with command line switch

* Display a note when maintainer mode is active and display what
  keyboard shortcuts are available, move cheats into maintainer mode

* rewrite config file handling

* change cursor to cross with arrows when scrolling

* make "--language help" work

* the ObjectSelector in the editor is eating CPU cycles like crazy due
  to lack of clipping, minimap is also eating plenty of CPU due to its high object count

* Editor is passing non-normalized rectangles to drawing code -> Crash

* Thumbnail loading is slow (likely .png overhead)

* do not keep software backstore for MapTiles, instead record the list of surfaces needed to generate it

* keep statistic on allocated Surfaces and FramebufferSurfaces

* remove pingus_debug_flags or find some use for it

* make a more powerfull liquid type that automatically aligns itself to the bottom level border

* add a form of add-on handling to Pathname()

* datasets: core/, base/, add-on/ ?

* repaint tutorial island to 1920x1200

* cleanup sound, find out whats wrong with mod playback

* StatManager and new Config stuff should share code

* reduce the amount of new/delete's

* StartScreen has high CPU usage in delta mode (Diff to blame!)

* Worldmap doesn't properly handle scroll limits (did I break GraphicContext?)

* Remove support for line drawing

New Features
============

* split screen multiplayer

* keep highscores for levels (number saved and stuff like that)

Wishlist:
=========

* particle pingu explosions are rects, should be circles
  (Vel(rand()%10, rand()%10) vs Vel(angle, length))

* Change current pause/forward behaviour:

  - add VCR like effect for fast forward

  - add slow motion button (dead, turtle, pingu, rabbit)

* move time into pingus counter

* make option menu accessible from in-game (top/left corner)

Animation and graphic issues:
=============================

* convert all Pingu animations to a proper indexed format so that
  palette swap can be used in multiplayer

* proper waiter animation

* repaint pause and fast-forward button

* use transparent action buttons unless fast-mode is used

* add round corners to the minimap

* allow sprites as background (para parameter from hotspots?)

* redesign main menu

* animate the exit flag

* rework the UI, either go glas-like or use the blackbord style 

* X-Mas theme needs some more polish, to be done before X-Mas '08

* create jumper animation

Bugs:
=====

* Also, is this a already solved bug? I can play
> playable/panic-cbrucher.pingus but when I am playing I get this error in
> terminal and then the window closes.
> " PingusError: e has wrong color depth: "

* GroundMap tiles are currently RGBA, while in reality they are just
  RGB with a colorkey, room for optimization

* file parsing easily crashes or asserts on incorrect files

* Translation issues:

 - The suffix showing which extra skill a Pingus has (e.g. [f] for Floater or
   [c] for Climber). (will be fixed by climber gfx)

 - b) The big sign on the 'Tutorial Island' image

* digger (mean basher?) follows down slopes

* worldmap pingu walks right over locked levels

* paint climber

Unsorted:
=========

* Font::draw() origin only works properly for left, right and center, breaks with multiline text

* implement xschema-like language to check for syntax errors in the level files (partly done, needs documentation and proper integration)

* trap in one tutorial level with two exits is in background, should
  be foreground (???)

* Wiimote support (libcwiid)

* do we need z-pos for anything or does implicit object position serve
  the same purpose? Problem: Groundpieces all have the same z-level,
  the editor doesn't handle that and allows insertions inbetween

* pregenerate thumbnails for the editor, generating them takes to long (thumbnail loading takes long as well, need pack format)


Roadmap for Pingus 0.7.3
~~~~~~~~~~~~~~~~~~~~~~~~

New Features:
=============

* implement option menu

* rewrite Config file support, make game automatically write a default
  config file, use s-expr, goes hand in hand with the new option menu

* add cheats: all actions, unlimited actions, skip level, these must
  be triggerable via maintainer-mode, not via commandline switch

* CollisionMask can't handle RGBA images and likely shouldn't (due to
  them being animated and stuff like that), we however don't have
  seperate colmask for those images

* test wall-jump: maybe make it smaller then a normal jump

* make climber attach to wall after jumper 

Bugs:
=====

* resource system needs a rewrite/implementation

* Level Converter needs to be finalized:

  - convert all levels and check all classic levels for issues, also compare with xskat

  - level converter has a bug that causes some object types to be
    ignored (startpos and likely the other more excotic worldobj
    things)

  - fix the level convert script and write test cases for it

  - Loading data/levels/playable/chouser02.pingus in Editor and saving
    it again causes the background to be at the wrong position (caused
    by level lacking position and editor setting a different fallback
    then in-game) [Currently worked around in editor code, should be
    fixed in the converter]

* StringFormat does line breaking TeX-style, but that isn't useful
  with the current s-expr format, which can handle explicit line
  breaks just fine

* http://savannah.nongnu.org/bugs/?21176
To replicate:
1. Order a pingu to build a bridge.
2. When he "waits" after the bridge has been complete, order him to block.
3. He'll fall off the end of the bridge and continue walking as normal.

Wishlist Stuff:
===============

* integrate install command into scons (maybe), use 'install' instead of 'cp'

* Liquids/water is 32, others are 64, this is causing trouble with the
  collision map

Undecided stuff:
================

* start_pos is missing in editor (worked around by centering the view
  on the entrances)

* implemented input/ComboButton for Shift+Tab combinations

* add something like FileReader::must_read_int() for cases where a
  value isn't optional, something that can figure out values that
  havn't be used would be nice as well

  Suggestion:
    read_int("name", name, "Error Message")

* some people like auto-scrolling in window mode, in 0.6.0 it worked
  even when completly out of the window, in SDL the mouse coords don't
  get updated when the mouse isn't in the window (need to switch from
  event to polling?!)

* action-axis doesn't handle analog (do we even need this or could we do with axis-button?)

* remove SceneContext from Credits, replace with DrawingContext

* sv.po, Swedish is incomplete, lacks level and story text

* story graphics have a missing vertical line (due to age old gimp scaling bug)
 
* add drag&drop scrolling

* nuke button is unclean, other buttons not so great either -> repaint

* walker speed looks wrong, other actions might need fine tuning as well

* write a README.input


Roadmap for Pingus Editor 0.7.3:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Important:
==========

* remove support for obsolete tags: 

  - liquid/speed
  - hotpost/speed
  - hotpost/parallax (replace with para-x, para-y)

* Pack some new levels: indiana

* keep-aspect is missing in the editor

Medium Important:
=================

* implement proper tmpfile Support (save tmp levels to ~/.pingus/tmp/
  for backup purpose in case of editor crash or so)

* add yes/no question when creating a new level

* add overwrite warning to file dialog

* add pixel perfect object selection

* add icons to filedialog

* Dialogs: Editor Properties: user name and email

* show an error message if save fails

Less Important:
===============

* add ability to scale surfaces to the level editor and level format

* make inputbox handle text longer then the rect size as well as
  multiline text

* keyboard shortcuts need to be implemented with input framework, but
  how without support for keymaps?

* ObjectSelector need to support more object types, missing types:
  all kinds of traps, weather, special objects

* add type conversion (important to convert groundpieces in hotspots and visa verse)

* add options to show/hide hidden files and filter stuff

* could/should rotate around object center

* write a color select widget (Hue, Saturation.Value)

* object raising doesn't work for group


Older Stuff:
~~~~~~~~~~~~

* smasher doesn't correctly check the y-coordinate

* seperate colmap and gfx remover surfaces for digger, miner, etc. would be nice
  the current ones don't work very good since the remove path is too smooth
  - keep_trans,alpha blitters would also be very nice (darken the border of a digging path or something like that)

* diggers leave a small pixel barier when finished with there digging,
  which can be abused as a step

* replace all '9000' time levels with '-1' time or correct time

* fix author in all levels

* update email addrs and missing author fields in level files

* floater and jumper don't work together

* playable and non-playable levels should be sorted

* add better load-from-file support for hotspots, backgrounds, etc.

* pingus doesn't die when out-of-screen

* Floaters shouldn't float until they've fallen the minimum distance
  it'd take for a regular Pingu to splat. That way, you wouldn't have to
  worry about floaters moving so slowly a lot of the time, when
  unnecessary

* Bashers cut in circles, so their last two or three swipes should be
  square when breaking through to an open space, since they currently
  can trap Pingu in, requiring another one or two bashes. This is
  especially obvious when bashing through wells. They can also bash
  through metal, which they shouldn't be able to.

* All entrances should have graphics and be animated

* Bridgers seem to move backwards when they first start stacking (I
  think that their graphic may be more to the left in its square than
  the walker graphic, and also a little smaller than the walker
  graphic - probably because it's confined to a square of the same
  size - maybe give special workers slightly larger graphic sizes, so
  they can appear to be the same size as walkers)

* Sometimes diggers can't be changed into miners.

* In space levels, Pingu that fall off of a cliff into space don't
  die, though they should just like in water or lava.

Missing Groundpieces
====================

Desert Theme:
 - all bocks need to be available as solid in addition to the
   non-solid blocks, some level already abuse the non-solid blocks as
   solid.

Sortie Theme:
 - this theme needs 'normal' groundpieces which can be used to dig
   throught and things like that, it currently only has horizontal and
   vertical bars, which make building levels quite difficult

Other Wishes:
~~~~~~~~~~~~~
* Water, Lava, Snake, Spike, Electric pits
* Cursor follow mode
* Pingus able to swim

> Man koennte Tueren, Treppen, Bruecken, Lifte, Teleporter...
> einbauen ("Extra pingu actions"), die sich auf konventionelle
> Weise nicht oeffnen/begehen/ausfahren/aktivieren lassen, sondern
> erst durch einen "Hacker-Pingu" freigeschaltet werden muessen,
> der sich an einem nahegelegenen Terminal an die Arbeit macht. Um
> ihn da wegzubekommen, muesste man ihn natuerlich sprengen (wie im
> echten Leben *grins*).

# EOF #
