⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sb_bar.c

📁 使用Doom引擎开发的著名游戏《毁灭巫师》的源代码。
💻 C
📖 第 1 页 / 共 4 页
字号:
//**************************************************************************//**//** sb_bar.c : Heretic 2 : Raven Software, Corp.//**//** $RCSfile: sb_bar.c,v $//** $Revision: 1.94 $//** $Date: 95/12/31 21:10:08 $//** $Author: bgokey $//**//**************************************************************************// HEADER FILES ------------------------------------------------------------#include "h2def.h"#include "p_local.h"#include "soundst.h"#ifdef __WATCOMC__#include "i_sound.h" // For CD stuff#endif// MACROS ------------------------------------------------------------------#define CHEAT_ENCRYPT(a) \	((((a)&1)<<2)+ \	(((a)&2)>>1)+ \	(((a)&4)<<5)+ \	(((a)&8)<<2)+ \	(((a)&16)>>3)+ \	(((a)&32)<<1)+ \	(((a)&64)>>3)+ \	(((a)&128)>>3))// TYPES -------------------------------------------------------------------typedef struct Cheat_s{	void (*func)(player_t *player, struct Cheat_s *cheat);	byte *sequence;	byte *pos;	int args[2];	int currentArg;} Cheat_t;// EXTERNAL FUNCTION PROTOTYPES --------------------------------------------// PUBLIC FUNCTION PROTOTYPES ----------------------------------------------void SB_PaletteFlash(boolean forceChange);// PRIVATE FUNCTION PROTOTYPES ---------------------------------------------static void DrawSoundInfo(void);static void DrINumber(signed int val, int x, int y);static void DrRedINumber(signed int val, int x, int y);static void DrBNumber(signed int val, int x, int y);static void DrawCommonBar(void);static void DrawMainBar(void);static void DrawInventoryBar(void);static void DrawKeyBar(void);static void DrawWeaponPieces(void);static void DrawFullScreenStuff(void);static void DrawAnimatedIcons(void);static boolean HandleCheats(byte key);static boolean CheatAddKey(Cheat_t *cheat, byte key, boolean *eat);static void CheatGodFunc(player_t *player, Cheat_t *cheat);static void CheatNoClipFunc(player_t *player, Cheat_t *cheat);static void CheatWeaponsFunc(player_t *player, Cheat_t *cheat);static void CheatHealthFunc(player_t *player, Cheat_t *cheat);static void CheatKeysFunc(player_t *player, Cheat_t *cheat);static void CheatSoundFunc(player_t *player, Cheat_t *cheat);static void CheatTickerFunc(player_t *player, Cheat_t *cheat);static void CheatArtifactAllFunc(player_t *player, Cheat_t *cheat);static void CheatPuzzleFunc(player_t *player, Cheat_t *cheat);static void CheatWarpFunc(player_t *player, Cheat_t *cheat);static void CheatPigFunc(player_t *player, Cheat_t *cheat);static void CheatMassacreFunc(player_t *player, Cheat_t *cheat);static void CheatIDKFAFunc(player_t *player, Cheat_t *cheat);static void CheatQuickenFunc1(player_t *player, Cheat_t *cheat);static void CheatQuickenFunc2(player_t *player, Cheat_t *cheat);static void CheatQuickenFunc3(player_t *player, Cheat_t *cheat);static void CheatClassFunc1(player_t *player, Cheat_t *cheat);static void CheatClassFunc2(player_t *player, Cheat_t *cheat);static void CheatInitFunc(player_t *player, Cheat_t *cheat);static void CheatInitFunc(player_t *player, Cheat_t *cheat);static void CheatVersionFunc(player_t *player, Cheat_t *cheat);static void CheatDebugFunc(player_t *player, Cheat_t *cheat);static void CheatScriptFunc1(player_t *player, Cheat_t *cheat);static void CheatScriptFunc2(player_t *player, Cheat_t *cheat);static void CheatScriptFunc3(player_t *player, Cheat_t *cheat);static void CheatRevealFunc(player_t *player, Cheat_t *cheat);static void CheatTrackFunc1(player_t *player, Cheat_t *cheat);static void CheatTrackFunc2(player_t *player, Cheat_t *cheat);// EXTERNAL DATA DECLARATIONS ----------------------------------------------extern byte *screen;extern int ArmorIncrement[NUMCLASSES][NUMARMOR];extern int AutoArmorSave[NUMCLASSES];#ifdef __WATCOMC__extern boolean i_CDMusic;extern int i_CDMusicLength;extern int i_CDTrack;extern int i_CDCurrentTrack;extern int oldTic;#endif// PUBLIC DATA DECLARATIONS ------------------------------------------------boolean DebugSound; // Debug flag for displaying sound infoboolean inventory;int curpos;int inv_ptr;int ArtifactFlash;#ifndef __WATCOMC__boolean i_CDMusic; // in Watcom, defined in i_ibm#endif// PRIVATE DATA DEFINITIONS ------------------------------------------------static byte CheatLookup[256];static int HealthMarker;//static int ChainWiggle;static player_t *CPlayer;static int SpinFlylump;static int SpinMinotaurLump;static int SpinSpeedLump;static int SpinDefenseLump;static int FontBNumBase;static int PlayPalette;static patch_t *PatchH2BAR;static patch_t *PatchH2TOP;static patch_t *PatchLFEDGE;static patch_t *PatchRTEDGE;static patch_t *PatchARMCLEAR;static patch_t *PatchARTICLEAR;static patch_t *PatchMANACLEAR;static patch_t *PatchKILLS;static patch_t *PatchMANAVIAL1;static patch_t *PatchMANAVIAL2;static patch_t *PatchMANAVIALDIM1;static patch_t *PatchMANAVIALDIM2;static patch_t *PatchMANADIM1;static patch_t *PatchMANADIM2;static patch_t *PatchMANABRIGHT1;static patch_t *PatchMANABRIGHT2;static patch_t *PatchCHAIN;static patch_t *PatchSTATBAR;static patch_t *PatchKEYBAR;static patch_t *PatchLIFEGEM;static patch_t *PatchSELECTBOX;static patch_t *PatchINumbers[10];static patch_t *PatchNEGATIVE;static patch_t *PatchSmNumbers[10];static patch_t *PatchINVBAR;static patch_t *PatchWEAPONSLOT;static patch_t *PatchWEAPONFULL;static patch_t *PatchPIECE1;static patch_t *PatchPIECE2;static patch_t *PatchPIECE3;static patch_t *PatchINVLFGEM1;static patch_t *PatchINVLFGEM2;static patch_t *PatchINVRTGEM1;static patch_t *PatchINVRTGEM2;// Toggle god modestatic byte CheatGodSeq[] ={	CHEAT_ENCRYPT('s'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('t'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('n'),	0xff};// Toggle no clipping modestatic byte CheatNoClipSeq[] ={	CHEAT_ENCRYPT('c'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('s'),	CHEAT_ENCRYPT('p'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('r'),	0xff};// Get all weapons and manastatic byte CheatWeaponsSeq[] ={	CHEAT_ENCRYPT('n'),	CHEAT_ENCRYPT('r'),	CHEAT_ENCRYPT('a'),	0xff};// Get full healthstatic byte CheatHealthSeq[] ={	CHEAT_ENCRYPT('c'),	CHEAT_ENCRYPT('l'),	CHEAT_ENCRYPT('u'),	CHEAT_ENCRYPT('b'),	CHEAT_ENCRYPT('m'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('d'),	0xff};// Get all keysstatic byte CheatKeysSeq[] ={	CHEAT_ENCRYPT('l'),	CHEAT_ENCRYPT('o'),	CHEAT_ENCRYPT('c'),	CHEAT_ENCRYPT('k'),	CHEAT_ENCRYPT('s'),	CHEAT_ENCRYPT('m'),	CHEAT_ENCRYPT('i'),	CHEAT_ENCRYPT('t'),	CHEAT_ENCRYPT('h'),	0xff, 0};// Toggle sound debug infostatic byte CheatSoundSeq[] ={	CHEAT_ENCRYPT('n'),	CHEAT_ENCRYPT('o'),	CHEAT_ENCRYPT('i'),	CHEAT_ENCRYPT('s'),	CHEAT_ENCRYPT('e'),	0xff};// Toggle tickerstatic byte CheatTickerSeq[] ={	CHEAT_ENCRYPT('t'),	CHEAT_ENCRYPT('i'),	CHEAT_ENCRYPT('c'),	CHEAT_ENCRYPT('k'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('r'),	0xff, 0};// Get all artifactsstatic byte CheatArtifactAllSeq[] ={	CHEAT_ENCRYPT('i'),	CHEAT_ENCRYPT('n'),	CHEAT_ENCRYPT('d'),	CHEAT_ENCRYPT('i'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('n'),	CHEAT_ENCRYPT('a'),	0xff, 0};// Get all puzzle piecesstatic byte CheatPuzzleSeq[] ={	CHEAT_ENCRYPT('s'),	CHEAT_ENCRYPT('h'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('r'),	CHEAT_ENCRYPT('l'),	CHEAT_ENCRYPT('o'),	CHEAT_ENCRYPT('c'),	CHEAT_ENCRYPT('k'),	0xff, 0};// Warp to new levelstatic byte CheatWarpSeq[] ={	CHEAT_ENCRYPT('v'),	CHEAT_ENCRYPT('i'),	CHEAT_ENCRYPT('s'),	CHEAT_ENCRYPT('i'),	CHEAT_ENCRYPT('t'),	0, 0, 0xff, 0};// Become a pigstatic byte CheatPigSeq[] ={	CHEAT_ENCRYPT('d'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('l'),	CHEAT_ENCRYPT('i'),	CHEAT_ENCRYPT('v'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('r'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('n'),	CHEAT_ENCRYPT('c'),	CHEAT_ENCRYPT('e'),	0xff, 0};// Kill all monstersstatic byte CheatMassacreSeq[] ={	CHEAT_ENCRYPT('b'),	CHEAT_ENCRYPT('u'),	CHEAT_ENCRYPT('t'),	CHEAT_ENCRYPT('c'),	CHEAT_ENCRYPT('h'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('r'),	0xff, 0};static byte CheatIDKFASeq[] ={	CHEAT_ENCRYPT('c'),	CHEAT_ENCRYPT('o'),	CHEAT_ENCRYPT('n'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('n'),	0xff, 0};static byte CheatQuickenSeq1[] ={	CHEAT_ENCRYPT('m'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('r'),	CHEAT_ENCRYPT('t'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('k'),	0xff, 0};static byte CheatQuickenSeq2[] ={	CHEAT_ENCRYPT('m'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('r'),	CHEAT_ENCRYPT('t'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('k'),	CHEAT_ENCRYPT('m'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('r'),	CHEAT_ENCRYPT('t'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('k'),	0xff, 0};static byte CheatQuickenSeq3[] ={	CHEAT_ENCRYPT('m'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('r'),	CHEAT_ENCRYPT('t'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('k'),	CHEAT_ENCRYPT('m'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('r'),	CHEAT_ENCRYPT('t'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('k'),	CHEAT_ENCRYPT('m'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('r'),	CHEAT_ENCRYPT('t'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('k'),	0xff, 0};// New classstatic byte CheatClass1Seq[] = {	CHEAT_ENCRYPT('s'),	CHEAT_ENCRYPT('h'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('d'),	CHEAT_ENCRYPT('o'),	CHEAT_ENCRYPT('w'),	CHEAT_ENCRYPT('c'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('s'),	CHEAT_ENCRYPT('t'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('r'),	0xff, 0};static byte CheatClass2Seq[] = {	CHEAT_ENCRYPT('s'),	CHEAT_ENCRYPT('h'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('d'),	CHEAT_ENCRYPT('o'),	CHEAT_ENCRYPT('w'),	CHEAT_ENCRYPT('c'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('s'),	CHEAT_ENCRYPT('t'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('r'),	0, 0xff, 0};static byte CheatInitSeq[] ={	CHEAT_ENCRYPT('i'),	CHEAT_ENCRYPT('n'),	CHEAT_ENCRYPT('i'),	CHEAT_ENCRYPT('t'),	0xff, 0};static byte CheatVersionSeq[] ={	CHEAT_ENCRYPT('m'),	CHEAT_ENCRYPT('r'),	CHEAT_ENCRYPT('j'),	CHEAT_ENCRYPT('o'),	CHEAT_ENCRYPT('n'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('s'),	0xff, 0};static byte CheatDebugSeq[] ={	CHEAT_ENCRYPT('w'),	CHEAT_ENCRYPT('h'),	CHEAT_ENCRYPT('e'),	CHEAT_ENCRYPT('r'),	CHEAT_ENCRYPT('e'),	0xff, 0};static byte CheatScriptSeq1[] ={	CHEAT_ENCRYPT('p'),	CHEAT_ENCRYPT('u'),	CHEAT_ENCRYPT('k'),	CHEAT_ENCRYPT('e'),	0xff, 0};static byte CheatScriptSeq2[] ={	CHEAT_ENCRYPT('p'),	CHEAT_ENCRYPT('u'),	CHEAT_ENCRYPT('k'),	CHEAT_ENCRYPT('e'),	0, 0xff, 0};static byte CheatScriptSeq3[] ={	CHEAT_ENCRYPT('p'),	CHEAT_ENCRYPT('u'),	CHEAT_ENCRYPT('k'),	CHEAT_ENCRYPT('e'),	0, 0, 0xff,};static byte CheatRevealSeq[] ={	CHEAT_ENCRYPT('m'),	CHEAT_ENCRYPT('a'),	CHEAT_ENCRYPT('p'),	CHEAT_ENCRYPT('s'),	CHEAT_ENCRYPT('c'),	CHEAT_ENCRYPT('o'),	0xff, 0};static byte CheatTrackSeq1[] = {	CHEAT_ENCRYPT('`'),	0xff, 0};static byte CheatTrackSeq2[] = {	CHEAT_ENCRYPT('`'),	0, 0, 0xff, 0};static Cheat_t Cheats[] ={	{ CheatTrackFunc1, CheatTrackSeq1, NULL, 0, 0, 0 },	{ CheatTrackFunc2, CheatTrackSeq2, NULL, 0, 0, 0 },	{ CheatGodFunc, CheatGodSeq, NULL, 0, 0, 0 },	{ CheatNoClipFunc, CheatNoClipSeq, NULL, 0, 0, 0 },	{ CheatWeaponsFunc, CheatWeaponsSeq, NULL, 0, 0, 0 },	{ CheatHealthFunc, CheatHealthSeq, NULL, 0, 0, 0 },	{ CheatKeysFunc, CheatKeysSeq, NULL, 0, 0, 0 },	{ CheatSoundFunc, CheatSoundSeq, NULL, 0, 0, 0 },	{ CheatTickerFunc, CheatTickerSeq, NULL, 0, 0, 0 },	{ CheatArtifactAllFunc, CheatArtifactAllSeq, NULL, 0, 0, 0 },	{ CheatPuzzleFunc, CheatPuzzleSeq, NULL, 0, 0, 0 },	{ CheatWarpFunc, CheatWarpSeq, NULL, 0, 0, 0 },	{ CheatPigFunc, CheatPigSeq, NULL, 0, 0, 0 },	{ CheatMassacreFunc, CheatMassacreSeq, NULL, 0, 0, 0 },	{ CheatIDKFAFunc, CheatIDKFASeq, NULL, 0, 0, 0 },	{ CheatQuickenFunc1, CheatQuickenSeq1, NULL, 0, 0, 0 },	{ CheatQuickenFunc2, CheatQuickenSeq2, NULL, 0, 0, 0 },	{ CheatQuickenFunc3, CheatQuickenSeq3, NULL, 0, 0, 0 },	{ CheatClassFunc1, CheatClass1Seq, NULL, 0, 0, 0 },	{ CheatClassFunc2, CheatClass2Seq, NULL, 0, 0, 0 },	{ CheatInitFunc, CheatInitSeq, NULL, 0, 0, 0 },	{ CheatVersionFunc, CheatVersionSeq, NULL, 0, 0, 0 },	{ CheatDebugFunc, CheatDebugSeq, NULL, 0, 0, 0 },	{ CheatScriptFunc1, CheatScriptSeq1, NULL, 0, 0, 0 },	{ CheatScriptFunc2, CheatScriptSeq2, NULL, 0, 0, 0 },	{ CheatScriptFunc3, CheatScriptSeq3, NULL, 0, 0, 0 },	{ CheatRevealFunc, CheatRevealSeq, NULL, 0, 0, 0 },	{ NULL, NULL, NULL, 0, 0, 0 } // Terminator};// CODE --------------------------------------------------------------------//==========================================================================//// SB_Init////==========================================================================void SB_Init(void){	int i;	int startLump;	PatchH2BAR = W_CacheLumpName("H2BAR", PU_STATIC);	PatchH2TOP = W_CacheLumpName("H2TOP", PU_STATIC);	PatchINVBAR = W_CacheLumpName("INVBAR", PU_STATIC);	PatchLFEDGE	= W_CacheLumpName("LFEDGE", PU_STATIC);	PatchRTEDGE	= W_CacheLumpName("RTEDGE", PU_STATIC);	PatchSTATBAR = W_CacheLumpName("STATBAR", PU_STATIC);	PatchKEYBAR = W_CacheLumpName("KEYBAR", PU_STATIC);	PatchSELECTBOX = W_CacheLumpName("SELECTBOX", PU_STATIC);	PatchARTICLEAR = W_CacheLumpName("ARTICLS", PU_STATIC);	PatchARMCLEAR = W_CacheLumpName("ARMCLS", PU_STATIC);	PatchMANACLEAR = W_CacheLumpName("MANACLS", PU_STATIC);	PatchMANAVIAL1 = W_CacheLumpName("MANAVL1", PU_STATIC);	PatchMANAVIAL2 = W_CacheLumpName("MANAVL2", PU_STATIC);	PatchMANAVIALDIM1 = W_CacheLumpName("MANAVL1D", PU_STATIC);	PatchMANAVIALDIM2 = W_CacheLumpName("MANAVL2D", PU_STATIC);	PatchMANADIM1 = W_CacheLumpName("MANADIM1", PU_STATIC);	PatchMANADIM2 = W_CacheLumpName("MANADIM2", PU_STATIC);	PatchMANABRIGHT1 = W_CacheLumpName("MANABRT1", PU_STATIC);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -