diff --git a/README.md b/README.md index 2c62ea1..807a67c 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,9 @@ below is a detailled list for all block types ; each block type (Blocks, Teleporters, Entities) must have the corresponding word directly above it not all three keywords have to be written + +[] is mandatory data +{} is optionnal data *Data-specific structure :* ``` @@ -52,15 +55,17 @@ entities: {all} = double[>= 0.0] -> 4 (moving platform) - [.. amplitude_x, amplitude_y, amplitude_z, mult, divd, phase] with *<- extra arguments at the end of []* + [.. amplitude_x, amplitude_y, amplitude_z, mult, divd, phase, {initialState, triggerButton}] with amplitude_{x,y,z} = double[>= 0.0] {mult,divd} = int {phase} = int[0, 360] + {..} = int(>=0) -> 5 (linear moving platform) - [.. amplitude_x, amplitude_y, amplitude_z, speed_x, speed_y, speed_z] with + [.. amplitude_x, amplitude_y, amplitude_z, speed_x, speed_y, speed_z, {initialState, triggerButton}] with amplitude_{x,y,z} = double[>= 0.0] speed_{x,y,z} = double + {..} = int(>=0) -> 6 (text box) [.. text, tred, tgreen, tblue] with diff --git a/bin/back b/bin/back index 79463e8..71cbd1f 100755 Binary files a/bin/back and b/bin/back differ diff --git a/levels/level_02/room_0 b/levels/level_02/room_0 index 72e8827..b47cc58 100644 --- a/levels/level_02/room_0 +++ b/levels/level_02/room_0 @@ -79,33 +79,36 @@ Entities: [-33.0, 24.0, 18.0, 2.0, 2.0, 2.0, 0.71, 0.0, 92, 92, 92, 1, 0, 11, 1, 10.0] -[-5.0, 20.0, -18.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 0] // 3 - platforms -[-5.0, 20.0, -20.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 30] -[-5.0, 20.0, -22.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 60] -[-5.0, 20.0, -24.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 90] -[-5.0, 20.0, -26.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 120] -[-5.0, 20.0, -28.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 150] -[-5.0, 20.0, -30.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 180] -[-5.0, 20.0, -32.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 210] -[-5.0, 20.0, -34.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 240] -[-5.0, 20.0, -36.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 270] -[-5.0, 20.0, -38.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 300] -[-5.0, 20.0, -40.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 330] -[-5.0, 20.0, -42.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 0] +[-5.0, 20.0, -18.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 0, {1, 1}] // 3 - platforms +[-5.0, 20.0, -20.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 30, {1, 1}] +[-5.0, 20.0, -22.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 60, {1, 1}] +[-5.0, 20.0, -24.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 90, {1, 1}] +[-5.0, 20.0, -26.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 120, {1, 1}] +[-5.0, 20.0, -28.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 150, {1, 1}] +[-5.0, 20.0, -30.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 180, {1, 1}] +[-5.0, 20.0, -32.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 210, {1, 1}] +[-5.0, 20.0, -34.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 240, {1, 1}] +[-5.0, 20.0, -36.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 270, {1, 1}] +[-5.0, 20.0, -38.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 300, {1, 1}] +[-5.0, 20.0, -40.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 330, {1, 1}] +[-5.0, 20.0, -42.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 0, {1, 1}] -[-5.0, 20.0, -18.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 180] -[-5.0, 20.0, -20.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 210] -[-5.0, 20.0, -22.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 240] -[-5.0, 20.0, -24.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 270] -[-5.0, 20.0, -26.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 300] -[-5.0, 20.0, -28.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 330] -[-5.0, 20.0, -30.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 0] -[-5.0, 20.0, -32.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 30] -[-5.0, 20.0, -34.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 60] -[-5.0, 20.0, -36.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 90] -[-5.0, 20.0, -38.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 120] -[-5.0, 20.0, -40.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 150] -[-5.0, 20.0, -42.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 180] +[-5.0, 20.0, -18.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 180, {1, 1}] +[-5.0, 20.0, -20.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 210, {1, 1}] +[-5.0, 20.0, -22.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 240, {1, 1}] +[-5.0, 20.0, -24.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 270, {1, 1}] +[-5.0, 20.0, -26.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 300, {1, 1}] +[-5.0, 20.0, -28.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 330, {1, 1}] +[-5.0, 20.0, -30.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 0, {1, 1}] +[-5.0, 20.0, -32.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 30, {1, 1}] +[-5.0, 20.0, -34.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 60, {1, 1}] +[-5.0, 20.0, -36.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 90, {1, 1}] +[-5.0, 20.0, -38.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 120, {1, 1}] +[-5.0, 20.0, -40.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 150, {1, 1}] +[-5.0, 20.0, -42.0, 4.0, 2.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 4, 10.0, 0.0, 0.0, 3, 2, 180, {1, 1}] + + +[ -5.0, 23.0, -45.0, 4.0, 4.0, 4.0, 0.0, 0.0, 115, 24, 24, 1, 0, 11, 1, 10.0] // platform halt button [ 12.0, 20.0, -20.0, 2.0, 8.0, 2.0, 0.0, 0.0, 192, 192, 192, 1, 0, 11, 2, 20.0] // 3 - buttons diff --git a/levels/level_03/room_0 b/levels/level_03/room_0 index f5deb35..8ebc2ef 100644 --- a/levels/level_03/room_0 +++ b/levels/level_03/room_0 @@ -7,15 +7,15 @@ Blocks: [-7.0, 5.0, -7.0, 1.5, 1.0, 14.0, 0.0, 0.0, 128, 128, 128] [ 5.5, 5.0, -7.0, 1.5, 1.0, 14.0, 0.0, 0.0, 128, 128, 128] -[-3.0, 3.334, -8.5, 6.0, 1.0, 1.5, 0.0, 0.0, 128, 128, 128] -[-3.0, 3.334, 7.0, 6.0, 1.0, 1.5, 0.0, 0.0, 128, 128, 128] -[-8.5, 3.334, -3.0, 1.5, 1.0, 6.0, 0.0, 0.0, 128, 128, 128] -[ 7.0, 3.334, -3.0, 1.5, 1.0, 6.0, 0.0, 0.0, 128, 128, 128] +[-3.0, 2.0, -8.5, 6.0, 2.0, 1.5, 0.0, 0.0, 128, 128, 128] +[-3.0, 2.0, 7.0, 6.0, 2.0, 1.5, 0.0, 0.0, 128, 128, 128] +[-8.5, 2.0, -3.0, 1.5, 2.0, 6.0, 0.0, 0.0, 128, 128, 128] +[ 7.0, 2.0, -3.0, 1.5, 2.0, 6.0, 0.0, 0.0, 128, 128, 128] -[-7.0, 1.667, -8.5, 14.0, 1.0, 1.5, 0.0, 0.0, 128, 128, 128] -[-7.0, 1.667, 7.0, 14.0, 1.0, 1.5, 0.0, 0.0, 128, 128, 128] -[-8.5, 1.667, -7.0, 1.5, 1.0, 14.0, 0.0, 0.0, 128, 128, 128] -[ 7.0, 1.667, -7.0, 1.5, 1.0, 14.0, 0.0, 0.0, 128, 128, 128] +[-7.0, 0.0, -8.5, 14.0, 2.0, 1.5, 0.0, 0.0, 128, 128, 128] +[-7.0, 0.0, 7.0, 14.0, 2.0, 1.5, 0.0, 0.0, 128, 128, 128] +[-8.5, 0.0, -7.0, 1.5, 2.0, 14.0, 0.0, 0.0, 128, 128, 128] +[ 7.0, 0.0, -7.0, 1.5, 2.0, 14.0, 0.0, 0.0, 128, 128, 128] Entities: diff --git a/obj/entities.o b/obj/entities.o index a0a93b3..a08d37c 100644 Binary files a/obj/entities.o and b/obj/entities.o differ diff --git a/obj/generation.o b/obj/generation.o index 3f07ea2..eb1ba1b 100644 Binary files a/obj/generation.o and b/obj/generation.o differ diff --git a/obj/main.o b/obj/main.o index dd39f56..c9c4b64 100644 Binary files a/obj/main.o and b/obj/main.o differ diff --git a/src/entities.c b/src/entities.c index ad41b6e..e97be49 100644 --- a/src/entities.c +++ b/src/entities.c @@ -125,9 +125,12 @@ void speen3(double x, double y, double z, double w, double h, double d, double h // metai{2} = frequency divider // metai{3} = phase void moving_xyz(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->x = ent->metad1 + ent->metad4*cos((double)(ent->metai1*sim_time/ent->metai2 + ent->metai3*3.14159/180.0)); - ret->y = ent->metad2 + ent->metad5*cos((double)(ent->metai1*sim_time/ent->metai2 + ent->metai3*3.14159/180.0)); - ret->z = ent->metad3 + ent->metad6*cos((double)(ent->metai1*sim_time/ent->metai2 + ent->metai3*3.14159/180.0)); + bool canMove = (ent->metai5 == -1) || xor(buttonSwitch[ent->metai5], (bool)ent->metai4); + if(canMove) { + ret->x = ent->metad1 + ent->metad4*cos((double)(ent->metai1*sim_time/ent->metai2 + ent->metai3*3.14159/180.0)); + ret->y = ent->metad2 + ent->metad5*cos((double)(ent->metai1*sim_time/ent->metai2 + ent->metai3*3.14159/180.0)); + ret->z = ent->metad3 + ent->metad6*cos((double)(ent->metai1*sim_time/ent->metai2 + ent->metai3*3.14159/180.0)); + } //printf("%lf %lf %lf\n", ret->x, ret->y, ret->z); } @@ -138,29 +141,28 @@ void moving_xyz(double x, double y, double z, double w, double h, double d, doub // metai{2} = y_side (+/- 1) // metai{3} = z_side (+/- 1) void moving_xyz_line(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) { - //printf("%lf %lf %lf", ent->metad7, ent->metad8, ent->metad9); - //printf("| %lf %lf %lf\n\n", ent->metad4, ent->metad5, ent->metad6); - //printf("%lf %lf %lf -> (%lf %lf %lf)\n", x, y, z, (ent->metai1)*ent->metad4*dtime, (ent->metai2)*ent->metad5*dtime, (ent->metai3)*ent->metad6*dtime); - //printf("(%d %lf) (%d %lf) (%d %lf)\n\n", (ent->metai1), ent->metad4, (ent->metai2), ent->metad5, (ent->metai3), ent->metad6); - ret->x += (ent->metai1)*ent->metad4*dtime; - if(absf(ent->metad1 - ret->x) > ent->metad7) { - //printf("-x-\n"); - ent->metai1 *= (-1); + bool canMove = (ent->metai5 == -1) || xor(buttonSwitch[ent->metai5], (bool)ent->metai4); + if(canMove) { ret->x += (ent->metai1)*ent->metad4*dtime; - } + if(absf(ent->metad1 - ret->x) > ent->metad7) { + //printf("-x-\n"); + ent->metai1 *= (-1); + ret->x += (ent->metai1)*ent->metad4*dtime; + } - ret->y += (ent->metai2)*ent->metad5*dtime; - if(absf(ent->metad2 - ret->y) > ent->metad8) { - //printf("-y-\n"); - ent->metai2 *= (-1); ret->y += (ent->metai2)*ent->metad5*dtime; - } + if(absf(ent->metad2 - ret->y) > ent->metad8) { + //printf("-y-\n"); + ent->metai2 *= (-1); + ret->y += (ent->metai2)*ent->metad5*dtime; + } - ret->z += (ent->metai3)*ent->metad6*dtime; - if(absf(ent->metad3 - ret->z) > ent->metad9) { - //printf("-z-\n"); - ent->metai3 *= (-1); ret->z += (ent->metai3)*ent->metad6*dtime; + if(absf(ent->metad3 - ret->z) > ent->metad9) { + //printf("-z-\n"); + ent->metai3 *= (-1); + ret->z += (ent->metai3)*ent->metad6*dtime; + } } } @@ -286,27 +288,32 @@ void money(float dtime, int* hp, int* dmg, entity* ent, cube_0* ret) { } void translatePlayer(float dtime, int* hp, int* dmg, entity* ent, cube_0* ret) { - double dx = ent->metad4*(cos((double)(ent->metai1*(sim_time+(double)dtime)/ent->metai2 + ent->metai3*3.14159/180.0))-cos((double)(ent->metai1*sim_time/ent->metai2 + ent->metai3*3.14159/180.0))); - double dy = ent->metad5*(cos((double)(ent->metai1*(sim_time+(double)dtime)/ent->metai2 + ent->metai3*3.14159/180.0))-cos((double)(ent->metai1*sim_time/ent->metai2 + ent->metai3*3.14159/180.0))); - double dz = ent->metad6*(cos((double)(ent->metai1*(sim_time+(double)dtime)/ent->metai2 + ent->metai3*3.14159/180.0))-cos((double)(ent->metai1*sim_time/ent->metai2 + ent->metai3*3.14159/180.0))); - //fx += dx/(dtime*dtime); - //fy += dy/(dtime*dtime); - //fz += dz/(dtime*dtime); - camvx += dx/(dtime); - camvy += dy/(dtime); - camvz += dz/(dtime); + bool canMove = (ent->metai5 == -1) || xor(buttonSwitch[ent->metai5], (bool)ent->metai4); + if(canMove) { + double dx = ent->metad4*(cos((double)(ent->metai1*(sim_time+(double)dtime)/ent->metai2 + ent->metai3*3.14159/180.0))-cos((double)(ent->metai1*sim_time/ent->metai2 + ent->metai3*3.14159/180.0))); + double dy = ent->metad5*(cos((double)(ent->metai1*(sim_time+(double)dtime)/ent->metai2 + ent->metai3*3.14159/180.0))-cos((double)(ent->metai1*sim_time/ent->metai2 + ent->metai3*3.14159/180.0))); + double dz = ent->metad6*(cos((double)(ent->metai1*(sim_time+(double)dtime)/ent->metai2 + ent->metai3*3.14159/180.0))-cos((double)(ent->metai1*sim_time/ent->metai2 + ent->metai3*3.14159/180.0))); + //fx += dx/(dtime*dtime); + //fy += dy/(dtime*dtime); + //fz += dz/(dtime*dtime); + camvx += dx/(dtime); + camvy += dy/(dtime); + camvz += dz/(dtime); + } } void translatePlayerLine(float dtime, int* hp, int* dmg, entity* ent, cube_0* ret) { - double dx = (ent->metai1)*ent->metad4*dtime; - double dy = (ent->metai2)*ent->metad5*dtime; - double dz = (ent->metai3)*ent->metad6*dtime; - //fx += dx/(dtime*dtime); - //fy += dy/(dtime*dtime); - //fz += dz/(dtime*dtime); - camvx += dx/(dtime); - camvy += dy/(dtime); - camvz += dz/(dtime); + bool canMove = (ent->metai5 == -1) || xor(buttonSwitch[ent->metai5], (bool)ent->metai4); + if(canMove) { + double dx = (ent->metai1)*ent->metad4*dtime; + double dy = (ent->metai2)*ent->metad5*dtime; + double dz = (ent->metai3)*ent->metad6*dtime; + //fx += dx/(dtime*dtime); + //fy += dy/(dtime*dtime); + //fz += dz/(dtime*dtime); + camvx += dx/(dtime); + camvy += dy/(dtime); + } } void go_to_player(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) { diff --git a/src/generation.c b/src/generation.c index 8c0e91c..c923e89 100644 --- a/src/generation.c +++ b/src/generation.c @@ -323,6 +323,15 @@ void get_number_blocks(int* ret_cubes, int* ret_tps, int* ret_ent, FILE* ptr) { fclose(ptr); } +bool exists_optionnal(FILE* ptr, char opener, char closer) { + char c = fgetc(ptr); + while(c != EOF && c != opener && c != closer) { + c = fgetc(ptr); + } + + return (c == opener); +} + void align_to(FILE* ptr, char ch) { char c = fgetc(ptr); while(c != EOF && c != ch) { @@ -407,8 +416,13 @@ void parse_one_room(int id, char* filename) { printf("2/3...\n"); fflush(stdout); + bool doAlign = true; for(int k = 0; k < nent; k++) { - align_to(ptr, '['); + if(doAlign) { + align_to(ptr, '['); + } else { + doAlign = true; + } double cx = read_float(ptr); double cy = read_float(ptr); double cz = read_float(ptr); @@ -494,6 +508,16 @@ void parse_one_room(int id, char* filename) { int mult = read_int(ptr); int divd = read_int(ptr); int phase = read_int(ptr); + + int defaultTrigger = -1; + int onHitButton = -1; + + doAlign = exists_optionnal(ptr, '{', '\n'); + if(doAlign) { + defaultTrigger = read_int(ptr); + onHitButton = read_int(ptr); + } + pool[id].area->ents[k]->metad1 = cx; pool[id].area->ents[k]->metad2 = cy; pool[id].area->ents[k]->metad3 = cz; @@ -503,6 +527,9 @@ void parse_one_room(int id, char* filename) { pool[id].area->ents[k]->metai1 = mult; pool[id].area->ents[k]->metai2 = divd; pool[id].area->ents[k]->metai3 = phase; + + pool[id].area->ents[k]->metai4 = defaultTrigger; + pool[id].area->ents[k]->metai5 = onHitButton; } else if(entry->id == 5) { // linear platform double amp_x = read_float(ptr); @@ -511,6 +538,16 @@ void parse_one_room(int id, char* filename) { double speed_x = read_float(ptr); double speed_y = read_float(ptr); double speed_z = read_float(ptr); + + int defaultTrigger = -1; + int onHitButton = -1; + + doAlign = exists_optionnal(ptr, '{', '\n'); + if(doAlign) { + defaultTrigger = read_int(ptr); + onHitButton = read_int(ptr); + } + printf("%lf %lf %lf %lf %lf %lf\n", amp_x, amp_y, amp_z, speed_x, speed_y, speed_z); pool[id].area->ents[k]->metad1 = cx; pool[id].area->ents[k]->metad2 = cy; @@ -524,6 +561,9 @@ void parse_one_room(int id, char* filename) { pool[id].area->ents[k]->metai1 = 1; pool[id].area->ents[k]->metai2 = 1; pool[id].area->ents[k]->metai3 = 1; + + pool[id].area->ents[k]->metai4 = defaultTrigger; + pool[id].area->ents[k]->metai5 = onHitButton; } else if(entry->id == 6) { // text box char* msg = read_string(ptr); diff --git a/src/main.c b/src/main.c index ce6baf7..c5c8620 100644 --- a/src/main.c +++ b/src/main.c @@ -299,7 +299,8 @@ void processInput(GLFWwindow *window, float dtime) { hardReset = false; //reset_everything(window, 4, "levels/level_00/"); //reset_everything(window, 7, "levels/level_01/"); - reset_everything(window, 1, "levels/level_03/"); + reset_everything(window, 1, "levels/level_02/"); + //reset_everything(window, 1, "levels/level_03/"); } } else { rPress = false; diff --git a/src/move.c b/src/move.c index 5736ac6..942a995 100644 --- a/src/move.c +++ b/src/move.c @@ -356,9 +356,9 @@ bool is_colliding(float dtime) { for(int k = 0; k < vstd->ent_len; k++) { //printf("%d -> %d\n", k, vstd->ents[k]->entity_type); if( - (vstd->ents[k]->entity_type != 12 || xor(buttonSwitch[vstd->ents[k]->metai1], vstd->ents[k]->metai2)) && - (vstd->ents[k]->entity_type != 9 || vstd->ents[k]->metai1) && - (vstd->ents[k]->entity_type != 13 || (vstd->ents[k]->metad1 == 0.0 || vstd->ents[k]->metai1 == 0)) + (vstd->ents[k]->entity_type != 12 || xor(buttonSwitch[vstd->ents[k]->metai1], vstd->ents[k]->metai2)) && // disabled button block + (vstd->ents[k]->entity_type != 9 || vstd->ents[k]->metai1) && // off-beat block + (vstd->ents[k]->entity_type != 13 || (vstd->ents[k]->metad1 == 0.0 || vstd->ents[k]->metai1 == 0)) // hollow math block ) { double dist = distance_pt_cube_0_3d_infinite(camx-2*room_width*w, camy, camz-2*room_depth*h, vstd->ents[k]->pos); //printf("%lf vs %lf\n", dist, min_dist);