summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoresquizo <esquizo+noreply@esquizo.net>2026-06-03 19:34:09 -0300
committeresquizo <esquizo+noreply@esquizo.net>2026-06-03 19:34:09 -0300
commitb8e054b4dbd6ffc561eea0f56d6ded2523bf28f5 (patch)
tree190c96ba6e2617885fa2db9866512e0722713477
parent94bdded9102bc2e2b2e4bded8f180749efda1b72 (diff)
game: teleporter agora teleporta (olha que legal)
-rw-r--r--Makefile3
-rw-r--r--game.c21
-rw-r--r--map.pngbin905 -> 913 bytes
-rw-r--r--map_data.c8
4 files changed, 29 insertions, 3 deletions
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] = {
@@ -116,6 +119,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)
{
Entity *bullet;
diff --git a/map.png b/map.png
index efd962b..7b26386 100644
--- a/map.png
+++ b/map.png
Binary files 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];