Mapster32: support sprite blending mode and statnum in clipboard.

git-svn-id: https://svn.eduke32.com/eduke32@5925 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2016-11-01 01:35:41 +00:00
parent 959099b852
commit f79993a7c9
3 changed files with 42 additions and 14 deletions

View file

@ -67,6 +67,7 @@ extern int32_t tempsectornum;
extern int32_t temppicnum, tempcstat, templotag, temphitag, tempextra;
extern uint32_t temppal, tempvis, tempxrepeat, tempyrepeat, tempxpanning, tempypanning;
extern int32_t tempshade, tempxvel, tempyvel, tempzvel;
extern int32_t tempstatnum, tempblend;
extern char somethingintab;
extern char names[MAXTILES][25];

View file

@ -138,6 +138,7 @@ int32_t tempsectornum = -1; // for auto ceiling/floor alignment
int32_t temppicnum, tempcstat, templotag, temphitag, tempextra;
uint32_t temppal, tempvis, tempxrepeat, tempyrepeat, tempxpanning=0, tempypanning=0;
int32_t tempshade, tempxvel, tempyvel, tempzvel;
int32_t tempstatnum=0, tempblend=0;
char somethingintab = 255;
// Only valid when highlightsectorcnt>0 and no structural

View file

@ -3632,10 +3632,14 @@ restart:
static char const *tileinfo_colorstr = "";
static void tileinfo_doprint(int32_t x, int32_t y, char *buf, const char *label, int32_t value, int32_t pos)
static void tileinfo_doprint(int32_t x, int32_t y, char *buf, const char *label, int32_t value, int32_t value2, int32_t pos)
{
int32_t small = (xdimgame<=640), i = ydimgame>>6;
Bsprintf(buf,"%s:%s%4d", label, tileinfo_colorstr, value);
if (value2)
Bsprintf(buf, "%s:%s%4d, %d", label, tileinfo_colorstr, value, value2);
else Bsprintf(buf,"%s:%s%4d", label, tileinfo_colorstr, value);
printext256(x+2, y+2+i*pos, 0, -1, buf, small);
printext256(x, y+i*pos, whitecol, -1, buf, small);
}
@ -3644,7 +3648,7 @@ static void tileinfo_doprint(int32_t x, int32_t y, char *buf, const char *label,
// 2:draw asterisk for extra
// 4:print bottom-swapped wall members colored
static void drawtileinfo(const char *title,int32_t x,int32_t y,int32_t picnum,int32_t shade,int32_t pal,int32_t cstat,
int32_t lotag,int32_t hitag,int32_t extra, uint32_t flags)
int32_t lotag,int32_t hitag,int32_t extra, int32_t blend, int32_t statnum, uint32_t flags)
{
char buf[64];
int32_t small = (xdimgame<=640);
@ -3680,14 +3684,25 @@ static void drawtileinfo(const char *title,int32_t x,int32_t y,int32_t picnum,in
tileinfo_colorstr = tempbuf;
}
tileinfo_doprint(x, y, buf, "Pic", picnum, 1);
tileinfo_doprint(x, y, buf, "Shd", shade, 2);
tileinfo_doprint(x, y, buf, "Pal", pal, 3);
tileinfo_doprint(x, y, buf, "Cst", cstat, 4);
tileinfo_doprint(x, y, buf, "Pic", picnum, 0, 1);
if (blend)
{
Bsprintf(tempbuf, "^%d", editorcolors[14]);
tileinfo_colorstr = tempbuf;
}
tileinfo_doprint(x, y, buf, "Shd", shade, blend, 2);
if (!(flags & 4))
tileinfo_colorstr = "";
tileinfo_doprint(x, y, buf, "Pal", pal, 0, 3);
tileinfo_doprint(x, y, buf, "Cst", cstat, 0, 4);
tileinfo_colorstr = "";
tileinfo_doprint(x, y, buf, (flags&1)?"Lo*":"Lot", lotag, 5);
tileinfo_doprint(x, y, buf, "Hit", hitag, 6);
tileinfo_doprint(x, y, buf, (flags&2)?"Ex*":"Ext", extra, 7);
tileinfo_doprint(x, y, buf, (flags&1)?"Lo*":"Lot", lotag, 0, 5);
tileinfo_doprint(x, y, buf, "Hit", hitag, 0, 6);
tileinfo_doprint(x, y, buf, (flags&2)?"Ex*":"Ext", extra, statnum, 7);
enddrawing();
}
@ -4293,7 +4308,7 @@ static void Keys3d(void)
}
}
#endif
drawtileinfo("Clipboard",3,124,temppicnum,tempshade,temppal,tempcstat,templotag,temphitag,tempextra,0);
drawtileinfo("Clipboard",3,124,temppicnum,tempshade,temppal,tempcstat,templotag,temphitag,tempextra,tempblend,tempstatnum,0);
}// end if usedcount
if (searchsector > -1 && searchsector < numsectors)
@ -4321,7 +4336,7 @@ static void Keys3d(void)
drawtileinfo("Selected", WIND1X,WIND1Y,
AIMING_AT_WALL ? wall[w].picnum : wall[w].overpicnum,
wall[w].shade, wall[w].pal, wall[w].cstat,
wall[searchwall].lotag, wall[searchwall].hitag, wall[searchwall].extra, flags);
wall[searchwall].lotag, wall[searchwall].hitag, wall[searchwall].extra, 0, 0, flags);
dist = wallength(searchwall);
@ -4358,7 +4373,7 @@ static void Keys3d(void)
case SEARCH_FLOOR:
drawtileinfo("Selected", WIND1X, WIND1Y, AIMED_CEILINGFLOOR(picnum), AIMED_CEILINGFLOOR(shade),
AIMED_CEILINGFLOOR(pal), AIMED_CEILINGFLOOR(stat),
sector[searchsector].lotag, sector[searchsector].hitag, sector[searchsector].extra,0);
sector[searchsector].lotag, sector[searchsector].hitag, sector[searchsector].extra,0,0,0);
{
int32_t xp=AIMED_CEILINGFLOOR(xpanning), yp=AIMED_CEILINGFLOOR(ypanning);
@ -4385,7 +4400,7 @@ static void Keys3d(void)
case SEARCH_SPRITE:
drawtileinfo("Selected", WIND1X, WIND1Y, sprite[searchwall].picnum, sprite[searchwall].shade,
sprite[searchwall].pal, sprite[searchwall].cstat, sprite[searchwall].lotag,
sprite[searchwall].hitag, sprite[searchwall].extra,0);
sprite[searchwall].hitag, sprite[searchwall].extra,sprite[searchwall].blend, sprite[searchwall].statnum, 0);
Bsprintf(lines[num++], "Repeat: %d,%d",
TrackerCast(sprite[searchwall].xrepeat), TrackerCast(sprite[searchwall].yrepeat));
@ -6336,6 +6351,9 @@ static void Keys3d(void)
templenrepquot = getlenbyrep(wallength(searchwall), tempxrepeat);
tempsectornum = sectorofwall(searchwall);
tempstatnum = 0;
tempblend = 0;
}
else if (AIMING_AT_CEILING_OR_FLOOR)
{
@ -6354,6 +6372,9 @@ static void Keys3d(void)
tempcstat = AIMED_CEILINGFLOOR(stat) & ~YAX_BIT;
#endif
tempsectornum = searchsector;
tempstatnum = 0;
tempblend = 0;
}
else if (AIMING_AT_SPRITE)
{
@ -6365,6 +6386,9 @@ static void Keys3d(void)
tempyvel = sprite[searchwall].yvel;
tempzvel = sprite[searchwall].zvel;
tempstatnum = sprite[searchwall].statnum;
tempblend = sprite[searchwall].blend;
tempsectornum = -1;
}
@ -6778,6 +6802,8 @@ paste_ceiling_or_floor:
sprite[searchwall].xvel = tempxvel;
sprite[searchwall].yvel = tempyvel;
sprite[searchwall].zvel = tempzvel;
changespritestat(searchwall, tempstatnum);
sprite[searchwall].blend = tempblend;
}
else
correct_sprite_yoffset(searchwall);