#define SCRIPT_TOKEN_LINE_NUMBER "<span class=\"lineNumber\">"
#define SCRIPT_TOKEN_TEXT_START ":</b> "
#define SCRIPT_TOKEN_TEXT_END "</span>"
static String ExtractVoiceScriptLines(String sourceDirectory, String targetDirectory)
{
int i=0;
String tokenLineNumber = String.Format("%s", SCRIPT_TOKEN_LINE_NUMBER);
String tokenTextStart = SCRIPT_TOKEN_TEXT_START;
String tokenTextEnd = SCRIPT_TOKEN_TEXT_END;
while(i < Game.CharacterCount)
{
String prefix = character[i].GetSpeechPrefix();
String scriptPath = String.Format("%s/char%s.html", sourceDirectory, prefix);
if(File.Exists(scriptPath))
{
File* scriptFile = File.Open(scriptPath, eFileRead);
String lineNumberPrefix = prefix;
while(!scriptFile.EOF)
{
String scriptLine = scriptFile.ReadRawLineBack();
int startLineNumberTag = scriptLine.IndexOf(tokenLineNumber);
if(startLineNumberTag != -1)
{
int startLineNumber = scriptLine.IndexOf(lineNumberPrefix);
int endLineNumber = scriptLine.IndexOf("]");
if(startLineNumber > 0 && endLineNumber > 0 && endLineNumber > startLineNumber + lineNumberPrefix.Length)
{
String strLineNumber = scriptLine.Substring(startLineNumber+lineNumberPrefix.Length, endLineNumber - startLineNumber - lineNumberPrefix.Length);
int lineNumber = strLineNumber.AsInt;
//Display("Writing %s%d", prefix, lineNumber);
if(lineNumber>0)
{
String message = "";
String dialogLine = scriptFile.ReadRawLineBack();
int startTextTag = dialogLine.IndexOf(tokenTextStart);
int endTextTag = dialogLine.IndexOf(tokenTextEnd);
if(startTextTag > 0)
{
while(endTextTag == -1 && !scriptFile.EOF)
{
dialogLine = dialogLine.AppendChar(' ');
dialogLine = dialogLine.Append(scriptFile.ReadRawLineBack());
endTextTag = dialogLine.IndexOf(tokenTextEnd);
}
int textLength = endTextTag - startTextTag - tokenTextStart.Length;
if(startTextTag > 0 && endTextTag > 0 && textLength >= 0)
message = dialogLine.Substring(startTextTag+tokenTextStart.Length, textLength);
String linePath = String.Format("%s/%s%d.txt", targetDirectory, prefix, lineNumber);
//Display("Writing line \"%s\" to file %s", message, linePath);
File* lineFile = File.Open(linePath, eFileWrite);
if(lineFile != null)
{
//Display("Writing line \"%s\" to file %s", message, linePath);
lineFile.WriteRawLine(message);
lineFile.Close();
}
else
Display("Couldn't write line \"%s\" to file %s", message, linePath);
}
}
}
}
} // while(!scriptFile.EOF)
scriptFile.Close();
}
i++;
}
}