mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-01-18 07:22:28 +00:00
Merge branch 'colormap-overhaul' into colormap-overhaul-change-ldef
This commit is contained in:
commit
71df02c996
1 changed files with 29 additions and 1 deletions
|
@ -480,6 +480,7 @@ static void P_NetUnArchivePlayers(void)
|
||||||
|
|
||||||
static extracolormap_t *net_colormaps = NULL;
|
static extracolormap_t *net_colormaps = NULL;
|
||||||
static UINT32 num_net_colormaps = 0;
|
static UINT32 num_net_colormaps = 0;
|
||||||
|
static UINT32 num_ffloors = 0; // for loading
|
||||||
|
|
||||||
// Copypasta from r_data.c AddColormapToList
|
// Copypasta from r_data.c AddColormapToList
|
||||||
// But also check for equality and return the matching index
|
// But also check for equality and return the matching index
|
||||||
|
@ -536,7 +537,9 @@ static extracolormap_t *GetNetColormapFromList(UINT32 index)
|
||||||
// LET'S HOPE that index is a sane value, because we create up to [index]
|
// LET'S HOPE that index is a sane value, because we create up to [index]
|
||||||
// entries in net_colormaps. At this point, we don't know
|
// entries in net_colormaps. At this point, we don't know
|
||||||
// what the total colormap count is
|
// what the total colormap count is
|
||||||
if (index >= numsectors*3) // if every sector had a unique colormap change AND a fade thinker which has two colormap entries
|
if (index >= numsectors*3 + num_ffloors)
|
||||||
|
// if every sector had a unique colormap change AND a fade color thinker which has two colormap entries
|
||||||
|
// AND every ffloor had a fade FOF thinker with one colormap entry
|
||||||
I_Error("Colormap %d from server is too high for sectors %d", index, (UINT32)numsectors);
|
I_Error("Colormap %d from server is too high for sectors %d", index, (UINT32)numsectors);
|
||||||
|
|
||||||
// our index doesn't exist, so just make the entry
|
// our index doesn't exist, so just make the entry
|
||||||
|
@ -564,6 +567,7 @@ static void ClearNetColormaps(void)
|
||||||
Z_Free(exc);
|
Z_Free(exc);
|
||||||
}
|
}
|
||||||
num_net_colormaps = 0;
|
num_net_colormaps = 0;
|
||||||
|
num_ffloors = 0;
|
||||||
net_colormaps = NULL;
|
net_colormaps = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -597,6 +601,7 @@ static void P_NetArchiveColormaps(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
num_net_colormaps = 0;
|
num_net_colormaps = 0;
|
||||||
|
num_ffloors = 0;
|
||||||
net_colormaps = NULL;
|
net_colormaps = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -682,8 +687,23 @@ static void P_NetUnArchiveColormaps(void)
|
||||||
exc_next = R_CreateDefaultColormap(false);
|
exc_next = R_CreateDefaultColormap(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if we still have a valid net_colormap after iterating up to num_net_colormaps,
|
||||||
|
// some sector had a colormap index higher than num_net_colormaps. We done goofed or $$$ was corrupted.
|
||||||
|
// In any case, add them to the colormap list too so that at least the sectors' colormap
|
||||||
|
// addresses are valid and accounted properly
|
||||||
|
if (exc_next)
|
||||||
|
{
|
||||||
|
existing_exc = R_GetDefaultColormap();
|
||||||
|
for (exc = exc_next; exc; exc = exc->next)
|
||||||
|
{
|
||||||
|
exc->colormap = existing_exc->colormap; // all our dummies are default values
|
||||||
|
R_AddColormapToList(exc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Don't need these anymore
|
// Don't need these anymore
|
||||||
num_net_colormaps = 0;
|
num_net_colormaps = 0;
|
||||||
|
num_ffloors = 0;
|
||||||
net_colormaps = NULL;
|
net_colormaps = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1017,6 +1037,14 @@ static void P_NetUnArchiveWorld(void)
|
||||||
// initialize colormap vars because paranoia
|
// initialize colormap vars because paranoia
|
||||||
ClearNetColormaps();
|
ClearNetColormaps();
|
||||||
|
|
||||||
|
// count the level's ffloors so that colormap loading can have an upper limit
|
||||||
|
for (i = 0; i < numsectors; i++)
|
||||||
|
{
|
||||||
|
ffloor_t *rover;
|
||||||
|
for (rover = sectors[i].ffloors; rover; rover = rover->next)
|
||||||
|
num_ffloors++;
|
||||||
|
}
|
||||||
|
|
||||||
get = save_p;
|
get = save_p;
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
|
|
Loading…
Reference in a new issue