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.
Bullet creation and death effects (don't know what is new in detail), improvements on the "API", especially around create_projectile() and extensive use of particles in addtion with generic particle/projectile movement and drawing rules (see projectile.h)
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.
To create a slave, pass ENEMY_IMMUNE for hp in create_enemy(). tip: create_enemyg(...) is an abbreviation for create_enemy(&global.enemies, ...).
There is something like a super fancy event system for Enemies' logic rules now: logic_rule will be called with t = negative special values like EVENT_BIRTH or EVENT_DEATH on corresponding events. cool, isn't it? well those values have to be filtered out (like if(t < 0) return;) if you don't use them so they don't do strange things with your locus.
Another Sarrg commit implementing score, different items and alternative player shot modes. Some things need improvements, some don't. But this commit fixes a bug with bomb counting, which is I think enough reason to push it now.
improvements on the slave system. it's player dependent and unglobalized. slaves are controlled by two different kinds of rules: a draw rule and a logic rule. this is necessary because some slaves need special appearances like Myon and drawing is only possible in stage_draw(). this also makes them configurable enough for different shot types and stuff.
Another Sarrg commit implementing score, different items and alternative player shot modes. Some things need improvements, some don't. But this commit fixes a bug with bomb counting, which is I think enough reason to push it now.
load_textures() was changed to load_resources() and will now load all sounds in sfx/. playing via play_sound(char *name) (or the pointer variant). positional audio is not implemented yet.
and some other changes.
The static texture loading was replaced by a dynamic loader. Every png file in gfx/ is (recursively) loaded at the beginning and accessed via get_tex(name) or get_ani(name).name for "gfx/stage1/border.png" would be "stage1/border".
Sprite information is to be specified in the filename in the pattern: ani_${row count}_${col count}_${animation frequency}_${name}.png
Ever thought about abusing C1 as R2? I tried and it turned out to be very comfortable, especially when you realize that you can use massive imaginary power to move your rice. I also fixed various things on the way which I forgot. hm.