void CON_ModTranslucent( void ) { char base[80]; SHORT op1=0; SPRITEp sp; USERp u; // Format: translucent [SpriteNum] if (sscanf(MessageInputString,"%s %hd",base,&op1) < 2) { strcpy(MessageInputString,"help translucent"); CON_GetHelp(); return; } if(!CheckValidSprite(op1)) return; sp = &sprite[op1]; u = User[op1]; if(TEST(sp->cstat,CSTAT_SPRITE_TRANSLUCENT)) { RESET(sp->cstat,CSTAT_SPRITE_TRANSLUCENT); CON_ConMessage("Translucence RESET for sprite %d.",op1); } else { SET(sp->cstat,CSTAT_SPRITE_TRANSLUCENT); CON_ConMessage("Translucence SET for sprite %d.",op1); } }
void CON_Tweak( void ) { char base[80], command[80]; long op1=0; // Format: tweak [weapon] [number] if (sscanf(MessageInputString,"%s %s %ld",base,command,&op1) < 3) { strcpy(MessageInputString,"help tweak"); CON_GetHelp(); return; } Bstrlwr(command); // Make sure operator is all lower case if(!strcmp(command,"adjust")) { extern short ADJUST; ADJUST = op1; CON_ConMessage("Zvelocity ADJUST set to %d.",op1); } else if(!strcmp(command,"adjustv")) { extern long ADJUSTV; ADJUSTV = op1; CON_ConMessage("Zvelocity ADJUSTV set to %d.",op1); } }
void CON_KillSprite( void ) { char base[80]; SHORT op1=0; SPRITEp sp; short i; USERp u; // Format: kill [SpriteNum] if (sscanf(MessageInputString,"%s %hd",base,&op1) < 2) { strcpy(MessageInputString,"help kill"); CON_GetHelp(); return; } if(op1 == -1) { for(i=0; i<MAXSPRITES; i++) { u = User[i]; if(!u->PlayerP) SetSuicide(i); } CON_ConMessage("Killed all sprites except Players."); } else { if(!CheckValidSprite(op1)) return; SetSuicide(op1); CON_ConMessage("Killed sprite %d.",op1); } }
void CON_SpriteDetail( void ) { char base[80]; SHORT op1=0; SPRITEp sp; short i; // Format: showsprite [SpriteNum] if (sscanf(MessageInputString,"%s %hd",base,&op1) < 2) { strcpy(MessageInputString,"help showsprite"); CON_GetHelp(); return; } if(!CheckValidSprite(op1)) return; sp = &sprite[op1]; CON_ConMessage("x = %ld, y = %ld, z = %ld",sp->x,sp->y,sp->z); CON_ConMessage("cstat = %d, picnum = %d",sp->cstat,sp->picnum); CON_ConMessage("shade = %d, pal = %d, clipdist = %d",sp->shade,sp->pal,sp->clipdist); CON_ConMessage("xrepeat = %d, yrepeat = %d",sp->xrepeat, sp->yrepeat); CON_ConMessage("xoffset = %d, yoffset = %d",sp->xoffset, sp->yoffset); CON_ConMessage("sectnum = %d, statnum = %d",sp->sectnum, sp->statnum); CON_ConMessage("ang = %d, owner = %d",sp->ang,sp->owner); CON_ConMessage("xvel = %d, yvel = %d, zvel = %d",sp->xvel,sp->yvel,sp->zvel); CON_ConMessage("lotag = %d, hitag = %d, extra = %d",sp->lotag,sp->hitag,sp->extra); }
void CON_SpriteInfo( void ) { SpriteInfo++; if(SpriteInfo > 2) SpriteInfo = 0; if(SpriteInfo == 0) CON_ConMessage("Sprite information is OFF."); else if(SpriteInfo == 1) CON_ConMessage("Sprite information is ON (Brief Mode)."); else CON_ConMessage("Sprite information is ON (Verbose Mode)."); }
// // Process commands // Returns TRUE upon success // void CON_ProcessUserCommand( void ) { SHORT i=0; BYTE temp_message[256],command_str[256]; strcpy(temp_message,MessageInputString); sscanf(Bstrlwr(temp_message),"%s", command_str); // Get the base command type for (i = 0; i < numcommands; i++) { // Don't even try if they aren't the same length if(strlen(command_str) != strlen(commandlist[i].command)) continue; // See if it's in there if(CON_CommandCmp(command_str, commandlist[i].command, strlen(command_str))) { if (commandlist[i].function) { (*commandlist[i].function)(); CON_AddHistory(MessageInputString); // Keep history only of valid input return; } } } if(ConPanel) CON_ConMessage("Syntax Error or Command not enabled!"); }
// Modify sprites yrepeat value void CON_ModYrepeat( void ) { char base[80]; SHORT op1=64,op2=-1,op3=-1; short i; if (sscanf(MessageInputString,"%s %hd %hd %hd",base,&op1,&op2,&op3) < 4) { strcpy(MessageInputString,"help yrepeat"); CON_GetHelp(); return; } if (op3 == -1) { for(i=0; i<MAXSPRITES; i++) { SPRITEp sp = &sprite[i]; USERp u = User[i]; if(op2 == -1) sp->yrepeat = op1; else { if(u->ID == op2) sp->yrepeat = op1; } } if(op2 == -1) CON_ConMessage("Yrepeat set to %d for all u->ID's for all sprites.",op1); else CON_ConMessage("Yrepeat set to %d for u->ID = %d for all sprites.",op1,op2); } else { // Do it only for one sprite SPRITEp sp = &sprite[op3]; USERp u = User[op3]; if(!CheckValidSprite(op3)) return; sp->yrepeat = op1; CON_ConMessage("Yrepeat set to %d for sprite %d.",op1,op3); } }
BOOL CheckValidSprite(short SpriteNum) { if(SpriteNum < 0 || SpriteNum > 6144) { CON_ConMessage("ERROR: Sprite %d is out of range.",SpriteNum); return(FALSE); } return(TRUE); }
void CON_Reverb( void ) { char base[80]; SHORT op1=0; PLAYERp pp = Player + screenpeek; // Format: reverb [number] if (sscanf(MessageInputString,"%s %hd",base,&op1) < 2) { strcpy(MessageInputString,"help reverb"); CON_GetHelp(); return; } CON_ConMessage("Reverb is now set to %d.",op1); COVER_SetReverb(op1); pp->Reverb = op1; }
void CON_CheckHeap( void ) { /* switch( _heapchk() ) { case _HEAPOK: CON_ConMessage( "OK - heap is good\n" ); break; case _HEAPEMPTY: CON_ConMessage( "OK - heap is empty\n" ); break; case _HEAPBADBEGIN: CON_ConMessage( "ERROR - heap is damaged\n" ); break; case _HEAPBADNODE: CON_ConMessage( "ERROR - bad node in heap\n" ); break; } */ CON_ConMessage("JonoF: Not now"); }
// Get help on a console command void CON_GetHelp( void ) { char base[80], command[80]; short i; if (sscanf(MessageInputString,"%s %s",base,command) < 2) { CON_ConMessage("Usage: help [keyword]"); return; } Bstrlwr(command); // Make sure operator is all lower case if(!strcmp(command, "xrepeat")) { CON_ConMessage("Usage: xrepeat [repeat value 0-255],"); CON_ConMessage(" [User ID (-1 for all ID's)], [SpriteNum (-1 for all of type ID)]"); return; }else if(!strcmp(command, "yrepeat")) { CON_ConMessage("Usage: yrepeat [repeat value 0-255],"); CON_ConMessage(" [User ID (-1 for all ID's)], [SpriteNum (-1 for all of type ID)]"); return; }else if(!strcmp(command, "translucent")) { CON_ConMessage("Usage: translucent [OFF/ON 0-1],"); CON_ConMessage(" [User ID (-1 for all ID's)], [SpriteNum (-1 for all of type ID)]"); return; }else { CON_ConMessage("No help was located on that subject."); } }
void CON_SoundTest( void ) { int handle; long zero=0; char base[80]; SHORT op1=0; // Format: sound [number] if (sscanf(MessageInputString,"%s %hd",base,&op1) < 2) { strcpy(MessageInputString,"help sound"); CON_GetHelp(); return; } if(op1 < 0 || op1 >= DIGI_MAX) { CON_ConMessage("Sound number out of range."); return; } handle = PlaySound(op1,&zero,&zero,&zero,v3df_none); }
void CON_LoadSetup( void ) { /* char base[80],command[80]; extern char setupfilename[64]; // Format: showuser [SpriteNum] if (sscanf(MessageInputString,"%s %s",base,command) < 2) { strcpy(MessageInputString,"help config"); CON_GetHelp(); return; } if (!SafeFileExists(command)) { CON_ConMessage("CON_LoadSetup: %s does not exist.",command); return; } else { strcpy(setupfilename,command); } initkeys(); CONFIG_ReadSetup(); CONTROL_Startup( ControllerType, &GetTime, 120 ); SetupGameButtons(); if (CONTROL_JoystickEnabled) { CONTROL_CenterJoystick(CenterCenter, UpperLeft, LowerRight, CenterThrottle, CenterRudder); } CON_ConMessage("Loaded new config file."); */ CON_ConMessage("JonoF: Maybe later"); }
SWBOOL CacheSound(int num, int type) { VOC_INFOp vp = &voc[num]; PRODUCTION_ASSERT(num >= 0 && num < DIGI_MAX); // if no data we need to cache it in if (!vp->data) { int handle; int length; if (!OpenSound(vp, &handle, &length)) { sprintf(ds,"Could not open sound %s, num %d, priority %d\n",vp->name,num,vp->priority); CON_ConMessage(ds); return FALSE; } if (vp != NULL) { //FILE *fp; /* if (type == CACHE_SOUND_PLAY) // start it out locked at the min vp->lock = CACHE_LOCK_START; else if (type == CACHE_SOUND_PRECACHE) // start it out unlocked at the max */ vp->lock = CACHE_UNLOCK_MAX; allocache((intptr_t*)&vp->data, length, &vp->lock); #if 0 // DEBUG globsndata[num] = AllocMem(length); glength[num] = length; fp = fopen(vp->name, "rb"); if (fp != NULL) { fread(globsndata[num], length, 1, fp); ASSERT(globsndata[num] != NULL); fclose(fp); } #endif /////// ASSERT(vp->data); ReadSound(handle, vp, length); #if 0 //DEBUG globvpdata[num] = vp->data; CheckSndData(__FILE__, __LINE__); #endif } } return TRUE; }
void CON_UserDetail( void ) { char base[80]; SHORT op1=0; SPRITEp sp; short i; USERp u; // Format: showuser [SpriteNum] if (sscanf(MessageInputString,"%s %hd",base,&op1) < 2) { strcpy(MessageInputString,"help showsprite"); CON_GetHelp(); return; } if(!CheckValidSprite(op1)) return; sp = &sprite[op1]; u = User[op1]; if(!u) return; CON_ConMessage("State = %#08x, Rot = %#08x",u->State,u->Rot); CON_ConMessage("StateStart = %#08x, StateEnd = %#08x",u->StateStart,u->StateEnd); CON_ConMessage("ActorActionFunc = %#08x",u->ActorActionFunc); CON_ConMessage("ActorActionSet = %#08x",u->ActorActionSet); CON_ConMessage("Personality = %#08x",u->Personality); CON_ConMessage("Attrib = %#08x",u->Attrib); CON_ConMessage("Flags = %ld, Flags2 = %ld, Tics = %ld",u->Flags,u->Flags2,u->Tics); CON_ConMessage("RotNum = %d, ID = %d",u->RotNum,u->ID); CON_ConMessage("Health = %d, MaxHealth = %d",u->Health,u->MaxHealth); CON_ConMessage("LastDamage = %d, PainThreshold = %d",u->LastDamage,u->PainThreshold); CON_ConMessage("jump_speed = %d, jump_grav = %d",u->jump_speed,u->jump_grav); CON_ConMessage("xchange = %ld, ychange = %ld, zchange = %ld",u->xchange,u->ychange,u->zchange); CON_ConMessage("ret = %ld, WaitTics = %d, spal = %d",u->ret,u->WaitTics,u->spal); }
void CON_Cache( void ) { char incache[8192]; // 8192 so it can index maxwalls as well int i,j,tottiles,totsprites,totactors; memset(incache,0,8192); // Calculate all level tiles, non-actor stuff for(i=0;i<numsectors;i++) { incache[sector[i].ceilingpicnum] = 1; incache[sector[i].floorpicnum] = 1; } for(i=0;i<numwalls;i++) { incache[wall[i].picnum] = 1; if (wall[i].overpicnum >= 0) incache[wall[i].overpicnum] = 1; } tottiles = 0; for(i=0;i<8192;i++) if (incache[i] > 0) tottiles += tilesizx[i]*tilesizy[i]; ////////////////////////////////////////////// memset(incache,0,8192); // Sprites on the stat list get counted as cached, others don't for(i=0;i<MAXSPRITES;i++) if (sprite[i].statnum < MAXSTATUS) incache[sprite[i].picnum] = 1; totsprites = 0; totactors = 0; for(i=0;i<MAXSPRITES;i++) { if (incache[i] > 0) { switch(i) { case 4096: totactors+=TileRangeMem(4096); incache[4096]=0; break; case 800: totactors+=TileRangeMem(800); incache[800]=0; break; case 817: totactors+=TileRangeMem(817); incache[817]=0; break; case 820: totactors+=TileRangeMem(820); incache[820]=0; break; case 960: totactors+=TileRangeMem(960); incache[960]=0; break; //case 1024: // Lo Wang is calculated later // totactors+=TileRangeMem(1024); // incache[1024]=0; //break; case 1320: totactors+=TileRangeMem(1320); incache[1320]=0; break; case 1400: totactors+=TileRangeMem(1400); incache[1400]=0; break; case 1441: totactors+=TileRangeMem(1441); incache[1441]=0; break; case 1469: totactors+=TileRangeMem(1469); incache[1469]=0; break; case 1580: totactors+=TileRangeMem(1580); incache[1580]=0; break; case 4320: totactors+=TileRangeMem(4320); incache[4320]=0; break; case 2540: totactors+=TileRangeMem(2540); incache[2540]=0; break; case 4430: totactors+=TileRangeMem(4430); incache[4430]=0; break; case 4490: totactors+=TileRangeMem(4490); incache[4490]=0; break; case 5023: totactors+=TileRangeMem(5023); incache[5023]=0; break; case 5032: totactors+=TileRangeMem(5032); incache[5032]=0; break; case 2000: totactors+=TileRangeMem(2000); incache[2000]=0; break; case 2004: totactors+=TileRangeMem(2004); incache[2004]=0; break; case 2010: totactors+=TileRangeMem(2010); incache[2010]=0; break; case 2130: totactors+=TileRangeMem(2130); incache[2130]=0; break; case 2050: totactors+=TileRangeMem(2050); incache[2050]=0; break; case 2054: totactors+=TileRangeMem(2054); incache[2054]=0; break; case 2070: totactors+=TileRangeMem(2070); incache[2070]=0; break; case 2080: totactors+=TileRangeMem(2080); incache[2080]=0; break; case 4090: totactors+=TileRangeMem(4090); incache[4090]=0; break; case 2121: totactors+=TileRangeMem(2121); incache[2121]=0; break; case 2211: totactors+=TileRangeMem(2211); incache[2211]=0; break; case 2220: totactors+=TileRangeMem(2220); incache[2220]=0; break; default: totsprites += tilesizx[i]*tilesizy[i]; } } } CON_ConMessage("/////////////////////////////////////////////"); CON_ConMessage("Current Memory Consumption:"); CON_ConMessage("Total Tiles = %ld",tottiles); CON_ConMessage("Total Sprites = %ld",totsprites); CON_ConMessage("Total Actors = %ld",totactors); CON_ConMessage("Total Memory = %ld",(tottiles+totsprites+totactors)); CON_ConMessage("Total with LoWang = %ld",(tottiles+totsprites+totactors+TileRangeMem(1024))); CON_ConMessage("/////////////////////////////////////////////"); }
void CON_DamageData( void ) { char base[80],field[80]; SHORT op1=0; unsigned int op2, i; SPRITEp sp; USERp u; // Format: damage [field] [item] [value] if (sscanf(MessageInputString,"%s %s %hd %u",base,field,&op1,&op2) < 3) { strcpy(MessageInputString,"help damage"); CON_GetHelp(); return; } if(op1 < -1 || op1 > 46) { CON_ConMessage("Damage Data index is out of range."); return; } if(!strcmp(field,"damage_lo")) { DamageData[op1].damage_lo = op2; CON_ConMessage("DamageData[%s].damage_lo = %d",damagename[op1],op2); } else if(!strcmp(field,"damage_hi")) { DamageData[op1].damage_hi = op2; CON_ConMessage("DamageData[%s].damage_hi = %d",damagename[op1],op2); } else if(!strcmp(field,"radius")) { DamageData[op1].radius = op2; CON_ConMessage("DamageData[%s].radius = %d",damagename[op1],op2); } else if(!strcmp(field,"max_ammo")) { DamageData[op1].max_ammo = op2; CON_ConMessage("DamageData[%s].max_ammo = %d",damagename[op1],op2); } else if(!strcmp(field,"min_ammo")) { DamageData[op1].min_ammo = op2; CON_ConMessage("DamageData[%s].min_ammo = %d",damagename[op1],op2); } if(!strcmp(field,"show")) { if(op1 == -1) { for(i=op2; i<=op2+10; i+=2) { if(i<47) CON_ConMessage("[%d] = %s [%d] = %s",i,damagename[i],i+1,damagename[i+1]); } } else { CON_ConMessage(" "); CON_ConMessage("Item = %s:",damagename[op1]); CON_ConMessage("damage_lo = %d, damag_hi = %d",DamageData[op1].damage_lo,DamageData[op1].damage_hi); CON_ConMessage("radius = %u",DamageData[op1].radius); CON_ConMessage("min_ammo = %d, max_ammo = %d",DamageData[op1].min_ammo,DamageData[op1].max_ammo); CON_ConMessage(" "); } } }
void CON_ShowMirror( void ) { char base[80]; SHORT op1=0; // Format: showmirror [SpriteNum] if (sscanf(MessageInputString,"%s %hd",base,&op1) < 2) { strcpy(MessageInputString,"help showmirror"); CON_GetHelp(); return; } if(op1 < 0 || op1 > 9) { CON_ConMessage("Mirror number is out of range!"); return; } CON_ConMessage("camera is the ST1 sprite used as the view spot"); CON_ConMessage("camspite is the SpriteNum of the drawtotile tile in editart"); CON_ConMessage("camspic is the tile number of the drawtotile in editart"); CON_ConMessage("iscamera is whether or not this mirror is a camera type"); CON_ConMessage(" "); CON_ConMessage("mirror[%d].mirrorwall = %d",op1,mirror[op1].mirrorwall); CON_ConMessage("mirror[%d].mirrorsector = %d",op1,mirror[op1].mirrorsector); CON_ConMessage("mirror[%d].camera = %d",op1,mirror[op1].camera); CON_ConMessage("mirror[%d].camsprite = %d",op1,mirror[op1].camsprite); CON_ConMessage("mirror[%d].campic = %d",op1,mirror[op1].campic); CON_ConMessage("mirror[%d].iscamera = %d",op1,mirror[op1].ismagic); }
void CON_DumpHeap( void ) { //heap_dump(); // Dump it. CON_ConMessage("JonoF: Not now"); }