* Add red fairies; tweaks to blue fairies and circles
* Add more fairies and a simple enemy archetype system
Note that existing stages not utilizing the new enemy spawning system
will have a visual regression - fairies will not have their magic
circles and particle effects visible. These are no longer implemented by
the enemy visual rules and require additional setup from the new spawner
wrappers. All stages should be converted to the new system.
Also improved old fairy sprites
* enemy_classes: rebalance HP
* enemy_classes: add EnemySpawner typedef
* items: add ITEMS() shortcut macro for use with enemy spawners
* Smarter generic entity macros
The list of "core" entities is now defined in one macro, and hardcoded
_Generic dispatch tables are eliminated
* Get rid of "custom" entities
All entities are now "first-class". The list of known entity types has
been moved to known_entities.h. The system no longer needs to know the
definition of all entity structs.
* Refactor guts of ENT_BOX/ENT_UNBOX
Made the functions inline, Box::ent is now a proper pointer type (but
please don't use it directly), ENT_UNBOX returns NULL if the box is
"empty" (references NULL entity)
* Merge TASK_BIND_UNBOXED with TASK_BIND
* s/YoumuMyon/YoumuAMyon for consistency
This also introduces `float32`, `float64`, and `real` typedefs to be
used in place of `float` and `double` later. `real` is for game code and
other places where we don't particularly care about the precision and
format of the underlying type, and is currently defined to `double`.
`float32` and `float64` should replace `float` and `double` respectively
* items bounce off the viewport "walls"
* autocollect is interrupted on death
* all projectiles are continuously cleared during the death and
respawn process
added two config options:
disable_shader: will turn off the use of shaders and fbos in the game. there is no full replacement for them, however.
disable_audio: guess what.
both options *should* be activated automatically as soon as something goes wrong.
added some kind of reference system (see list.h) to ensure particles/projectiles/enemies storing pointers to each other that they will not access a borked address.