diff --git a/README.md b/README.md index 1f1d507..4e1e67d 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ # --| Mods (in case you find it easy) |-- *Hidden* (HD) : makes the terrain blink to be totally invisible sometimes -*HardRock* (HR) : multiplies damage taken, enables fall damage and kills you upon falling in the void +*HardRock* (HR) : multiplies damage taken, enables fall damage and kills you upon falling into the void *DoubleTime* (DT) : makes everything faster *SuddenDeath* (SD) : sets your HP at 1 and disables healing *Flashlight* (FL) : drastically lowers your view distance @@ -36,7 +36,9 @@ if **there is only one file (==> its name is room_0) AND weight is 0**, the room will only generate at the central chunk (any other will be NULL) use this if you want to create parkour levels, puzzles... else, **make sure the total weight (the sum of all) is not equal to 0** *(you may end up with a floating point exception)* - + +. no matter what, room_0 will **always** generate at chunk (0, 0) + 2) **Data structure** below is a detailled list for all block types ; each block type (Blocks, Teleporters, Entities) must have the corresponding word directly above it diff --git a/bin/back b/bin/back index b5e2676..3d94911 100755 Binary files a/bin/back and b/bin/back differ diff --git a/levels/level_05/room_0 b/levels/level_05/room_0 new file mode 100644 index 0000000..bffc1bd --- /dev/null +++ b/levels/level_05/room_0 @@ -0,0 +1,28 @@ +Blocks : +[-16.0, -1.0, -16.0, 32.0, 1.0, 32.0, 0.0, 0.0, 128, 128, 128] +[-16.0, 80.0, -16.0, 32.0, 1.0, 32.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, -16.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ 1.5, 0.0, -16.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ -2.5, 0.0, -10.0, 5.0, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, -16.0, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[-16.0, 0.0, 1.5, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ -2.5, 0.0, 9.0, 5.0, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, 15.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ 1.5, 0.0, 15.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[-10.0, 0.0, -2.5, 1.0, 8.0, 5.0, 0.0, 0.0, 192, 192, 192] + +[ 15.0, 0.0, -16.0, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ 15.0, 0.0, 1.5, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ 9.0, 0.0, -2.5, 1.0, 8.0, 5.0, 0.0, 0.0, 192, 192, 192] + +Entities : +[-1.0, 0.0, -1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 32, 1, 0, 8, 250, 1, 255, 128, 128] +[-0.5, 0.5, -0.5, 1.0, 1.0, 1.0, 0.0, 0.0, 192, 192, 32, 1, 0, 7, levels/level_05/, 5, impressive, 128, 255, 128] + +Weight : +0 + +$ \ No newline at end of file diff --git a/levels/level_05/room_1 b/levels/level_05/room_1 new file mode 100644 index 0000000..fa29952 --- /dev/null +++ b/levels/level_05/room_1 @@ -0,0 +1,35 @@ +Blocks : +[-16.0, -1.0, -16.0, 32.0, 1.0, 32.0, 0.0, 0.0, 128, 128, 128] +[-16.0, 80.0, -16.0, 32.0, 1.0, 32.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, -16.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ 1.5, 0.0, -16.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ -7.0, 0.0, -10.0, 14.0, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, -16.0, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[-16.0, 0.0, 1.5, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ -7.0, 0.0, 9.0, 14.0, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, 15.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ 1.5, 0.0, 15.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[-10.0, 0.0, -2.5, 3.0, 8.0, 5.0, 0.0, 0.0, 192, 192, 192] + +[ 15.0, 0.0, -16.0, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ 15.0, 0.0, 1.5, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ 7.0, 0.0, -2.5, 3.0, 8.0, 5.0, 0.0, 0.0, 192, 192, 192] + +Entities : +[-14.0, 1.0, -14.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 128, 2, 0, 0] +[-14.0, 1.0, 13.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 128, 2, 0, 0] +[ 13.0, 1.0, -14.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 128, 2, 0, 0] +[ 13.0, 1.0, 13.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 128, 2, 0, 0] + +[-15.0, 7.0,-15.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 10.2, 0.4, 2.5] +[ 14.0, 7.0,-15.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 10.2, 0.4, 2.5] +[-15.0, 7.0, 14.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 10.2, 0.4, 2.5] +[ 14.0, 7.0, 14.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 10.2, 0.4, 2.5] + +Weight : +50 + +$ \ No newline at end of file diff --git a/levels/level_05/room_2 b/levels/level_05/room_2 new file mode 100644 index 0000000..20d65b6 --- /dev/null +++ b/levels/level_05/room_2 @@ -0,0 +1,35 @@ +Blocks : +[-16.0, -1.0, -16.0, 32.0, 1.0, 32.0, 0.0, 0.0, 128, 128, 128] +[-16.0, 80.0, -16.0, 32.0, 1.0, 32.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, -16.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ 1.5, 0.0, -16.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ -2.5, 0.0, -10.0, 5.0, 8.0, 3.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, -16.0, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[-16.0, 0.0, 1.5, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ -2.5, 0.0, 7.0, 5.0, 8.0, 3.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, 15.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ 1.5, 0.0, 15.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[-10.0, 0.0, -7.0, 1.0, 8.0, 14.0, 0.0, 0.0, 192, 192, 192] + +[ 15.0, 0.0, -16.0, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ 15.0, 0.0, 1.5, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ 9.0, 0.0, -7.0, 1.0, 8.0, 14.0, 0.0, 0.0, 192, 192, 192] + +Entities : +[-14.0, 1.0, -14.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 128, 2, 0, 0] +[-14.0, 1.0, 13.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 128, 2, 0, 0] +[ 13.0, 1.0, -14.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 128, 2, 0, 0] +[ 13.0, 1.0, 13.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 128, 2, 0, 0] + +[-15.0, 7.0,-15.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 10.2, 0.4, 2.5] +[ 14.0, 7.0,-15.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 10.2, 0.4, 2.5] +[-15.0, 7.0, 14.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 10.2, 0.4, 2.5] +[ 14.0, 7.0, 14.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 10.2, 0.4, 2.5] + +Weight : +50 + +$ \ No newline at end of file diff --git a/levels/level_05/room_3 b/levels/level_05/room_3 new file mode 100644 index 0000000..f9ffc0a --- /dev/null +++ b/levels/level_05/room_3 @@ -0,0 +1,37 @@ +Blocks : +[-16.0, -1.0, -16.0, 32.0, 1.0, 32.0, 0.0, 0.0, 128, 128, 128] +[-16.0, 80.0, -16.0, 32.0, 1.0, 32.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, -16.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ 1.5, 0.0, -16.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ -5.2, 0.0, -10.0, 10.4, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, -16.0, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[-16.0, 0.0, 1.5, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ -5.2, 0.0, 9.0, 10.4, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, 15.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ 1.5, 0.0, 15.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[-10.0, 0.0, -5.2, 1.0, 8.0, 10.4, 0.0, 0.0, 192, 192, 192] + +[ 15.0, 0.0, -16.0, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ 15.0, 0.0, 1.5, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ 9.0, 0.0, -5.2, 1.0, 8.0, 10.4, 0.0, 0.0, 192, 192, 192] + +[ -2.0, 0.0, -2.0, 4.0, 2.0, 4.0, 0.0, 0.0, 192, 192, 192] +[ -2.0, 6.0, -2.0, 4.0, 2.0, 4.0, 0.0, 0.0, 192, 192, 192] + +Entities : +[ -0.5, 2.5, -0.5, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 128, 4, 0, 0] +[ -0.5, 4.0, -0.5, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 128, 4, 0, 0] + +[ -0.5, 5.5, -0.5, 1.0, 0.5, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 7.0, 0.2, 2.5] +[-15.0, 7.0,-15.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 7.0, 0.2, 2.5] +[ 14.0, 7.0,-15.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 7.0, 0.2, 2.5] +[-15.0, 7.0, 14.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 7.0, 0.2, 2.5] +[ 14.0, 7.0, 14.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 7.0, 0.2, 2.5] + +Weight : +50 + +$ \ No newline at end of file diff --git a/levels/level_05/room_4 b/levels/level_05/room_4 new file mode 100644 index 0000000..a3064c7 --- /dev/null +++ b/levels/level_05/room_4 @@ -0,0 +1,37 @@ +Blocks : +[-16.0, -1.0, -16.0, 32.0, 1.0, 32.0, 0.0, 0.0, 128, 128, 128] +[-16.0, 80.0, -16.0, 32.0, 1.0, 32.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, -16.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ 1.5, 0.0, -16.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ -2.5, 0.0, -10.0, 5.0, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, -16.0, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[-16.0, 0.0, 1.5, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ -2.5, 0.0, 9.0, 5.0, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] + +[-16.0, 0.0, 15.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[ 1.5, 0.0, 15.0, 14.5, 8.0, 1.0, 0.0, 0.0, 192, 192, 192] +[-10.0, 0.0, -2.5, 1.0, 8.0, 5.0, 0.0, 0.0, 192, 192, 192] + +[ 15.0, 0.0, -16.0, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ 15.0, 0.0, 1.5, 1.0, 8.0, 14.5, 0.0, 0.0, 192, 192, 192] +[ 9.0, 0.0, -2.5, 1.0, 8.0, 5.0, 0.0, 0.0, 192, 192, 192] + +[ -2.0, 0.0, -2.0, 4.0, 8.0, 4.0, 0.0, 0.0, 192, 192, 192] + +Entities : +[-0.5, 1.0, -4.5, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 128, 2, 0, 0] +[-0.5, 1.0, 3.5, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 128, 2, 0, 0] +[-4.5, 1.0, -0.5, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 128, 2, 0, 0] +[ 3.5, 1.0, -0.5, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 128, 2, 0, 0] + +[ -0.5, 7.0, -9.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 9.0, 0.3, 2.5] +[ -0.5, 7.0, 8.0, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 9.0, 0.3, 2.5] +[ -9.0, 7.0, -0.5, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 9.0, 0.3, 2.5] +[ 8.0, 7.0, -0.5, 1.0, 1.0, 1.0, 0.0, 0.0, 255, 255, 255, 1, 0, 3, 0.0, 9.0, 0.3, 2.5] + +Weight : +50 + +$ \ No newline at end of file diff --git a/obj/entities.o b/obj/entities.o index 21d018b..d8f987d 100644 Binary files a/obj/entities.o and b/obj/entities.o differ diff --git a/obj/generation.o b/obj/generation.o index 1522e82..6e1e2c0 100644 Binary files a/obj/generation.o and b/obj/generation.o differ diff --git a/obj/main.o b/obj/main.o index d22b9a3..86e2316 100644 Binary files a/obj/main.o and b/obj/main.o differ diff --git a/src/entities.c b/src/entities.c index f728491..d1031c1 100644 --- a/src/entities.c +++ b/src/entities.c @@ -97,9 +97,12 @@ void speen(double x, double y, double z, double w, double h, double d, double hz // metad2 = shot proj speed // metad3 = shot proj freq // metad4 = shot proj time to live +// metad5 = time left before shooting void speen2(double x, double y, double z, double w, double h, double d, double hz_angle, double vt_angle, float dtime, entity* ent, cube_0* ret) { ret->hz_angle += ((double)dtime)*ent->metad3; - if((int)(5.0*ret->hz_angle) != (int)(5.0*(ret->hz_angle - ((double)dtime)*22.5))) { + ent->metad5 -= (double)dtime; + if(ent->metad5 <= 0.0) { + ent->metad5 = ent->metad3; double dx = (x+w/2 - (camx-choffx)); double dy = (y+h/2 - (camy)); double dz = (z+d/2 - (camz-choffz)); @@ -109,24 +112,26 @@ void speen2(double x, double y, double z, double w, double h, double d, double h dz = ent->metad2*dz/total; appendProj(x+w/2+choffx, y+h/2, z+d/2+choffz, 0.1, 0.1, 0.1, -dx, -dy, -dz, 0.0, 0.0, 0.0, 255, 0, 0, 10, ent->metad4); } - double dx = (x+w/2 - (camx-choffx)); - double dy = (y+h/2 - (camy)); - double dz = (z+d/2 - (camz-choffz)); - double total = sqrt(dx*dx + dy*dy + dz*dz); - dx = ent->metad1*dx/total; - dy = ent->metad1*dy/total; - dz = ent->metad1*dz/total; - ret->x -= dtime*dx; - if(is_colliding_with_map(ret) || is_colliding_with_tp(ret)) { - ret->x += dtime*dx; - } - ret->y -= dtime*dy; - if(is_colliding_with_map(ret) || is_colliding_with_tp(ret)) { - ret->y += dtime*dy; - } - ret->z -= dtime*dz; - if(is_colliding_with_map(ret) || is_colliding_with_tp(ret)) { - ret->z += dtime*dz; + if(ent->metad1 != 0.0) { + double dx = (x+w/2 - (camx-choffx)); + double dy = (y+h/2 - (camy)); + double dz = (z+d/2 - (camz-choffz)); + double total = sqrt(dx*dx + dy*dy + dz*dz); + dx = ent->metad1*dx/total; + dy = ent->metad1*dy/total; + dz = ent->metad1*dz/total; + ret->x -= dtime*dx; + if(is_colliding_with_map(ret) || is_colliding_with_tp(ret)) { + ret->x += dtime*dx; + } + ret->y -= dtime*dy; + if(is_colliding_with_map(ret) || is_colliding_with_tp(ret)) { + ret->y += dtime*dy; + } + ret->z -= dtime*dz; + if(is_colliding_with_map(ret) || is_colliding_with_tp(ret)) { + ret->z += dtime*dz; + } } } @@ -444,9 +449,9 @@ void go_to_player(double x, double y, double z, double w, double h, double d, do double dy = (y+h/2 - (camy)); double dz = (z+d/2 - (camz-choffz)); double total = sqrt(dx*dx + dy*dy + dz*dz); - dx = 11.0*dx/total; - dy = 11.0*dy/total; - dz = 11.0*dz/total; + dx = dx/total; + dy = dy/total; + dz = dz/total; ret->x -= dtime*dx; if(is_colliding_with_map(ret) || is_colliding_with_tp(ret)) { ret->x += dtime*dx; diff --git a/src/generation.c b/src/generation.c index 10cdf31..bb89ce4 100644 --- a/src/generation.c +++ b/src/generation.c @@ -516,6 +516,7 @@ void parse_one_room(int id, char* filename) { pool[id].area->ents[k]->metad2 = bspd; pool[id].area->ents[k]->metad3 = bfreq; pool[id].area->ents[k]->metad4 = bttl; + pool[id].area->ents[k]->metad5 = 0.0; } else if(entry->id == 4) { // sine platform double ccw = read_float(ptr); diff --git a/src/main.c b/src/main.c index 7c64d8f..f35050c 100644 --- a/src/main.c +++ b/src/main.c @@ -315,7 +315,7 @@ void processInput(GLFWwindow *window, float dtime) { case 4: reset_everything(window, 1, "levels/level_04/"); break; - case 5: /*reset_everything(window, 4, "levels/level_05/");*/break; + case 5: reset_everything(window, 5, "levels/level_05/"); break; case 6: /*reset_everything(window, 4, "levels/level_06/");*/break; @@ -338,7 +338,7 @@ void processInput(GLFWwindow *window, float dtime) { case 4: reset_everything(window, 1, "levels/level_04/"); break; - case 5: /*reset_everything(window, 4, "levels/level_05/");*/break; + case 5: reset_everything(window, 5, "levels/level_05/"); break; case 6: /*reset_everything(window, 4, "levels/level_06/");*/break;