Example #1
0
        MessageVariant CreateVariant()
        {
            MessageVariant variant = new MessageVariant();

            variant.tokens = new List <TextFile.Token>();

            return(variant);
        }
Example #2
0
        /// <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);
        }