Progress file for DrDestructo2 v0.9.
-------------------------------------------

27-31.05.12:
* Bug fixes

25-27.05.12:
* Fixed images which were crashing Linux version
* Improved Linux compilation. Game runs now, but looks very bad
* Fixed error: values weren't preserved between pause options menu and main options menu
* Fixed error: music volume was calculated incorrectly (legacy code from irrKlang)

24.05.12:
* Implemented achievements export

12.05.12-23.05.12:
* Commented some code

11.05.12:
* All achievement icons

10.05.12:
* Fixed problem with looping in music (you have to write C00 into Effect column of MOD file to prevent tracker from playing silence)
* Created a few more achievement icons

09.05.12:
* Removed irrKlang dependency as it sucked

08.05.12:
* Fixed Linux compilation once again. The game still doesn't quite work.

06.05.12:
* Hided PBP message when level ends even if it's not complete (finally!)
* Added pause and options during pause

05.05.12:
* Implemented class for better briefing printing
* Used that class for PBP also

03.05.12:
* Wrote a function to print text on several lines in area
* Used that function in achievements description

02.05.12:
* Fixed collision mask in level 09
* Added short invulnerability period after spawn for player

01.05.12:
* Implemented Achievements screen. Needs more work, but OK for now

29.04.12:
* Implemented saving and loading achievements

28.04.12:
* Implemented the last achievement for now

27.04.12:
* Implemented target hits by type achievements

26.04.12:
* Implemented streak achievements

25.04.12:
* Implemented level completion achievements
* Fixed bug in achievements showing code: old achievements weren't cleared

24.04.12:
* Implemented timed kills achievements
* Implemented level time achievement
* Added level time and Kills-per-second to level statistic

23.04.12:
* Added Red Baron achievement
* Tried to add achievements for timed kills, but can't think how to implement them properly

22.04.12:
* Added achievements for kills by type

21.04.12:
* Added achievements to after-level statistic table
* Implemented gun & bomb achievements

20.04.12:
* Added after-level statistic table

19.04.12:
* Added statistics for two types of achievements
* Ran some tests about achievements parameters

18.04.12:
* Slowly restarting development after system reinstallation

14.04.12:
* Level selection finished

13.04.12:
* Some work on level selection

12.04.12:
* Made level selection work

10.04.12-11.04.12:
* Made level selection menu (selection isn't working)

09.04.12:
* Started work on level selection & unlocking

08.04.12:
* COMPLETED VERSION 0.8
* Added vsync as an option (on by default)
* Removed new music from level, left it in Intro & Menu
* Added level win & briefing music

07.04.12:
* Timed game at 53 minutes + about 60 lives! Too hard :)
* Corrected a few texts

06.04.12:
* Fixed serious bug in resource manager and a minor one in input handler
* Made level complete screen quicker

05.04.12:
* Fixed a few problems with sound & music
* Fixed regression in scores menu: input field wasn't positioned properly
* Added second fire mode to provide more original-like button-mashing gameplay as an non-default option

01.04.12 - 04.04.12:
* Wrote the second music, now used in menu and in levels

31.03.12:
* Finished outro

30.03.12:
* Added explosions to outro (grabbed better animation from Internet)

29.03.12:
* Added stars to the outro and asteroid shaking
* Created a bad explosion animation for use in outro

27-28.03.12:
* Started work on outro

21.03.12:
* Implemented new difficulty options

20.03.12:
* Continued menu refactoring, made ValueEntry template to allow holding additional data with each text value
* Added menu settings for initial number of lives and day length. Not applied yet.

19.03.12:
* Fixed hyperjet death object to be more like original game
* Collision masks are now loaded when object is created, so game startup is much faster

17.03.12-18.03.12:
* Refactored options menu to have multiple sub-menus

16.03.12:
* Fixed a bug: it was impossible to leave briefing screen when game failed to load some text
* Wrote text for level 21

15.03.12:
* Added enemies to level 20 & 21
* Wrote texts for levels 18-20

14.03.12:
* Fixed error in player_bomb_ai
* Added enemies to level 18 & 19
* Made spacejet object and spacejet_dead

13.03.12:
* Shuttle death object & AI
* Satellite object & AI
* Shuttle fires satellite now

12.03.12:
* Made shuttle AI

