Fixed issue with unknown nodes
parent
8ee37ce0d9
commit
f7fe82f2d4
Binary file not shown.
Binary file not shown.
32
src/edit.c
32
src/edit.c
|
@ -123,17 +123,18 @@ void edit_redraw(int full)
|
|||
i = nodes[y][Z][X].param0;
|
||||
if(i) {
|
||||
j = nodes[y][Z][X].param2 & PARAM2_MAX;
|
||||
j %= blocks[i].numpar2;
|
||||
s = 32 * blocks[i].numpar2*32 * 4;
|
||||
if(blocks[i].numpar2) j %= (int)blocks[i].numpar2; else j = 0;
|
||||
if(!blocks[i].dr) {
|
||||
s = 32 * (blocks[i].numpar2 ? blocks[i].numpar2 : 1)*32 * 4;
|
||||
blocks[i].dr = (unsigned char *)malloc(s);
|
||||
if(!blocks[i].dr) error(lang[ERR_MEM]);
|
||||
if(blocks[i].img)
|
||||
memcpy(blocks[i].dr, blocks[i].img, s);
|
||||
else {
|
||||
for(l = 0; l < blocks[i].numpar2; l++)
|
||||
memcpy(blocks[i].tr + l * 32 * 32 * 4, (uint8_t*)icons->pixels + 32 * icons->pitch,
|
||||
32 * 32 * 4);
|
||||
j = 0;
|
||||
s = 32 * 32 * 4;
|
||||
blocks[i].numpar2 = 1;
|
||||
memcpy(blocks[i].tr, (uint8_t*)icons->pixels + 32 * icons->pitch, s);
|
||||
}
|
||||
for(l = 0; l < s; l += 4) {
|
||||
blocks[i].dr[l+0] = (b[0]*k + (256 - k)*blocks[i].dr[l+0])>>8;
|
||||
|
@ -188,17 +189,18 @@ void edit_redraw(int full)
|
|||
i = nodes[y][Z][X].param0;
|
||||
if(i) {
|
||||
j = nodes[y][Z][X].param2 & PARAM2_MAX;
|
||||
j %= (int)blocks[i].numpar2;
|
||||
if(blocks[i].numpar2) j %= (int)blocks[i].numpar2; else j = 0;
|
||||
if(!blocks[i].tr) {
|
||||
s = 32 * blocks[i].numpar2*32 * 4;
|
||||
s = 32 * (blocks[i].numpar2 ? blocks[i].numpar2 : 1)*32 * 4;
|
||||
blocks[i].tr = (unsigned char *)malloc(s);
|
||||
if(!blocks[i].tr) error(lang[ERR_MEM]);
|
||||
if(blocks[i].img)
|
||||
memcpy(blocks[i].tr, blocks[i].img, s);
|
||||
else {
|
||||
for(l = 0; l < blocks[i].numpar2; l++)
|
||||
memcpy(blocks[i].tr + l * 32 * 32 * 4, (uint8_t*)icons->pixels + 32 * icons->pitch,
|
||||
32 * 32 * 4);
|
||||
j = 0;
|
||||
s = 32 * 32 * 4;
|
||||
blocks[i].numpar2 = 1;
|
||||
memcpy(blocks[i].tr, (uint8_t*)icons->pixels + 32 * icons->pitch, s);
|
||||
}
|
||||
for(l = 0; l < s; l += 4) blocks[i].tr[l+3] >>= 3;
|
||||
}
|
||||
|
@ -233,16 +235,16 @@ void edit_redraw(int full)
|
|||
}
|
||||
if(i) {
|
||||
j = nodes[currlayer][Z][X].param2 & PARAM2_MAX;
|
||||
j %= (int)blocks[i].numpar2;
|
||||
if(blocks[i].numpar2) j %= (int)blocks[i].numpar2; else j = 0;
|
||||
s = 32 * 32 * 4;
|
||||
if(nodes[currlayer][Z][X].param1 & 0x80) {
|
||||
memcpy(tmpblk, blocks[i].img ? blocks[i].img + j * 32 * 32 * 4 : (uint8_t*)icons->pixels + 32 * icons->pitch,
|
||||
32 * 32 * 4);
|
||||
for(k = 0; k < 32 * 32 * 4; k += 4)
|
||||
memcpy(tmpblk, blocks[i].img ? blocks[i].img + j * s : (uint8_t*)icons->pixels + 32 * icons->pitch, s);
|
||||
for(k = 0; k < s; k += 4)
|
||||
if(tmpblk[k + 3])
|
||||
tmpblk[k] = (255*64 + (256 - 64)*tmpblk[k])>>8;
|
||||
blk->pixels = tmpblk;
|
||||
} else {
|
||||
blk->pixels = blocks[i].img ? blocks[i].img + j * 32 * 32 * 4 : (uint8_t*)icons->pixels + 32 * icons->pitch;
|
||||
blk->pixels = blocks[i].img ? blocks[i].img + j * s : (uint8_t*)icons->pixels + 32 * icons->pitch;
|
||||
}
|
||||
if(dst.w == src.w)
|
||||
SDL_BlitSurface(blk, &src, cl, &dst);
|
||||
|
|
Loading…
Reference in New Issue