Skip to content

Commit

Permalink
Allow enemies to follow different paths.
Browse files Browse the repository at this point in the history
  • Loading branch information
Haroldo de Oliveira Pinheiro committed Nov 11, 2021
1 parent dba8c46 commit 63bb84a
Show file tree
Hide file tree
Showing 4 changed files with 897 additions and 2 deletions.
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,17 @@ OBJS := data.rel actor.rel map.rel shot.rel binary_gunner.rel

all: $(PRJNAME).sms

data.c: data/* data/sprites_tiles.psgcompr data/path1.path
data.c: data/* data/sprites_tiles.psgcompr data/path1.path data/path2.path
folder2c data data

data/sprites_tiles.psgcompr: data/img/sprites.png
BMP2Tile.exe data/img/sprites.png -noremovedupes -8x16 -palsms -fullpalette -savetiles data/sprites_tiles.psgcompr -savepalette data/sprites_palette.bin

data/path1.path: data/path/path1.spline.json
node tool/convert_splines.js data/path/path1.spline.json data/path1.path

data/path2.path: data/path/path2.spline.json
node tool/convert_splines.js data/path/path2.spline.json data/path2.path

%.vgm: %.wav
psgtalk -r 512 -u 1 -m vgm $<
Expand Down
9 changes: 8 additions & 1 deletion binary_gunner.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

#define ENEMY_MAX (3)
#define FOR_EACH_ENEMY(enm) enm = enemies; for (char enemy_index = ENEMY_MAX; enemy_index; enemy_index--, enm++)
#define ENEMY_PATH_MAX (2)

actor player;
actor player_shots[PLAYER_SHOT_MAX];
Expand All @@ -36,9 +37,14 @@ struct enemy_spawner {
char flags;
char delay;
char next;
path_step *path;
char all_dead;
} enemy_spawner;

const path_step *enemy_paths[ENEMY_PATH_MAX] = {
(path_step *) path1_path, (path_step *) path2_path
};

void load_standard_palettes() {
SMS_loadBGPalette(sprites_palette_bin);
SMS_loadSpritePalette(sprites_palette_bin);
Expand Down Expand Up @@ -196,6 +202,7 @@ void handle_enemies() {
enemy_spawner.type = rand() & 1;
enemy_spawner.x = 8 + rand() % 124;
enemy_spawner.flags = 0;
enemy_spawner.path = enemy_paths[rand() % ENEMY_PATH_MAX];
if (rand() & 1) {
enemy_spawner.x += 124;
enemy_spawner.flags |= PATH_FLIP_X;
Expand All @@ -206,7 +213,7 @@ void handle_enemies() {

init_actor(enm, enemy_spawner.x, 0, 2, 1, enemy_spawner.type ? 132 : 128, 1);
enm->path_flags = enemy_spawner.flags;
enm->path = (path_step *) path1_path;
enm->path = enemy_spawner.path;

enemy_spawner.delay = 10;
enemy_spawner.next++;
Expand Down
Loading

0 comments on commit 63bb84a

Please sign in to comment.