10.03.12:
* A lot of bugs & fixes related to luabind and Lua (do not ever use luabind as DLL, you'll regret it)
* Moved all AI to Lua

09.03.12:
* Started move to Lua-based AI. height_change AI moved.

06.03.12-08.03.12:
* Some HEAVY optimization, FPS up to 2000 from 80 now
* Tracked down slow behaviour on Intel cards to a bug in Allegro which leads to software rendering being used when hardware is supported.
  Reported the bug to forum, awaiting reply.

04-05.03.12:
* Shuttle object
* Mucking about with the new AI

03.03.12:
* Added support for loading SkyController params from level file
* Made proper space settings for the last two levels

02.03.12:
* Created files for new levels and added targets into them

01.03.12:
* Fixed some issues introduced by using new version of PhotoPaint. It doesn't save transparency by mask now, instead one should delete background of an object
  (does not work with background itself, so you should get rid of background and work with objects)

28.02.12-29.02.12:
* Ripped art for 4 new levels

26.02.12:
* COMPLETED VERSION 0.7
* Minor fixes

24.02.12:
* Support volume control separatedly for music/sound

23.02.12:
* Added sound options. Only master volume works

22.02.12:
* Fixed UFO death animation missing sometimes (was lacking INDEPENDENT_ANIMS flag and so was dependent on direction)
* Added explosion sound to UFO

21.02.12:
* Fixed error in fade-out in GameStateWin (fade time was initialized only after fade started)

20.02.12:
* Added hard-coded "spawn" sound event
* Added explosion sound for big planes
* Fixed crash when destroying invalid resources

19.02.12:
* Added gun sound
* Discovered a problem with irrKlang: it cannot replay one-shot sounds without reloading them (they are cached, though)
* Implemented sound events from animations

18.02.12:
* Added PitchFollowsAngle to simulate engine straining for player's plane
* Made new, somewhat better engine sound (it still sucks)

16.02.12:
* Sound component integrated and tested

07.02.12:
* Begin work on sound component

01.02.12-06.02.12:
* Music component started and finished in first iteration using irrKlang library instead of Allegro

27.01.12-01.02.12:
* Various preparatory work on sound sub-system

26.01.12:
* Started sound sub-system

25.01.12:
* Added intro state
* Added background picture to menu & briefing

24.01.12:
* Completed texts for new levels

23.01.12:
* Wrote texts for 3 levels

22.01.12:
* Added 4 new levels

21.01.12:
* Made paranoia object
* Ripped art for new levels

20.01.12:
* Made hyperjet death object. Hyperjet complete

19.01.12:
* Made hyperjet object work, death object remains

17.01.12-18.01.12:
* Started work on Hyperjet object

16.01.12:
* Completed UFO object
* Added support for one-shot animations which reamin at the last frame one played

15.01.12:
* Integrated boost::random to avert problems arising from bad rand() usage
* Fixed some problems with UFO AI
* Fixed resources leak: mechanic components were not destroyed

14.01.12:
* More work on UFO

08.01.12-13.01.12:
* Started work on UFO object

07.01.12:
* COMPLETED VERSION 0.6

29.12.11:
* Re-tuned all levels due to bug that was fixed yeasterday

28.12.11:
* Fixed bug with lives not being increased after level
* Added fade-out on gameovers
* Made player's plane turn faster, but with some inertia
* Fixed bug in target damage

27.12.11:
* Checked all levels, found several problems
* Calculated new day length at 9 minutes (for a total of 63 minutes for the whole game)

26.12.11:
* Fixed texts

25.12.11:
* Made uneven damage

24.12.11:
* Changed LevelDirector algorithm
* Tuned levels 10-13
* Fixed collision spheres of all enemies and a bug in collision sphere rotating

23.12.11:
* Tuned pictures for levels 12 and 13, but not texts
* Discovered that spawn-choosing algorithm sucks

22.12.11:
* Tuned pictures for levels 10 and 11, but not texts

21.12.11:
* Added third layer to ground controller to allow fo level 10 features

19.12.11:
* Finished two-layered ground controller and tuned appearance of level 09
* Fixed critical bug in resource manager (deleted resources were being accessed because name map wasn't comparing passports)
* Tuned level 09

18.12.11:
* Two-layerd reflection controller to allow target sinking "into" water

17.12.11:
* The last two levels for 0.6
* Fixed problems with animation-selected code leading to wrong display of independent darts
* Tuned level 05
* Tuned level 06
* Tuned level 07
* Tuned level 08

16.12.11:
* Only one new level due to internet troubles

15.12.11:
* Two new levels

14.12.11:
* Two new levels

13.12.11:
* Two new levels

11.12.11:
* Corrected a lot of graphic glitches
* Added choice between Direct3D/OpenGL modes
* Added VSync option for config file
* Fixed problem with OneTime trigger hapenning twice

10.12.11:
* Finished bomber
* Implemented player's bomb

09.12.11:
* Finished two-seater enemy

08.12.11:
* Finished high score table
* Started work on two-seaters

07.12.11:
* Mostly finished high score table

05.12.11:
* Fixed key menu entry to disallow duplicate bindings
* Started high score table

03-04.12.11:
* Inter-level briefing
* Play-by-play commentary
* Some fade-ins & fade-outs

02.12.11:
* Completed aiming aid

28.11.11-01.12.11:
* Bugfixes from forum
* Problems with keyboard events at high FPS

27.11.11:
* Fourth level
* Fixes
* COMPLETED VERSION 0.5

26.11.11:
* Added game win screen
* Corrected level progression
* Added game over by time
* Changed SkyController to accept external time and made Game keep time itself
* Second level
* Third level

25.11.11:
* Added loop commands to AI, finished copter death object
* Added support for handling Esc key in menus
* Improved menu navigation
* Added support for "repeat" keyboard event and used it in menus

24.11.11:
* Nearly finished copter death object (need AI loop command)

23.11.11:
* Started work on copter death object

22.11.11:
* Fixed regression in sky mines
* Completed second helicopter AI pattern

20.11.11:
* Fixed problems with basic helicopter & dart AIs

29.10.11:
* Implemented sky mines

26.10.11:
* Implemented controls redefinition

25.10.11:
* Implemented scaling for the whole game
* Implemented two scaling modes
* Added margins drawing for cases when Keep Aspect Ratio option is on

24.10.11:
* Started mucking around with scaling

23.10.11:
* Implemented fullscreen/resolution changes

17.10.11:
* Implemented configuration saving & loading (still, it's not applied)

16.10.11:
* Added menu system from Need For Brakes
* Created Main menu and Options menu with all options, but not functionality

25.09.11:
* Implemented next-level loading
* Implemented game restart
* COMPLETED VERSION 0.4

22.09.11:
* Implemented end-of-level behaviour
* Added flags that control is physic, graphic and ai should be updated and rendered
* Changed order of states rendering
* Now only the last (newest) state is updated
* Implemented gameover state (simple)

21.09.11:
* Fixed sinking condition

20.09.11:
* Added background for target
* Added simple win detection (by number of destroyed pixels at the sink line of target)

19.09.11:
* Improved collisions with target
* Ensured that all images are drawn respectively to center, not to upper-right corner

17.09.11:
* Implemented a draft of target damage

16.09.11:
* Added collisions with target

15.09.11:
* Implemented loading of collision masks
* Fixed important bug in XMLDeserializer: Attrib_* functions were creating COPIES of attributes!

14.09.11:
* Implemented target object creation
* Fixed regression: AIs were not changine height

13.09.11:
* Finished stall mode

12.09.11:
* Started working on stall mode. Created animation for the first phase of stall.

11.09.11:
* Fixed components leak due to bottom/top borders collisions not being checked
* Fixed bug in OneTime trigger
* Implemented collisions between player's plane and enemies
* Implemented player death
* Added two new enemy planes
* COMPLETED VERSION 0.3

10.09.11:
* Implemented death of enemy planes

09.09.11:
* Implemented transformation of object into dead object

08.09.11:
* Added GM types to provide hints for choosing action on collision

07.09.11:
* Implemented loading collision spheres
* Implemented collisions between player's bullets & enemies

06.09.11:
* Implemented player's gun fire

05.09.11:
* Implemented loading of game mechanic prototypes (currently just list of weapons)
* Implemented creation of mechanic component

03.09.11:
* Implemented loading level AI protos from file.
* COMPLETED VERSION 0.2

02.09.11:
* Fixed spawning to make it try to keep number of planes at maximum

01.09.11:
* Implemented LevelDirectory cycle (still needs adjusting)

31.08.11:
* Implemented loading of AIs from file, moved AI protos to separate manager, fixed AI creation

25,26,29.08.11:
* Implemented creating AI commands from prototypes with randomization

24.08.11:
* Fixed a few bugs
* LevelDirector now spawns objects on both sides of the screen with correct directions

23.08.11:
* Objects are now created and destroyed via requests, not directly
* Begun work on AI director

22.08.11:
* More work on AI
* Components now have parent component id
* Physic calculate "collisions" with screen borders and save them for logic
* Logic processes border collisions (fake)

21.08.11:
* Some work on AI

20.08.11:
* Refactored GameStateLevel a bit to provide more universal handling of objects
* Added BitEnum to variables loading to support 1 << bitIndex variables
* Fixed a problem with variables loading

19.08.11:
* Created prototypes for two AI planes with ripped sprites. Loaded them into game and displayed them in test mode.

18.08.11:
* Finished mucking about with XML loading for now (it's still fugly)
* Created manager for prototypes, used it to load object prototype and graphic component prototype

17.08.11:
* Another refactoring of XML loading

16.08.11:
* Completely fucked up XML loading. The whole damn thing needs to be rewritten from scratch.

15.08.11:
* Started work on deserialization of GraphicComponentProto
* Added helper class for loading sub-schemes with single attribute

13.08.11:
* Ssubschema deserialization now works

12.08.11:
* Added special global variables via RegisterVariable and UseVariable
* Started working on XML deserialization system (basic deserialization already works)

11.08.11:
* Finished putting old player's plane sprites into game
* COMPLETED VERSION 0.1
* Improved performance of sky drawing
* Added ability to turn FPS limiter on/off
* Fixed problem with angle increment not being multiplied by dt
* Created Profiler class to gauge performance

10.08.11:
* Completed refactoring
* Added information about lives, score, time and level to screen
* Ripped some more sprites of player's plane from original game

09.08.11:
* Planning (made a scheme of architecture)
* Refactoring (according to the new scheme) started

08.08.11:
* Devided state rendering into two passes (Before object & After)
* Restored reflection drawing

06.08.11:
* Create graphic component and animation
* Copied some sprites from original game to create sample animation
* Implemented simple movement & controls for player

05.08.11:
* Created CompList<T> for holding components

04.08.11:
* Fixed bug in SkyController
* Created basic structure for handling states
* Filled main Game loop
* Fixed FPS at 60

03.08.11:
* Added stars and night
* Moved sky drawing code into SkyController

02.08.11:
* Fiddled around with sky, water, sun and moon