Browse Source

[hellfire] MakeLightTable

pull/888/head
Anders Jenbo 5 years ago
parent
commit
437b5d1187
  1. 57
      Source/lighting.cpp

57
Source/lighting.cpp

@ -565,8 +565,8 @@ void DoLighting(int nXPos, int nYPos, int nRadius, int Lnum)
#ifdef HELLFIRE
} else if (dLight[nXPos][nYPos] > lightradius[nRadius][0]) {
dLight[nXPos][nYPos] = lightradius[nRadius][0];
}
#endif
}
mult = xoff + 8*yoff;
for (y = 0; y < min_y; y++) {
@ -915,6 +915,21 @@ void MakeLightTable()
}
tbl += 224;
}
#ifdef HELLFIRE
if (currlevel >= 17) {
tbl = pLightTbl;
for (i = 0; i < lights; i++) {
*tbl++ = 0;
for (j = 1; j < 16; j++)
*tbl++ = j;
tbl += 240;
}
*tbl++ = 0;
for (j = 1; j < 16; j++)
*tbl++ = 1;
tbl += 240;
}
#endif
trn = LoadFileInMem("PlrGFX\\Infra.TRN", NULL);
for (i = 0; i < 256; i++) {
@ -954,27 +969,41 @@ void MakeLightTable()
*tbl++ = 0;
}
for (k = 0; k < 16; k++) {
for (l = 0; l < 128; l++) {
if (l > (k + 1) * 8) {
lightradius[k][l] = 15;
for (j = 0; j < 16; j++) {
for (i = 0; i < 128; i++) {
if (i > (j + 1) * 8) {
lightradius[j][i] = 15;
} else {
lightradius[k][l] = l * 15.0 / ((k + 1) * 8.0) + 0.5;
fs = (double)15 * i / ((double)8 * (j + 1));
lightradius[j][i] = (BYTE)(fs + 0.5);
}
}
}
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
#ifdef HELLFIRE
if (currlevel >= 17) {
for (j = 0; j < 16; j++) {
fa = (sqrt((double)(16 - j))) / 128;
fa *= fa;
for (i = 0; i < 128; i++) {
lightradius[15 - j][i] = 15 - (BYTE)(fa * (double)((128 - i) * (128 - i)));
if (lightradius[15 - j][i] > 15)
lightradius[15 - j][i] = 0;
lightradius[15 - j][i] = lightradius[15 - j][i] - (BYTE)((15 - j) / 2);
if (lightradius[15 - j][i] > 15)
lightradius[15 - j][i] = 0;
}
}
}
#endif
for (j = 0; j < 8; j++) {
for (i = 0; i < 8; i++) {
for (k = 0; k < 16; k++) {
for (l = 0; l < 16; l++) {
fs = (BYTE)sqrt((8 * l - j) * (8 * l - j) + (8 * k - i) * (8 * k - i));
if (fs < 0.0) {
fa = -0.5;
} else {
fa = 0.5;
}
lightblock[i * 8 + j][k][l] = fs + fa;
fs += fs < 0 ? -0.5 : 0.5;
lightblock[j * 8 + i][k][l] = fs;
}
}
}

Loading…
Cancel
Save