MessageVariant CreateVariant() { MessageVariant variant = new MessageVariant(); variant.tokens = new List <TextFile.Token>(); return(variant); }
/// <summary> /// Load message contents to tokens and split variants. /// </summary> /// <param name="id">ID of message.</param> /// <param name="source">Array of source lines in message.</param> public void LoadMessage(int id, string[] source) { const string splitToken = "<--->"; const string centerToken = "<ce>"; this.id = id; // Read through message lines and create a new variant on split token <---> // Variants are used to provide some randomness to text, e.g. rumours MessageVariant variant = CreateVariant(); for (int i = 0; i < source.Length; i++) { string line = source[i]; // Handle known justification tokens TextFile.Formatting formatting = TextFile.Formatting.Nothing; if (line.StartsWith(centerToken)) { formatting = TextFile.Formatting.JustifyCenter; line = line.Replace(centerToken, ""); } // Trim end of line only and preserve left format if no formatting defined // Otherwise trim whole line and use formatting specified if (formatting == TextFile.Formatting.Nothing) { line = line.TrimEnd(); } else { line = line.Trim(); } // Look for split token to start new variant if (line.Contains(splitToken)) { variants.Add(variant); variant = CreateVariant(); continue; } // TODO: Resolve string variables // Add tokens AddToken(TextFile.Formatting.Text, line, variant.tokens); AddToken(formatting, variant.tokens); } // Add final variant variants.Add(variant); }