JGame Changelog

2.0 -> 2.1.1 (20070518)

* fixed rounding bug in scrolling; rounding of sprites and background was
  different.
* fixed fileseparator bug: resources didn't load properly from jars in Windows
* updated MANUAL

2.0 -> 2.1 (20070510)

* changed initialisation code; a new method initCanvas is now used to do
  pre-engine initialisations; applet parameters can now be used to determine
  the view settings
* offscreen margins are now configurable with setOffscreenMargin
* fixed concurrency bug that sometimes caused glitches when scrolling
* fixed debug bounding box draw bug in scrolling playfields
* implemented tile pre-draw so that the tile drawing work due to
  scrolling is subdivided more evenly over frames
* replaced pfTileWidth/Height by the better names tileWidth/Height
* paths used for media and table files are now relative to package (unless
  starting with "/")
* moved gfx/ and sound/ to examples
* moved Nebula Alpha to subdirectory; split game jars so that applets will
  take less time to load.
* applet html generation code can now generate the same applet with different
  settings
* added suspended option in countObjects and removeObjects
* new method setTextOutline for drawing text with outline around it.
* fixed some small bugs: coordinate swap in setPendingViewOffset; image
  unloading was not done properly when redefining image; window border
  dimensions are better in windowed mode; fixed odd getImage method in
  JGObject; small fixes in docs
* some small changes: objects suspend immediately when created and off-view; 
* Caverns of Fire now has scrolling version

1.3 -> 2.0 (20070430)

* Scrolling. This implies several changes and additions to the base API.
  There are methods for setting playfield size, pan the view, get the view
  parameters, checking if objects are off-view, and a mechanism for object
  suspension.  Also, all paint methods can be used both relative to the
  playfield and to the view.
* The paint methods now take double coordinates instead of ints.
* A new game, Space Run III, illustrates scrolling.
* Dungeons of Hack has been adapted to include a scrolling version.

1.2 -> 1.3 (20070330)

* sound; the ...Audio... methods handle sound.  Some of the games now have
  some sound.
* added "online game generator" application in gamegen/
* committed shift-esc fix by Jeff Friesen
* new game: Ramjet
* made AppConfig a bit more robust
* minor changes: defineGraphics has been renamed to defineMedia, made
  i_am_applet public; some changes in docs.

1.1.1 -> 1.2 (20061023)

* much improved output of getKeyDesc, and added its inverse, getKeyCode
* added a new class, AppConfig, for game configuration.  StdGame now starts
  AppConfig when pressing [enter] in title.
* The games are adapted to work with AppConfig, that is, their keys are now
  properly configurable, and the proper start game key is displayed.
* Forgot to add Munchies to the launcher.
* Added HTML for "fullscreen" applets
* added "performance" section to manual
* defineImage now cleans up old images

1.1 -> 1.1.1 (20061015)
* Fixed concurrency bug where objects are concurrently accessed by game thread
  and repaint thread.  This gets rid of some of the rare null pointer
  exceptions inside Sort.
* Included a game launcher in the examples package so that the games can be
  run with -jar
* fiddled around with the JGEngineThread dynamics, without much effect though.
  I now yield every frame, and do the yield/sleep after the call to repaint().
* after trying out on a slow machine and finding that the gc causes a small
  jerk in the animation about once a second, I fiddled around with reducing
  the number of objects created, without much effect however.
* I found that javac -source 1.2 -target 1.2 works neither for the source nor
  for the target for jdk1.4.2.  I'm filing a bug report to sun, and have
  compiled this version on a "real" 1.2 compiler. 

1.0.2 -> 1.1 (20061007)
* new game: caverns of fire
* API change: ...BGTile -> ...Tile (these methods are used very often)
* bugfix: no more errors for objects with undefined bboxes in dbgSetBoundingBox
* fixed rounding bug causing the tile span not being correctly defined for
  negative coordinates.
* bugfix: setBGImage(null) never worked.
* changed protected members to package-protected.
* Change in update sequencing: moved "frame finished" actions on object out of
  paint loop to the end of the update loop; moved animation update to
  moveObjects.
* fixed broken getTopLeftTile()
* fixed sleep mode bug by clearing the wake-up key on wakeup

1.0 -> 1.0.2 (20061002)

* Full-screen mode didn't work in Jdk 1.2. This has been fixed.
* Image rendering has been improved.  There's a new method setRenderSettings.
* Changed fire key to Z in Insecticide (because of Windows trouble with
  pressing 5x shift).
* StdGame no longer requires you to start with setGameState("Title").
* Fixed pause game frame size in StdGame, and changed getFontHeight

Version 0.9 -> 1.0 (20060928):

* fixed ignore condition bug in StdGame, where gameOver was not ignored;
  fixed bug in JGEngine, which could be in the same state multiple times.
* added debugging options: an option for printing the game state, a dbgPrint
  method which enables printing on console and in the playfield
* inproved error handling/catching: neater error messages and an on-screen
  failure message for applets.
* cleaned up the setfont and setcolor code, added debug font and debug colours
* The application now opens a window without decoration in full-screen mode
* Yield updatethread when it can't sleep, so it hopefully gives more time to
  the input handler thread.
* moved StdGame to jgame package.

Version 0.8 -> 0.9 (20060924)

* made a standard game framework that simplifies global game state handling,
  and some standard game objects.
* added new games: ChainReaction, PubMan, Munchies, DungeonsOfHack, SpaceRun;
  improved MatrixMiner and Insecticide
* custom paint() method in JGObject, plus some extra paint methods in
  JGEngine
* mouse support
* Bugfixes/minor improvements: setFont, better animation timing,
  check...Aligned/snapToGrid now have a larger margin, images are now loaded
  using getResource.
* JGTimers now have parent
* defineImage and tables improved: the transparency flag is no longer needed,
  and the image size can now be used as default bounding box.  Wrote some
  docs on *.tbl files.
* miscellaneous extra methods: integer random, counttiles, alignment in
  drawImageString, getImage, getImageSize, getKeyDesc, wakeUpOnKey
* added special tile cid handling: setBGTileSettings, and set/and/orBGtileCid()
* api name changes: renamed the get...Tile... API to shorter names: getTiles,
  getCenterTiles, getTopLeftTile, getCenterTile.  Changed defineImages to
  defineGraphics.
* gamestate extensions: removeGameState, state transition method calls:
  start<state>
* images are now pre-scaled so that no in-game delay is introduced
* startup progress bar and splash screen
* used smoother image scaling algorithm
* included jar support and a "make jar"

Version 0.8 (20060907):

This project started in September 2005, but here is finally the first
"official" release.  The project is modelled after a previous project of mine:
XGame, an X11 game library.  In the JGame project, I wanted to have easier
tile handling, and also devised a more consistent and convenient parallel
model.  

