📄 cbdata.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 + -