New option NWSS enables New Weapon Sound System.

Increased SOUND_MAX_CHANNELS to 128 for NWSS to work correctly.
New tag in AmmoStrings.xml: <NWSSCaliber>
New tags in Weapons.xml: <ubNWSSCase>, <ubNWSSLast>, <szNWSSSound>
Fixed some warnings.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8780 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Sevenfm
2020-04-05 23:58:07 +00:00
parent 5b1ea7e795
commit 306eca7dfc
8 changed files with 715 additions and 232 deletions
+1
View File
@@ -942,6 +942,7 @@ void LoadGameExternalOptions()
gGameExternalOptions.fEnableSSA = iniReader.ReadBoolean("Sound Settings", "ENABLE_SSA", false, false);
gGameExternalOptions.fDebugSSA = iniReader.ReadBoolean("Sound Settings", "DEBUG_SSA", false, false);
gGameExternalOptions.ubVolumeSSA = iniReader.ReadInteger("Sound Settings", "VOLUME_SSA", 50, 1, 127);
gGameExternalOptions.fNWSS = iniReader.ReadBoolean("Sound Settings", "NWSS", false, false);
//################# Tactical Interface Settings #################
+1
View File
@@ -473,6 +473,7 @@ typedef struct
BOOLEAN fEnableSSA;
BOOLEAN fDebugSSA;
UINT8 ubVolumeSSA;
BOOLEAN fNWSS;
// WDS - Option to turn off stealing
BOOLEAN fStealingDisabled;
+1 -1
View File
@@ -34,7 +34,7 @@
#define SOUND_MAX_CACHED 128 // number of cache slots
// sevenfm: increased number of channels
#define SOUND_MAX_CHANNELS 64
#define SOUND_MAX_CHANNELS 128
// default memory limit
#define SOUND_DEFAULT_MEMORY (8048*1024)
+674 -207
View File
File diff suppressed because it is too large Load Diff
+5
View File
@@ -397,6 +397,11 @@ typedef struct
// This vector stores the possible configurations
std::vector<UINT8> barrelconfigurations;
// sevenfm: NWSS data
UINT8 ubNWSSCase;
UINT8 ubNWSSLast;
CHAR8 szNWSSSound[MAX_WEAPON_NAME_LENGTH + 1];
} WEAPONTYPE;
typedef struct
{
+19 -24
View File
@@ -45,7 +45,8 @@ ammoStartElementHandle(void *userData, const XML_Char *name, const XML_Char **at
}
else if(pData->curElement == ELEMENT &&
(strcmp(name, "AmmoCaliber") == 0 ||
strcmp(name, "BRCaliber") == 0 ))
strcmp(name, "BRCaliber") == 0 ||
strcmp(name, "NWSSCaliber") == 0))
{
pData->curElement = ELEMENT_PROPERTY;
@@ -71,13 +72,11 @@ ammoCharacterDataHandle(void *userData, const XML_Char *str, int len)
}
}
extern char NWSSCaliber[MAXITEMS][255];
static void XMLCALL
ammoEndElementHandle(void *userData, const XML_Char *name)
{
#if 0
char temp;
#endif
ammoParseData * pData = (ammoParseData *)userData;
if(pData->currentDepth <= pData->maxReadDepth) //we're at the end of an element that we've been reading
@@ -96,16 +95,8 @@ ammoEndElementHandle(void *userData, const XML_Char *name)
pData->curElement = ELEMENT;
if(pData->curIndex < pData->maxArraySize)
{
#if 0
for(int i=0;i<min((int)strlen(pData->szCharData),MAX_CHAR_DATA_LENGTH);i++)
{
temp = pData->szCharData[i];
AmmoCaliber[pData->curIndex][i] = temp;
}
#else
MultiByteToWideChar( CP_UTF8, 0, pData->szCharData, -1, AmmoCaliber[pData->curIndex], sizeof(AmmoCaliber[0])/sizeof(AmmoCaliber[0][0]) );
AmmoCaliber[pData->curIndex][sizeof(AmmoCaliber[0])/sizeof(AmmoCaliber[0][0]) - 1] = '\0';
#endif
}
}
@@ -114,20 +105,27 @@ ammoEndElementHandle(void *userData, const XML_Char *name)
pData->curElement = ELEMENT;
if(pData->curIndex < pData->maxArraySize)
{
#if 0
for(int i=0;i<min((int)strlen(pData->szCharData),MAX_CHAR_DATA_LENGTH);i++)
{
temp = pData->szCharData[i];
BobbyRayAmmoCaliber[pData->curIndex][i] = temp;
}
#else
MultiByteToWideChar( CP_UTF8, 0, pData->szCharData, -1, BobbyRayAmmoCaliber[pData->curIndex], sizeof(BobbyRayAmmoCaliber[0])/sizeof(BobbyRayAmmoCaliber[0][0]) );
BobbyRayAmmoCaliber[pData->curIndex][sizeof(BobbyRayAmmoCaliber[0])/sizeof(BobbyRayAmmoCaliber[0][0]) - 1] = '\0';
#endif
}
}
else if (strcmp(name, "NWSSCaliber") == 0)
{
pData->curElement = ELEMENT_LIST;
if (pData->curIndex < pData->maxArraySize)
{
if (strlen(pData->szCharData) < 255)
{
strcpy(NWSSCaliber[pData->curIndex], pData->szCharData);
}
else
{
strncpy(NWSSCaliber[pData->curIndex], pData->szCharData, 254);
NWSSCaliber[pData->curIndex][254] = '\0';
}
}
}
pData->maxReadDepth--;
}
@@ -135,9 +133,6 @@ ammoEndElementHandle(void *userData, const XML_Char *name)
pData->currentDepth--;
}
BOOLEAN ReadInAmmoStats(STR fileName)
{
HWFILE hFile;
+13
View File
@@ -486,6 +486,19 @@ UINT32 PlayJA2StreamingSample( UINT32 usNum, UINT32 usRate, UINT32 ubVolume, UIN
return(SoundPlayStreamedFile(szSoundEffects[usNum], &spParms));
}
UINT32 PlayWeaponSound(STR8 szFileName, UINT32 ubVolume, UINT32 uiPan)
{
SOUNDPARMS spParms;
memset(&spParms, 0xff, sizeof(SOUNDPARMS));
spParms.uiSpeed = RATE_11025;
spParms.uiVolume = CalculateSoundEffectsVolume(ubVolume);
spParms.uiLoop = 1;
spParms.uiPan = uiPan;
spParms.uiPriority = GROUP_PLAYER;
return(SoundPlay((STR)szFileName, &spParms));
}
UINT32 PlayJA2SampleFromFile( STR8 szFileName, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoops, UINT32 uiPan )
{
+1
View File
@@ -417,6 +417,7 @@ UINT32 PlayJA2Sample( UINT32 usNum, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoo
UINT32 PlayJA2StreamingSample( UINT32 usNum, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoops, UINT32 uiPan );
UINT32 PlayJA2SampleFromFile( STR8 szFileName, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoops, UINT32 uiPan );
UINT32 PlayWeaponSound(STR8 szFileName, UINT32 ubVolume, UINT32 uiPan);
UINT32 PlayJA2StreamingSampleFromFile( STR8 szFileName, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoops, UINT32 uiPan, SOUND_STOP_CALLBACK EndsCallback );
UINT32 PlayJA2Ambient( UINT32 usNum, UINT32 ubVolume, UINT32 ubLoops);