added some documentation & explanations

This commit is contained in:
Noel Berry 2021-01-04 18:55:26 -08:00
parent 68bb409f98
commit 7173d65263
8 changed files with 30 additions and 0 deletions

3
content/map/readme.md Normal file
View File

@ -0,0 +1,3 @@
Due to making this game under heavy time constraints, I opted not to make or use a level editor. Instead, each object is assigned a color and I used a generic paint tool to design the levels.
Under normal circumstances, I would argue against this method and instead use something like Ogmo Editor or Tiled. It's really hard to remember what object is what color!

View File

@ -0,0 +1,5 @@
The sprites are stored in the [Aseprite](https://www.aseprite.org/) format, and you'll need Aseprite to edit them.
A few other notes:
- Animations are loaded automatically using Aseprite's `Tag` feature. Each tag is a unique animation
- Sprite Origin points use Aseprite's hidden `Slice` feature, which can be used with Shift+C. You can draw slices and give them a pivot point, which we're using to set the origin point of the sprite.

View File

@ -0,0 +1 @@
The tilesets are stored in the [Aseprite](https://www.aseprite.org/) format, and you'll need Aseprite to edit them.

View File

@ -21,9 +21,18 @@ namespace TL
static constexpr int st_reflect = 5; static constexpr int st_reflect = 5;
static constexpr int st_dead_state = 6; static constexpr int st_dead_state = 6;
// health during our first phase
static constexpr int max_health_1 = 10; static constexpr int max_health_1 = 10;
// health during our second phase
static constexpr int max_health_2 = 3; static constexpr int max_health_2 = 3;
// current health value (assigned to phase 1 health to start)
int health = max_health_1; int health = max_health_1;
// phase 0 or 1
// 0 = running along the ground and slicing
// 1 = flying around in the air shooting orbs
int phase = 0; int phase = 0;
GhostFrog(); GhostFrog();

View File

@ -8,6 +8,9 @@ using namespace Blah;
namespace TL namespace TL
{ {
// Automatically checks if the provided collider ever overlaps
// with something in the `hurt_by` mask. Makes it easy for enemies
// to check if they were hit by `Mask::player_attack`
class Hurtable : public Component class Hurtable : public Component
{ {
public: public:

View File

@ -6,6 +6,8 @@ using namespace Blah;
namespace TL namespace TL
{ {
// Factory to create game objects
namespace Factory namespace Factory
{ {
Entity* player(World* world, Point position); Entity* player(World* world, Point position);

View File

@ -5,6 +5,8 @@ namespace TL
{ {
struct Mask struct Mask
{ {
// bitfield masks for collision types
static constexpr uint32_t solid = 1 << 0; static constexpr uint32_t solid = 1 << 0;
static constexpr uint32_t jumpthru = 1 << 1; static constexpr uint32_t jumpthru = 1 << 1;
static constexpr uint32_t player_attack = 1 << 2; static constexpr uint32_t player_attack = 1 << 2;

View File

@ -111,6 +111,11 @@ namespace TL
public: public:
static constexpr int max_component_types = 256; static constexpr int max_component_types = 256;
// NOTE:
// I tossed this reference here at the very end of making the game,
// just so that the boss could tell the game to shake the screen.
// Ideally I think there should be a Camera component that handles
// that instead.
Game* game; Game* game;
World() = default; World() = default;