Skip to content

Commit

Permalink
Removed MAXLINEANIMS fixed limit in all supported games.
Browse files Browse the repository at this point in the history
  • Loading branch information
danij committed Sep 17, 2006
1 parent 425d7d4 commit 80715ef
Show file tree
Hide file tree
Showing 17 changed files with 220 additions and 316 deletions.
1 change: 1 addition & 0 deletions doomsday/plugins/common/src/g_game.c
Expand Up @@ -513,6 +513,7 @@ void G_PostInit(void)

// Create the various line lists (spechits, anims, buttons etc).
spechit = P_CreateLineList();
linespecials = P_CreateLineList();
}

/*
Expand Down
1 change: 1 addition & 0 deletions doomsday/plugins/doom64tc/include/p_spec.h
Expand Up @@ -47,6 +47,7 @@
#include "p_linelist.h"

extern linelist_t *spechit; // for crossed line specials.
extern linelist_t *linespecials; // for surfaces that tick eg wall scrollers.
//
// End-level timer (-TIMER option)
//
Expand Down
1 change: 1 addition & 0 deletions doomsday/plugins/doom64tc/src/d_main.c
Expand Up @@ -544,6 +544,7 @@ void D_Shutdown(void)
{
HU_UnloadData();
P_DestroyLineList(spechit);
P_DestroyLineList(linespecials);
}

void D_Ticker(void)
Expand Down
205 changes: 92 additions & 113 deletions doomsday/plugins/doom64tc/src/p_spec.c
Expand Up @@ -47,10 +47,6 @@

// MACROS ------------------------------------------------------------------

// FIXME: Remove fixed limits

#define MAXLINEANIMS 64 // Animating line specials

// TYPES -------------------------------------------------------------------

// Animating textures and planes
Expand Down Expand Up @@ -86,9 +82,7 @@ static void P_ShootSpecialLine(mobj_t *thing, line_t *line);
// PUBLIC DATA DEFINITIONS -------------------------------------------------

linelist_t *spechit; // for crossed line specials.

int numlinespecials;
line_t *linespeciallist[MAXLINEANIMS];
linelist_t *linespecials; // for surfaces that tick eg wall scrollers.

// TODO: From jHeretic, replace!
int *TerrainTypes;
Expand Down Expand Up @@ -1198,102 +1192,104 @@ void P_UpdateSpecials(void)
XG_Ticker();

// ANIMATE LINE SPECIALS
for(i = 0; i < numlinespecials; i++)
if(P_LineListSize(linespecials))
{
line = linespeciallist[i];

switch(P_XLine(line)->special)
P_LineListResetIterator(linespecials);
while((line = P_LineListIterator(linespecials)) != NULL)
{
case 48:
side = P_GetPtrp(line, DMU_SIDE0);

// EFFECT FIRSTCOL SCROLL +
x = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X, x += FRACUNIT);
x = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X, x += FRACUNIT);
x = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X, x += FRACUNIT);
break;
switch(P_XLine(line)->special)
{
case 48:
side = P_GetPtrp(line, DMU_SIDE0);

// EFFECT FIRSTCOL SCROLL +
x = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X, x += FRACUNIT);
x = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X, x += FRACUNIT);
x = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X, x += FRACUNIT);
break;

case 150: // d64tc
side = P_GetPtrp(line, DMU_SIDE0);
case 150: // d64tc
side = P_GetPtrp(line, DMU_SIDE0);

// EFFECT FIRSTCOL SCROLL -
x = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X, x -= FRACUNIT);
x = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X, x -= FRACUNIT);
x = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X, x -= FRACUNIT);
break;
// EFFECT FIRSTCOL SCROLL -
x = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X, x -= FRACUNIT);
x = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X, x -= FRACUNIT);
x = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X, x -= FRACUNIT);
break;

case 2561: // d64tc
// Scroll_Texture_Up
side = P_GetPtrp(line, DMU_SIDE0);

// EFFECT FIRSTCOL SCROLL +
y = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y, y += FRACUNIT);
y = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y, y += FRACUNIT);
y = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y, y += FRACUNIT);
break;
case 2561: // d64tc
// Scroll_Texture_Up
side = P_GetPtrp(line, DMU_SIDE0);

// EFFECT FIRSTCOL SCROLL +
y = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y, y += FRACUNIT);
y = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y, y += FRACUNIT);
y = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y, y += FRACUNIT);
break;

case 2562: // d64tc
// Scroll_Texture_Down
side = P_GetPtrp(line, DMU_SIDE0);

// EFFECT FIRSTCOL SCROLL +
y = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y, y -= FRACUNIT);
y = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y, y -= FRACUNIT);
y = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y, y -= FRACUNIT);
break;
case 2562: // d64tc
// Scroll_Texture_Down
side = P_GetPtrp(line, DMU_SIDE0);

// EFFECT FIRSTCOL SCROLL +
y = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y, y -= FRACUNIT);
y = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y, y -= FRACUNIT);
y = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y, y -= FRACUNIT);
break;

case 2080: // d64tc
// Scroll Up/Right
side = P_GetPtrp(line, DMU_SIDE0);

y = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y, y += FRACUNIT);
y = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y, y += FRACUNIT);
y = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y, y += FRACUNIT);

x = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X, x -= FRACUNIT);
x = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X, x -= FRACUNIT);
x = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X, x -= FRACUNIT);
break;
case 2080: // d64tc
// Scroll Up/Right
side = P_GetPtrp(line, DMU_SIDE0);

y = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y, y += FRACUNIT);
y = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y, y += FRACUNIT);
y = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y, y += FRACUNIT);

x = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X, x -= FRACUNIT);
x = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X, x -= FRACUNIT);
x = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X, x -= FRACUNIT);
break;

case 2614: // d64tc
// Scroll Up/Left
side = P_GetPtrp(line, DMU_SIDE0);

y = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y, y += FRACUNIT);
y = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y, y += FRACUNIT);
y = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y, y += FRACUNIT);

x = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X, x += FRACUNIT);
x = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X, x += FRACUNIT);
x = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X, x += FRACUNIT);
break;
case 2614: // d64tc
// Scroll Up/Left
side = P_GetPtrp(line, DMU_SIDE0);

y = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_Y, y += FRACUNIT);
y = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_Y, y += FRACUNIT);
y = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_Y, y += FRACUNIT);

x = P_GetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_TOP_TEXTURE_OFFSET_X, x += FRACUNIT);
x = P_GetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_MIDDLE_TEXTURE_OFFSET_X, x += FRACUNIT);
x = P_GetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X);
P_SetFixedp(side, DMU_BOTTOM_TEXTURE_OFFSET_X, x += FRACUNIT);
break;

default:
break;
default:
break;
}
}
}

Expand Down Expand Up @@ -1437,23 +1433,6 @@ int EV_DoDonut(line_t *line)
return rtn;
}

/**
*
*/
void P_InitLineAnimList(void)
{
numlinespecials = 0;
}

