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

VerbOps() protected method

protected VerbOps ( ) : Statement
return Statement
        protected override Statement VerbOps()
        {
            var subOp = ReadByte();
            if (subOp == 0x96)
            {
                return new BinaryExpression(CurrentVerb, Operator.Assignment, Pop()).ToStatement();
            }
            var verb = (Expression)CurrentVerb;
            switch (subOp)
            {
                case 0x97:      // SO_VERB_NEW New verb
                    verb = new MethodInvocation(new MemberAccess(verb, "New"));
                    break;
                case 0x98:      // SO_VERB_DELETE Delete verb
                    verb = new MethodInvocation(new MemberAccess(verb, "Delete"));
                    break;
                case 0x99:      // SO_VERB_NAME Set verb name
                    {
                        var name = ReadCharacters();
                        verb = new MethodInvocation(new MemberAccess(verb, "SetName")).AddArgument(name);
                    }
                    break;
                case 0x9A:      // SO_VERB_AT Set verb (X,Y) placement
                    {
                        var y = Pop();
                        var x = Pop();
                        verb = new MethodInvocation(new MemberAccess(verb, "At")).AddArguments(x, y);
                    }
                    break;
                case 0x9B:      // SO_VERB_ON Turn verb on
                    verb = new MethodInvocation(new MemberAccess(verb, "On"));
                    break;
                case 0x9C:      // SO_VERB_OFF Turn verb off
                    verb = new MethodInvocation(new MemberAccess(verb, "Off"));
                    break;
                case 0x9D:      // SO_VERB_COLOR Set verb color
                    verb = new MethodInvocation(new MemberAccess(verb, "Color")).AddArgument(Pop());
                    break;
                case 0x9E:      // SO_VERB_HICOLOR Set verb highlighted color
                    verb = new MethodInvocation(new MemberAccess(verb, "HilightedColor")).AddArgument(Pop());
                    break;
                case 0xA0:      // SO_VERB_DIMCOLOR Set verb dimmed (disabled) color
                    verb = new MethodInvocation(new MemberAccess(verb, "DimColor")).AddArgument(Pop());
                    break;
                case 0xA1:      // SO_VERB_DIM
                    verb = new MethodInvocation(new MemberAccess(verb, "Dim"));
                    break;
                case 0xA2:      // SO_VERB_KEY Set keypress to associate with verb
                    verb = new MethodInvocation(new MemberAccess(verb, "Key")).AddArgument(Pop());
                    break;
                case 0xA3:      // SO_VERB_IMAGE Set verb image
                    {
                        var b = Pop();
                        var a = Pop();
                        verb = new MethodInvocation(new MemberAccess(verb, "SetImage")).AddArguments(a, b);
                    }
                    break;
                case 0xA4:      // SO_VERB_NAME_STR Set verb name
                    {
                        var a = Pop();
                        verb = new MethodInvocation(new MemberAccess(verb, "Name")).AddArguments(a, ReadCharacters());
                    }
                    break;
                case 0xA5:      // SO_VERB_CENTER Center verb
                    verb = new MethodInvocation(new MemberAccess(verb, "Center"));
                    break;
                case 0xA6:      // SO_VERB_CHARSET Choose charset for verb
                    verb = new MethodInvocation(new MemberAccess(verb, "Charset")).AddArgument(Pop());
                    break;
                case 0xA7:      // SO_VERB_LINE_SPACING Choose linespacing for verb
                    verb = new MethodInvocation(new MemberAccess(verb, "LineSpacing")).AddArgument(Pop());
                    break;
                default:
                    throw new NotSupportedException(string.Format("VerbOps: default case {0}", subOp));
            }
            return verb.ToStatement();
        }