|
|
1.1 ! root 1: #include "build.h" ! 2: #include "names.h" ! 3: #include "stdio.h" ! 4: #include <fcntl.h> ! 5: #include <io.h> ! 6: #include <sys\types.h> ! 7: #include <sys\stat.h> ! 8: #include <stdlib.h> ! 9: #include <string.h> ! 10: #include <dos.h> ! 11: #include <setjmp.h> ! 12: #include <stdarg.h> ! 13: #include <process.h> ! 14: ! 15: #define NUMOPTIONS 8 ! 16: #define NUMKEYS 19 ! 17: ! 18: long chainxres[4] = {256,320,360,400}; ! 19: long chainyres[11] = {200,240,256,270,300,350,360,400,480,512,540}; ! 20: long vesares[7][2] = {320,200,640,400,640,480,800,600,1024,768, ! 21: 1280,1024,1600,1200}; ! 22: char option[NUMOPTIONS] = {0,0,0,0,0,0,1,0}; ! 23: char keys[NUMKEYS] = ! 24: { ! 25: 0xc8,0xd0,0xcb,0xcd,0x2a,0x9d,0x1d,0x39, ! 26: 0x1e,0x2c,0xd1,0xc9,0x33,0x34, ! 27: 0x9c,0x1c,0xd,0xc,0xf, ! 28: }; ! 29: ! 30: extern long zmode, kensplayerheight; ! 31: ! 32: #define AVERAGEFRAMES 16 ! 33: ! 34: static long frameval[AVERAGEFRAMES], framecnt = 0; ! 35: ! 36: ! 37: extern ! 38: long posx, ! 39: posy, ! 40: posz, ! 41: horiz, ! 42: qsetmode; ! 43: ! 44: extern ! 45: short ang, ! 46: cursectnum; ! 47: ! 48: extern ! 49: short ceilingheinum, ! 50: floorheinum; ! 51: ! 52: extern ! 53: char names[MAXTILES][17]; ! 54: ! 55: extern ! 56: short searchsector, ! 57: searchwall, ! 58: searchstat; //search output ! 59: ! 60: static ! 61: short temppicnum, ! 62: tempcstat; ! 63: ! 64: static ! 65: char tempshade, ! 66: tempxrepeat, ! 67: tempyrepeat, ! 68: somethingintab=255; ! 69: ! 70: extern ! 71: void __interrupt __far timerhandler(void); ! 72: ! 73: long xoldtimerhandler; ! 74: ! 75: void __interrupt __far ! 76: xtimerhandler(void) ! 77: { ! 78: timerhandler(); ! 79: if (qsetmode == 480) { ! 80: Keys2d(); ! 81: } ! 82: else { ! 83: Keys3d(); ! 84: } ! 85: } ! 86: ! 87: ! 88: void faketimerhandler(void) { ! 89: return; ! 90: } ! 91: ! 92: void ! 93: xinittimer(void) ! 94: { ! 95: outp(0x43,54); ! 96: outp(0x40,9942&255); ! 97: outp(0x40,9942>>8); //120 times/sec ! 98: xoldtimerhandler=(long)_dos_getvect(0x8); ! 99: _disable(); ! 100: _dos_setvect(0x8,xtimerhandler); ! 101: _enable(); ! 102: } ! 103: ! 104: static ! 105: char tempbuf[256]; //161 ! 106: ! 107: static ! 108: int numsprite[2000]; ! 109: ! 110: static ! 111: char lo[32]; ! 112: ! 113: static ! 114: const char *levelname; ! 115: ! 116: static ! 117: short curwall=0, ! 118: wallpicnum=0, ! 119: curwallnum=0; ! 120: ! 121: static ! 122: short cursprite=0, ! 123: curspritenum=0; ! 124: ! 125: static ! 126: char wallsprite=0; ! 127: ! 128: static helpon=0; ! 129: ! 130: static ! 131: char once=0; ! 132: ! 133: void ! 134: ExtLoadMap(const char *mapname) ! 135: { ! 136: int fil; ! 137: ! 138: if (once == 0) { ! 139: xinittimer(); ! 140: } ! 141: once=1; ! 142: levelname=mapname; ! 143: ! 144: if ((fil = open("build.dat",O_BINARY|O_RDWR,S_IREAD)) != -1) { ! 145: read(fil,&option[0],NUMOPTIONS); ! 146: close(fil); ! 147: } ! 148: ! 149: ReadPaletteTable(); ! 150: visibility=11; ! 151: // pskyoff[0]=0; ! 152: // pskybits=3; ! 153: } ! 154: ! 155: void ! 156: ExtSaveMap(const char *mapname) ! 157: { ! 158: clearmidstatbar16(); //Clear middle of status bar ! 159: sprintf(tempbuf,"Saving File : %s",mapname); ! 160: printmessage16(tempbuf); ! 161: } ! 162: ! 163: const ! 164: char *ExtGetSectorCaption(short sectnum) ! 165: { ! 166: ! 167: short which; ! 168: int temp=0; ! 169: char string[5]; ! 170: char destination[25]; ! 171: ! 172: which = sector[sectnum].lotag; ! 173: ! 174: if ((sector[sectnum].lotag|sector[sectnum].hitag) == 0) { ! 175: tempbuf[0]=0; ! 176: } ! 177: else { ! 178: if( which >= 1100 && which <= 1900) { ! 179: temp = sector[sectnum].lotag / 100; ! 180: which = temp * 100; ! 181: itoa(sector[sectnum].lotag-which,string,10); ! 182: } ! 183: else if( which >=2000 && which <= 2999 ) { ! 184: ! 185: ! 186: } ! 187: if( which >= 80 && which <= 89 ) { ! 188: // panning ! 189: temp=which-80; ! 190: which=sector[sectnum].lotag-temp; ! 191: } ! 192: //switch((unsigned short)sector[sectnum].lotag) { ! 193: switch (which) { ! 194: case 1: ! 195: sprintf(lo,"ACTIVATE SECTOR"); ! 196: break; ! 197: case 2: ! 198: sprintf(lo,"ACTIVATE ONCE"); ! 199: break; ! 200: case 4: ! 201: // ! 202: // need to fix ! 203: sprintf(lo,"FLOOR PANNING"); ! 204: break; ! 205: case 6: ! 206: sprintf(lo,"RISING DOOR"); ! 207: break; ! 208: case 7: ! 209: sprintf(lo,"DROP DOOR"); ! 210: break; ! 211: case 8: ! 212: sprintf(lo,"HOR SPLIT DOOR"); ! 213: break; ! 214: case 9: ! 215: sprintf(lo,"VER SPLIT DOOR"); ! 216: break; ! 217: case 10: ! 218: sprintf(lo,"TELEPORTER"); ! 219: break; ! 220: case 11: ! 221: sprintf(lo,"XPANNING WALLS"); ! 222: case 16: ! 223: sprintf(lo,"BOX DOOR"); ! 224: break; ! 225: case 80: ! 226: strcpy(destination,"PANNING "); ! 227: ! 228: switch(temp) { ! 229: case 0: ! 230: strcpy(string,"N"); ! 231: break; ! 232: case 1: ! 233: strcpy(string,"NE"); ! 234: break; ! 235: case 2: ! 236: strcpy(string,"E"); ! 237: break; ! 238: case 3: ! 239: strcpy(string,"SE"); ! 240: break; ! 241: case 4: ! 242: strcpy(string,"S"); ! 243: break; ! 244: case 5: ! 245: strcpy(string,"SW"); ! 246: break; ! 247: case 6: ! 248: strcpy(string,"W"); ! 249: break; ! 250: case 7: ! 251: strcpy(string,"SW"); ! 252: break; ! 253: } ! 254: strcat(destination," "); ! 255: strcat(destination,string); ! 256: sprintf(lo,destination); ! 257: break; ! 258: case 1000: ! 259: sprintf(lo,"PLATFORM ELEVATOR"); ! 260: break; ! 261: case 1003: ! 262: sprintf(lo,"BOX ELEVATOR"); ! 263: break; ! 264: case 1100: ! 265: strcpy(destination,"DROP FLOOR "); ! 266: strcat(destination,string); ! 267: sprintf(lo,destination); ! 268: break; ! 269: case 1200: ! 270: strcpy(destination,"RAISE FLOOR "); ! 271: strcat(destination,string); ! 272: sprintf(lo,destination); ! 273: break; ! 274: case 1300: ! 275: strcpy(destination,"DROP CEILING "); ! 276: strcat(destination,string); ! 277: sprintf(lo,destination); ! 278: break; ! 279: case 1400: ! 280: strcpy(destination,"RAISE CEILING "); ! 281: strcat(destination,string); ! 282: sprintf(lo,destination); ! 283: break; ! 284: case 1500: ! 285: strcpy(destination,"DROP F&C "); ! 286: strcat(destination,string); ! 287: sprintf(lo,destination); ! 288: break; ! 289: case 1600: ! 290: strcpy(destination,"RAISE F&C "); ! 291: strcat(destination,string); ! 292: sprintf(lo,destination); ! 293: break; ! 294: case 1800: ! 295: sprintf(lo,"LIFT"); ! 296: break; ! 297: case 1900: ! 298: sprintf(lo,"FLOOR DOOR"); ! 299: break; ! 300: case 4002: ! 301: sprintf(lo,"WARP TO NEW LEVEL"); ! 302: break; ! 303: default: ! 304: sprintf(lo,"%hu",(unsigned short)sector[sectnum].lotag); ! 305: break; ! 306: } ! 307: sprintf(tempbuf,"%hu,%s",(unsigned short)sector[sectnum].hitag,lo); ! 308: } ! 309: return(tempbuf); ! 310: } ! 311: ! 312: const ! 313: char *ExtGetWallCaption(short wallnum) ! 314: { ! 315: long i=0; ! 316: ! 317: if (keystatus[0x57] > 0) { // f11 Grab pic 0x4e + ! 318: wallpicnum=wall[curwall].picnum; ! 319: sprintf(tempbuf,"Grabed Wall Picnum %ld",wallpicnum); ! 320: printmessage16(tempbuf); ! 321: } ! 322: if (keystatus[0x2b] > 0) { // | ! 323: if (wallsprite == 1) { ! 324: for (i=curwallnum ; i < MAXWALLS ; i++) { ! 325: if (wall[i].picnum == wall[curwall].picnum) { ! 326: posx=(wall[i].x)-(((wall[i].x)-(wall[wall[i].point2].x))/2); ! 327: posy=(wall[i].y)-(( (wall[i].y)-(wall[wall[i].point2].y))/2); ! 328: printmessage16("Wall Found"); ! 329: curwallnum++; ! 330: keystatus[0x2b]=0; ! 331: return(tempbuf); ! 332: } ! 333: curwallnum++; ! 334: } ! 335: } ! 336: if (wallsprite == 2) { ! 337: for (i=curspritenum ; i < MAXSPRITES ; i++) { ! 338: if (sprite[i].picnum == sprite[cursprite].picnum && sprite[i].statnum == 0) { ! 339: posx=sprite[i].x; ! 340: posy=sprite[i].y; ! 341: ang=sprite[i].ang; ! 342: printmessage16("Sprite Found"); ! 343: curspritenum++; ! 344: keystatus[0x2b]=0; ! 345: return(tempbuf); ! 346: } ! 347: curspritenum++; ! 348: } ! 349: } ! 350: } ! 351: if ((wall[wallnum].lotag|wall[wallnum].hitag) == 0) { ! 352: tempbuf[0]=0; ! 353: } ! 354: else { ! 355: sprintf(tempbuf,"%hu,%hu",(unsigned short)wall[wallnum].hitag, ! 356: (unsigned short)wall[wallnum].lotag); ! 357: } ! 358: return(tempbuf); ! 359: } ! 360: ! 361: const ! 362: char *ExtGetSpriteCaption(short spritenum) ! 363: { ! 364: char destination[20]; ! 365: int which; ! 366: ! 367: tempbuf[0]=0; ! 368: ! 369: if ((sprite[spritenum].lotag|sprite[spritenum].hitag) == 0) { ! 370: SpriteName(spritenum,lo); ! 371: if (lo[0] != 0) { ! 372: sprintf(tempbuf,"%s",lo); ! 373: } ! 374: } ! 375: else if ((unsigned short)sprite[spritenum].picnum == 104) { ! 376: switch((unsigned short)sprite[spritenum].lotag) { ! 377: case 1000: ! 378: sprintf(lo,"PULSING"); ! 379: break; ! 380: case 1001: ! 381: sprintf(lo,"FLICKERING"); ! 382: break; ! 383: case 1002: ! 384: sprintf(lo,"TIC DELAY"); ! 385: break; ! 386: default: ! 387: sprintf(lo,"%hu",(unsigned short)sprite[spritenum].lotag); ! 388: break; ! 389: } ! 390: sprintf(tempbuf,"%hu,%s",(unsigned short)sprite[spritenum].hitag,lo); ! 391: } ! 392: else if(sprite[spritenum].hitag >= 90 && sprite[spritenum].hitag <= 99) { ! 393: which=sprite[spritenum].lotag; ! 394: strcpy(destination,"GRATE "); ! 395: switch(which){ ! 396: case 1: ! 397: strcat(destination,"OUT"); ! 398: break; ! 399: case 2: ! 400: strcat(destination,"IN"); ! 401: break; ! 402: case 3: ! 403: strcat(destination,"UP"); ! 404: break; ! 405: case 4: ! 406: strcat(destination,"DN"); ! 407: break; ! 408: } ! 409: sprintf(lo,destination); ! 410: } ! 411: else { ! 412: SpriteName(spritenum,lo); ! 413: sprintf(tempbuf,"%hu,%hu %s",(unsigned short)sprite[spritenum].hitag, ! 414: (unsigned short)sprite[spritenum].lotag,lo); ! 415: } ! 416: return(tempbuf); ! 417: } ! 418: ! 419: //printext16 parameters: ! 420: //printext16(long xpos, long ypos, short col, short backcol, ! 421: // char name[82], char fontsize) ! 422: // xpos 0-639 (top left) ! 423: // ypos 0-479 (top left) ! 424: // col 0-15 ! 425: // backcol 0-15, -1 is transparent background ! 426: // name ! 427: // fontsize 0=8*8, 1=3*5 ! 428: ! 429: //drawline16 parameters: ! 430: // drawline16(long x1, long y1, long x2, long y2, char col) ! 431: // x1, x2 0-639 ! 432: // y1, y2 0-143 (status bar is 144 high, origin is top-left of STATUS BAR) ! 433: // col 0-15 ! 434: ! 435: void ! 436: ExtShowSectorData(short sectnum) //F5 ! 437: { ! 438: int i,c=0; ! 439: ! 440: for (i=0 ; i < 2000 ; i++) { ! 441: numsprite[i]=0; ! 442: } ! 443: for (i=0 ; i < MAXSPRITES ; i++) { ! 444: if (sprite[i].statnum == 0) { ! 445: numsprite[sprite[i].picnum]++; ! 446: } ! 447: } ! 448: clearmidstatbar16(); //Clear middle of status bar ! 449: sprintf(tempbuf,"Level %s",levelname); ! 450: printmessage16(tempbuf); ! 451: } ! 452: ! 453: void ! 454: ExtShowWallData(short wallnum) //F6 ! 455: { ! 456: int i,nexti,bls,ouls,ss,rss,smss,tss,es,drs,music=0; ! 457: ! 458: bls=ouls=ss=rss=smss=tss=es=drs=0; ! 459: for(i=0 ; i < MAXSPRITES ; i++) { ! 460: if (sprite[i].picnum == 51 && sprite[i].statnum == 0) { ! 461: if(sprite[i].lotag > drs) { ! 462: drs=sprite[i].lotag; ! 463: } ! 464: } ! 465: if (sprite[i].picnum == 175 && sprite[i].statnum == 0) { ! 466: switch(sprite[i].lotag) { ! 467: case 1: ! 468: if (sprite[i].hitag > rss) { ! 469: rss=sprite[i].hitag; ! 470: } ! 471: break; ! 472: case 3: ! 473: case 4: ! 474: if (sprite[i].hitag > bls) { ! 475: bls=sprite[i].hitag; ! 476: } ! 477: break; ! 478: case 7: ! 479: if (sprite[i].hitag > tss) { ! 480: tss=sprite[i].hitag; ! 481: } ! 482: break; ! 483: case 8: ! 484: if (sprite[i].hitag > ouls) { ! 485: ouls=sprite[i].hitag; ! 486: } ! 487: break; ! 488: case 13: ! 489: if (sprite[i].hitag > es) { ! 490: es=sprite[i].hitag; ! 491: } ! 492: break; ! 493: } ! 494: } ! 495: } ! 496: clearmidstatbar16(); ! 497: sprintf(tempbuf,"Level %s",levelname); ! 498: printmessage16(tempbuf); ! 499: printext16(1*8,4*8,11,-1,"Sector Effector Status",0); ! 500: PrintStatus("Breaking Lights =",bls,2,6,11); ! 501: PrintStatus("Open Up Lights =",ouls,2,7,11); ! 502: PrintStatus("Switches =",ss,2,8,11); ! 503: PrintStatus("Rotating Sectors =",rss,2,9,11); ! 504: PrintStatus("Subway Moving Sectors =",smss,2,10,11); ! 505: PrintStatus("Transporting Sectors =",tss,2,11,11); ! 506: PrintStatus("Exploding Sectors =",es,32,6,11); ! 507: PrintStatus("Delay Reactions =",drs,32,7,11); ! 508: } ! 509: ! 510: void ! 511: ExtShowSpriteData(short spritenum) //F6 ! 512: { ! 513: FILE *fp; ! 514: int i,t; ! 515: char x=0,y=4,xmax=0,xx=0,col=0; ! 516: ! 517: clearmidstatbar16(); ! 518: if ((fp=fopen("sehelp.hlp","rb")) == NULL) { ! 519: printext16(1*4,4*8,11,-1,"ERROR: file <SEHELP.HLP> not found.",0); ! 520: return; ! 521: } ! 522: t=65; ! 523: while (t != EOF && col < 5) { ! 524: t=getc(fp); ! 525: while (t != EOF && t != '\n' && x < 250) { ! 526: tempbuf[x]=t; ! 527: t=getc(fp); ! 528: x++; ! 529: if (x > xmax) { ! 530: xmax=x; ! 531: } ! 532: } ! 533: tempbuf[x]=0; ! 534: printext16(xx*4,(y*6)+2,11,-1,tempbuf,1); ! 535: x=0; ! 536: y++; ! 537: if (y > 18) { ! 538: col++; ! 539: y=6; ! 540: xx+=xmax; ! 541: xmax=0; ! 542: } ! 543: } ! 544: } ! 545: ! 546: void ! 547: ExtEditSectorData(short sectnum) //F7 ! 548: { ! 549: FILE *fp; ! 550: int i,t; ! 551: char x=0,y=4,xmax=0,xx=0,col=0; ! 552: ! 553: clearmidstatbar16(); ! 554: if ((fp=fopen("sthelp.hlp","rb")) == NULL) { ! 555: printext16(1*4,4*8,11,-1,"ERROR: file <STHELP.HLP> not found.",0); ! 556: return; ! 557: } ! 558: t=65; ! 559: while (t != EOF && col < 5) { ! 560: t=getc(fp); ! 561: while (t != EOF && t != '\n' && x < 250) { ! 562: tempbuf[x]=t; ! 563: t=getc(fp); ! 564: x++; ! 565: if (x > xmax) { ! 566: xmax=x; ! 567: } ! 568: } ! 569: tempbuf[x]=0; ! 570: printext16(xx*4,(y*6)+2,11,-1,tempbuf,1); ! 571: x=0; ! 572: y++; ! 573: if (y > 18) { ! 574: col++; ! 575: y=6; ! 576: xx+=xmax; ! 577: xmax=0; ! 578: } ! 579: } ! 580: } ! 581: ! 582: void ! 583: ExtEditWallData(short wallnum) //F8 ! 584: { ! 585: wallsprite=1; ! 586: curwall=wallnum; ! 587: curwallnum=0; ! 588: sprintf(tempbuf,"Current Wall %ld",curwall); ! 589: printmessage16(tempbuf); ! 590: } ! 591: ! 592: void ! 593: ExtEditSpriteData(short spritenum) //F8 ! 594: { ! 595: wallsprite=2; ! 596: cursprite=spritenum; ! 597: curspritenum=0; ! 598: sprintf(tempbuf,"Current Sprite %ld",cursprite); ! 599: printmessage16(tempbuf); ! 600: } ! 601: ! 602: //Just thought you might want my getnumber16 code ! 603: /* ! 604: getnumber16(char namestart[80], short num, long maxnumber) ! 605: { ! 606: char buffer[80]; ! 607: long j, k, n, danum, oldnum; ! 608: ! 609: danum = (long)num; ! 610: oldnum = danum; ! 611: while ((keystatus[0x1c] != 2) && (keystatus[0x1] == 0)) //Enter, ESC ! 612: { ! 613: sprintf(&buffer,"%s%ld_ ",namestart,danum); ! 614: printmessage16(buffer); ! 615: ! 616: for(j=2;j<=11;j++) //Scan numbers 0-9 ! 617: if (keystatus[j] > 0) ! 618: { ! 619: keystatus[j] = 0; ! 620: k = j-1; ! 621: if (k == 10) k = 0; ! 622: n = (danum*10)+k; ! 623: if (n < maxnumber) danum = n; ! 624: } ! 625: if (keystatus[0xe] > 0) // backspace ! 626: { ! 627: danum /= 10; ! 628: keystatus[0xe] = 0; ! 629: } ! 630: if (keystatus[0x1c] == 1) //L. enter ! 631: { ! 632: oldnum = danum; ! 633: keystatus[0x1c] = 2; ! 634: asksave = 1; ! 635: } ! 636: } ! 637: keystatus[0x1c] = 0; ! 638: keystatus[0x1] = 0; ! 639: return((short)oldnum); ! 640: } ! 641: */ ! 642: ! 643: void ! 644: PrintStatus(char *string,int num,char x,char y,char color) ! 645: { ! 646: sprintf(tempbuf,"%s %d",string,num); ! 647: printext16(x*8,y*8,color,-1,tempbuf,0); ! 648: } ! 649: ! 650: void ! 651: SpriteName(short spritenum, char *lo2) ! 652: { ! 653: sprintf(lo2,names[sprite[spritenum].picnum]); ! 654: /* ! 655: switch((unsigned short)sprite[spritenum].picnum) ! 656: { ! 657: case APLAYER : sprintf(lo2,"GRONDOVAL"); break; ! 658: case KOBOLD : sprintf(lo2,"KOBOLD"); break; ! 659: case JUDY : sprintf(lo2,"JUDY"); break; ! 660: case MANDROID : sprintf(lo2,"MANDROID"); break; ! 661: case TROOP1 : sprintf(lo2,"TROOPER"); break; ! 662: case SEENINE : sprintf(lo2,"C-9"); break; ! 663: case BAT : sprintf(lo2,"BAT"); break; ! 664: case REACTOR : sprintf(lo2,"REACTOR"); break; ! 665: case EXPLODINGBARREL : sprintf(lo2,"EBARREL"); break; ! 666: ! 667: case COKE : sprintf(lo2,"COKE"); break; ! 668: case SIXPAK : sprintf(lo2,"SIXPAK"); break; ! 669: case STEROIDS : sprintf(lo2,"STEROIDS"); break; ! 670: case SHIELD : sprintf(lo2,"SHIELD"); break; ! 671: case AIRTANK : sprintf(lo2,"AIRTANK"); break; ! 672: case JETPACK : sprintf(lo2,"JETPACK"); break; ! 673: case HOLODUKE : sprintf(lo2,"HOLODUKE"); break; ! 674: ! 675: case FIRSTGUNSPRITE : sprintf(lo2,"PISTOL"); break; ! 676: case GUN2ASPRITE : sprintf(lo2,"ELECTROGUN"); break; ! 677: case RPGSPRITE : sprintf(lo2,"RPG"); break; ! 678: ! 679: case AMMO : sprintf(lo2,"AMMO"); break; ! 680: case BATTERYAMMO : sprintf(lo2,"BATTERY"); break; ! 681: case HEAVYHBOMB : sprintf(lo2,"H-BOMB"); break; ! 682: case RPGAMMO : sprintf(lo2,"3-RPG"); break; ! 683: ! 684: default : lo2[0]=0; ! 685: } ! 686: */ ! 687: } ! 688: ! 689: void ! 690: ReadPaletteTable() ! 691: { ! 692: FILE *fp; ! 693: int i,j; ! 694: char num_tables,lookup_num; ! 695: ! 696: if ((fp=fopen("lookup.dat","rb")) == NULL) { ! 697: return; ! 698: } ! 699: num_tables=getc(fp); ! 700: for (j=0 ; j < num_tables ; j++) { ! 701: lookup_num=getc(fp); ! 702: for (i=0 ; i < 256 ; i++) { ! 703: tempbuf[i]=getc(fp); ! 704: } ! 705: makepalookup(lookup_num,tempbuf,0,0,0,0); ! 706: } ! 707: fclose; ! 708: } ! 709: ! 710: void ! 711: Keys3d(void) ! 712: { ! 713: if (helpon == 1) { ! 714: printext256(0*8,0*8,15,0,"HELP SCREEN",0); ! 715: printext256(0*8,2*8,15,0," ' + H = Help",0); ! 716: printext256(0*8,3*8,15,0," ' + Enter = copy graphic Only",0); ! 717: } ! 718: if (keystatus[0x28] == 1 && keystatus[0x23] == 1) { // ' H ! 719: helpon=1; ! 720: } ! 721: if (keystatus[0x29] == 1) { // ` ! 722: helpon=0; ! 723: } ! 724: if (keystatus[0x28] == 1 && keystatus[0x1c] == 1) { // ' ENTER ! 725: printext256(0,0,15,0,"Put Graphic ONLY",0); ! 726: keystatus[0x1c]=0; ! 727: switch(searchstat) { ! 728: case 0: ! 729: wall[searchwall].picnum=temppicnum; ! 730: break; ! 731: case 1: ! 732: sector[searchsector].ceilingpicnum=temppicnum; ! 733: break; ! 734: case 2: ! 735: sector[searchsector].floorpicnum=temppicnum; ! 736: break; ! 737: case 3: ! 738: sprite[searchwall].picnum=temppicnum; ! 739: break; ! 740: case 4: ! 741: wall[searchwall].overpicnum=temppicnum; ! 742: break; ! 743: } ! 744: } ! 745: if (keystatus[0x0f] == 1) { //TAB ! 746: switch (searchstat) { ! 747: case 0: ! 748: temppicnum=wall[searchwall].picnum; ! 749: tempshade=wall[searchwall].shade; ! 750: tempxrepeat=wall[searchwall].xrepeat; ! 751: tempyrepeat=wall[searchwall].yrepeat; ! 752: tempcstat=wall[searchwall].cstat; ! 753: break; ! 754: case 1: ! 755: temppicnum=sector[searchsector].ceilingpicnum; ! 756: tempshade=sector[searchsector].ceilingshade; ! 757: tempxrepeat=sector[searchsector].ceilingxpanning; ! 758: tempyrepeat=sector[searchsector].ceilingypanning; ! 759: tempcstat=sector[searchsector].ceilingstat; ! 760: break; ! 761: case 2: ! 762: temppicnum=sector[searchsector].floorpicnum; ! 763: tempshade=sector[searchsector].floorshade; ! 764: tempxrepeat=sector[searchsector].floorxpanning; ! 765: tempyrepeat=sector[searchsector].floorypanning; ! 766: tempcstat=sector[searchsector].floorstat; ! 767: break; ! 768: case 3: ! 769: temppicnum=sprite[searchwall].picnum; ! 770: tempshade=sprite[searchwall].shade; ! 771: tempxrepeat=sprite[searchwall].xrepeat; ! 772: tempyrepeat=sprite[searchwall].yrepeat; ! 773: tempcstat=sprite[searchwall].cstat; ! 774: break; ! 775: case 4: ! 776: temppicnum=wall[searchwall].overpicnum; ! 777: tempshade=wall[searchwall].shade; ! 778: tempxrepeat=wall[searchwall].xrepeat; ! 779: tempyrepeat=wall[searchwall].yrepeat; ! 780: tempcstat=wall[searchwall].cstat; ! 781: } ! 782: } ! 783: } ! 784: ! 785: void ! 786: Keys2d(void) ! 787: { ! 788: ! 789: } ! 790: ! 791: void ExtInit(void) ! 792: { ! 793: long i; ! 794: ! 795: //You can load your own palette lookup tables here if you just ! 796: //copy the right code! ! 797: for(i=0;i<256;i++) ! 798: tempbuf[i] = ((i+32)&255); //remap colors for screwy palette sectors ! 799: makepalookup(16,tempbuf,0,0,0); ! 800: ! 801: kensplayerheight = 54; ! 802: zmode = 0; ! 803: ! 804: } ! 805: ! 806: void ExtUnInit(void) ! 807: { ! 808: } ! 809: ! 810: void ExtPreCheckKeys(void) ! 811: { ! 812: } ! 813: ! 814: void ExtCheckKeys(void) ! 815: { ! 816: long i; ! 817: ! 818: if (qsetmode == 200) //In 3D mode ! 819: { ! 820: i = totalclock; ! 821: if (i != frameval[framecnt]) ! 822: { ! 823: sprintf(tempbuf,"%ld",(120*AVERAGEFRAMES)/(i-frameval[framecnt])); ! 824: printext256(0L,0L,31,-1,tempbuf,1); ! 825: frameval[framecnt] = i; ! 826: } ! 827: framecnt = ((framecnt+1)&(AVERAGEFRAMES-1)); ! 828: ! 829: editinput(); ! 830: } ! 831: else ! 832: { ! 833: } ! 834: } ! 835:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.