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

📄 thevoice.h

📁 Blood 2全套源码
💻 H
字号:
// ----------------------------------------------------------------------- //
//
// MODULE  : TheVoice.h
//
// PURPOSE : The multiplayer 'god' voice
//
// CREATED : 9/18/98
//
// ----------------------------------------------------------------------- //


#ifndef __THEVOICE_H__
#define __THEVOICE_H__


// Includes...

#include "cpp_client_de.h"
#include "SharedDefs.h"


// Defines...

#define MAX_LEN_VOICE_TEXT		128
#define MAX_LEN_VOICE_FILE		64

#define NUM_VOICE_START_BB		8
#define NUM_VOICE_START_CTF		8
#define NUM_VOICE_OVERKILL		1
#define NUM_VOICE_KILL			184
#define NUM_VOICE_SUICIDE		24
#define NUM_VOICE_HUMILIATION	8


// Structures...

typedef struct VoiceEntry_t
{
	char  m_szText[MAX_LEN_VOICE_TEXT];
	char  m_szFile[MAX_LEN_VOICE_FILE];
	DBYTE m_byFlags;

}	VoiceEntry;


// Externs...

extern VoiceEntry g_aVoiceStartBB[NUM_VOICE_START_BB];
extern VoiceEntry g_aVoiceStartCTF[NUM_VOICE_START_CTF]; 
extern VoiceEntry g_aVoiceOverkill[NUM_VOICE_OVERKILL];
extern VoiceEntry g_aVoiceKill[NUM_VOICE_KILL];
extern VoiceEntry g_aVoiceSuicide[NUM_VOICE_SUICIDE];
extern VoiceEntry g_aVoiceHumiliation[NUM_VOICE_HUMILIATION]; 


// Prototypes...

DBOOL TheVoice_Init(CClientDE* pClientDE);


// Inlines...

inline VoiceEntry*  GetVoiceEntry(VoiceEntry aVoiceArray[], int nVoices, D_WORD wIndex, DBYTE byFlags)
{
	if (!aVoiceArray || !(byFlags & VOICEFLAG_ALL)) return DNULL;

	VoiceEntry *pve = &aVoiceArray[wIndex % nVoices];

	int cSafety = -1;

	while(!(pve->m_byFlags & byFlags))
	{
		wIndex++;
		pve = &aVoiceArray[wIndex % nVoices];
		if (cSafety++ > nVoices) return(NULL);
	}
	return pve;
}

inline DBOOL DoVoiceFlagsMatch(DBYTE f1, DBYTE f2)
{
	DBOOL bVictimOk     = DFALSE;
	DBYTE byVictimFlags = f2 & VOICEFLAG_ALL_VICTIM;
	if (f1 & byVictimFlags) bVictimOk = DTRUE;

	DBOOL bAttackerOk     = DFALSE;
	DBYTE byAttackerFlags = f2 & VOICEFLAG_ALL_ATTACKER;
	if (f1 & byAttackerFlags) bAttackerOk = DTRUE;

	return(bVictimOk && bAttackerOk);
}

inline VoiceEntry*  GetVoiceEntryWithExtraChecks(VoiceEntry aVoiceArray[], int nVoices, D_WORD wIndex, DBYTE byFlags)
{
	if (!aVoiceArray || !(byFlags & VOICEFLAG_ALL)) return DNULL;

	VoiceEntry *pve = &aVoiceArray[wIndex % nVoices];
	if (!pve) return(NULL);

	int cSafety = -1;

	while(pve && !DoVoiceFlagsMatch(byFlags, pve->m_byFlags))
	{
		wIndex++;
		pve = &aVoiceArray[wIndex % nVoices];
		if (cSafety++ > nVoices) return(NULL);
	}
	return pve;
}


// EOF...

#endif	// __THEVOICE_H__

⌨️ 快捷键说明

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