bugfixes
This commit is contained in:
parent
2205fda141
commit
e201274673
4 changed files with 26 additions and 11 deletions
|
@ -197,7 +197,7 @@ void control_rclick(double cx, double cy, vec3 pos, struct item *inv,
|
|||
for (int i = 0; i < 10; i++) {
|
||||
if (inv[i].id == inv[slot].id) {
|
||||
inv[i].count--;
|
||||
if (inv[i].count == 0) {
|
||||
if (inv[i].count < 1) {
|
||||
inv[i].id = 0;
|
||||
inv[i].count = 0;
|
||||
}
|
||||
|
|
14
cubes.c
14
cubes.c
|
@ -166,15 +166,15 @@ void *cubes_chunk(void *args) {
|
|||
|
||||
void cubes_free() { free(chunk_old); }
|
||||
|
||||
void cubes_refresh(int x, int y, int z, struct chunk dat) {
|
||||
void cubes_refresh(int x, int y, int z, struct chunk dat, int state) {
|
||||
for (int i = 0; i < CHUNK_ALL; i++) {
|
||||
if (chunk_old[i].exists != 0 && abs(((int)chunk_old[i].x) - x) <= 1 &&
|
||||
abs(((int)chunk_old[i].y) - y) <= 1 &&
|
||||
abs(((int)chunk_old[i].z) - z) <= 1) {
|
||||
chunk_old[i].exists = 0;
|
||||
if (chunk_old[i].x == x && chunk_old[i].y == y && chunk_old[i].z == z && chunk_old[i].exists != 0) {
|
||||
chunk_old[i].exists = state;
|
||||
break;
|
||||
}
|
||||
}
|
||||
gen_save(dat);
|
||||
if (state == 0)
|
||||
gen_save(dat);
|
||||
}
|
||||
|
||||
int cubes_vert(struct v3f *cube, struct v3f *text, struct v3f *cubeO,
|
||||
|
@ -238,7 +238,7 @@ int cubes_vert(struct v3f *cube, struct v3f *text, struct v3f *cubeO,
|
|||
int cached =
|
||||
(old_chunk.x == pos.pos[0] / CHUNK_LENGTH &&
|
||||
old_chunk.y == pos.pos[1] / CHUNK_LENGTH &&
|
||||
old_chunk.z == pos.pos[2] / CHUNK_LENGTH && old_chunk.exists != 0);
|
||||
old_chunk.z == pos.pos[2] / CHUNK_LENGTH && old_chunk.exists != 0 && old_chunk.exists != 255);
|
||||
if (cached) {
|
||||
thread_id[a2] = -1;
|
||||
ib = i2[a];
|
||||
|
|
2
cubes.h
2
cubes.h
|
@ -43,7 +43,7 @@ int cubes_vert(struct v3f *cube, struct v3f *text, struct v3f *cubeO,
|
|||
struct v3f *textO, int x, int y, int z, int is_purge, int *i2);
|
||||
|
||||
void cubes_free();
|
||||
void cubes_refresh(int x, int y, int z, struct chunk dat);
|
||||
void cubes_refresh(int x, int y, int z, struct chunk dat, int state);
|
||||
void cubes_rect(struct v3f *cube, int *i, double x1, double x2, double y1,
|
||||
double y2, int is_text, int text_x, int text_y);
|
||||
#endif
|
19
gen.c
19
gen.c
|
@ -142,7 +142,7 @@ int gen_cube(int x, int y, int z, struct chunk dat, int ci, int val) {
|
|||
if (val != -1) {
|
||||
dat = gen_find((x / CHUNK_LENGTH), (y / CHUNK_LENGTH), (z / CHUNK_LENGTH));
|
||||
} else if (dat.exists == 0 || dat.x != (x / CHUNK_LENGTH) ||
|
||||
dat.y != (y / CHUNK_LENGTH) || dat.z != (z / CHUNK_LENGTH)) {
|
||||
dat.y != (y / CHUNK_LENGTH) || dat.z != (z / CHUNK_LENGTH)) {
|
||||
dat = gen_chunk((x / CHUNK_LENGTH), (y / CHUNK_LENGTH), (z / CHUNK_LENGTH),
|
||||
ci, dat.exists);
|
||||
prevExists = dat.exists;
|
||||
|
@ -153,7 +153,22 @@ int gen_cube(int x, int y, int z, struct chunk dat, int ci, int val) {
|
|||
|
||||
if (val != -1) {
|
||||
*h = val;
|
||||
cubes_refresh(x / CHUNK_LENGTH, y / CHUNK_LENGTH, z / CHUNK_LENGTH, dat);
|
||||
|
||||
cubes_refresh(x / CHUNK_LENGTH, y / CHUNK_LENGTH, z / CHUNK_LENGTH, dat, 0);
|
||||
for (int a = x - 1; a <= x + 1; a++) {
|
||||
for (int b = y - 1; b <= y + 1; b++) {
|
||||
for (int c = z - 1; c <= z + 1; c++) {
|
||||
if (a / CHUNK_LENGTH == x / CHUNK_LENGTH &&
|
||||
b / CHUNK_LENGTH == y / CHUNK_LENGTH &&
|
||||
c / CHUNK_LENGTH == z / CHUNK_LENGTH)
|
||||
continue;
|
||||
printf("%i %i %i\n",a,b,c);
|
||||
|
||||
cubes_refresh(a / CHUNK_LENGTH, b / CHUNK_LENGTH, c / CHUNK_LENGTH,
|
||||
dat, 255);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return *h;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue