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) --- game.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'game.c') 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) { -- cgit v1.2.3