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

ArrayOps() protected method

protected ArrayOps ( ) : Statement
return Statement
        protected override Statement ArrayOps()
        {
            var subOp = ReadByte();
            var array = ReadWord();

            var exp = new MethodInvocation("ArrayOps");

            switch (subOp)
            {
                case 0x14:               // SO_ASSIGN_STRING
                    {
                        var index = Pop();
                        var text = ReadCharacters();
                        exp = new MethodInvocation(new MemberAccess(exp, "SetString")).AddArguments(array.ToLiteral(), index, text);
                    }
                    break;
                case 0x15:               // SO_ASSIGN_INT_LIST
                    {
                        var b = Pop();
                        var c = Pop();
                        var d = ReadVariable(array);
                        exp = new MethodInvocation(new MemberAccess(exp, "SetInt")).AddArguments(array.ToLiteral(), d, b, c);
                    }
                    break;
                case 0x16:               // SO_ASSIGN_2DIM_LIST
                    {
                        var b = Pop();
                        var len = GetStackList(128);
                        var d = ReadVariable(array);
                        var c = Pop();
                        exp = new MethodInvocation(new MemberAccess(exp, "SetInt2D")).AddArguments(array.ToLiteral(), d, b, c, len);
                    }
                    break;
                default:
                    throw new NotSupportedException(string.Format("o6_arrayOps: default case {0} (array {1})", subOp, array));
            }
            return exp.ToStatement();
        }