public static int WriteString(IEString stringInfo, TlkFile tlkFile) { var strref = stringInfo.Strref; if (tlkFile != null) { if ((stringInfo.Strref != Common.NewString) && (stringInfo.Strref <= tlkFile.Strings.Count)) { tlkFile.Strings[stringInfo.Strref].Flags = stringInfo.Flags; tlkFile.Strings[stringInfo.Strref].PitchVariance = stringInfo.PitchVariance; tlkFile.Strings[stringInfo.Strref].Sound = stringInfo.Sound; tlkFile.Strings[stringInfo.Strref].Text = stringInfo.Text; tlkFile.Strings[stringInfo.Strref].VolumeVariance = stringInfo.VolumeVariance; } else { // Re-use an existing strref if possible (based only on the text) var existingEntry = tlkFile.Strings.Where(a => a.Text == stringInfo.Text).SingleOrDefault(); if (existingEntry != null) { strref = existingEntry.Strref; } else { strref = tlkFile.Strings.Count + 1; var stringEntry = new StringEntry(); stringEntry.Flags = stringInfo.Flags; stringEntry.PitchVariance = stringInfo.PitchVariance; stringEntry.Sound = stringInfo.Sound; stringEntry.Strref = strref; stringEntry.Text = stringInfo.Text; stringEntry.VolumeVariance = stringInfo.VolumeVariance; tlkFile.Strings.Add(stringEntry); } } } return strref; }
public static IEString ReadString(Int32 strref, TlkFile tlkFile) { var stringInfo = new IEString(); stringInfo.Strref = strref; if (tlkFile != null) { if ((strref <= tlkFile.Strings.Count) && (strref > -1)) { stringInfo.Flags = tlkFile.Strings[strref].Flags; stringInfo.PitchVariance = tlkFile.Strings[strref].PitchVariance; stringInfo.Sound = tlkFile.Strings[strref].Sound; stringInfo.Text = tlkFile.Strings[strref].Text; stringInfo.VolumeVariance = tlkFile.Strings[strref].VolumeVariance; } } return stringInfo; }