public virtual void ToRichText(RichTextBuilder builder)
{
string format;
if (OpcodeFormats.TryGetValue(Opcode, out format))
{
for (int index = 0; index < format.Length; index++)
{
if (format[index] == '{')
{
if (format[index + 1] == '{')
{
index++;
builder.Append('{');
}
else
{
int end;
for (end = ++index; format[end] != '}'; end++)
{
;
}
int operandIndex = int.Parse(format.Substring(index, end - index));
ScriptOperand operand = GetOperand(operandIndex);
operand.ToRichText(builder);
index = end;
}
}
else
{
builder.Append(format[index]);
}
}
}
else
{
if (IsOpcodeDefined)
{
builder.Append(Opcode.ToString());
}
else
{
builder.ForegroundColor = Color.Red;
builder.AppendFormat("{0:X2}", (int)Opcode);
builder.ForegroundColor = Color.Black;
}
foreach (ScriptOperand operand in Operands)
{
builder.Append(" ");
operand.ToRichText(builder);
}
}
}