Level: Delete a comment-out version of spawnEnemies()
Enemy: Document the <events> and <event> tags

This updates the Document Type Definition for enemy XML files so that
they may contain an <events> tag, which itself contains one or more
<event> tags.  These tags can contain Lua code which the game will
invoke when and if that enemy triggers certain events.  This allows us
to keep the logic for specific enemies inside their respective asset
files, e.g. we can define what a drone should do when it dies within
the same XML document containing the rest of its data.

This patch only modifies the enemy DTD.  It does not add any actual
support for the tags to the game engine.
Enemy: Document events
Documentation: Re-introduce the Makefile for building HTML documents

This brings back the Makefile from 857d91de which we used to create
convert the Markdown files into HTML documents.
Enemy: Load data from <event> tags

This patch teaches the Enemy class to look for any <event> tags inside
of the enemy data file, and if they exist then it loads them into the
new ‘events’ property.  This property replaces the previous ‘onDeath’
property because we will now use ‘events.onDeath’ instead.
Enemy: Always have ‘onSpawn’ and ‘onDeath’ events

This patch makes sure that each Enemy object always has these two
events even if there are no associated ‘action’ functions.  We add
these because other parts of the engine assumes that these events are
always available.
Enemy: Document that <event> tags can reuse the same ‘name’ attribute
Enemy: Allow the definition of events in enemy templates

This patch makes it possible to have event actions defined inside of
the template files for enemies.  For example, we could put this inside
of ‘enemies/drone.lua’

    EnemyTemplates["drone"].events = {
        ["onDeath"] = function (enemy)
            print("Killed drone " .. tostring(enemy))
        end,
    }

All events listed and documented in

    docs/Enemies.txt

can appear in the enemy templates like this.
Fix all uses of the ‘onDeath’ event in the first mission

The property is now part of the ‘events’ table of the enemy and this
patch updates all calls accordingly.
Merge branch 'ejmr/enemy-events'

* ejmr/enemy-events:
  Fix all uses of the ‘onDeath’ event in the first mission
  Enemy: Allow the definition of events in enemy templates
  Enemy: Document that <event> tags can reuse the same ‘name’ attribute
  Enemy: Always have ‘onSpawn’ and ‘onDeath’ events
  Enemy: Load data from <event> tags
  Documentation: Re-introduce the Makefile for building HTML documents
  Enemy: Document events
  Enemy: Document the <events> and <event> tags
  Level: Delete a comment-out version of spawnEnemies()
Player: Store events in a table

Currently we have global properties for player events, e.g. the
‘onDeath’ property.  This patch rewrites them so that the Player class
has a single, global ‘Events’ property.  It is a table that maps event
names as strings to Luvent objects.

The patch makes the necessary updates for the only event we currently
use with Player objects: ‘onDeath’.
Merge branch 'jeff/finish-behavior-system-milestone'

* jeff/finish-behavior-system-milestone:
  Give the player a name for debugging
  Battlefly now uses the behavior system to move around screen.
  Debug rendering for actor behaviors now shows the actor name
  Fix bug with behavior system
  Increase battlefly bullet damage
  The Battlefly now uses its own pattern file
  Reset player health and mp when a level starts.
  Added debug rendering for behaviors to the base Actor class.
  Make drones harder
  Fix bug causing assert in Luvent
  Make drone pattern trickier

Conflicts:
	src/Scenes/NewGame/firstMission.lua

The conflicts came from the change in how we now use the property
‘enemy.events.onDeath’ to refer to that event instead of the older,
more terse ‘enemy.onDeath’ property.  This merge commit updates all
uses of that property accordingly.
First Mission: Correct syntax error

The ‘afterEachSpawn’ function at line 286 is missing the ‘end’ keyword
and that causes a syntax error.  This patch corrects that, and fixs
one remaining reference to the obsolote ‘enemy.onDie’ property.
First Mission: Correct syntax error

The ‘afterEachSpawn’ function at line 286 is missing the ‘end’ keyword
and that causes a syntax error.  This patch corrects that, and fixs
one remaining reference to the obsolote ‘enemy.onDie’ property.
Debug: Enable and disable logging separate from other module features

We may want to enable only the logging aspect of the Debug module
wwhile leaving other features disabled, e.g. the ability to
arbitrarily reset and reload the game.  This patch introduces three
methods similar to those we use for enabling and disabling the
over-arching features of the Debug module.  See the upcoming document

    docs/Debugging.txt

for more information about using logs.
Add a document explaining how to use debugging logs
Merge branch 'ejmr/document-debug-logging'

* ejmr/document-debug-logging:
  Add a document explaining how to use debugging logs
  Debug: Enable and disable logging separate from other module features
  First Mission: Correct syntax error
Merge branch 'jeff/new-game'

* jeff/new-game: (33 commits)
  Added icons for the storyboard scene
  More storyboard work (added some descriptions).
  More storyboard work
  Tweak butterfly bomber spawn rate
  Add starfield background to first mission leg two
  Periods are neat.
  Fix bug where Felis was slacking off
  Add a bit more to first mission leg two; merge the battlefly scene into the first mission
  Add some dialog to first mission leg two.
  Added more descriptions to the storyboard early missions.
  Use the starfield background for the storyboard scene.
  Refactor: remove roomBG variable from exploration scenes
  Added Standard render style for backgrounds
  Refactor: move background rendering from GameScene to the base Scene class.
  Give Tutorial Scene a name for debug purposes
  Added descriptions to the storyboard clickzones
  More storyboard work
  Auto-fit clickzone groups to their clickzones in the storyboard
  Fix bug where Exploration scene sidebar was not being rendered tall enough
  More storyboard work
  ...
Fix case-sensitivity of ‘clickZone’ includes for Linux

You know what I love about case-sensitive file-systems?  Having them
waste my fucking time with errors over pointless shit like this.  “Oh
I don’t see a file ‘clickzone.lua’ anywhere.  I see ‘clickZone.lua’
but that is surely an absolutely different file.”  Ugh….
Do not update scenes when global pause is in effect

When the variable ‘globalPauseActive’ is true we do nothing inside of
the love.update() function.  However, we keep a global table of scenes
and they may be updating due to coroutines that we started before
pausing.  This can cause strange things to happen such as some bullets
to suddenly jump to new positions when the game window regains focus
after losing it.  This patch tries to help fix that by making sure
that no scenes will update when the global pause is in effect, as
scene updates means we may be running coroutines.