NScumm.Dump.ScriptParser8.DecodeParseString C# (CSharp) Method

DecodeParseString() protected method

protected DecodeParseString ( Expression target, bool withActor ) : Expression
target Expression
withActor bool
return Expression
        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;
        }