protected override Expression DecodeParseString(Expression target, bool withActor)
{
var b = ReadByte();
switch (b)
{
case 0xC8: // SO_PRINT_BASEOP
target = new MethodInvocation(new MemberAccess(target, "LoadDefault"));
if (withActor)
{
var actor = Pop();
target = new MethodInvocation(new MemberAccess(target, "Actor")).AddArgument(actor);
}
break;
case 0xC9: // SO_PRINT_END
target = new MethodInvocation(new MemberAccess(target, "SaveDefault"));
break;
case 0xCA: // SO_PRINT_AT
{
var y = Pop();
var x = Pop();
target = new MethodInvocation(new MemberAccess(target, "At")).AddArguments(x, y);
}
break;
case 0xCB: // SO_COLOR
{
var color = Pop();
target = new MethodInvocation(new MemberAccess(target, "Color")).AddArguments(color);
}
break;
case 0xCC: // SO_PRINT_CENTER
target = new MethodInvocation(new MemberAccess(target, "Center"));
break;
case 0xCD: // SO_PRINT_CHARSET Set print character set
target = new MethodInvocation(new MemberAccess(target, "Charset")).AddArgument(Pop());
break;
case 0xCE: // SO_PRINT_LEFT
target = new MethodInvocation(new MemberAccess(target, "Left"));
break;
case 0xCF: // SO_OVERHEAD
target = new MethodInvocation(new MemberAccess(target, "OverHead"));
break;
case 0xD0: // SO_MUMBLE
target = new MethodInvocation(new MemberAccess(target, "Mumble"));
break;
case 0xD1: // SO_TEXTSTRING
target = new MethodInvocation(new MemberAccess(target, "Text")).AddArgument(ReadCharacters());
break;
case 0xD2: // SO_PRINT_WRAP Set print wordwrap
target = new MethodInvocation(new MemberAccess(target, "WordWrap"));
break;
default:
throw new NotSupportedException(string.Format("DecodeParseString: default case 0x{0:X}", b));
}
return target;
}