Exemple #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="NetworkText"/> class with the specified
        /// <paramref name="mode"/>, <paramref name="format"/>, and <paramref name="substitutions"/>.
        /// </summary>
        /// <param name="mode">The network text mode.</param>
        /// <param name="format">The format.</param>
        /// <param name="substitutions">The substitutions.</param>
        /// <exception cref="ArgumentException">
        /// <paramref name="substitutions"/> contains <see langword="null"/> or is non-empty and <paramref name="mode"/>
        /// is <see cref="NetworkTextMode.Literal"/>.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="format"/> or <paramref name="substitutions"/> are <see langword="null"/>.
        /// </exception>
        public NetworkText(NetworkTextMode mode, string format, params NetworkText[] substitutions)
        {
            if (format is null)
            {
                throw new ArgumentNullException(nameof(format));
            }

            if (substitutions is null)
            {
                throw new ArgumentNullException(nameof(substitutions));
            }

            if (substitutions.Contains(null !))
            {
                throw new ArgumentException("Substitutions cannot contain null", nameof(substitutions));
            }

            if (mode == NetworkTextMode.Literal && substitutions.Length > 0)
            {
                throw new ArgumentException(
                          "Substitutions cannot be non-empty for literal mode", nameof(substitutions));
            }

            Mode          = mode;
            Format        = format;
            Substitutions = substitutions;
        }
 public NetworkText(NetworkTextMode mode, string text, params object[] args)
 {
     _mode = mode;
     _text = text ?? string.Empty;
     _args = new NetworkText[args.Length];
     for (var i = 0; i < args.Length; ++i)
     {
         _args[i] = args[i] as NetworkText ?? new NetworkText(NetworkTextMode.Literal, args[i].ToString());
     }
 }
 public void OnDeserialize(BinaryReader reader)
 {
     mode = (NetworkTextMode)reader.ReadByte();
     text = reader.ReadString();
     if (mode == NetworkTextMode.Literal)
     {
         return;
     }
     substitution = new NetworkText[reader.ReadByte()];
     for (int index = 0; index < substitution.Length; ++index)
     {
         substitution[index] = new NetworkText();
         substitution[index].OnDeserialize(reader);
     }
 }