/**
*
*/
void P_AddLineToAnimList(line_t *line)
{
linespeciallist[numlinespecials] = line;
numlinespecials++;
}

/**
* After the map has been loaded, scan for specials that spawn thinkers.
*/
Expand Down Expand Up @@ -1573,7 +1552,7 @@ void P_SpawnSpecials(void)
}

// Init animating line specials.
P_InitLineAnimList();
P_EmptyLineList(linespecials);
for(i = 0; i < numlines; ++i)
{
line = P_ToPtr(DMU_LINE, i);
Expand All @@ -1586,7 +1565,7 @@ void P_SpawnSpecials(void)
case 2562: // d64tc: wall scroll down
case 2080: // d64tc: wall scroll up/right
case 2614: // d64tc: wall scroll up/left
P_AddLineToAnimList(line);
P_AddLineToLineList(linespecials, line);
break;

case 994: // d64tc
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/jdoom/include/p_spec.h
Expand Up @@ -46,7 +46,7 @@
#include "p_linelist.h"

extern linelist_t *spechit; // for crossed line specials.

extern linelist_t *linespecials; // for surfaces that tick eg wall scrollers.
//
// End-level timer (-TIMER option)
//
Expand Down
1 change: 1 addition & 0 deletions doomsday/plugins/jdoom/src/d_main.c
Expand Up @@ -688,6 +688,7 @@ void D_Shutdown(void)
{
HU_UnloadData();
P_DestroyLineList(spechit);
P_DestroyLineList(linespecials);
}

void D_Ticker(void)
Expand Down

0 comments on commit 80715ef

Please sign in to comment.