This commit is contained in:
onezplpl 2024-07-20 22:00:39 -04:00
parent 2205fda141
commit e201274673
No known key found for this signature in database
GPG key ID: 7EC026A136F9EEC3
4 changed files with 26 additions and 11 deletions

View file

@ -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
View file

@ -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];

View file

@ -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
View file

@ -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;