From b8e054b4dbd6ffc561eea0f56d6ded2523bf28f5 Mon Sep 17 00:00:00 2001 From: esquizo Date: Wed, 3 Jun 2026 19:34:09 -0300 Subject: game: teleporter agora teleporta (olha que legal) --- Makefile | 3 ++- game.c | 21 +++++++++++++++++++-- map.png | Bin 905 -> 913 bytes map_data.c | 8 ++++++++ 4 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 map_data.c diff --git a/Makefile b/Makefile index f2a9b94..98c2548 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,8 @@ OBJ=\ sdl3_main.o\ physics.o\ map.o\ - game.o + game.o\ + map_data.o LDFLAGS=`pkg-config --libs sdl3` -lm CFLAGS=`pkg-config --cflags sdl3` -O2 -Iinclude diff --git a/game.c b/game.c index a7ab79d..a3a1e66 100644 --- a/game.c +++ b/game.c @@ -11,13 +11,16 @@ static EntityCollisionProc bulletcollproc; static EntityCollisionProc ghostcollproc; +static EntityCollisionProc teleportercollproc; + static EntityUpdateProc playerproc; static EntityUpdateProc ghostproc; static EntityUpdateProc bulletproc; static EntityCollisionProc *collisionProcs[LASTEntity] = { - [EBULLET] = bulletcollproc, - [EGHOST] = ghostcollproc, + [EBULLET] = bulletcollproc, + [EGHOST] = ghostcollproc, + [ETELEPORTER] = teleportercollproc, }; static EntityUpdateProc *updateprocs[LASTEntity] = { @@ -115,6 +118,20 @@ ghostcollproc(Entity *self, Entity *target) } } +void +teleportercollproc(Entity *self, Entity *target) +{ + if(target->type == EPLAYER && target->alive) { + for(int i = 0; i < telemapsize; i++) { + if(self->telex == telemap[i].ftx && self->teley == telemap[i].fty) { + target->body.pos[0] = telemap[i].ttx * ENTITY_SIZE * 2; + target->body.pos[1] = telemap[i].tty * ENTITY_SIZE * 2; + break; + } + } + } +} + void playerproc(Entity *e, float delta) { diff --git a/map.png b/map.png index efd962b..7b26386 100644 Binary files a/map.png and b/map.png differ diff --git a/map_data.c b/map_data.c new file mode 100644 index 0000000..e673de8 --- /dev/null +++ b/map_data.c @@ -0,0 +1,8 @@ +struct { + int ftx, fty; + int ttx, tty; +} telemap[] = { + { 10, 5, 131, 3 }, + { 138, 6, 3, 4 }, +}; +int telemapsize = sizeof telemap / sizeof telemap[0]; -- cgit v1.2.3