added linear platforms and creative/survival mode (G)
This commit is contained in:
parent
2f07c81f4f
commit
e0c873989d
BIN
obj/base.o
BIN
obj/base.o
Binary file not shown.
BIN
obj/display.o
BIN
obj/display.o
Binary file not shown.
BIN
obj/entities.o
BIN
obj/entities.o
Binary file not shown.
BIN
obj/generation.o
BIN
obj/generation.o
Binary file not shown.
BIN
obj/hash.o
BIN
obj/hash.o
Binary file not shown.
BIN
obj/main.o
BIN
obj/main.o
Binary file not shown.
BIN
obj/menus.o
BIN
obj/menus.o
Binary file not shown.
BIN
obj/move.o
BIN
obj/move.o
Binary file not shown.
BIN
obj/proj.o
BIN
obj/proj.o
Binary file not shown.
|
@ -90,6 +90,27 @@ void moving_xyz(double x, double y, double z, double w, double h, double d, doub
|
||||||
//printf("%lf %lf %lf\n", ret->x, ret->y, ret->z);
|
//printf("%lf %lf %lf\n", ret->x, ret->y, ret->z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// metad{1,2,3} = og pos
|
||||||
|
// metad{4,5,6} = speed
|
||||||
|
// metad{7,8,9} = max_delta
|
||||||
|
// metai{1} = x_side (+/- 1)
|
||||||
|
// 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) {
|
||||||
|
ret->x += (ent->metai1)*ent->metad4*dtime;
|
||||||
|
if(absf(ent->metad1 - ret->x) > ent->metad7) {
|
||||||
|
ent->metai1 *= (-1);
|
||||||
|
}
|
||||||
|
ret->y += (ent->metai2)*ent->metad5*dtime;
|
||||||
|
if(absf(ent->metad2 - ret->y) > ent->metad8) {
|
||||||
|
ent->metai2 *= (-1);
|
||||||
|
}
|
||||||
|
ret->z += (ent->metai3)*ent->metad6*dtime;
|
||||||
|
if(absf(ent->metad3 - ret->z) > ent->metad9) {
|
||||||
|
ent->metai3 *= (-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void detectHit(float dtime, int* hp, int* dmg, entity* ent, cube_0* ret) {
|
void detectHit(float dtime, int* hp, int* dmg, entity* ent, cube_0* ret) {
|
||||||
if(ret->red == 193) {
|
if(ret->red == 193) {
|
||||||
ret->red = 0;
|
ret->red = 0;
|
||||||
|
@ -113,6 +134,15 @@ void translatePlayer(float dtime, int* hp, int* dmg, entity* ent, cube_0* ret) {
|
||||||
//fz += dz/(dtime*dtime);
|
//fz += dz/(dtime*dtime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void translatePlayerLine(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);
|
||||||
|
}
|
||||||
|
|
||||||
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) {
|
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) {
|
||||||
double dx = (x+w/2 - camx);
|
double dx = (x+w/2 - camx);
|
||||||
double dy = (y+h/2 - camy);
|
double dy = (y+h/2 - camy);
|
||||||
|
|
|
@ -11,10 +11,12 @@ void speen(double x, double y, double z, double w, double h, double d, double hz
|
||||||
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);
|
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);
|
||||||
void speen3(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);
|
void speen3(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);
|
||||||
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);
|
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);
|
||||||
|
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);
|
||||||
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);
|
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);
|
||||||
|
|
||||||
void detectHit(float dtime, int* hp, int* dmg, entity* ent, cube_0* ret);
|
void detectHit(float dtime, int* hp, int* dmg, entity* ent, cube_0* ret);
|
||||||
void explodeOnHit(float dtime, int* hp, int* dmg, entity* ent, cube_0* ret);
|
void explodeOnHit(float dtime, int* hp, int* dmg, entity* ent, cube_0* ret);
|
||||||
void translatePlayer(float dtime, int* hp, int* dmg, entity* ent, cube_0* ret);
|
void translatePlayer(float dtime, int* hp, int* dmg, entity* ent, cube_0* ret);
|
||||||
|
void translatePlayerLine(float dtime, int* hp, int* dmg, entity* ent, cube_0* ret);
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -30,6 +30,7 @@ int fct_entry_size;
|
||||||
fct_entry* hashtbl_entities;
|
fct_entry* hashtbl_entities;
|
||||||
|
|
||||||
void init_ent_generator(int n) {
|
void init_ent_generator(int n) {
|
||||||
|
//!\\ size = 10 now
|
||||||
hashtbl_entities = malloc(sizeof(fct_entry)*n);
|
hashtbl_entities = malloc(sizeof(fct_entry)*n);
|
||||||
fct_entry_size = n;
|
fct_entry_size = n;
|
||||||
for(int k = 0; k < 10; k++) {
|
for(int k = 0; k < 10; k++) {
|
||||||
|
@ -61,10 +62,16 @@ void init_ent_generator(int n) {
|
||||||
hashtbl_entities[3].onDeath = NULL;
|
hashtbl_entities[3].onDeath = NULL;
|
||||||
|
|
||||||
hashtbl_entities[4].id = 4;
|
hashtbl_entities[4].id = 4;
|
||||||
hashtbl_entities[4].name = "Platform";
|
hashtbl_entities[4].name = "SinePlatform";
|
||||||
hashtbl_entities[4].updatePos = &moving_xyz;
|
hashtbl_entities[4].updatePos = &moving_xyz;
|
||||||
hashtbl_entities[4].onHit = &translatePlayer;
|
hashtbl_entities[4].onHit = &translatePlayer;
|
||||||
hashtbl_entities[4].onDeath = NULL;
|
hashtbl_entities[4].onDeath = NULL;
|
||||||
|
|
||||||
|
hashtbl_entities[5].id = 5;
|
||||||
|
hashtbl_entities[5].name = "LinePlatform";
|
||||||
|
hashtbl_entities[5].updatePos = &moving_xyz_line;
|
||||||
|
hashtbl_entities[5].onHit = &translatePlayerLine;
|
||||||
|
hashtbl_entities[5].onDeath = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
fct_entry* get_entry(int k0) {
|
fct_entry* get_entry(int k0) {
|
||||||
|
@ -122,6 +129,9 @@ void copy_room(room* src, room* dest, int chx, int chy) {
|
||||||
dest->ents[k]->metad4 = src->ents[k]->metad4;
|
dest->ents[k]->metad4 = src->ents[k]->metad4;
|
||||||
dest->ents[k]->metad5 = src->ents[k]->metad5;
|
dest->ents[k]->metad5 = src->ents[k]->metad5;
|
||||||
dest->ents[k]->metad6 = src->ents[k]->metad6;
|
dest->ents[k]->metad6 = src->ents[k]->metad6;
|
||||||
|
dest->ents[k]->metad7 = src->ents[k]->metad7;
|
||||||
|
dest->ents[k]->metad8 = src->ents[k]->metad8;
|
||||||
|
dest->ents[k]->metad9 = src->ents[k]->metad9;
|
||||||
*(dest->ents[k]->hitpoints) = *(src->ents[k]->hitpoints);
|
*(dest->ents[k]->hitpoints) = *(src->ents[k]->hitpoints);
|
||||||
dest->ents[k]->pos = create_cube_0(
|
dest->ents[k]->pos = create_cube_0(
|
||||||
(*(src->ents[k]->pos)).x, (*(src->ents[k]->pos)).y, (*(src->ents[k]->pos)).z,
|
(*(src->ents[k]->pos)).x, (*(src->ents[k]->pos)).y, (*(src->ents[k]->pos)).z,
|
||||||
|
@ -384,6 +394,9 @@ void parse_one_room(int id, char* filename) {
|
||||||
pool[id].area->ents[k]->metad4 = entry->metad4;
|
pool[id].area->ents[k]->metad4 = entry->metad4;
|
||||||
pool[id].area->ents[k]->metad5 = entry->metad5;
|
pool[id].area->ents[k]->metad5 = entry->metad5;
|
||||||
pool[id].area->ents[k]->metad6 = entry->metad6;
|
pool[id].area->ents[k]->metad6 = entry->metad6;
|
||||||
|
pool[id].area->ents[k]->metad7 = entry->metad7;
|
||||||
|
pool[id].area->ents[k]->metad8 = entry->metad8;
|
||||||
|
pool[id].area->ents[k]->metad9 = entry->metad9;
|
||||||
if(entry->id == 4) {
|
if(entry->id == 4) {
|
||||||
double ccw = read_float(ptr);
|
double ccw = read_float(ptr);
|
||||||
double cch = read_float(ptr);
|
double cch = read_float(ptr);
|
||||||
|
@ -400,6 +413,22 @@ void parse_one_room(int id, char* filename) {
|
||||||
pool[id].area->ents[k]->metai1 = mult;
|
pool[id].area->ents[k]->metai1 = mult;
|
||||||
pool[id].area->ents[k]->metai2 = divd;
|
pool[id].area->ents[k]->metai2 = divd;
|
||||||
pool[id].area->ents[k]->metai3 = phase;
|
pool[id].area->ents[k]->metai3 = phase;
|
||||||
|
} else if(entry->id == 5) {
|
||||||
|
double amp_x = read_float(ptr);
|
||||||
|
double amp_y = read_float(ptr);
|
||||||
|
double amp_z = read_float(ptr);
|
||||||
|
double speed_x = read_float(ptr);
|
||||||
|
double speed_y = read_float(ptr);
|
||||||
|
double speed_z = read_float(ptr);
|
||||||
|
pool[id].area->ents[k]->metad4 = speed_x;
|
||||||
|
pool[id].area->ents[k]->metad5 = speed_y;
|
||||||
|
pool[id].area->ents[k]->metad6 = speed_z;
|
||||||
|
pool[id].area->ents[k]->metad7 = amp_x;
|
||||||
|
pool[id].area->ents[k]->metad8 = amp_y;
|
||||||
|
pool[id].area->ents[k]->metad9 = amp_z;
|
||||||
|
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]->updatePos = &speen2;
|
//pool[id].area->ents[k]->updatePos = &speen2;
|
||||||
//pool[id].area->ents[k]->onHit = &detectHit ;
|
//pool[id].area->ents[k]->onHit = &detectHit ;
|
||||||
|
|
|
@ -28,6 +28,9 @@ typedef struct fct_entry {
|
||||||
double metad4;
|
double metad4;
|
||||||
double metad5;
|
double metad5;
|
||||||
double metad6;
|
double metad6;
|
||||||
|
double metad7;
|
||||||
|
double metad8;
|
||||||
|
double metad9;
|
||||||
} fct_entry ;
|
} fct_entry ;
|
||||||
|
|
||||||
void init_ent_generator(int n);
|
void init_ent_generator(int n);
|
||||||
|
|
91
src/main.c
91
src/main.c
|
@ -23,80 +23,95 @@
|
||||||
double sim_time;
|
double sim_time;
|
||||||
int triCount;
|
int triCount;
|
||||||
unsigned int fffff;
|
unsigned int fffff;
|
||||||
|
int gamemode;
|
||||||
|
|
||||||
double jPress = false;
|
double jPress = false;
|
||||||
|
double gPress = false;
|
||||||
void processInput(GLFWwindow *window, float dtime) {
|
void processInput(GLFWwindow *window, float dtime) {
|
||||||
|
// quit w
|
||||||
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) {
|
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) {
|
||||||
glfwSetWindowShouldClose(window, true);
|
glfwSetWindowShouldClose(window, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// horizontal movement
|
||||||
bool pressed = false;
|
bool pressed = false;
|
||||||
if(glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS) {
|
if(glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS) {
|
||||||
/*
|
if(gamemode == 1) {
|
||||||
for(int k = 0; k < 10; k++) {
|
for(int k = 0; k < 10; k++) {
|
||||||
camz -= speed*cos(rot_hz)*cos(rot_vt)/10;
|
camz -= creative_speed*cos(rot_hz)*cos(rot_vt)/10;
|
||||||
camx -= speed*sin(rot_hz)*cos(rot_vt)/10;
|
camx -= creative_speed*sin(rot_hz)*cos(rot_vt)/10;
|
||||||
camy += speed*sin(rot_vt)/10;
|
camy += creative_speed*sin(rot_vt)/10;
|
||||||
if(is_colliding(dtime)) {
|
if(is_colliding(dtime)) {
|
||||||
camz += speed*cos(rot_hz)*cos(rot_vt)/10;
|
camz += creative_speed*cos(rot_hz)*cos(rot_vt)/10;
|
||||||
camx += speed*sin(rot_hz)*cos(rot_vt)/10;
|
camx += creative_speed*sin(rot_hz)*cos(rot_vt)/10;
|
||||||
camy -= speed*sin(rot_vt)/10;
|
camy -= creative_speed*sin(rot_vt)/10;
|
||||||
k=11;
|
k=11;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
} else {
|
||||||
camvz = -speed*cos(rot_hz);
|
camvz = -speed*cos(rot_hz);
|
||||||
camvx = -speed*sin(rot_hz);
|
camvx = -speed*sin(rot_hz);
|
||||||
|
}
|
||||||
pressed = true;
|
pressed = true;
|
||||||
//camvy = vtmult*speed*sin(rot_vt);
|
//camvy = vtmult*speed*sin(rot_vt);
|
||||||
}
|
}
|
||||||
if(glfwGetKey(window, GLFW_KEY_D) == GLFW_PRESS) {
|
if(glfwGetKey(window, GLFW_KEY_D) == GLFW_PRESS) {
|
||||||
/*
|
if(gamemode == 1) {
|
||||||
for(int k = 0; k < 10; k++) {
|
for(int k = 0; k < 10; k++) {
|
||||||
camx -= speed*cos(rot_hz)/10;
|
camx -= creative_speed*cos(rot_hz)/10;
|
||||||
camz += speed*sin(rot_hz)/10;
|
camz += creative_speed*sin(rot_hz)/10;
|
||||||
if(is_colliding(dtime)) {
|
if(is_colliding(dtime)) {
|
||||||
camx += speed*cos(rot_hz)/10;
|
camx += creative_speed*cos(rot_hz)/10;
|
||||||
camz -= speed*sin(rot_hz)/10;
|
camz -= creative_speed*sin(rot_hz)/10;
|
||||||
k=11;
|
k=11;
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
|
} else {
|
||||||
camvx = -speed*cos(rot_hz);
|
camvx = -speed*cos(rot_hz);
|
||||||
camvz = speed*sin(rot_hz);
|
camvz = speed*sin(rot_hz);
|
||||||
|
}
|
||||||
pressed = true;
|
pressed = true;
|
||||||
}
|
}
|
||||||
if(glfwGetKey(window, GLFW_KEY_Z) == GLFW_PRESS) {
|
if(glfwGetKey(window, GLFW_KEY_Z) == GLFW_PRESS) {
|
||||||
/*for(int k = 0; k < 10; k++) {
|
if(gamemode == 1) {
|
||||||
camz += speed*cos(rot_hz)*cos(rot_vt)/10;
|
for(int k = 0; k < 10; k++) {
|
||||||
camx += speed*sin(rot_hz)*cos(rot_vt)/10;
|
camz += creative_speed*cos(rot_hz)*cos(rot_vt)/10;
|
||||||
camy -= speed*sin(rot_vt)/10;
|
camx += creative_speed*sin(rot_hz)*cos(rot_vt)/10;
|
||||||
|
camy -= creative_speed*sin(rot_vt)/10;
|
||||||
if(is_colliding(dtime)) {
|
if(is_colliding(dtime)) {
|
||||||
camz -= speed*cos(rot_hz)*cos(rot_vt)/10;
|
camz -= creative_speed*cos(rot_hz)*cos(rot_vt)/10;
|
||||||
camx -= speed*sin(rot_hz)*cos(rot_vt)/10;
|
camx -= creative_speed*sin(rot_hz)*cos(rot_vt)/10;
|
||||||
camy += speed*sin(rot_vt)/10;
|
camy += creative_speed*sin(rot_vt)/10;
|
||||||
k=11;
|
k=11;
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
|
} else {
|
||||||
camvz = speed*cos(rot_hz);
|
camvz = speed*cos(rot_hz);
|
||||||
camvx = speed*sin(rot_hz);
|
camvx = speed*sin(rot_hz);
|
||||||
|
}
|
||||||
pressed = true;
|
pressed = true;
|
||||||
//camvy = -vtmult*speed*sin(rot_vt);
|
//camvy = -vtmult*speed*sin(rot_vt);
|
||||||
}
|
}
|
||||||
if(glfwGetKey(window, GLFW_KEY_Q) == GLFW_PRESS) {
|
if(glfwGetKey(window, GLFW_KEY_Q) == GLFW_PRESS) {
|
||||||
/*for(int k = 0; k < 10; k++) {
|
if(gamemode == 1) {
|
||||||
camx += speed*cos(rot_hz)/10;
|
for(int k = 0; k < 10; k++) {
|
||||||
camz -= speed*sin(rot_hz)/10;
|
camx += creative_speed*cos(rot_hz)/10;
|
||||||
|
camz -= creative_speed*sin(rot_hz)/10;
|
||||||
if(is_colliding(dtime)) {
|
if(is_colliding(dtime)) {
|
||||||
camx -= speed*cos(rot_hz)/10;
|
camx -= creative_speed*cos(rot_hz)/10;
|
||||||
camz += speed*sin(rot_hz)/10;
|
camz += creative_speed*sin(rot_hz)/10;
|
||||||
k=11;
|
k=11;
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
|
} else {
|
||||||
camvx = speed*cos(rot_hz);
|
camvx = speed*cos(rot_hz);
|
||||||
camvz = -speed*sin(rot_hz);
|
camvz = -speed*sin(rot_hz);
|
||||||
|
}
|
||||||
pressed = true;
|
pressed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(njumps > 0 && glfwGetKey(window, GLFW_KEY_SPACE) == GLFW_PRESS) {
|
// jumps
|
||||||
|
if(gamemode == 0 && njumps > 0 && glfwGetKey(window, GLFW_KEY_SPACE) == GLFW_PRESS) {
|
||||||
if(jPress) {
|
if(jPress) {
|
||||||
camvy = vtmult*speed;
|
camvy = vtmult*speed;
|
||||||
njumps -= 1;
|
njumps -= 1;
|
||||||
|
@ -110,6 +125,21 @@ void processInput(GLFWwindow *window, float dtime) {
|
||||||
camvz *= (1.0-1.0*5.0*((double)dtime));
|
camvz *= (1.0-1.0*5.0*((double)dtime));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// gamemode
|
||||||
|
if(glfwGetKey(window, GLFW_KEY_G) == GLFW_PRESS) {
|
||||||
|
if(!gPress) {
|
||||||
|
gPress = true;
|
||||||
|
gamemode = 1-gamemode;
|
||||||
|
njumps = 3;
|
||||||
|
camvx = 0.0;
|
||||||
|
camvy = 0.0;
|
||||||
|
camvz = 0.0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
gPress = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// camera rotation
|
||||||
if(glfwGetKey(window, GLFW_KEY_E) == GLFW_PRESS) {
|
if(glfwGetKey(window, GLFW_KEY_E) == GLFW_PRESS) {
|
||||||
rot_hz -= sensitivity;
|
rot_hz -= sensitivity;
|
||||||
}
|
}
|
||||||
|
@ -359,7 +389,9 @@ int main_alt() {
|
||||||
// glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)
|
// glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)
|
||||||
// -------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------
|
||||||
processInput(window, delta);
|
processInput(window, delta);
|
||||||
|
if(gamemode == 0) {
|
||||||
movePlayerG(delta);
|
movePlayerG(delta);
|
||||||
|
}
|
||||||
teleport_on_edge();
|
teleport_on_edge();
|
||||||
update_entities(delta);
|
update_entities(delta);
|
||||||
updateProj(delta);
|
updateProj(delta);
|
||||||
|
@ -397,5 +429,6 @@ int main(int argc, char** argv) {
|
||||||
srand(time(NULL));
|
srand(time(NULL));
|
||||||
triCount = 0;
|
triCount = 0;
|
||||||
sim_time = 0.0;
|
sim_time = 0.0;
|
||||||
|
gamemode = 0;
|
||||||
return main_alt();
|
return main_alt();
|
||||||
}
|
}
|
|
@ -319,6 +319,7 @@ void gl_printf(unsigned int fragShader, float x, float y, float size, float widt
|
||||||
curx += (size+4*width)*(1+get_string_len(chval));
|
curx += (size+4*width)*(1+get_string_len(chval));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
fprintf(stderr, "warning : format %%%c is not supported\n", cur);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
// ---------------------------------------------------------------------------------------------------- //
|
// ---------------------------------------------------------------------------------------------------- //
|
||||||
double sensitivity = 0.06;
|
double sensitivity = 0.06;
|
||||||
double fov = 90.0;
|
double fov = 90.0;
|
||||||
double creative_speed = 0.3;
|
double creative_speed = 0.5;
|
||||||
double speed = 8.0;
|
double speed = 5.0;
|
||||||
double vtmult = 1.5;
|
double vtmult = 1.5;
|
||||||
double min_dist = 0.4;
|
double min_dist = 0.4;
|
||||||
double friction = 0.3;
|
double friction = 0.3;
|
||||||
|
|
|
@ -53,6 +53,9 @@ typedef struct entity {
|
||||||
double metad4;
|
double metad4;
|
||||||
double metad5;
|
double metad5;
|
||||||
double metad6;
|
double metad6;
|
||||||
|
double metad7;
|
||||||
|
double metad8;
|
||||||
|
double metad9;
|
||||||
|
|
||||||
int damage;
|
int damage;
|
||||||
int* hitpoints;
|
int* hitpoints;
|
||||||
|
@ -139,6 +142,7 @@ extern double room_depth;
|
||||||
extern double sensitivity;
|
extern double sensitivity;
|
||||||
extern double fov;
|
extern double fov;
|
||||||
extern double speed;
|
extern double speed;
|
||||||
|
extern double creative_speed;
|
||||||
extern double min_dist;
|
extern double min_dist;
|
||||||
// ---------------------------------------------------------------------------------------------------- //
|
// ---------------------------------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
@ -156,5 +160,6 @@ extern double fz;
|
||||||
extern int njumps;
|
extern int njumps;
|
||||||
|
|
||||||
extern unsigned int fffff;
|
extern unsigned int fffff;
|
||||||
|
extern int gamemode;
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -7,10 +7,10 @@ Blocks :
|
||||||
[9.0, 1.0, 9.0, 1.0, 8.0, 1.0, 0.0, 0.0, 128, 128, 128]
|
[9.0, 1.0, 9.0, 1.0, 8.0, 1.0, 0.0, 0.0, 128, 128, 128]
|
||||||
|
|
||||||
Teleporters :
|
Teleporters :
|
||||||
[4.0, 1.0, 0.0, 2.0, 4.0, 1.0, 0.0, 0.0, 255, 0, 0; 0, -1]
|
[4.0, 1.0, 0.0, 2.0, 4.0, 1.0, 0.0, 0.0, 255, 0, 0; -1, 0]
|
||||||
[0.0, 1.0, 4.0, 1.0, 4.0, 2.0, 0.0, 0.0, 255, 255, 0; -1, 0]
|
[0.0, 1.0, 4.0, 1.0, 4.0, 2.0, 0.0, 0.0, 255, 255, 0; 0, -1]
|
||||||
[4.0, 1.0, 9.0, 2.0, 4.0, 1.0, 0.0, 0.0, 0, 255, 0; 0, 1]
|
[4.0, 1.0, 9.0, 2.0, 4.0, 1.0, 0.0, 0.0, 0, 255, 0; 1, 0]
|
||||||
[9.0, 1.0, 4.0, 1.0, 4.0, 2.0, 0.0, 0.0, 0, 0, 255; 1, 0]
|
[9.0, 1.0, 4.0, 1.0, 4.0, 2.0, 0.0, 0.0, 0, 0, 255; 0, 1]
|
||||||
|
|
||||||
Weight :
|
Weight :
|
||||||
50
|
50
|
||||||
|
|
|
@ -6,10 +6,10 @@ Blocks :
|
||||||
[-1.0, 0.0, 3.0, 2.0, 1.0, 2.0, 0.0, 0.0, 255, 255, 255]
|
[-1.0, 0.0, 3.0, 2.0, 1.0, 2.0, 0.0, 0.0, 255, 255, 255]
|
||||||
|
|
||||||
Teleporters :
|
Teleporters :
|
||||||
[-1.0, 0.0, -9.0, 2.0, 1.0, 2.0, 0.0, 0.0, 255, 0, 0; 0, -1]
|
[-1.0, 0.0, -9.0, 2.0, 1.0, 2.0, 0.0, 0.0, 255, 0, 0; -1, 0]
|
||||||
[-9.0, 0.0, -1.0, 2.0, 1.0, 2.0, 0.0, 0.0, 255, 255, 0; -1, 0]
|
[-9.0, 0.0, -1.0, 2.0, 1.0, 2.0, 0.0, 0.0, 255, 255, 0; 0, -1]
|
||||||
[-1.0, 0.0, 7.0, 2.0, 1.0, 2.0, 0.0, 0.0, 0, 255, 0; 0, 1]
|
[-1.0, 0.0, 7.0, 2.0, 1.0, 2.0, 0.0, 0.0, 0, 255, 0; 1, 0]
|
||||||
[7.0, 0.0, -1.0, 2.0, 1.0, 2.0, 0.0, 0.0, 0, 0, 255; 1, 0]
|
[7.0, 0.0, -1.0, 2.0, 1.0, 2.0, 0.0, 0.0, 0, 0, 255; 0, 1]
|
||||||
|
|
||||||
Entities :
|
Entities :
|
||||||
[1.0, 3.0, 0.0, 0.5, 0.5, 0.5, 0.0, 0.0, 193, 192, 0, 1, 0, 0]
|
[1.0, 3.0, 0.0, 0.5, 0.5, 0.5, 0.0, 0.0, 193, 192, 0, 1, 0, 0]
|
||||||
|
|
|
@ -8,10 +8,10 @@ Blocks :
|
||||||
[-0.4, 1.0, -0.4, 0.8, 6.0, 0.8, 0.0, 0.0, 128, 128, 128]
|
[-0.4, 1.0, -0.4, 0.8, 6.0, 0.8, 0.0, 0.0, 128, 128, 128]
|
||||||
|
|
||||||
Teleporters :
|
Teleporters :
|
||||||
[-10.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 255, 0, 0; 0, -1]
|
[-10.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 255, 0, 0; -1, 0]
|
||||||
[-5.0, 1.0, -10.0, 10.0, 2.0, 1.0, 0.0, 0.0, 255, 255, 0; -1, 0]
|
[-5.0, 1.0, -10.0, 10.0, 2.0, 1.0, 0.0, 0.0, 255, 255, 0; 0, -1]
|
||||||
[9.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 0, 255, 0; 0, 1]
|
[9.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 0, 255, 0; 1, 0]
|
||||||
[-5.0, 1.0, 9.0, 10.0, 2.0, 1.0, 0.0, 0.0, 0, 0, 255; 1, 0]
|
[-5.0, 1.0, 9.0, 10.0, 2.0, 1.0, 0.0, 0.0, 0, 0, 255; 0, 1]
|
||||||
|
|
||||||
Entities :
|
Entities :
|
||||||
[3.0, 3.0, 3.0, 0.5, 0.5, 0.5, 0.0, 0.0, 255, 192, 0, 1, 0, 3]
|
[3.0, 3.0, 3.0, 0.5, 0.5, 0.5, 0.0, 0.0, 255, 192, 0, 1, 0, 3]
|
||||||
|
|
|
@ -6,9 +6,9 @@ Blocks :
|
||||||
|
|
||||||
Teleporters :
|
Teleporters :
|
||||||
[-10.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 255, 0, 0; 0, -1]
|
[-10.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 255, 0, 0; 0, -1]
|
||||||
[-5.0, 1.0, -10.0, 10.0, 2.0, 1.0, 0.0, 0.0, 255, 255, 0; -1, 0]
|
[-5.0, 1.0, -10.0, 10.0, 2.0, 1.0, 0.0, 0.0, 255, 255, 0; 0, -1]
|
||||||
[9.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 0, 255, 0; 0, 1]
|
[9.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 0, 255, 0; 1, 0]
|
||||||
[-5.0, 1.0, 9.0, 10.0, 2.0, 1.0, 0.0, 0.0, 0, 0, 255; 1, 0]
|
[-5.0, 1.0, 9.0, 10.0, 2.0, 1.0, 0.0, 0.0, 0, 0, 255; 0, 1]
|
||||||
|
|
||||||
Weight :
|
Weight :
|
||||||
50
|
50
|
||||||
|
|
|
@ -3,10 +3,10 @@ Blocks :
|
||||||
[-10.0, 7.1, -10.0, 20.0, 0.9, 20.0, 0.0, 0.0, 192, 192, 192]
|
[-10.0, 7.1, -10.0, 20.0, 0.9, 20.0, 0.0, 0.0, 192, 192, 192]
|
||||||
|
|
||||||
Teleporters :
|
Teleporters :
|
||||||
[-10.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 255, 0, 0; 0, -1]
|
[-10.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 255, 0, 0; -1, 0]
|
||||||
[-5.0, 1.0, -10.0, 10.0, 2.0, 1.0, 0.0, 0.0, 255, 255, 0; -1, 0]
|
[-5.0, 1.0, -10.0, 10.0, 2.0, 1.0, 0.0, 0.0, 255, 255, 0; 0, -1]
|
||||||
[9.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 0, 255, 0; 0, 1]
|
[9.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 0, 255, 0; 1, 0]
|
||||||
[-5.0, 1.0, 9.0, 10.0, 2.0, 1.0, 0.0, 0.0, 0, 0, 255; 1, 0]
|
[-5.0, 1.0, 9.0, 10.0, 2.0, 1.0, 0.0, 0.0, 0, 0, 255; 0, 1]
|
||||||
|
|
||||||
Entities :
|
Entities :
|
||||||
[0.0, 3.0, 0.0, 0.5, 0.5, 0.5, 0.0, 0.0, 255, 64, 0, 5, 100, 1]
|
[0.0, 3.0, 0.0, 0.5, 0.5, 0.5, 0.0, 0.0, 255, 64, 0, 5, 100, 1]
|
||||||
|
|
|
@ -2,18 +2,18 @@ Blocks :
|
||||||
[-10.0, 0.0, -10.0, 20.0, 1.0, 20.0, 0.0, 0.0, 192, 192, 192]
|
[-10.0, 0.0, -10.0, 20.0, 1.0, 20.0, 0.0, 0.0, 192, 192, 192]
|
||||||
|
|
||||||
Teleporters :
|
Teleporters :
|
||||||
[-10.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 255, 0, 0; 0, -1]
|
[-10.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 255, 0, 0; -1, 0]
|
||||||
[-5.0, 1.0, -10.0, 10.0, 2.0, 1.0, 0.0, 0.0, 255, 255, 0; -1, 0]
|
[-5.0, 1.0, -10.0, 10.0, 2.0, 1.0, 0.0, 0.0, 255, 255, 0; 0, -1]
|
||||||
[9.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 0, 255, 0; 0, 1]
|
[9.0, 1.0, -5.0, 1.0, 2.0, 10.0, 0.0, 0.0, 0, 255, 0; 1, 0]
|
||||||
[-5.0, 1.0, 9.0, 10.0, 2.0, 1.0, 0.0, 0.0, 0, 0, 255; 1, 0]
|
[-5.0, 1.0, 9.0, 10.0, 2.0, 1.0, 0.0, 0.0, 0, 0, 255; 0, 1]
|
||||||
|
|
||||||
Entities:
|
Entities:
|
||||||
[-15.0, 4.0, -15.0, 4.0, 1.0, 4.0, 0.0, 0.0, 192, 128, 192, 10, 0, 4, 0.0, 5.0, 0.0, 2, 1, 90]
|
[-15.0, 4.0, -15.0, 4.0, 1.0, 4.0, 0.0, 0.0, 192, 128, 192, 10, 0, 4, 0.0, 5.0, 0.0, 2, 1, 0]
|
||||||
[-5.0, 9.0, -15.0, 4.0, 1.0, 4.0, 0.0, 0.0, 192, 128, 192, 10, 0, 4, 5.0, 0.0, 0.0, 2, 1, 0]
|
[-5.0, 9.0, -15.0, 4.0, 1.0, 4.0, 0.0, 0.0, 192, 128, 192, 10, 0, 5, 5.0, 0.0, 0.0, 6.0, 0.0, 0.0]
|
||||||
[0.0, 10.0, -5.0, 4.0, 1.0, 4.0, 0.0, 0.0, 192, 128, 192, 10, 0, 4, 0.0, 0.0, 5.0, 2, 1, 270]
|
[0.0, 10.0, -5.0, 4.0, 1.0, 4.0, 0.0, 0.0, 192, 128, 192, 10, 0, 4, 0.0, 0.0, 5.0, 2, 1, 35]
|
||||||
|
|
||||||
Weight :
|
Weight :
|
||||||
50
|
100
|
||||||
|
|
||||||
$
|
$
|
||||||
entities:
|
entities:
|
||||||
|
@ -21,8 +21,14 @@ entities:
|
||||||
|
|
||||||
if entityType = 4 (moving platform)
|
if entityType = 4 (moving platform)
|
||||||
[.. amplitude_x, amplitude_y, amplitude_z, mult, divd, phase] with
|
[.. amplitude_x, amplitude_y, amplitude_z, mult, divd, phase] with
|
||||||
amplitude_{x,y,z} = doubles[>= 0.0]
|
amplitude_{x,y,z} = double[>= 0.0]
|
||||||
{mult,divd} = int
|
{mult,divd} = int
|
||||||
{phase} = int[0, 360]
|
{phase} = int[0, 360]
|
||||||
|
|
||||||
|
else if entityType = 5 (linear moving platform)
|
||||||
|
[.. amplitude_x, amplitude_y, amplitude_z, speed_x, speed_y, speed_z] with
|
||||||
|
amplitude_{x,y,z} = double[>= 0.0]
|
||||||
|
speed_{x,y,z} = double
|
||||||
|
|
||||||
else
|
else
|
||||||
[..]
|
[..]
|
Loading…
Reference in New Issue