📄 sb_bar.c
字号:
PatchINVRTGEM1 : PatchINVRTGEM2); } }}//==========================================================================//// Draw_TeleportIcon////==========================================================================void Draw_TeleportIcon(void){ patch_t *patch; patch = W_CacheLumpNum(W_GetNumForName("teleicon"), PU_CACHE); V_DrawPatch(100, 68, patch); UpdateState |= I_FULLSCRN; I_Update(); UpdateState |= I_FULLSCRN;}//==========================================================================//// Draw_SaveIcon////==========================================================================void Draw_SaveIcon(void){ patch_t *patch; patch = W_CacheLumpNum(W_GetNumForName("saveicon"), PU_CACHE); V_DrawPatch(100, 68, patch); UpdateState |= I_FULLSCRN; I_Update(); UpdateState |= I_FULLSCRN;}//==========================================================================//// Draw_LoadIcon////==========================================================================void Draw_LoadIcon(void){ patch_t *patch; patch = W_CacheLumpNum(W_GetNumForName("loadicon"), PU_CACHE); V_DrawPatch(100, 68, patch); UpdateState |= I_FULLSCRN; I_Update(); UpdateState |= I_FULLSCRN;}//==========================================================================//// SB_Responder////==========================================================================boolean SB_Responder(event_t *event){ if(event->type == ev_keydown) { if(HandleCheats(event->data1)) { // Need to eat the key return(true); } } return(false);}//==========================================================================//// HandleCheats//// Returns true if the caller should eat the key.////==========================================================================static boolean HandleCheats(byte key){ int i; boolean eat; if(gameskill == sk_nightmare) { // Can't cheat in nightmare mode return(false); } else if(netgame) { // change CD track is the only cheat available in deathmatch eat = false; if(i_CDMusic) { if(CheatAddKey(&Cheats[0], key, &eat)) { Cheats[0].func(&players[consoleplayer], &Cheats[0]); S_StartSound(NULL, SFX_PLATFORM_STOP); } if(CheatAddKey(&Cheats[1], key, &eat)) { Cheats[1].func(&players[consoleplayer], &Cheats[1]); S_StartSound(NULL, SFX_PLATFORM_STOP); } } return eat; } if(players[consoleplayer].health <= 0) { // Dead players can't cheat return(false); } eat = false; for(i = 0; Cheats[i].func != NULL; i++) { if(CheatAddKey(&Cheats[i], key, &eat)) { Cheats[i].func(&players[consoleplayer], &Cheats[i]); S_StartSound(NULL, SFX_PLATFORM_STOP); } } return(eat);}//==========================================================================//// CheatAddkey//// Returns true if the added key completed the cheat, false otherwise.////==========================================================================static boolean CheatAddKey(Cheat_t *cheat, byte key, boolean *eat){ if(!cheat->pos) { cheat->pos = cheat->sequence; cheat->currentArg = 0; } if(*cheat->pos == 0) { *eat = true; cheat->args[cheat->currentArg++] = key; cheat->pos++; } else if(CheatLookup[key] == *cheat->pos) { cheat->pos++; } else { cheat->pos = cheat->sequence; cheat->currentArg = 0; } if(*cheat->pos == 0xff) { cheat->pos = cheat->sequence; cheat->currentArg = 0; return(true); } return(false);}//==========================================================================//// CHEAT FUNCTIONS////==========================================================================static void CheatGodFunc(player_t *player, Cheat_t *cheat){ player->cheats ^= CF_GODMODE; if(player->cheats&CF_GODMODE) { P_SetMessage(player, TXT_CHEATGODON, true); } else { P_SetMessage(player, TXT_CHEATGODOFF, true); } SB_state = -1;}static void CheatNoClipFunc(player_t *player, Cheat_t *cheat){ player->cheats ^= CF_NOCLIP; if(player->cheats&CF_NOCLIP) { P_SetMessage(player, TXT_CHEATNOCLIPON, true); } else { P_SetMessage(player, TXT_CHEATNOCLIPOFF, true); }}static void CheatWeaponsFunc(player_t *player, Cheat_t *cheat){ int i; //extern boolean *WeaponInShareware; for(i = 0; i < NUMARMOR; i++) { player->armorpoints[i] = ArmorIncrement[player->class][i]; } for(i = 0; i < NUMWEAPONS; i++) { player->weaponowned[i] = true; } for(i = 0; i < NUMMANA; i++) { player->mana[i] = MAX_MANA; } P_SetMessage(player, TXT_CHEATWEAPONS, true);}static void CheatHealthFunc(player_t *player, Cheat_t *cheat){ if(player->morphTics) { player->health = player->mo->health = MAXMORPHHEALTH; } else { player->health = player->mo->health = MAXHEALTH; } P_SetMessage(player, TXT_CHEATHEALTH, true);}static void CheatKeysFunc(player_t *player, Cheat_t *cheat){ player->keys = 2047; P_SetMessage(player, TXT_CHEATKEYS, true);}static void CheatSoundFunc(player_t *player, Cheat_t *cheat){ DebugSound = !DebugSound; if(DebugSound) { P_SetMessage(player, TXT_CHEATSOUNDON, true); } else { P_SetMessage(player, TXT_CHEATSOUNDOFF, true); }}static void CheatTickerFunc(player_t *player, Cheat_t *cheat){ extern int DisplayTicker; DisplayTicker = !DisplayTicker; if(DisplayTicker) { P_SetMessage(player, TXT_CHEATTICKERON, true); } else { P_SetMessage(player, TXT_CHEATTICKEROFF, true); }}static void CheatArtifactAllFunc(player_t *player, Cheat_t *cheat){ int i; int j; for(i = arti_none+1; i < arti_firstpuzzitem; i++) { for(j = 0; j < 25; j++) { P_GiveArtifact(player, i, NULL); } } P_SetMessage(player, TXT_CHEATARTIFACTS3, true);}static void CheatPuzzleFunc(player_t *player, Cheat_t *cheat){ int i; for(i = arti_firstpuzzitem; i < NUMARTIFACTS; i++) { P_GiveArtifact(player, i, NULL); } P_SetMessage(player, TXT_CHEATARTIFACTS3, true);}static void CheatInitFunc(player_t *player, Cheat_t *cheat){ G_DeferedInitNew(gameskill, gameepisode, gamemap); P_SetMessage(player, TXT_CHEATWARP, true);}static void CheatWarpFunc(player_t *player, Cheat_t *cheat){ int tens; int ones; int map; char mapName[9]; char auxName[128]; FILE *fp; tens = cheat->args[0]-'0'; ones = cheat->args[1]-'0'; if(tens < 0 || tens > 9 || ones < 0 || ones > 9) { // Bad map P_SetMessage(player, TXT_CHEATBADINPUT, true); return; } map = P_TranslateMap((cheat->args[0]-'0')*10+cheat->args[1]-'0'); if(map == -1) { // Not found P_SetMessage(player, TXT_CHEATNOMAP, true); return; } if(map == gamemap) { // Don't try to teleport to current map P_SetMessage(player, TXT_CHEATBADINPUT, true); return; } if(DevMaps) { // Search map development directory sprintf(auxName, "%sMAP%02d.WAD", DevMapsDir, map); fp = fopen(auxName, "rb"); if(fp) { fclose(fp); } else { // Can't find P_SetMessage(player, TXT_CHEATNOMAP, true); return; } } else { // Search primary lumps sprintf(mapName, "MAP%02d", map); if(W_CheckNumForName(mapName) == -1) { // Can't find P_SetMessage(player, TXT_CHEATNOMAP, true); return; } } P_SetMessage(player, TXT_CHEATWARP, true); G_TeleportNewMap(map, 0);}static void CheatPigFunc(player_t *player, Cheat_t *cheat){ extern boolean P_UndoPlayerMorph(player_t *player); if(player->morphTics) { P_UndoPlayerMorph(player); } else { P_MorphPlayer(player); } P_SetMessage(player, "SQUEAL!!", true);}static void CheatMassacreFunc(player_t *player, Cheat_t *cheat){ int count; char buffer[80]; count = P_Massacre(); sprintf(buffer, "%d MONSTERS KILLED\n", count); P_SetMessage(player, buffer, true);}static void CheatIDKFAFunc(player_t *player, Cheat_t *cheat){ int i; if(player->morphTics) { return; } for(i = 1; i < 8; i++) { player->weaponowned[i] = false; } player->pendingweapon = WP_FIRST; P_SetMessage(player, TXT_CHEATIDKFA, true);}static void CheatQuickenFunc1(player_t *player, Cheat_t *cheat){ P_SetMessage(player, "TRYING TO CHEAT? THAT'S ONE....", true);}static void CheatQuickenFunc2(player_t *player, Cheat_t *cheat){ P_SetMessage(player, "THAT'S TWO....", true);}static void CheatQuickenFunc3(player_t *player, Cheat_t *cheat){ P_DamageMobj(player->mo, NULL, player->mo, 10000); P_SetMessage(player, "THAT'S THREE! TIME TO DIE.", true);}static void CheatClassFunc1(player_t *player, Cheat_t *cheat){ P_SetMessage(player, "ENTER NEW PLAYER CLASS (0 - 2)", true);}static void CheatClassFunc2(player_t *player, Cheat_t *cheat){ int i; int class; if(player->morphTics) { // don't change class if the player is morphed return; } class = cheat->args[0]-'0'; if(class > 2 || class < 0) { P_SetMessage(player, "INVALID PLAYER CLASS", true); return; } player->class = class; for(i = 0; i < NUMARMOR; i++) { player->armorpoints[i] = 0; } PlayerClass[consoleplayer] = class; P_PostMorphWeapon(player, WP_FIRST); SB_SetClassData(); SB_state = -1; UpdateState |= I_FULLSCRN;}static void CheatVersionFunc(player_t *player, Cheat_t *cheat){ P_SetMessage(player, VERSIONTEXT, true);}static void CheatDebugFunc(player_t *player, Cheat_t *cheat){ char textBuffer[50]; sprintf(textBuffer, "MAP %d (%d) X:%5d Y:%5d Z:%5d", P_GetMapWarpTrans(gamemap), gamemap, player->mo->x >> FRACBITS, player->mo->y >> FRACBITS, player->mo->z >> FRACBITS); P_SetMessage(player, textBuffer, true);}static void CheatScriptFunc1(player_t *player, Cheat_t *cheat){ P_SetMessage(player, "RUN WHICH SCRIPT(01-99)?", true);}static void CheatScriptFunc2(player_t *player, Cheat_t *cheat){ P_SetMessage(player, "RUN WHICH SCRIPT(01-99)?", true);}static void CheatScriptFunc3(player_t *player, Cheat_t *cheat){ int script; byte args[3]; int tens, ones; char textBuffer[40]; tens = cheat->args[0]-'0'; ones = cheat->args[1]-'0'; script = tens*10 + ones; if (script < 1) return; if (script > 99) return; args[0]=args[1]=args[2]=0; if(P_StartACS(script, 0, args, player->mo, NULL, 0)) { sprintf(textBuffer, "RUNNING SCRIPT %.2d", script); P_SetMessage(player, textBuffer, true); }}extern int cheating;static void CheatRevealFunc(player_t *player, Cheat_t *cheat){ cheating = (cheating+1) % 3;}//===========================================================================//// CheatTrackFunc1////===========================================================================static void CheatTrackFunc1(player_t *player, Cheat_t *cheat){#ifdef __WATCOMC__ char buffer[80]; if(!i_CDMusic) { return; } if(I_CDMusInit() == -1) { P_SetMessage(player, "ERROR INITIALIZING CD", true); } sprintf(buffer, "ENTER DESIRED CD TRACK (%.2d - %.2d):\n", I_CDMusFirstTrack(), I_CDMusLastTrack()); P_SetMessage(player, buffer, true);#endif}//===========================================================================//// CheatTrackFunc2////===========================================================================static void CheatTrackFunc2(player_t *player, Cheat_t *cheat){#ifdef __WATCOMC__ char buffer[80]; int track; if(!i_CDMusic) { return; } track = (cheat->args[0]-'0')*10+(cheat->args[1]-'0'); if(track < I_CDMusFirstTrack() || track > I_CDMusLastTrack()) { P_SetMessage(player, "INVALID TRACK NUMBER\n", true); return; } if(track == i_CDCurrentTrack) { return; } if(I_CDMusPlay(track)) { sprintf(buffer, "ERROR WHILE TRYING TO PLAY CD TRACK: %.2d\n", track); P_SetMessage(player, buffer, true); } else { // No error encountered while attempting to play the track sprintf(buffer, "PLAYING TRACK: %.2d\n", track); P_SetMessage(player, buffer, true); i_CDMusicLength = 35*I_CDMusTrackLength(track); oldTic = gametic; i_CDTrack = track; i_CDCurrentTrack = track; }#endif}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -