added reset trigger 'R' + custom pool selection
This commit is contained in:
parent
28ee926295
commit
04d782f55a
|
@ -0,0 +1,18 @@
|
||||||
|
Blocks :
|
||||||
|
[0.0, 0.0, 0.0, 10.0, 1.0, 10.0, 0.0, 0.0, 255, 255, 255]
|
||||||
|
[0.0, 9.0, 0.0, 10.0, 1.0, 10.0, 0.0, 0.0, 255, 255, 255]
|
||||||
|
[0.0, 1.0, 0.0, 1.0, 8.0, 1.0, 0.0, 0.0, 128, 128, 128]
|
||||||
|
[9.0, 1.0, 0.0, 1.0, 8.0, 1.0, 0.0, 0.0, 128, 128, 128]
|
||||||
|
[0.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 :
|
||||||
|
[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; 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; 0, 1]
|
||||||
|
|
||||||
|
Weight :
|
||||||
|
50
|
||||||
|
|
||||||
|
$
|
BIN
obj/display.o
BIN
obj/display.o
Binary file not shown.
BIN
obj/generation.o
BIN
obj/generation.o
Binary file not shown.
BIN
obj/main.o
BIN
obj/main.o
Binary file not shown.
BIN
obj/move.o
BIN
obj/move.o
Binary file not shown.
|
@ -212,9 +212,9 @@ void gl_initRender(unsigned int shaderProgram, unsigned int fragmentShader, unsi
|
||||||
}
|
}
|
||||||
|
|
||||||
void gl_drawData(unsigned int shaderProg) {
|
void gl_drawData(unsigned int shaderProg) {
|
||||||
gl_drawInteger(shaderProg, (int)camx, 0.95f, 0.9f, 0.05f, 255, 255, 255, 0.005, -1);
|
gl_drawInteger(shaderProg, (int)camx + 2*room_width*player_chx, 0.95f, 0.9f, 0.05f, 255, 255, 255, 0.005, -1);
|
||||||
gl_drawInteger(shaderProg, (int)camy, 0.95f, 0.75f, 0.05f, 255, 255, 255, 0.005, -1);
|
gl_drawInteger(shaderProg, (int)camy, 0.95f, 0.75f, 0.05f, 255, 255, 255, 0.005, -1);
|
||||||
gl_drawInteger(shaderProg, (int)camz, 0.95f, 0.6f, 0.05f, 255, 255, 255, 0.005, -1);
|
gl_drawInteger(shaderProg, (int)camz + 2*room_depth*player_chy, 0.95f, 0.6f, 0.05f, 255, 255, 255, 0.005, -1);
|
||||||
|
|
||||||
gl_drawInteger(shaderProg, (int)10.0*camvx, 0.95f, -0.6f, 0.05f, 255, 255, 255, 0.005, -1);
|
gl_drawInteger(shaderProg, (int)10.0*camvx, 0.95f, -0.6f, 0.05f, 255, 255, 255, 0.005, -1);
|
||||||
gl_drawInteger(shaderProg, (int)10.0*camvy, 0.95f, -0.75f, 0.05f, 255, 255, 255, 0.005, -1);
|
gl_drawInteger(shaderProg, (int)10.0*camvy, 0.95f, -0.75f, 0.05f, 255, 255, 255, 0.005, -1);
|
||||||
|
|
|
@ -194,12 +194,9 @@ void build_starting_chunk(int chx, int chy) {
|
||||||
|
|
||||||
void init_hashtbl() {
|
void init_hashtbl() {
|
||||||
visited = hashtbl_generate(1789);
|
visited = hashtbl_generate(1789);
|
||||||
build_starting_chunk(0, 0);
|
build_starting_chunk(player_chx, player_chy);
|
||||||
current_room = hashtbl_find_opt(visited, 0, 0);
|
current_room = hashtbl_find_opt(visited, player_chx, player_chy);
|
||||||
player_chx = 0;
|
|
||||||
player_chy = 0;
|
|
||||||
total_weight = 0;
|
total_weight = 0;
|
||||||
coins = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void get_number_blocks(int* ret_cubes, int* ret_tps, int* ret_ent, FILE* ptr) {
|
void get_number_blocks(int* ret_cubes, int* ret_tps, int* ret_ent, FILE* ptr) {
|
||||||
|
@ -469,8 +466,33 @@ void parse_one_room(int id, char* filename) {
|
||||||
fclose(ptr);
|
fclose(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void parse_rooms(int n_rooms) {
|
char* get_name_and_i(char* folder, int nrooms, int* reti) {
|
||||||
char* name = malloc(sizeof(char)*19); // 1000 rooms max
|
int len = 0;
|
||||||
|
while(folder[len] != '\0') {
|
||||||
|
len+=1;
|
||||||
|
}
|
||||||
|
int lnn = 1+ln_baseN(nrooms, 10);
|
||||||
|
int str_size = len+lnn+5;
|
||||||
|
char* res = malloc(sizeof(char)*str_size);
|
||||||
|
for(int k = 0; k < len; k++) {
|
||||||
|
res[k] = folder[k];
|
||||||
|
}
|
||||||
|
res[len ] = 'r';
|
||||||
|
res[len+1] = 'o';
|
||||||
|
res[len+2] = 'o';
|
||||||
|
res[len+3] = 'm';
|
||||||
|
res[len+4] = '_';
|
||||||
|
res[len+5] = '0';
|
||||||
|
for(int k = len+6; k < str_size; k++) {
|
||||||
|
res[k] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
*reti = len+5;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
void parse_rooms(int n_rooms, char* folder) {
|
||||||
|
/*char* name = malloc(sizeof(char)*19); // 1000 rooms max (not anymore xD)
|
||||||
name[0] = 't';
|
name[0] = 't';
|
||||||
name[1] = 'e';
|
name[1] = 'e';
|
||||||
name[2] = 'm';
|
name[2] = 'm';
|
||||||
|
@ -489,7 +511,9 @@ void parse_rooms(int n_rooms) {
|
||||||
name[15] = '0';
|
name[15] = '0';
|
||||||
name[16] = '\0';
|
name[16] = '\0';
|
||||||
name[17] = '\0';
|
name[17] = '\0';
|
||||||
name[18] = '\0';
|
name[18] = '\0';*/
|
||||||
|
int id = 0;
|
||||||
|
char* name = get_name_and_i(folder, n_rooms, &id);
|
||||||
|
|
||||||
pool = malloc(sizeof(entry)*n_rooms);
|
pool = malloc(sizeof(entry)*n_rooms);
|
||||||
pool_size = n_rooms;
|
pool_size = n_rooms;
|
||||||
|
@ -499,10 +523,14 @@ void parse_rooms(int n_rooms) {
|
||||||
for(int k = 0; k < n_rooms; k++) {
|
for(int k = 0; k < n_rooms; k++) {
|
||||||
printf("parsing %d...", k);
|
printf("parsing %d...", k);
|
||||||
if(k < 10) {
|
if(k < 10) {
|
||||||
name[15] = (char)(k%10 + 48);
|
name[id] = (char)(k%10 + 48);
|
||||||
} else if(k < 100) {
|
} else if(k < 100) {
|
||||||
name[15] = (char)((k/10)%10 + 48);
|
name[id] = (char)((k/10)%10 + 48);
|
||||||
name[16] = (char)(k%10 + 48);
|
name[id+1] = (char)(k%10 + 48);
|
||||||
|
} else if(k < 1000) {
|
||||||
|
name[id] = (char)((k/100)%10 + 48);
|
||||||
|
name[id+1] = (char)((k/10)%10 + 48);
|
||||||
|
name[id+2] = (char)(k%10 + 48);
|
||||||
}
|
}
|
||||||
parse_one_room(k, name);
|
parse_one_room(k, name);
|
||||||
printf("done.\n");
|
printf("done.\n");
|
||||||
|
@ -516,6 +544,8 @@ void parse_rooms(int n_rooms) {
|
||||||
|
|
||||||
// has to be a multiple of both room_width and room_depth
|
// has to be a multiple of both room_width and room_depth
|
||||||
int divider = 4;
|
int divider = 4;
|
||||||
|
|
||||||
|
// unused
|
||||||
void generate_terrain(room* r) {
|
void generate_terrain(room* r) {
|
||||||
int rsize = 4*(room_width/divider)*(room_width/divider)*(room_depth/divider)*(room_depth/divider); // floor size (with 1x1 cubes)
|
int rsize = 4*(room_width/divider)*(room_width/divider)*(room_depth/divider)*(room_depth/divider); // floor size (with 1x1 cubes)
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ void align_to(FILE* ptr, char ch) ;
|
||||||
int read_int(FILE* ptr, bool print) ;
|
int read_int(FILE* ptr, bool print) ;
|
||||||
double read_float(FILE* ptr) ;
|
double read_float(FILE* ptr) ;
|
||||||
void parse_one_room(int id, char* filename) ;
|
void parse_one_room(int id, char* filename) ;
|
||||||
void parse_rooms(int n_rooms) ;
|
void parse_rooms(int n_rooms, char* folder) ;
|
||||||
|
|
||||||
void generate_nearby_chunks(int render_dist) ;
|
void generate_nearby_chunks(int render_dist) ;
|
||||||
|
|
||||||
|
|
28
src/main.c
28
src/main.c
|
@ -27,6 +27,22 @@ int gamemode;
|
||||||
|
|
||||||
double jPress = false;
|
double jPress = false;
|
||||||
double gPress = false;
|
double gPress = false;
|
||||||
|
double rPress = false;
|
||||||
|
|
||||||
|
void reset_everything(char* folder) {
|
||||||
|
hashtbl_free(visited);
|
||||||
|
free_proj();
|
||||||
|
free_interf();
|
||||||
|
free_pool();
|
||||||
|
|
||||||
|
//init_csts();
|
||||||
|
init_hashtbl();
|
||||||
|
init_ent_generator(10);
|
||||||
|
init_proj();
|
||||||
|
init_interf();
|
||||||
|
parse_rooms(1, folder);
|
||||||
|
}
|
||||||
|
|
||||||
void processInput(GLFWwindow *window, float dtime) {
|
void processInput(GLFWwindow *window, float dtime) {
|
||||||
// quit w
|
// quit w
|
||||||
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) {
|
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) {
|
||||||
|
@ -153,6 +169,16 @@ void processInput(GLFWwindow *window, float dtime) {
|
||||||
if(glfwGetKey(window, GLFW_KEY_M) == GLFW_PRESS) {
|
if(glfwGetKey(window, GLFW_KEY_M) == GLFW_PRESS) {
|
||||||
rot_vt = mind(3.14159/2.0, rot_vt+sensitivity);
|
rot_vt = mind(3.14159/2.0, rot_vt+sensitivity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// reset
|
||||||
|
if(glfwGetKey(window, GLFW_KEY_R) == GLFW_PRESS) {
|
||||||
|
if(!rPress) {
|
||||||
|
rPress = true;
|
||||||
|
reset_everything("levels/level_00/");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
rPress = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *vertexShaderSource = "#version 330 core\n"
|
const char *vertexShaderSource = "#version 330 core\n"
|
||||||
|
@ -225,7 +251,7 @@ int main_alt() {
|
||||||
init_ent_generator(10);
|
init_ent_generator(10);
|
||||||
init_proj();
|
init_proj();
|
||||||
init_interf();
|
init_interf();
|
||||||
parse_rooms(7);
|
parse_rooms(7, "templates/");
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------------------------------------------------------------------- //
|
// ---------------------------------------------------------------------------------------------------------------------------------------------- //
|
||||||
// ---------------------------------------------------------------------------------------------------------------------------------------------- //
|
// ---------------------------------------------------------------------------------------------------------------------------------------------- //
|
||||||
|
|
19
src/move.c
19
src/move.c
|
@ -66,20 +66,27 @@ void init_csts() {
|
||||||
camx = 2.0;
|
camx = 2.0;
|
||||||
camy = 5.0;
|
camy = 5.0;
|
||||||
camz = 2.0;
|
camz = 2.0;
|
||||||
|
player_chx = 0;
|
||||||
|
player_chy = 0;
|
||||||
camvx = 0.0;
|
camvx = 0.0;
|
||||||
camvy = 0.0;
|
camvy = 0.0;
|
||||||
camvz = 0.0;
|
camvz = 0.0;
|
||||||
rot_hz = 0.0;
|
rot_hz = 0.0;
|
||||||
rot_vt = 0.0;
|
rot_vt = 0.0;
|
||||||
draw_type = 0;
|
|
||||||
player_hp = 1000;
|
|
||||||
fade_dmg = 0;
|
|
||||||
room_width = 16.0;
|
room_width = 16.0;
|
||||||
room_depth = 16.0;
|
room_depth = 16.0;
|
||||||
sq2 = sqrt(2);
|
|
||||||
|
coins = 0;
|
||||||
|
player_hp = 1000;
|
||||||
njumps = 3;
|
njumps = 3;
|
||||||
|
|
||||||
|
draw_type = 0;
|
||||||
|
fade_dmg = 0;
|
||||||
|
|
||||||
stop_evetything = false;
|
stop_evetything = false;
|
||||||
tan_fov = tan((fov * 3.14159 / 180.0) / 2.0);
|
tan_fov = tan((fov * 3.14159 / 180.0) / 2.0);
|
||||||
|
sq2 = sqrt(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_player_coords(int old_chx, int old_chy) {
|
void set_player_coords(int old_chx, int old_chy) {
|
||||||
|
@ -289,6 +296,10 @@ void movePlayerG(float dtime) {
|
||||||
|
|
||||||
camvx *= (1.0 - friction*((double)(dtime)));
|
camvx *= (1.0 - friction*((double)(dtime)));
|
||||||
camvz *= (1.0 - friction*((double)(dtime)));
|
camvz *= (1.0 - friction*((double)(dtime)));
|
||||||
|
|
||||||
|
if(camy <= -64) {
|
||||||
|
player_hp -= (int)(400*dtime);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void teleport_on_edge() {
|
void teleport_on_edge() {
|
||||||
|
|
Loading…
Reference in New Issue