/// <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); } }