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

📄 cbdata.cpp

📁 经典游戏赤壁的源代码
💻 CPP
字号:
/////////////////
// CBData.cpp	:	《赤壁》全局类型数据结构
// CBData.cpp	:	<< chibi >> global data type structure
//
// 版本0010		:	一九九六年九月二十日
// v0010		:	Sep.20.1996
// v0011		:	Oct.18.1996
// v0020		:	Feb.28.1997
//
// 编写			:	刘刚
// written by	:	Liu Gang
//
// 编译器		:	Visual C++ 4.2
// Compiler		:	Visual C++ 4.2
//
// 版权			:	北京前导软件有限公司	1996-1997
// Copyright	:	WayAhead Co.Ltd.		1996-1997
/////////////////
// 此文件用来读取、处理和存放所有单元(将领、士兵、建筑)的属性数据

#include "stdafx.h"
#include <stdio.h>	// file accesses
#include "Assert.h"

#include "CBData.h"

#include "CBGame.h"

// Nov.7.1997, for CD Audio only
#include "Mciapi.h"


struct DATA_STRUCT	DATA_Lib;
struct DATA_WAVE_LIB_STRUCT DATA_WAVE_Lib;

//////////////////////
// 声音文件,声音个体
#define	WAVE_EFFECT_MAX	8		// 同时播放的音效数量
WAVESTATIC WAVE_Effect[WAVE_EFFECT_MAX];	  // to broadcast a sound when click a button
WAVEDYNAMIC WAVE_Music;//[WAVE_MUSIC_MAX];	// background music

// Nov.7.1997
int MUSIC_hCDHandle = -1;	// CD Audio 的句柄
int MUSIC_nIndex = 0;		// CD Audio 的音轨号
BOOL MUSIC_bEnable = FALSE;	// 是否播放CD
BOOL EFFECT_bEnable = FALSE;	// 是否播放音效
//////////////////////

//////////////////////
// play sound effects
// nIndex	:	index number from DATA_WAVE_Lib for play source
// 为了加速音效的读取速度,音效文件放置在硬盘上
// 直接读取Effect\\子目录里的音效文件,July 18. 1997
void DATA_WAVE_EffectPlay( int nIndex, BOOL bLoop/*=TRUE*/ )
{
	int i;
	char filename[_MAX_FNAME];
	for( i=0; i< WAVE_EFFECT_MAX; i++ )
	{
		if( WAVE_Effect[i].IfPlaying() == FALSE )
		{
			strcpy( filename, "Effect\\" );
			strcat( filename, DATA_WAVE_Lib.Effect[nIndex].strName );
			strcpy( WAVE_Effect[i].strFileName, filename );
			if( WAVE_Effect[i].Play(0) == FALSE )
			{
				strcpy( filename, GAME_strSetupDirectory );
				strcat( filename, "\\" );
				strcat( filename, GAME.strPathWAV );
				strcat( filename, DATA_WAVE_Lib.Effect[nIndex].strName );
				strcpy( WAVE_Effect[i].strFileName, filename );
				WAVE_Effect[i].Play(0);
			}
			break;
		}
	}
}

// play sound effect in a low voice
void DATA_WAVE_EffectPlayLow( int nIndex )
{
	int i;
	for( i=0; i< WAVE_EFFECT_MAX; i++ )
	{
		if( WAVE_Effect[i].IfPlaying() == FALSE )
		{
			int nVolumeOld = DS_GetVolume();
			DS_VolumeSound( nVolumeOld-1000 );
			strcpy( WAVE_Effect[i].strFileName, DATA_WAVE_Lib.Effect[nIndex].strName );
			WAVE_Effect[i].Play(0);
			DS_VolumeSound( nVolumeOld );
			break;
		}
	}
}


// Nov.7.1997

extern HWND hwndGame;	// DDAPI.cpp
int MUSIC_bPlayS = FALSE;

// play background music
// nIndex	:	index number from DATA_WAVE_Lib for play source
void DATA_WAVE_MusicPlay( int nIndex )
{
	MUSIC_bPlayS = FALSE;
	if( GAME_nDisk == 0 )
	{
		strcpy( WAVE_Music.strFileName, DATA_WAVE_Lib.Music[nIndex].strName );
		while( WAVE_Music.Play() == FALSE )
		{
			ErrorMessageNoQuit( hwndGame, 1103, "Insert Game CD please!\n" );
		}
	}
	else
	{
		MUSIC_nIndex = nIndex;
		if( MUSIC_bEnable == FALSE )
			return;
		if( MUSIC_hCDHandle != -1 )
		{
			MCI_CDAUDIO_Stop( hwndGame, MUSIC_hCDHandle );
			if( MCI_CDAUDIO_Play( hwndGame, MUSIC_hCDHandle, MCI_NOTIFY, nIndex, 0 ) == FALSE )
			{
				//ErrorMessageNoQuit( hwndGame, 1103, "Insert Game CD please!\n" );
				MCI_CDAUDIO_Close( MUSIC_hCDHandle );
				MUSIC_hCDHandle = -1;
			}
		}
		else
		{
			MUSIC_hCDHandle = MCI_CDAUDIO_Open( hwndGame );		
			if( MUSIC_hCDHandle == -1 )
			{
				return;
			}
			if( MCI_CDAUDIO_Play( hwndGame, MUSIC_hCDHandle, MCI_NOTIFY, nIndex, 0 ) == FALSE )
			{
				//ErrorMessageNoQuit( hwndGame, 1103, "Insert Game CD please!\n" );
				MCI_CDAUDIO_Close( MUSIC_hCDHandle );
				MUSIC_hCDHandle = -1;
			}
		}
	}
}

