git-svn-id: https://svn.eduke32.com/eduke32@1194 1a8010ca-5511-0410-912e-c29ae57300e0

This commit is contained in:
terminx 2008-12-25 12:56:25 +00:00
parent 90ff26bdc1
commit 380ad7f536
2 changed files with 142 additions and 40 deletions

View file

@ -1617,20 +1617,22 @@ void overheadeditor(void)
if (graphicsmode) if (graphicsmode)
{ {
int ii; int ii = xyaspect;
i = yxaspect;
Bmemset(show2dsector, 255, sizeof(show2dsector)); Bmemset(show2dsector, 255, sizeof(show2dsector));
Bmemset(show2dwall, 255, sizeof(show2dwall)); Bmemset(show2dwall, 255, sizeof(show2dwall));
Bmemset(show2dsprite, 255, sizeof(show2dsprite)); Bmemset(show2dsprite, 255, sizeof(show2dsprite));
setview(0, 0, xdim-1, ydim16-1); setview(0, 0, xdim-1, ydim16-1);
i = yxaspect; yxaspect = xyaspect = 65536;
yxaspect = 65536;
j = ydim; j = ydim;
ydim -= scale(128, ydim, 768); ydim -= scale(128, ydim, 768);
ii = xyaspect;
xyaspect = 65536;
drawmapview(posx, posy, zoom, 1536); drawmapview(posx, posy, zoom, 1536);
yxaspect = i; yxaspect = i;
ydim = j; ydim = j;
xyaspect = ii; xyaspect = ii;

View file

@ -8702,6 +8702,8 @@ void ExtPreCheckKeys(void) // just before drawrooms
int i = 0; int i = 0;
int radius, xp1, yp1; int radius, xp1, yp1;
int col; int col;
int picnum, frames;
int ang = 0, flags, shade;
if (qsetmode == 200) //In 3D mode if (qsetmode == 200) //In 3D mode
{ {
@ -8777,17 +8779,116 @@ void ExtPreCheckKeys(void) // just before drawrooms
// if (cursectornum >= 0) // if (cursectornum >= 0)
// fillsector(cursectornum, 31); // fillsector(cursectornum, 31);
for (i=0;i<numsprites;i++) // Game specific 2D sprite stuff goes here. Drawn below everything else. if (graphicsmode && zoom >= 256)
{
for (i=0;i<numsprites;i++)
{
if ((sprite[i].cstat & 48) != 0) continue;
picnum = sprite[i].picnum;
ang = flags = frames = shade = 0;
switch (picnum)
{
// 5-frame walk
case 1550 : // Shark
frames=5;
// 2-frame walk
case 1445 : // duke kick
case LIZTROOPDUCKING :
case 2030 : // pig shot
case OCTABRAIN :
case PIGCOPDIVE :
case 2190 : // liz capt shot
case BOSS1SHOOT :
case BOSS1LOB :
case LIZTROOPSHOOT :
if (frames==0) frames=2;
// 4-frame walk
case 1491 : // duke crawl
case LIZTROOP :
case LIZTROOPRUNNING :
case PIGCOP :
case LIZMAN :
case BOSS1 :
case BOSS2 :
case BOSS3 :
case BOSS4 :
case NEWBEAST:
if (frames==0) frames=4;
case LIZTROOPJETPACK :
case DRONE :
case COMMANDER :
case TANK :
case RECON :
if (frames==0) frames = 10;
case CAMERA1:
case APLAYER :
if (frames==0) frames=1;
case GREENSLIME :
case EGG :
case PIGCOPSTAYPUT :
case LIZMANSTAYPUT:
case LIZTROOPSTAYPUT :
case LIZMANSPITTING :
case LIZMANFEEDING :
case LIZMANJUMP :
{
int k;
if (frames!=0)
{
if (frames==10) frames=0;
k = 1536;//getangle(tspr->x-posx,tspr->y-posy);
k = (((sprite[i].ang+3072+128-k)&2047)>>8)&7;
//This guy has only 5 pictures for 8 angles (3 are x-flipped)
if (k <= 4)
{
picnum += k;
ang = 0;
flags &= ~4;
}
else
{
picnum += 8-k;
ang = 1024;
flags |= 4;
}
}
if (frames==2) picnum+=((((4-(totalclock>>5)))&1)*5);
if (frames==4) picnum+=((((4-(totalclock>>5)))&3)*5);
if (frames==5) picnum+=(((totalclock>>5)%5))*5;
if (tilesizx[picnum] == 0)
picnum -= 5; //Hack, for actors
}
break;
default:
break;
}
xp1 = mulscale14(sprite[i].x-posx,zoom);
yp1 = mulscale14(sprite[i].y-posy-(tilesizy[picnum]<<2),zoom);
if (i+16384 != pointhighlight || !(totalclock&32))
{
shade = sprite[i].shade;
if (shade < 6)
shade = 6;
}
rotatesprite((halfxdim16+xp1)<<16,(midydim16+yp1)<<16,zoom<<5,ang,picnum,
shade,sprite[i].pal,flags,0,0,xdim-1,ydim16-1);
}
}
for (i=0;i<numsprites;i++)
if (sprite[i].picnum == 5 /*&& zoom >= 256*/ && sprite[i].sectnum != MAXSECTORS)
{ {
xp1 = mulscale14(sprite[i].x-posx,zoom); xp1 = mulscale14(sprite[i].x-posx,zoom);
yp1 = mulscale14(sprite[i].y-posy,zoom); yp1 = mulscale14(sprite[i].y-posy,zoom);
if (graphicsmode && zoom >= 256 && (sprite[i].cstat & 48) == 0)
rotatesprite((halfxdim16+xp1)<<16,(midydim16+yp1)<<16,zoom<<5,0,sprite[i].picnum,
(i+16384 == pointhighlight && totalclock&32)?8:0,sprite[i].pal,0,0,0,xdim-1,ydim16-1);
if (sprite[i].picnum == 5 /*&& zoom >= 256*/ && sprite[i].sectnum != MAXSECTORS)
{
radius = mulscale14(sprite[i].hitag,zoom); radius = mulscale14(sprite[i].hitag,zoom);
col = 6; col = 6;
if (i+16384 == pointhighlight) if (i+16384 == pointhighlight)
@ -8798,7 +8899,6 @@ void ExtPreCheckKeys(void) // just before drawrooms
// radius = mulscale15(sprite[i].hitag,zoom); // radius = mulscale15(sprite[i].hitag,zoom);
// drawcircle16(halfxdim16+xp1, midydim16+yp1, radius, col); // drawcircle16(halfxdim16+xp1, midydim16+yp1, radius, col);
} }
}
enddrawing(); enddrawing();
} }
@ -9482,7 +9582,7 @@ static void EditSectorData(short sectnum)
{ {
if (row < rowmax) if (row < rowmax)
{ {
printext16(xpos,ypos+row*8,editorcolors[11],0,disptext,0); printext16(xpos,ypos+row*8,editorcolors[11],editorcolors[0],disptext,0);
row++; row++;
} }
keystatus[KEYSC_DOWN] = 0; keystatus[KEYSC_DOWN] = 0;
@ -9491,7 +9591,7 @@ static void EditSectorData(short sectnum)
{ {
if (row > 0) if (row > 0)
{ {
printext16(xpos,ypos+row*8,editorcolors[11],0,disptext,0); printext16(xpos,ypos+row*8,editorcolors[11],editorcolors[0],disptext,0);
row--; row--;
} }
keystatus[KEYSC_UP] = 0; keystatus[KEYSC_UP] = 0;
@ -9500,7 +9600,7 @@ static void EditSectorData(short sectnum)
{ {
if (col == 2) if (col == 2)
{ {
printext16(xpos,ypos+row*8,editorcolors[11],0,disptext,0); printext16(xpos,ypos+row*8,editorcolors[11],editorcolors[0],disptext,0);
col = 1; col = 1;
xpos = 200; xpos = 200;
rowmax = 6; rowmax = 6;
@ -9514,7 +9614,7 @@ static void EditSectorData(short sectnum)
{ {
if (col == 1) if (col == 1)
{ {
printext16(xpos,ypos+row*8,editorcolors[11],0,disptext,0); printext16(xpos,ypos+row*8,editorcolors[11],editorcolors[0],disptext,0);
col = 2; col = 2;
xpos = 400; xpos = 400;
rowmax = 6; rowmax = 6;
@ -9873,7 +9973,7 @@ static void EditSpriteData(short spritenum)
{ {
case 1: case 1:
{ {
printext16(xpos,ypos+row*8,editorcolors[11],0,disptext,0); printext16(xpos,ypos+row*8,editorcolors[11],editorcolors[0],disptext,0);
col = 0; col = 0;
xpos = 8; xpos = 8;
rowmax = 4; rowmax = 4;
@ -9884,7 +9984,7 @@ static void EditSpriteData(short spritenum)
break; break;
case 2: case 2:
{ {
printext16(xpos,ypos+row*8,editorcolors[11],0,disptext,0); printext16(xpos,ypos+row*8,editorcolors[11],editorcolors[0],disptext,0);
col = 1; col = 1;
xpos = 200; xpos = 200;
rowmax = 5; rowmax = 5;
@ -9902,7 +10002,7 @@ static void EditSpriteData(short spritenum)
{ {
case 0: case 0:
{ {
printext16(xpos,ypos+row*8,editorcolors[11],0,disptext,0); printext16(xpos,ypos+row*8,editorcolors[11],editorcolors[0],disptext,0);
col = 1; col = 1;
xpos = 200; xpos = 200;
rowmax = 5; rowmax = 5;
@ -9913,7 +10013,7 @@ static void EditSpriteData(short spritenum)
break; break;
case 1: case 1:
{ {
printext16(xpos,ypos+row*8,editorcolors[11],0,disptext,0); printext16(xpos,ypos+row*8,editorcolors[11],editorcolors[0],disptext,0);
col = 2; col = 2;
xpos = 400; xpos = 400;
rowmax = 6; rowmax = 6;
@ -10163,7 +10263,7 @@ static void EditSpriteData(short spritenum)
break; break;
} }
printext16(xpos,ypos+row*8,11,1,disptext,0); printext16(xpos,ypos+row*8,editorcolors[11],editorcolors[1],disptext,0);
if (editval) if (editval)
{ {
editval = 0; editval = 0;
@ -10172,7 +10272,7 @@ static void EditSpriteData(short spritenum)
showframe(1); showframe(1);
} }
begindrawing(); begindrawing();
printext16(xpos,ypos+row*8,editorcolors[11],0,disptext,0); printext16(xpos,ypos+row*8,editorcolors[11],editorcolors[0],disptext,0);
printmessage16(""); printmessage16("");
enddrawing(); enddrawing();
showframe(1); showframe(1);
@ -10225,7 +10325,7 @@ static void GenSearchSprite()
clearmidstatbar16(); clearmidstatbar16();
printext16(xpos[0], ypos-2*8, 10, 0, "Sprite search", 0); printext16(xpos[0], ypos-2*8, editorcolors[10], editorcolors[0], "Sprite search", 0);
for (i=0; i<3; i++) for (i=0; i<3; i++)
for (j=0; j<=rowmax[i]; j++) for (j=0; j<=rowmax[i]; j++)
@ -10236,7 +10336,7 @@ static void GenSearchSprite()
k=Bsprintf(disptext, "%s: ^7any", labels[j][i]); k=Bsprintf(disptext, "%s: ^7any", labels[j][i]);
for (;k<dispwidth[i];k++) disptext[k] = 0; for (;k<dispwidth[i];k++) disptext[k] = 0;
printext16(xpos[i], ypos+j*8, 11, 0, disptext, 0); printext16(xpos[i], ypos+j*8, editorcolors[11], editorcolors[0], disptext, 0);
} }
for (k=0; k<80; k++) disptext[k] = 0; for (k=0; k<80; k++) disptext[k] = 0;
@ -10259,7 +10359,7 @@ static void GenSearchSprite()
keystatus[KEYSC_DOWN] = 0; keystatus[KEYSC_DOWN] = 0;
if (row < rowmax[col]) if (row < rowmax[col])
{ {
printext16(xpos[col],ypos+row*8,editorcolors[11],0,disptext,0); printext16(xpos[col],ypos+row*8,editorcolors[11],editorcolors[0],disptext,0);
row++; row++;
} }
} }
@ -10268,7 +10368,7 @@ static void GenSearchSprite()
keystatus[KEYSC_UP] = 0; keystatus[KEYSC_UP] = 0;
if (row > 0) if (row > 0)
{ {
printext16(xpos[col],ypos+row*8,editorcolors[11],0,disptext,0); printext16(xpos[col],ypos+row*8,editorcolors[11],editorcolors[0],disptext,0);
row--; row--;
} }
} }
@ -10277,7 +10377,7 @@ static void GenSearchSprite()
keystatus[KEYSC_LEFT] = 0; keystatus[KEYSC_LEFT] = 0;
if (col > 0) if (col > 0)
{ {
printext16(xpos[col],ypos+row*8,editorcolors[11],0,disptext,0); printext16(xpos[col],ypos+row*8,editorcolors[11],editorcolors[0],disptext,0);
col--; col--;
disptext[dispwidth[col]] = 0; disptext[dispwidth[col]] = 0;
if (row > rowmax[col]) row = rowmax[col]; if (row > rowmax[col]) row = rowmax[col];
@ -10288,7 +10388,7 @@ static void GenSearchSprite()
keystatus[KEYSC_RIGHT] = 0; keystatus[KEYSC_RIGHT] = 0;
if (col < 2) if (col < 2)
{ {
printext16(xpos[col],ypos+row*8,editorcolors[11],0,disptext,0); printext16(xpos[col],ypos+row*8,editorcolors[11],editorcolors[0],disptext,0);
col++; col++;
disptext[dispwidth[col]] = 0; disptext[dispwidth[col]] = 0;
if (row > rowmax[col]) row = rowmax[col]; if (row > rowmax[col]) row = rowmax[col];
@ -10308,7 +10408,7 @@ static void GenSearchSprite()
gs_spritewhat[col][row] = 1; gs_spritewhat[col][row] = 1;
if (col == 1 && row == 5) // picnum if (col == 1 && row == 5) // picnum
printext16(xpos[1], ypos-2*8, 14, 0, names[i], 0); printext16(xpos[1], ypos-2*8, editorcolors[14], editorcolors[0], names[i], 0);
} }
if (keystatus[KEYSC_BS] || keystatus[KEYSC_DELETE]) if (keystatus[KEYSC_BS] || keystatus[KEYSC_DELETE])
{ {
@ -10316,7 +10416,7 @@ static void GenSearchSprite()
gs_spritewhat[col][row] = 0; gs_spritewhat[col][row] = 0;
if (col == 1 && row == 5) // picnum if (col == 1 && row == 5) // picnum
printext16(xpos[1], ypos-2*8, 14, 0, " ", 0); printext16(xpos[1], ypos-2*8, editorcolors[14], editorcolors[0], " ", 0);
} }
if (gs_spritewhat[col][row]) if (gs_spritewhat[col][row])
@ -10331,13 +10431,13 @@ static void GenSearchSprite()
for (;k<dispwidth[col];k++) disptext[k] = ' '; for (;k<dispwidth[col];k++) disptext[k] = ' ';
disptext[k] = 0; disptext[k] = 0;
printext16(xpos[col],ypos+row*8,11,1,disptext,0); printext16(xpos[col],ypos+row*8,editorcolors[11],editorcolors[1],disptext,0);
enddrawing(); enddrawing();
showframe(1); showframe(1);
} }
// begindrawing(); // begindrawing();
printext16(xpos[col],ypos+row*8,editorcolors[11],0,disptext,0); printext16(xpos[col],ypos+row*8,editorcolors[11],editorcolors[0],disptext,0);
printmessage16("Search sprite"); printmessage16("Search sprite");
// enddrawing(); // enddrawing();
showframe(1); showframe(1);
@ -10375,7 +10475,7 @@ static void FuncMenuOpts(void)
do do
{ {
// x2 = // x2 =
printext16(x,y,editorcolors[11],0,FuncMenuStrings[i],0); printext16(x,y,editorcolors[11],editorcolors[0],FuncMenuStrings[i],0);
// if (x2 > x2_max) x2_max = x2; // if (x2 > x2_max) x2_max = x2;
y += MENU_Y_SPACING; y += MENU_Y_SPACING;
} }
@ -10384,7 +10484,7 @@ static void FuncMenuOpts(void)
// drawline16(x-1,MENU_BASE_Y-4,x-1,y,1); // drawline16(x-1,MENU_BASE_Y-4,x-1,y,1);
// x2 = // x2 =
printext16(x,MENU_BASE_Y,editorcolors[11],0,"Special functions",0); printext16(x,MENU_BASE_Y,editorcolors[11],editorcolors[0],"Special functions",0);
// drawline16(x-1,MENU_BASE_Y-4,x2+1,MENU_BASE_Y-4,1); // drawline16(x-1,MENU_BASE_Y-4,x2+1,MENU_BASE_Y-4,1);
// drawline16(x2_max+1,MENU_BASE_Y+16-4,x2_max+1,y-1,1); // drawline16(x2_max+1,MENU_BASE_Y+16-4,x2_max+1,y-1,1);
//drawline16(x2+1,MENU_BASE_Y+16-1,x2_max+1,MENU_BASE_Y+16-1,1); //drawline16(x2+1,MENU_BASE_Y+16-1,x2_max+1,MENU_BASE_Y+16-1,1);
@ -10414,7 +10514,7 @@ static void FuncMenu(void)
{ {
if (row < rowmax) if (row < rowmax)
{ {
printext16(xpos,ypos+row*MENU_Y_SPACING,editorcolors[11],0,disptext,0); printext16(xpos,ypos+row*MENU_Y_SPACING,editorcolors[11],editorcolors[0],disptext,0);
row++; row++;
} }
keystatus[KEYSC_DOWN] = 0; keystatus[KEYSC_DOWN] = 0;
@ -10423,7 +10523,7 @@ static void FuncMenu(void)
{ {
if (row > 0) if (row > 0)
{ {
printext16(xpos,ypos+row*MENU_Y_SPACING,editorcolors[11],0,disptext,0); printext16(xpos,ypos+row*MENU_Y_SPACING,editorcolors[11],editorcolors[0],disptext,0);
row--; row--;
} }
keystatus[KEYSC_UP] = 0; keystatus[KEYSC_UP] = 0;
@ -10683,12 +10783,12 @@ static void FuncMenu(void)
} }
break; break;
} }
printext16(xpos,ypos+row*MENU_Y_SPACING,11,1,disptext,0); printext16(xpos,ypos+row*MENU_Y_SPACING,editorcolors[11],editorcolors[1],disptext,0);
enddrawing(); enddrawing();
showframe(1); showframe(1);
} }
begindrawing(); begindrawing();
printext16(xpos,ypos+row*MENU_Y_SPACING,editorcolors[11],0,disptext,0); printext16(xpos,ypos+row*MENU_Y_SPACING,editorcolors[11],editorcolors[0],disptext,0);
enddrawing(); enddrawing();
clearmidstatbar16(); clearmidstatbar16();
showframe(1); showframe(1);