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.