Added melnorme number-speech (they will pronouce numbers now)
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@650 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
@@ -205,6 +205,7 @@ static LOCDATA arilou_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -108,6 +108,7 @@ static LOCDATA blackurq_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -93,6 +93,7 @@ static LOCDATA chmmr_desc =
|
||||
1, 0, /* FrameRate */
|
||||
1, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -73,6 +73,7 @@ static LOCDATA commander_desc =
|
||||
12, 8, /* FrameRate */
|
||||
14, 10, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -129,6 +129,7 @@ static LOCDATA druuge_desc =
|
||||
8, 8, /* FrameRate */
|
||||
10, 10, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static COUNT SlaveryCount = 0;
|
||||
|
||||
@@ -79,6 +79,7 @@ static LOCDATA ilwrath_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -33,6 +33,8 @@ void DrawCargoStrings (BYTE OldElement, BYTE NewElement);
|
||||
#define NUM_ALIEN_RACE_ITEMS 16
|
||||
#define NUM_TECH_ITEMS 13
|
||||
|
||||
static NUMBER_SPEECH_DESC melnorme_numbers_english;
|
||||
|
||||
static LOCDATA melnorme_desc =
|
||||
{
|
||||
NULL_PTR, /* init_encounter_func */
|
||||
@@ -92,8 +94,94 @@ static LOCDATA melnorme_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
&melnorme_numbers_english, /* AlienNumberSpeech - default */
|
||||
};
|
||||
|
||||
static COUNT melnorme_digit_names[] =
|
||||
{
|
||||
ENUMERATE_ZERO,
|
||||
ENUMERATE_ONE,
|
||||
ENUMERATE_TWO,
|
||||
ENUMERATE_THREE,
|
||||
ENUMERATE_FOUR,
|
||||
ENUMERATE_FIVE,
|
||||
ENUMERATE_SIX,
|
||||
ENUMERATE_SEVEN,
|
||||
ENUMERATE_EIGHT,
|
||||
ENUMERATE_NINE
|
||||
};
|
||||
|
||||
static COUNT melnorme_teen_names[] =
|
||||
{
|
||||
ENUMERATE_TEN,
|
||||
ENUMERATE_ELEVEN,
|
||||
ENUMERATE_TWELVE,
|
||||
ENUMERATE_THIRTEEN,
|
||||
ENUMERATE_FOURTEEN,
|
||||
ENUMERATE_FIFTEEN,
|
||||
ENUMERATE_SIXTEEN,
|
||||
ENUMERATE_SEVENTEEN,
|
||||
ENUMERATE_EIGHTEEN,
|
||||
ENUMERATE_NINETEEN
|
||||
};
|
||||
|
||||
static COUNT melnorme_tens_names[] =
|
||||
{
|
||||
0, /* invalid */
|
||||
0, /* skip digit */
|
||||
ENUMERATE_TWENTY,
|
||||
ENUMERATE_THIRTY,
|
||||
ENUMERATE_FOURTY,
|
||||
ENUMERATE_FIFTY,
|
||||
ENUMERATE_SIXTY,
|
||||
ENUMERATE_SEVENTY,
|
||||
ENUMERATE_EIGHTY,
|
||||
ENUMERATE_NINETY
|
||||
};
|
||||
|
||||
static NUMBER_SPEECH_DESC melnorme_numbers_english =
|
||||
{
|
||||
5, /* NumDigits */
|
||||
{
|
||||
{ /* 1000-999999 */
|
||||
1000, /* Divider */
|
||||
0, /* Subtrahend */
|
||||
NULL, /* StrDigits - recurse */
|
||||
NULL, /* Names - not used */
|
||||
ENUMERATE_THOUSAND /* CommonIndex */
|
||||
},
|
||||
{ /* 100-999 */
|
||||
100, /* Divider */
|
||||
0, /* Subtrahend */
|
||||
melnorme_digit_names, /* StrDigits */
|
||||
NULL, /* Names - not used */
|
||||
ENUMERATE_HUNDRED /* CommonIndex */
|
||||
},
|
||||
{ /* 20-99 */
|
||||
10, /* Divider */
|
||||
0, /* Subtrahend */
|
||||
melnorme_tens_names, /* StrDigits */
|
||||
NULL, /* Names - not used */
|
||||
0 /* CommonIndex - not used */
|
||||
},
|
||||
{ /* 10-19 */
|
||||
1, /* Divider */
|
||||
10, /* Subtrahend */
|
||||
melnorme_teen_names, /* StrDigits */
|
||||
NULL, /* Names - not used */
|
||||
0 /* CommonIndex - not used */
|
||||
},
|
||||
{ /* 0-9 */
|
||||
1, /* Divider */
|
||||
0, /* Subtrahend */
|
||||
melnorme_digit_names, /* StrDigits */
|
||||
NULL, /* Names - not used */
|
||||
0 /* CommonIndex - not used */
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
static void DoFirstMeeting (RESPONSE_REF R);
|
||||
|
||||
static COUNT
|
||||
@@ -1047,6 +1135,7 @@ DoSell (RESPONSE_REF R)
|
||||
BYTE num_new_rainbows;
|
||||
UWORD rainbow_mask;
|
||||
SIZE added_credit;
|
||||
int what_to_sell_queued = 0;
|
||||
|
||||
rainbow_mask = MAKE_WORD (
|
||||
GET_GAME_STATE (RAINBOW_WORLD0),
|
||||
@@ -1074,7 +1163,13 @@ DoSell (RESPONSE_REF R)
|
||||
NPCPhrase (SOLD_LIFE_DATA2);
|
||||
NPCPhrase (-(int)added_credit);
|
||||
NPCPhrase (SOLD_LIFE_DATA3);
|
||||
AlienTalkSegue ((COUNT)~0);
|
||||
// queue WHAT_TO_SELL before talk-segue
|
||||
if (num_new_rainbows)
|
||||
{
|
||||
NPCPhrase (WHAT_TO_SELL);
|
||||
what_to_sell_queued = 1;
|
||||
}
|
||||
AlienTalkSegue (1);
|
||||
|
||||
DrawCargoStrings ((BYTE)~0, (BYTE)~0);
|
||||
SleepThread (ONE_SECOND / 2);
|
||||
@@ -1129,7 +1224,8 @@ DoSell (RESPONSE_REF R)
|
||||
|
||||
if (GLOBAL_SIS (TotalBioMass) || num_new_rainbows)
|
||||
{
|
||||
NPCPhrase (WHAT_TO_SELL);
|
||||
if (!what_to_sell_queued)
|
||||
NPCPhrase (WHAT_TO_SELL);
|
||||
|
||||
if (GLOBAL_SIS (TotalBioMass))
|
||||
Response (sell_life_data, DoSell);
|
||||
|
||||
@@ -289,7 +289,21 @@ enum
|
||||
ENUMERATE_FOURTEEN,
|
||||
ENUMERATE_FIFTEEN,
|
||||
ENUMERATE_SIXTEEN,
|
||||
END_LIST_WITH_AND
|
||||
END_LIST_WITH_AND,
|
||||
ENUMERATE_ZERO,
|
||||
ENUMERATE_SEVENTEEN,
|
||||
ENUMERATE_EIGHTEEN,
|
||||
ENUMERATE_NINETEEN,
|
||||
ENUMERATE_TWENTY,
|
||||
ENUMERATE_THIRTY,
|
||||
ENUMERATE_FOURTY,
|
||||
ENUMERATE_FIFTY,
|
||||
ENUMERATE_SIXTY,
|
||||
ENUMERATE_SEVENTY,
|
||||
ENUMERATE_EIGHTY,
|
||||
ENUMERATE_NINETY,
|
||||
ENUMERATE_HUNDRED,
|
||||
ENUMERATE_THOUSAND
|
||||
};
|
||||
|
||||
#endif /* _STRINGS_H */
|
||||
|
||||
@@ -89,6 +89,7 @@ static LOCDATA mycon_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static BYTE MadeChoice = 0;
|
||||
|
||||
@@ -148,6 +148,7 @@ static LOCDATA orz_desc =
|
||||
8, 8, /* FrameRate */
|
||||
10, ONE_SECOND * 3 / 8, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -77,6 +77,7 @@ static LOCDATA pkunk_desc =
|
||||
8, 20, /* FrameRate */
|
||||
10, ONE_SECOND / 2, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static BOOLEAN
|
||||
|
||||
@@ -170,6 +170,7 @@ static LOCDATA yehat_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -133,6 +133,7 @@ static LOCDATA shofixti_desc =
|
||||
6, 0, /* FrameRate */
|
||||
8, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static RESPONSE_REF shofixti_name;
|
||||
|
||||
@@ -134,6 +134,21 @@ static LOCDATA slylandro_desc =
|
||||
(1 << 10) | (1 << 11), /* BlockMask */
|
||||
},
|
||||
},
|
||||
{ /* AlienTransitionDesc - empty */
|
||||
0, /* StartIndex */
|
||||
0, /* NumFrames */
|
||||
0, /* AnimFlags */
|
||||
0, 0, /* FrameRate */
|
||||
0, 0, /* RestartRate */
|
||||
},
|
||||
{ /* AlienTalkDesc - empty */
|
||||
0, /* StartIndex */
|
||||
0, /* NumFrames */
|
||||
0, /* AnimFlags */
|
||||
0, 0, /* FrameRate */
|
||||
0, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -85,6 +85,21 @@ static LOCDATA slylandro_desc =
|
||||
(1 << 2) /* BlockMask */
|
||||
},
|
||||
},
|
||||
{ /* AlienTransitionDesc - empty */
|
||||
0, /* StartIndex */
|
||||
0, /* NumFrames */
|
||||
0, /* AnimFlags */
|
||||
0, 0, /* FrameRate */
|
||||
0, 0, /* RestartRate */
|
||||
},
|
||||
{ /* AlienTalkDesc - empty */
|
||||
0, /* StartIndex */
|
||||
0, /* NumFrames */
|
||||
0, /* AnimFlags */
|
||||
0, 0, /* FrameRate */
|
||||
0, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static RESPONSE_REF threat = 0,
|
||||
|
||||
@@ -149,6 +149,21 @@ static LOCDATA spahome_desc =
|
||||
(1 << 12), /* BlockMask */
|
||||
},
|
||||
},
|
||||
{ /* AlienTransitionDesc - empty */
|
||||
0, /* StartIndex */
|
||||
0, /* NumFrames */
|
||||
0, /* AnimFlags */
|
||||
0, 0, /* FrameRate */
|
||||
0, 0, /* RestartRate */
|
||||
},
|
||||
{ /* AlienTalkDesc - empty */
|
||||
0, /* StartIndex */
|
||||
0, /* NumFrames */
|
||||
0, /* AnimFlags */
|
||||
0, 0, /* FrameRate */
|
||||
0, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -101,7 +101,6 @@ static LOCDATA spathi_desc =
|
||||
ONE_SECOND, ONE_SECOND * 3, /* RestartRate */
|
||||
},
|
||||
},
|
||||
#ifdef NEVER
|
||||
{
|
||||
0, /* StartIndex */
|
||||
0, /* NumFrames */
|
||||
@@ -109,14 +108,24 @@ static LOCDATA spathi_desc =
|
||||
0, 0, /* FrameRate */
|
||||
0, 0, /* RestartRate */
|
||||
},
|
||||
{
|
||||
#ifdef NEVER
|
||||
{ /* AlienTalkDesc */
|
||||
29, /* StartIndex */
|
||||
5, /* NumFrames */
|
||||
0, /* AnimFlags */
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
#else
|
||||
{ /* AlienTalkDesc - empty */
|
||||
0, /* StartIndex */
|
||||
0, /* NumFrames */
|
||||
0, /* AnimFlags */
|
||||
0, 0, /* FrameRate */
|
||||
0, 0, /* RestartRate */
|
||||
},
|
||||
#endif /* NEVER */
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -130,6 +130,7 @@ static LOCDATA commander_desc =
|
||||
12, 8, /* FrameRate */
|
||||
14, 10, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static DWORD CurBulletinMask;
|
||||
|
||||
@@ -80,6 +80,7 @@ static LOCDATA supox_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -164,6 +164,7 @@ static LOCDATA syreen_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -172,6 +172,7 @@ static LOCDATA talkpet_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
#define NUM_STROBES 10
|
||||
|
||||
@@ -113,6 +113,7 @@ static LOCDATA thradd_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static int
|
||||
|
||||
@@ -175,6 +175,7 @@ static LOCDATA umgah_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -100,6 +100,7 @@ static LOCDATA urquan_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -166,6 +166,7 @@ static LOCDATA utwig_desc =
|
||||
6, 6, /* FrameRate */
|
||||
14, ONE_SECOND / 2, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -172,6 +172,7 @@ static LOCDATA vux_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -170,6 +170,7 @@ static LOCDATA yehat_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
static void
|
||||
|
||||
@@ -89,6 +89,7 @@ static LOCDATA zoqfot_desc =
|
||||
8, 0, /* FrameRate */
|
||||
10, 0, /* RestartRate */
|
||||
},
|
||||
NULL_PTR, /* AlienNumberSpeech - none */
|
||||
};
|
||||
|
||||
enum
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
#include "commglue.h"
|
||||
#include "libs/sound/trackplayer.h"
|
||||
#include <stdarg.h>
|
||||
#include <assert.h>
|
||||
|
||||
int NPCNumberPhrase (int number, UNICODE **ptrack);
|
||||
|
||||
void
|
||||
NPCPhrase (int index)
|
||||
@@ -61,7 +64,14 @@ NPCPhrase (int index)
|
||||
if (index < 0)
|
||||
{
|
||||
if (index > UNREASONABLE_NUMBER)
|
||||
{
|
||||
if (CommData.AlienNumberSpeech)
|
||||
{
|
||||
NPCNumberPhrase (-index, NULL);
|
||||
return;
|
||||
}
|
||||
sprintf (numbuf, "%d", -index);
|
||||
}
|
||||
else
|
||||
{
|
||||
COUNT i;
|
||||
@@ -97,6 +107,110 @@ NPCPhrase (int index)
|
||||
SpliceTrack (pClip, pStr, pTimeStamp);
|
||||
}
|
||||
|
||||
int
|
||||
NPCNumberPhrase (int number, UNICODE **ptrack)
|
||||
{
|
||||
#define MAX_NUMBER_TRACKS 20
|
||||
NUMBER_SPEECH speech = CommData.AlienNumberSpeech;
|
||||
COUNT i;
|
||||
int queued = 0;
|
||||
int toplevel = 0;
|
||||
UNICODE *TrackNames[MAX_NUMBER_TRACKS];
|
||||
UNICODE numbuf[32];
|
||||
|
||||
if (!speech)
|
||||
return 0;
|
||||
|
||||
if (!ptrack)
|
||||
{
|
||||
toplevel = 1;
|
||||
sprintf (numbuf, "%d", number);
|
||||
ptrack = TrackNames;
|
||||
}
|
||||
|
||||
for (i = 0; i < speech->NumDigits; ++i)
|
||||
{
|
||||
SPEECH_DIGIT* dig = speech->Digits + i;
|
||||
int quot;
|
||||
|
||||
quot = number / dig->Divider;
|
||||
|
||||
if (quot == 0)
|
||||
continue;
|
||||
quot -= dig->Subtrahend;
|
||||
if (quot < 0)
|
||||
continue;
|
||||
|
||||
if (dig->StrDigits)
|
||||
{
|
||||
COUNT index;
|
||||
|
||||
assert (quot < 10);
|
||||
index = dig->StrDigits[quot];
|
||||
if (index == 0)
|
||||
continue;
|
||||
index -= 1;
|
||||
|
||||
*ptrack++ = GetStringSoundClip (SetAbsStringTableIndex (
|
||||
CommData.ConversationPhrases, index
|
||||
));
|
||||
queued++;
|
||||
}
|
||||
else
|
||||
{
|
||||
int ctracks = NPCNumberPhrase (quot, ptrack);
|
||||
ptrack += ctracks;
|
||||
queued += ctracks;
|
||||
}
|
||||
|
||||
if (dig->Names != 0)
|
||||
{
|
||||
SPEECH_DIGITNAME* name;
|
||||
|
||||
for (name = dig->Names; name->Divider; ++name)
|
||||
{
|
||||
if (number % name->Divider <= name->MaxRemainder)
|
||||
{
|
||||
*ptrack++ = GetStringSoundClip (
|
||||
SetAbsStringTableIndex (
|
||||
CommData.ConversationPhrases,
|
||||
(COUNT) (name->StrIndex - 1)
|
||||
));
|
||||
queued++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (dig->CommonNameIndex != 0)
|
||||
{
|
||||
*ptrack++ = GetStringSoundClip (SetAbsStringTableIndex (
|
||||
CommData.ConversationPhrases,
|
||||
(COUNT) (dig->CommonNameIndex - 1)
|
||||
));
|
||||
queued++;
|
||||
}
|
||||
|
||||
number %= dig->Divider;
|
||||
}
|
||||
|
||||
if (toplevel)
|
||||
{
|
||||
if (queued == 0)
|
||||
{ // nothing queued, say "zero"
|
||||
*ptrack++ = GetStringSoundClip (SetAbsStringTableIndex (
|
||||
CommData.ConversationPhrases,
|
||||
speech->Digits[speech->NumDigits - 1].StrDigits[0]
|
||||
));
|
||||
|
||||
}
|
||||
*ptrack++ = NULL; // term
|
||||
|
||||
SpliceMultiTrack (TrackNames, numbuf);
|
||||
}
|
||||
|
||||
return queued;
|
||||
}
|
||||
|
||||
void
|
||||
GetAllianceName (UNICODE *buf, RESPONSE_REF name_1)
|
||||
{
|
||||
|
||||
@@ -49,6 +49,64 @@ typedef ANIMATION_DESC *PANIMATION_DESC;
|
||||
|
||||
#define MAX_ANIMATIONS 20
|
||||
|
||||
// general numbers-speech generator info
|
||||
// should accomodate most common base-10 languages
|
||||
// many languages require various plural forms
|
||||
// for digit names like "hundred"
|
||||
// possibly needs reworking for others
|
||||
typedef struct
|
||||
{
|
||||
// an array of these structs must be in ascending remainder order
|
||||
// terminate the array with Divider == 0
|
||||
|
||||
// digit divider, i.e. 1, 10, 100, etc.
|
||||
int Divider;
|
||||
// maximum remainder for this name
|
||||
// name will be used if Number % Divider <= MaxRemainder
|
||||
int MaxRemainder;
|
||||
// string table index for this name
|
||||
// i.e. "hundred" in English
|
||||
COUNT StrIndex;
|
||||
} SPEECH_DIGITNAME;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
// digit divider, i.e. 1, 10, 100, etc.
|
||||
int Divider;
|
||||
// digit sub, i.e. 10 for teens
|
||||
// subtracted from the value to get an index into StrDigits
|
||||
int Subtrahend;
|
||||
// ptr to 10 indices for this digit
|
||||
// index is string table ptr when > 0
|
||||
// is invalid (should not happen) or
|
||||
// is a a 'skip digit' indicator when == 0
|
||||
// StrDigits can be NULL, in which case
|
||||
// the value is interpreted recursively
|
||||
COUNT *StrDigits;
|
||||
// digit Names, can be NULL, in which case
|
||||
// CommonNameIndex is used
|
||||
SPEECH_DIGITNAME *Names;
|
||||
// common digit name string table index
|
||||
// i.e. "hundred" in English
|
||||
COUNT CommonNameIndex;
|
||||
} SPEECH_DIGIT;
|
||||
|
||||
// this accomodates up to "billions" in english
|
||||
#define MAX_SPEECH_DIGITS 7
|
||||
|
||||
typedef struct
|
||||
{
|
||||
// slots used in Digits array
|
||||
COUNT NumDigits;
|
||||
// slots for each digit in numbers
|
||||
// teens is exception
|
||||
// 0-9, 10-19, ..20-90, ..100-900, etc.
|
||||
SPEECH_DIGIT Digits[MAX_SPEECH_DIGITS];
|
||||
} NUMBER_SPEECH_DESC;
|
||||
typedef NUMBER_SPEECH_DESC *PNUMBER_SPEECH_DESC;
|
||||
#define NUMBER_SPEECH_DESCPTR PNUMBER_SPEECH_DESC
|
||||
typedef NUMBER_SPEECH_DESC *NUMBER_SPEECH;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void (*init_encounter_func) (void);
|
||||
@@ -69,6 +127,7 @@ typedef struct
|
||||
ANIMATION_DESC AlienTransitionDesc;
|
||||
ANIMATION_DESC AlienTalkDesc;
|
||||
|
||||
NUMBER_SPEECH AlienNumberSpeech;
|
||||
TEXT AlienTextTemplate;
|
||||
} LOCDATA;
|
||||
typedef LOCDATA *PLOCDATA;
|
||||
|
||||
Reference in New Issue
Block a user