diff --git a/polymer/build/src/engine.c b/polymer/build/src/engine.c index fab2877e0..9060162c9 100644 --- a/polymer/build/src/engine.c +++ b/polymer/build/src/engine.c @@ -11036,6 +11036,7 @@ void draw2dscreen(int posxe, int posye, short ange, int zoome, short gride) faketimerhandler(); for (i=numwalls-1,wal=&wall[i];i>=0;i--,wal--) { + int64 dist,dx,dy; if (editstatus == 0) { if ((show2dwall[i>>3]&pow2char[i&7]) == 0) continue; @@ -11069,6 +11070,11 @@ void draw2dscreen(int posxe, int posye, short ange, int zoome, short gride) xp2 = mulscale14(wall[wal->point2].x-posxe,zoome); yp2 = mulscale14(wall[wal->point2].y-posye,zoome); + dx=wal->x-wall[wal->point2].x; + dy=wal->y-wall[wal->point2].y; + dist=dx*dx+dy*dy; + if (dist>0xffffffff)col=9; + if ((wal->cstat&64) > 0) { if (klabs(xp2-xp1) >= klabs(yp2-yp1)) diff --git a/polymer/build/src/winlayer.c b/polymer/build/src/winlayer.c index 0d57e9d4d..94d8c7cc5 100644 --- a/polymer/build/src/winlayer.c +++ b/polymer/build/src/winlayer.c @@ -1440,7 +1440,7 @@ static void AcquireInputDevices(char acquire, signed char device) if (acquire) { - if (!appactive) return; // why acquire when inactive? +// if (!appactive) return; // why acquire when inactive? for (i=0; i= localartlookupnum)?localartlookupnum-1:iTile, nXTiles, nYTiles, ZoomToThumbSize[s_Zoom],moffset); getmousevalues(&mousedx,&mousedy,&bstatus); searchx += mousedx; searchy += mousedy; - if (searchx < 12) searchx = 12; - if (searchy < 12) searchy = 12; - if (searchx > xdim-13) searchx = xdim-13; - if (searchy > ydim-23) searchy = ydim-23; -/* if (bstatus&2) + if (bstatus&2) { - moffset+=mousedy; + moffset+=mousedy*2; + searchy += mousedy; + searchx -= mousedx; if (iTopLeftTile==0 && moffset>0)moffset=0; while (moffset>ZoomToThumbSize[s_Zoom]) { @@ -1960,12 +1958,21 @@ static int m32gettile(int idInitialTile) moffset+=ZoomToThumbSize[s_Zoom]; } } -*/ - if (bstatus&16 && !eitherCTRL) - iTopLeftTile -= nXTiles; - if (bstatus&32 && !eitherCTRL) - iTopLeftTile += nXTiles; + if (searchx < 12) searchx = 12; + if (searchy < 12) searchy = 12; + if (searchx > xdim-13) searchx = xdim-13; + if (searchy > ydim-23) searchy = ydim-23; + if (bstatus&16 && !eitherCTRL && iTopLeftTile > 0) + { + mouseb &= ~16; + iTopLeftTile -= (nXTiles*3); + } + if (bstatus&32 && !eitherCTRL && iTopLeftTile < MAXTILES-1) + { + mouseb &= ~32; + iTopLeftTile += (nXTiles*3); + } mtile=iTile=(searchx/ZoomToThumbSize[s_Zoom])+((searchy-moffset)/ZoomToThumbSize[s_Zoom])*nXTiles+iTopLeftTile; while (iTile >= iTopLeftTile + nDisplayedTiles) { @@ -1984,10 +1991,10 @@ static int m32gettile(int idInitialTile) lockclock += synctics; // Zoom in / out using numeric key pad's / and * keys - if (((keystatus[KEYSC_gSLASH] || (eitherCTRL && (bstatus&16))) && s_Zoom<(signed)(NUM_ZOOMS-1)) - || ((keystatus[KEYSC_gSTAR] || (eitherCTRL && (bstatus&32))) && s_Zoom>0)) + if (((keystatus[KEYSC_gSLASH] || (eitherCTRL && bstatus&16)) && s_Zoom<(signed)(NUM_ZOOMS-1)) + || ((keystatus[KEYSC_gSTAR] || (eitherCTRL && bstatus&32)) && s_Zoom>0)) { - if (keystatus[KEYSC_gSLASH] || (eitherCTRL && (bstatus&16))) + if (keystatus[KEYSC_gSLASH] || (eitherCTRL && bstatus&16)) { keystatus[KEYSC_gSLASH] = 0; mouseb &= ~16; @@ -2010,6 +2017,8 @@ static int m32gettile(int idInitialTile) s_Zoom--; } + if (iTile >= localartlookupnum)iTile = localartlookupnum-1; + // Calculate new num of tiles to display nXTiles = xdim / ZoomToThumbSize[s_Zoom]; nYTiles = ydim / ZoomToThumbSize[s_Zoom]; @@ -2452,7 +2461,7 @@ static int DrawTiles(int iTopLeft, int iSelected, int nXTiles, int nYTiles, int } } } - if (localartfreq[iTile] != 0) + if (localartfreq[iTile] != 0 && YPos >= 0 && YPos <= ydim-20) { Bsprintf(szT, "%d", localartfreq[iTile]); printext256(XPos, YPos, whitecol, -1, szT, 1); @@ -2469,30 +2478,31 @@ static int DrawTiles(int iTopLeft, int iSelected, int nXTiles, int nYTiles, int XBox = ((iSelected-iTopLeft) % nXTiles) * TileDim; YBox = ((iSelected - ((iSelected-iTopLeft) % nXTiles) - iTopLeft) / nXTiles) * TileDim+offset; - for (i = 0; i < TileDim; i++) - { - if (YBox>=0 && YBox=0 && YBox+TileDim=0 && YBox+i0) + for (i = 0; i < TileDim; i++) { - plotpixel(XBox, YBox + i, whitecol); - plotpixel(XBox + TileDim, YBox + i, whitecol); + if (YBox>=0 && YBox=0 && YBox+TileDim=0 && YBox+i>2,ydim-8,whitecol,-1,szT,0); + printext256(xdim>>2,ydim-8,whitecol,0,szT,0); Bsprintf(szT,"%d, %d",(picanm[idTile]>>8)&0xFF,(picanm[idTile]>>16)&0xFF); - printext256((xdim>>2)+100,ydim-8,whitecol,-1,szT,0); + printext256((xdim>>2)+100,ydim-8,whitecol,0,szT,0); m32_showmouse(); @@ -2627,7 +2637,7 @@ static void Keys3d(void) drawtileinfo("Clipboard",3,124,temppicnum,tempshade,temppal,tempcstat,templotag,temphitag,tempextra); }// end if usedcount - if (infobox) + if (infobox&1) { char lines[8][64]; int dax, day, dist, height1=0,height2=0,height3=0, num=0; @@ -2672,7 +2682,7 @@ static void Keys3d(void) Bsprintf(lines[num++],"Slope: %d",sector[searchsector].ceilingheinum); lines[num++][0]=0; Bsprintf(lines[num++],"^251Sector %d^31 ceiling Lotag:%s",searchsector,ExtGetSectorCaption(searchsector)); - Bsprintf(lines[num++],"Height: %d",height2); + Bsprintf(lines[num++],"Height: %d, Visibility:%d",height2,sector[searchsector].visibility); break; case 2: drawtileinfo("Current",WIND1X,WIND1Y,sector[searchsector].floorpicnum,sector[searchsector].floorshade, @@ -2684,7 +2694,7 @@ static void Keys3d(void) Bsprintf(lines[num++],"Slope: %d",sector[searchsector].floorheinum); lines[num++][0]=0; Bsprintf(lines[num++],"^251Sector %d^31 floor Lotag:%s",searchsector,ExtGetSectorCaption(searchsector)); - Bsprintf(lines[num++],"Height:%d",height2); + Bsprintf(lines[num++],"Height:%d, Visibility:%d",height2,sector[searchsector].visibility); break; case 3: drawtileinfo("Current",WIND1X,WIND1Y,sprite[searchwall].picnum,sprite[searchwall].shade, @@ -4385,8 +4395,11 @@ static void Keys3d(void) if (keystatus[KEYSC_F2]) // F2 { if (eitherSHIFT) - infobox=!infobox; - else usedcount=!usedcount; + infobox^=1; + else + if (eitherCTRL) + infobox^=2; + else usedcount=!usedcount; keystatus[KEYSC_F2] = 0; } if (keystatus[KEYSC_TAB]) // TAB : USED @@ -7492,6 +7505,9 @@ void ExtAnalyzeSprites(void) } } +#define MESSAGEX 3 // (xdimgame>>1) +#define MESSAGEY 3 // ((i/charsperline)<<3)+(ydimgame-(ydimgame>>3))-(((getmessageleng-1)/charsperline)<<3) + static void Keys2d3d(void) { int i, j; @@ -7650,8 +7666,8 @@ static void Keys2d3d(void) begindrawing(); if (tempbuf[charsperline] != 0) { - printext256((xdimgame>>1)+2,((i/charsperline)<<3)+(ydimgame-(ydimgame>>3))-(((getmessageleng-1)/charsperline)<<3)+2,0,-1,tempbuf,xdimgame>640?0:1); - printext256((xdimgame>>1),((i/charsperline)<<3)+(ydimgame-(ydimgame>>3))-(((getmessageleng-1)/charsperline)<<3), + printext256((MESSAGEX*(xdimgame/320.))+2,(MESSAGEY*(ydimgame/200.))+2,0,-1,tempbuf,xdimgame>640?0:1); + printext256(MESSAGEX*(xdimgame/320.),MESSAGEY*(ydimgame/200.), (totalclock > (lastmessagetime + 120*5))?whitecol:256-5,-1,tempbuf,xdimgame>640?0:1); } enddrawing(); @@ -7674,7 +7690,7 @@ void ExtCheckKeys(void) if (sidemode != 1) { editinput(); - m32_showmouse(); + if (infobox&2)m32_showmouse(); } return; }