~swashberry/orange

set the message bar's font to ProggySquareSZ.

The message bar now has roughly the same text formatting as in the
original, though this time I did include a black outline to help with
readability.

The license text has been modified to include a reference to Proggy and
its license.
fix jumping.

Rather than subtracting the jump speed from the player's current
velocity, *set* the velocity to minus the jump speed like in the
original game.  This will make double-jumping feel less like trying to
unstick oneself from mud while simultaneously making it more difficult
to cheat the jumping system by jumping quickly to create absurd
momentum.
adjust wall collision detection.

In order to prevent the player from not being able to squeeze through
gaps they should be able to fit through, the collision box for the wall
tiles has been subtly resized from 16x16 to 16x15, allowing a one-pixel
gap on the bottom of the wall.  It's a bit of a kludge, but that's the
way things are right now.
recreate the test level.

The geometry from the test level for the classic Orange Guy's Quest has
been recreated in the new engine using a Tile Map.  Unfortunately, due
to the differences in how Godot does collision detection as opposed to
Pygame, the player is not able to squeeze under the first stalactite
they see.
create a tileset for the walls.

Currently the tileset contains only the standard wall sprite I made in
the last commit.
add a sprite for the wall.

That's right, walls have sprites!  What now, bitches!?
shorten message bar timeouts.

Message bar timeouts are now standardized to 0.2 seconds per character
with no minimum timeout length, to allow for shorter messages which
won't be disruptive.
add some more standard messages.
fix & simplify message timeout.

The message bar's timer is now set to be a one-shot timer, so it won't
persistently count down and clear messages that are supposed to be
permanent.  Also, timeout on messages is now handled by a boolean;
either the message will persist indefinitely or it will calculate an
appropriate amount of time.
generalize level start messages.

The `start_message` of a level is now a part of the Level class, and can
be modified from the scene editor.

Also in the scene editor, if `message_timeout` is false, the level's
start message will not timeout.  This will be useful for tutorial
levels.
correct timing on message bar.

I'm going slightly off the beaten track with this one, since the formula
for calculating message timeout in the original was kind of slapdash.

If a time is not specified, a message will stay on-screen for a minimum
of eight seconds.  If a message is longer than ten characters, it will
stay on for (0.8 * length) seconds, where "length" is the length of the
message in characters.
implement the "quit" key.
correct rate of gravity.

In the original game, a character in freefall would be moving at a speed
of six pixels per second after one second.  They jumped at a rate of 2
pixels per frame.  With this in mind, the rate of gravity would be 300
versus the player's "jump speed" of 120 in this version of the game.

This speed is just enough that a character executing a perfect
double-jump will be just about able to clear four blocks.  The new
JumpRuler in the test level verifies this result.
only check collisions if the player is alive.
fix message bar & remove death camera.

Having to make the message bar visible regardless of the player's
position and still be visible within the death cam was proving too much
of a hassle, so instead the message bar has been implemented as a child
of the OrangeGuy and the death camera has been deferred.

Additionally, font oversampling has been removed because it conflicts
with the game's scaling settings.
initialize a class for the message bar.

A MessageBar class has been added which will contain a timer and code to
pop up with messages.  It will also store constants for standard
messages.
implement error handling in level restart.
conform Colliders enum to GDScript style guide.
implement death cam & restart in level node.

A new class Level has been declared which will be used to handle levels
in the game.

The Level will define a "death cam" which activates when the player
dies, and will also handle reloading the level when the respawn key is
pressed.

In the event of an error when restarting the level, the game will throw
up an alert and then exit the program.
implement colliding with killers.

The player will now detect collisions with objects on the Killer layer
and will die if he touches them.
Next
Do not follow this link