mirror of
https://github.com/ZDoom/Raze.git
synced 2025-01-18 22:51:50 +00:00
- WallSetup + SpriteSetup
This commit is contained in:
parent
d8893f3521
commit
7e6de45e46
3 changed files with 30 additions and 33 deletions
|
@ -256,9 +256,10 @@ void WallSetup(void)
|
||||||
case TAG_WALL_SINE_Y_BEGIN:
|
case TAG_WALL_SINE_Y_BEGIN:
|
||||||
case TAG_WALL_SINE_X_BEGIN:
|
case TAG_WALL_SINE_X_BEGIN:
|
||||||
{
|
{
|
||||||
short wall_num, cnt, num_points, type, tag_end;
|
walltype* wall_num;
|
||||||
|
int cnt, num_points, type, tag_end;
|
||||||
SINE_WALLp sw;
|
SINE_WALLp sw;
|
||||||
short range = 250, speed = 3, peak = 0;
|
int range = 250, speed = 3, peak = 0;
|
||||||
|
|
||||||
tag_end = wp->lotag + 2;
|
tag_end = wp->lotag + 2;
|
||||||
|
|
||||||
|
@ -266,49 +267,49 @@ void WallSetup(void)
|
||||||
|
|
||||||
|
|
||||||
// count up num_points
|
// count up num_points
|
||||||
for (wall_num = wallnum(wp), num_points = 0;
|
for (wall_num = wp, num_points = 0;
|
||||||
num_points < MAX_SINE_WALL_POINTS && wall[wall_num].lotag != tag_end;
|
num_points < MAX_SINE_WALL_POINTS && wall_num->lotag != tag_end;
|
||||||
wall_num = wall[wall_num].point2, num_points++)
|
wall_num = wall_num->point2Wall(), num_points++)
|
||||||
{
|
{
|
||||||
if (num_points == 0)
|
if (num_points == 0)
|
||||||
{
|
{
|
||||||
if (wall[wall_num].hitag)
|
if (wall_num->hitag)
|
||||||
range = wall[wall_num].hitag;
|
range = wall_num->hitag;
|
||||||
}
|
}
|
||||||
else if (num_points == 1)
|
else if (num_points == 1)
|
||||||
{
|
{
|
||||||
if (wall[wall_num].hitag)
|
if (wall_num->hitag)
|
||||||
speed = wall[wall_num].hitag;
|
speed = wall_num->hitag;
|
||||||
}
|
}
|
||||||
else if (num_points == 2)
|
else if (num_points == 2)
|
||||||
{
|
{
|
||||||
if (wall[wall_num].hitag)
|
if (wall_num->hitag)
|
||||||
peak = wall[wall_num].hitag;
|
peak = wall_num->hitag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (peak)
|
if (peak)
|
||||||
num_points = peak;
|
num_points = peak;
|
||||||
|
|
||||||
for (wall_num = wallnum(wp), cnt = 0;
|
for (wall_num = wp, cnt = 0;
|
||||||
cnt < MAX_SINE_WALL_POINTS && wall[wall_num].lotag != tag_end;
|
cnt < MAX_SINE_WALL_POINTS && wall_num->lotag != tag_end;
|
||||||
wall_num = wall[wall_num].point2, cnt++)
|
wall_num = wall_num->point2Wall(), cnt++)
|
||||||
{
|
{
|
||||||
// set the first on up
|
// set the first on up
|
||||||
sw = &SineWall[NextSineWall][cnt];
|
sw = &SineWall[NextSineWall][cnt];
|
||||||
|
|
||||||
sw->type = type;
|
sw->type = type;
|
||||||
sw->wall = wall_num;
|
sw->wall = wallnum(wall_num);
|
||||||
sw->speed_shift = speed;
|
sw->speed_shift = speed;
|
||||||
sw->range = range;
|
sw->range = range;
|
||||||
|
|
||||||
// don't allow bullet holes/stars
|
// don't allow bullet holes/stars
|
||||||
SET(wall[wall_num].extra, WALLFX_DONT_STICK);
|
SET(wall_num->extra, WALLFX_DONT_STICK);
|
||||||
|
|
||||||
if (!sw->type)
|
if (!sw->type)
|
||||||
sw->orig_xy = wall[wall_num].y - (sw->range >> 2);
|
sw->orig_xy = wall_num->y - (sw->range >> 2);
|
||||||
else
|
else
|
||||||
sw->orig_xy = wall[wall_num].x - (sw->range >> 2);
|
sw->orig_xy = wall_num->x - (sw->range >> 2);
|
||||||
|
|
||||||
sw->sintable_ndx = cnt * (2048 / num_points);
|
sw->sintable_ndx = cnt * (2048 / num_points);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2799,9 +2799,6 @@ void SpriteSetup(void)
|
||||||
|
|
||||||
case WARP_TELEPORTER:
|
case WARP_TELEPORTER:
|
||||||
{
|
{
|
||||||
short start_wall, wall_num;
|
|
||||||
short sectnum = sp->sectnum;
|
|
||||||
|
|
||||||
SET(sp->cstat, CSTAT_SPRITE_INVISIBLE);
|
SET(sp->cstat, CSTAT_SPRITE_INVISIBLE);
|
||||||
SET(sp->sector()->extra, SECTFX_WARP_SECTOR);
|
SET(sp->sector()->extra, SECTFX_WARP_SECTOR);
|
||||||
change_actor_stat(actor, STAT_WARP);
|
change_actor_stat(actor, STAT_WARP);
|
||||||
|
@ -2812,18 +2809,19 @@ void SpriteSetup(void)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// move the the next wall
|
// move the the next wall
|
||||||
wall_num = start_wall = sector[sectnum].wallptr;
|
auto start_wall = sp->sector()->firstWall();
|
||||||
|
auto wall_num = start_wall;
|
||||||
|
|
||||||
// Travel all the way around loop setting wall bits
|
// Travel all the way around loop setting wall bits
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
// DO NOT TAG WHITE WALLS!
|
// DO NOT TAG WHITE WALLS!
|
||||||
if (validWallIndex(wall[wall_num].nextwall))
|
if (validWallIndex(wall_num->nextwall))
|
||||||
{
|
{
|
||||||
SET(wall[wall_num].cstat, CSTAT_WALL_WARP_HITSCAN);
|
SET(wall_num->cstat, CSTAT_WALL_WARP_HITSCAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
wall_num = wall[wall_num].point2;
|
wall_num = wall_num->point2Wall();
|
||||||
}
|
}
|
||||||
while (wall_num != start_wall);
|
while (wall_num != start_wall);
|
||||||
|
|
||||||
|
@ -2923,20 +2921,18 @@ void SpriteSetup(void)
|
||||||
|
|
||||||
case SECT_ACTOR_BLOCK:
|
case SECT_ACTOR_BLOCK:
|
||||||
{
|
{
|
||||||
short start_wall, wall_num;
|
|
||||||
short sectnum = sp->sectnum;
|
|
||||||
|
|
||||||
// move the the next wall
|
// move the the next wall
|
||||||
wall_num = start_wall = sector[sectnum].wallptr;
|
auto start_wall = sp->sector()->firstWall();
|
||||||
|
auto wall_num = start_wall;
|
||||||
|
|
||||||
// Travel all the way around loop setting wall bits
|
// Travel all the way around loop setting wall bits
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
SET(wall[wall_num].cstat, CSTAT_WALL_BLOCK_ACTOR);
|
SET(wall_num->cstat, CSTAT_WALL_BLOCK_ACTOR);
|
||||||
uint16_t const nextwall = wall[wall_num].nextwall;
|
uint16_t const nextwall = wall_num->nextwall;
|
||||||
if (validWallIndex(nextwall))
|
if (validWallIndex(nextwall))
|
||||||
SET(wall[nextwall].cstat, CSTAT_WALL_BLOCK_ACTOR);
|
SET(wall[nextwall].cstat, CSTAT_WALL_BLOCK_ACTOR);
|
||||||
wall_num = wall[wall_num].point2;
|
wall_num = wall_num->point2Wall();
|
||||||
}
|
}
|
||||||
while (wall_num != start_wall);
|
while (wall_num != start_wall);
|
||||||
|
|
||||||
|
|
|
@ -526,7 +526,7 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
|
||||||
// Sine wave wall effect - max 5 per level
|
// Sine wave wall effect - max 5 per level
|
||||||
//
|
//
|
||||||
// EXP - Tag the first wall with 300, last with 302.
|
// EXP - Tag the first wall with 300, last with 302.
|
||||||
// Use point2 to see which direction the wall goes.
|
// Use point 2 to see which direction the wall goes.
|
||||||
//
|
//
|
||||||
// 1st Sector High Tag = range
|
// 1st Sector High Tag = range
|
||||||
// 2nd Sector High Tag = speed
|
// 2nd Sector High Tag = speed
|
||||||
|
|
Loading…
Reference in a new issue