// play background music
// 播放开始主界面的音乐
// filename		:	file name to be played
void DATA_WAVE_MusicPlayS( LPCTSTR filename )
{
	MUSIC_bPlayS = TRUE;
	if( GAME_nDisk == 0 )
	{
		strcpy( WAVE_Music.strFileName, filename );
		WAVE_Music.Play();
	}
	else
	{
		int nIndex = 2;
		MUSIC_nIndex = nIndex;
		if( MUSIC_bEnable == FALSE )
			return;
		if( MUSIC_hCDHandle != -1 )
		{
			MCI_CDAUDIO_Stop( hwndGame, MUSIC_hCDHandle );
			if( MCI_CDAUDIO_Play( hwndGame, MUSIC_hCDHandle, MCI_NOTIFY, nIndex, nIndex+1 ) == FALSE )
			{
				//ErrorMessageNoQuit( hwndGame, 1103, "Insert Game CD please!\n" );
				MCI_CDAUDIO_Close( MUSIC_hCDHandle );
				MUSIC_hCDHandle = -1;
			}
		}
		else
		{
			MUSIC_hCDHandle = MCI_CDAUDIO_Open( hwndGame );		
			if( MUSIC_hCDHandle == -1 )
			{
				return;
			}
			if( MCI_CDAUDIO_Play( hwndGame, MUSIC_hCDHandle, MCI_NOTIFY, nIndex, nIndex+1 ) == FALSE )
			{
				//ErrorMessageNoQuit( hwndGame, 1103, "Insert Game CD please!\n" );
				MCI_CDAUDIO_Close( MUSIC_hCDHandle );
				MUSIC_hCDHandle = -1;
			}
		}
	}
}

// stop background music
void DATA_WAVE_MusicStop()
{
	if( GAME_nDisk == 0 )
	{
		WAVE_Music.Stop();
	}
	else
	{
		if( MUSIC_hCDHandle != -1 )
		{
			MCI_CDAUDIO_Stop( hwndGame, MUSIC_hCDHandle );
		}
	}
}

// replay stoped music
void DATA_WAVE_MusicReplay()
{
	if( GAME_nDisk == 0 )
	{
		if( WAVE_Music.strFileName[0] == 0 )
			return;
		while( WAVE_Music.Play() == FALSE )
		{
			ErrorMessageNoQuit( hwndGame, 1103, "Insert Game CD please!\n" );
		}
	}
	else
	{
		if( MUSIC_bEnable == FALSE )
			return;
		if( MUSIC_hCDHandle != -1 )
		{	
			//MCI_CDAUDIO_Seek( hwndGame, MUSIC_hCDHandle, MUSIC_nIndex );
			MCI_CDAUDIO_Stop( hwndGame, MUSIC_hCDHandle );
			int nEnd = MUSIC_nIndex+1;
			if( MUSIC_bPlayS == FALSE )
				nEnd = 0;
			if( MCI_CDAUDIO_Play( hwndGame, MUSIC_hCDHandle, MCI_NOTIFY, MUSIC_nIndex, nEnd ) == FALSE )
			{
				//ErrorMessageNoQuit( hwndGame, 1103, "Insert Game CD please!\n" );
				MCI_CDAUDIO_Close( MUSIC_hCDHandle );
				MUSIC_hCDHandle = -1;
			}
		}
		else
		{
			MUSIC_hCDHandle = MCI_CDAUDIO_Open( hwndGame );		
			if( MUSIC_hCDHandle == -1 )
			{
				return;
			}
			int nEnd = MUSIC_nIndex+1;
			if( MUSIC_bPlayS == FALSE )
				nEnd = 0;
			if( MCI_CDAUDIO_Play( hwndGame, MUSIC_hCDHandle, MCI_NOTIFY, MUSIC_nIndex, nEnd ) == FALSE )
			{
				//ErrorMessageNoQuit( hwndGame, 1103, "Insert Game CD please!\n" );
				MCI_CDAUDIO_Close( MUSIC_hCDHandle );
				MUSIC_hCDHandle = -1;
			}
		}
	}
}

// Close background music
void DATA_WAVE_MusicClose()
{
	if( GAME_nDisk == 0 )
	{
		WAVE_Music.Stop();
	}
	else
	{
		if( MUSIC_hCDHandle != -1 )
		{
			MCI_CDAUDIO_Stop( hwndGame, MUSIC_hCDHandle );
			MCI_CDAUDIO_Close( MUSIC_hCDHandle );
			MUSIC_hCDHandle = -1;
		}
	}
}
//////////////////////

⌨️ 快捷键说明

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