Add additional multitagging functionality

This commit is contained in:
flarn2006 2021-05-28 23:59:39 -04:00
parent 75938e2dfa
commit 8d8f62baef
2 changed files with 43 additions and 4 deletions

View file

@ -640,22 +640,36 @@ linedeftypes
prefix = "(63)";
}
96
{
title = "Apply Tag to Tagged Sectors";
prefix = "(96)";
flags8192text = "[13] Use Front Side Offsets";
flags32768text = "[15] Use Back Side Offsets";
}
97
{
title = "Apply Tag to Front Sector";
prefix = "(97)";
flags8192text = "[13] Use Front Side Offsets";
flags32768text = "[15] Use Back Side Offsets";
}
98
{
title = "Apply Tag to Back Sector";
prefix = "(98)";
flags8192text = "[13] Use Front Side Offsets";
flags32768text = "[15] Use Back Side Offsets";
}
99
{
title = "Apply Tag to Front and Back Sectors";
prefix = "(99)";
flags8192text = "[13] Use Front Side Offsets";
flags32768text = "[15] Use Back Side Offsets";
}
540

View file

@ -2952,19 +2952,44 @@ static void P_LinkMapData(void)
// For maps in binary format, add multi-tags from linedef specials. This must be done
// before any linedef specials have been processed.
static void P_AddBinaryMapTagsFromLine(sector_t *sector, line_t *line)
{
Tag_Add(&sector->tags, Tag_FGet(&line->tags));
if (line->flags & ML_EFFECT6) {
if (sides[line->sidenum[0]].textureoffset)
Tag_Add(&sector->tags, (INT32)sides[line->sidenum[0]].textureoffset);
if (sides[line->sidenum[0]].rowoffset)
Tag_Add(&sector->tags, (INT32)sides[line->sidenum[0]].rowoffset);
}
if (line->flags & ML_TFERLINE) {
if (sides[line->sidenum[1]].textureoffset)
Tag_Add(&sector->tags, (INT32)sides[line->sidenum[1]].textureoffset);
if (sides[line->sidenum[1]].rowoffset)
Tag_Add(&sector->tags, (INT32)sides[line->sidenum[1]].rowoffset);
}
}
static void P_AddBinaryMapTags(void)
{
size_t i;
for (i = 0; i < numlines; i++)
{
// 96: Apply Tag to Tagged Sectors
// 97: Apply Tag to Front Sector
// 98: Apply Tag to Back Sector
// 99: Apply Tag to Front and Back Sectors
if (lines[i].special == 97 || lines[i].special == 99)
Tag_Add(&lines[i].frontsector->tags, Tag_FGet(&lines[i].tags));
if (lines[i].special == 98 || lines[i].special == 99)
Tag_Add(&lines[i].backsector->tags, Tag_FGet(&lines[i].tags));
if (lines[i].special == 96) {
mtag_t tag = Tag_FGet(&lines[i].frontsector->tags);
INT32 s;
TAG_ITER_DECLARECOUNTER(0);
TAG_ITER_SECTORS(0, tag, s)
P_AddBinaryMapTagsFromLine(&sectors[s], &lines[i]);
} else if (lines[i].special == 97 || lines[i].special == 99) {
P_AddBinaryMapTagsFromLine(lines[i].frontsector, &lines[i]);
} else if (lines[i].special == 98 || lines[i].special == 99) {
P_AddBinaryMapTagsFromLine(lines[i].backsector, &lines[i]);
}
}
}