- The number of possible IMP voices is no lnger limited

- If no IMP voices could be read, IMP creation is not allowed

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8368 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2017-01-17 20:32:31 +00:00
parent ec52ab30e5
commit 9a46c2a9fc
12 changed files with 24 additions and 12 deletions
+1 -3
View File
@@ -60,9 +60,7 @@ typedef struct
BOOLEAN exists; // set upon reading the xml: this voice exists BOOLEAN exists; // set upon reading the xml: this voice exists
} IMP_VOICESET; } IMP_VOICESET;
#define NUM_IMP_VOICESETS 100 extern std::vector<IMP_VOICESET> gIMPVoice;
extern IMP_VOICESET gIMPVoice[NUM_IMP_VOICESETS];
BOOLEAN AddCharacterToPlayersTeam( void ); BOOLEAN AddCharacterToPlayersTeam( void );
BOOLEAN LoadImpCharacter( STR fileName ); BOOLEAN LoadImpCharacter( STR fileName );
+7
View File
@@ -401,6 +401,13 @@ void ProcessPlayerInputActivationString( void )
return; return;
} }
// Flugente: don't proceed if there are no voices
if ( gIMPVoice.empty() )
{
DoLapTopMessageBox( MSG_BOX_IMP_STYLE, pImpPopUpStrings[13], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL );
return;
}
if (CountFilledIMPSlots(-1) < gGameOptions.ubMaxIMPCharacters) if (CountFilledIMPSlots(-1) < gGameOptions.ubMaxIMPCharacters)
{ {
// Kaiden: Need to reset skills, attributes and personalities with the new UB Method. // Kaiden: Need to reset skills, attributes and personalities with the new UB Method.
+4 -4
View File
@@ -55,7 +55,7 @@ void IMPPortraitRegionButtonCallback(MOUSE_REGION * pRegion, INT32 iReason );
void EnterIMPVoices( void ) void EnterIMPVoices( void )
{ {
// Set the initial voice // Set the initial voice
for ( int i = 0; i < NUM_IMP_VOICESETS; ++i ) for ( int i = 0; i < gIMPVoice.size(); ++i )
{ {
// MALE is 0, FEMALE is 1, thus the negation // MALE is 0, FEMALE is 1, thus the negation
if ( gIMPVoice[i].exists && !fCharacterIsMale == gIMPVoice[i].bSex ) if ( gIMPVoice[i].exists && !fCharacterIsMale == gIMPVoice[i].bSex )
@@ -124,7 +124,7 @@ void IncrementVoice()
{ {
++iCurrentVoice; ++iCurrentVoice;
for ( int i = iCurrentVoice; i < NUM_IMP_VOICESETS; ++i ) for ( int i = iCurrentVoice; i < gIMPVoice.size( ); ++i )
{ {
if ( gIMPVoice[i].exists && !fCharacterIsMale == gIMPVoice[i].bSex ) if ( gIMPVoice[i].exists && !fCharacterIsMale == gIMPVoice[i].bSex )
{ {
@@ -134,7 +134,7 @@ void IncrementVoice()
} }
// still here? Start from the beginning then // still here? Start from the beginning then
for ( int i = 0; i < NUM_IMP_VOICESETS; ++i ) for ( int i = 0; i < gIMPVoice.size( ); ++i )
{ {
if ( gIMPVoice[i].exists && !fCharacterIsMale == gIMPVoice[i].bSex ) if ( gIMPVoice[i].exists && !fCharacterIsMale == gIMPVoice[i].bSex )
{ {
@@ -158,7 +158,7 @@ void DecrementVoice( void )
} }
// still here? Start from the beginning then // still here? Start from the beginning then
for ( int i = NUM_IMP_VOICESETS - 1; i > 0; --i ) for ( int i = gIMPVoice.size( ) - 1; i > 0; --i )
{ {
if ( gIMPVoice[i].exists && !fCharacterIsMale == gIMPVoice[i].bSex ) if ( gIMPVoice[i].exists && !fCharacterIsMale == gIMPVoice[i].bSex )
{ {
+4 -5
View File
@@ -23,7 +23,7 @@ struct
} }
typedef impVoiceParseData; typedef impVoiceParseData;
IMP_VOICESET gIMPVoice[NUM_IMP_VOICESETS]; std::vector<IMP_VOICESET> gIMPVoice;
static void XMLCALL static void XMLCALL
impVoicesStartElementHandle( void *userData, const XML_Char *name, const XML_Char **atts ) impVoicesStartElementHandle( void *userData, const XML_Char *name, const XML_Char **atts )
@@ -87,10 +87,9 @@ impVoicesEndElementHandle( void *userData, const XML_Char *name )
{ {
pData->curElement = ELEMENT_LIST; pData->curElement = ELEMENT_LIST;
wcscpy( gIMPVoice[pData->curIndex].szVoiceSetName, pData->curIMPVoice.szVoiceSetName ); pData->curIMPVoice.exists = TRUE;
gIMPVoice[pData->curIndex].voiceset = pData->curIMPVoice.voiceset;
gIMPVoice[pData->curIndex].bSex = pData->curIMPVoice.bSex; gIMPVoice.push_back( pData->curIMPVoice );
gIMPVoice[pData->curIndex].exists = TRUE;
++pData->curIndex; ++pData->curIndex;
} }
+1
View File
@@ -4765,6 +4765,7 @@ STR16 pImpPopUpStrings[] =
L"你无法支付此I.M.P.人物的费用。", // 10 L"你无法支付此I.M.P.人物的费用。", // 10
L"新的I.M.P.人物加入了你的队伍。", L"新的I.M.P.人物加入了你的队伍。",
L"你已经设置了最大数量的佣兵特性。", L"你已经设置了最大数量的佣兵特性。",
L"No voicesets found.", // TODO.Translate
}; };
+1
View File
@@ -4769,6 +4769,7 @@ STR16 pImpPopUpStrings[] =
L"You cannot afford the I.M.P character.", // 10 L"You cannot afford the I.M.P character.", // 10
L"The new I.M.P character has joined your team.", L"The new I.M.P character has joined your team.",
L"You have already selected the maximum number of traits.", // TODO.Translate L"You have already selected the maximum number of traits.", // TODO.Translate
L"No voicesets found.", // TODO.Translate
}; };
+1
View File
@@ -4766,6 +4766,7 @@ STR16 pImpPopUpStrings[] =
L"You cannot afford the I.M.P character.", // 10 L"You cannot afford the I.M.P character.", // 10
L"The new I.M.P character has joined your team.", L"The new I.M.P character has joined your team.",
L"You have already selected the maximum number of traits.", L"You have already selected the maximum number of traits.",
L"No voicesets found.",
}; };
+1
View File
@@ -4774,6 +4774,7 @@ STR16 pImpPopUpStrings[] =
L"Vous n'avez pas les moyens.", // 10 L"Vous n'avez pas les moyens.", // 10
L"Le nouvel IMP a rejoint votre escouade.", L"Le nouvel IMP a rejoint votre escouade.",
L"Vous avez déjà sélectionné le maximal de traits de caractères.", L"Vous avez déjà sélectionné le maximal de traits de caractères.",
L"No voicesets found.", // TODO.Translate
}; };
+1
View File
@@ -4727,6 +4727,7 @@ STR16 pImpPopUpStrings[] =
L"Sie können sich den B.S.E.-Charakter nicht leisten.", // 10 L"Sie können sich den B.S.E.-Charakter nicht leisten.", // 10
L"Der neue B.S.E.-Charakter ist nun in ihrem Team.", L"Der neue B.S.E.-Charakter ist nun in ihrem Team.",
L"You have already selected the maximum number of traits.", // TODO.Translate L"You have already selected the maximum number of traits.", // TODO.Translate
L"No voicesets found.", // TODO.Translate
}; };
// button labels used on the IMP site // button labels used on the IMP site
+1
View File
@@ -4762,6 +4762,7 @@ STR16 pImpPopUpStrings[] =
L"You cannot afford the I.M.P character.", // 10 L"You cannot afford the I.M.P character.", // 10
L"The new I.M.P character has joined your team.", L"The new I.M.P character has joined your team.",
L"You have already selected the maximum number of traits.", // TODO.Translate L"You have already selected the maximum number of traits.", // TODO.Translate
L"No voicesets found.", // TODO.Translate
}; };
+1
View File
@@ -4775,6 +4775,7 @@ STR16 pImpPopUpStrings[] =
L"Nie stać cię na postać I.M.P.", // 10 L"Nie stać cię na postać I.M.P.", // 10
L"Nowa postać I.M.P. dołączyła do oddziału.", L"Nowa postać I.M.P. dołączyła do oddziału.",
L"You have already selected the maximum number of traits.", // TODO.Translate L"You have already selected the maximum number of traits.", // TODO.Translate
L"No voicesets found.", // TODO.Translate
}; };
+1
View File
@@ -4766,6 +4766,7 @@ STR16 pImpPopUpStrings[] =
L"Вы не можете позволить себе такой I.M.P.-персонаж.", // 10 L"Вы не можете позволить себе такой I.M.P.-персонаж.", // 10
L"Новый I.M.P.-персонаж присоединился к команде.", L"Новый I.M.P.-персонаж присоединился к команде.",
L"Вы уже выбрали максимальное количество навыков.", L"Вы уже выбрали максимальное количество навыков.",
L"No voicesets found.", // TODO.Translate
}; };