Пример #1
0
        private void Run()
        {
            // Assume only one block with 'when flag clicked' for now
            IBlock mainBlock = null;

            foreach (IBlock b in controller.GetTopLevelBlocks())
            {
                if (b is BlockStack)
                {
                    BlockStack stack = ((BlockStack)b);
                    IBlock     s     = stack[0];
                    if (s is InvokationBlock)
                    {
                        InvokationBlock ib = (InvokationBlock)s;
                        if (ib.Text == "when _flag_ clicked")
                        {
                            mainBlock = b;
                        }
                    }
                    else if (s is ProcDefBlock)
                    {
                        ProcDefBlock pdb = (ProcDefBlock)s;
                        Method       m   = compiler.DefineMethod(pdb, stack);
                        vm.DefineMethod(pdb.GetMethodString(), m);
                    }
                }
            }
            if (mainBlock != null)
            {
                Run(mainBlock);
            }
        }
Пример #2
0
        public void DefineNewProcFromFile(ProcDefBlock proc, string category)
        {
            string methodName = proc.GetMethodString();

            DataType[] argTypes = proc.GetArgTypes();
            blockSpace.RegisterMethod(methodName, BlockAttributes.Stack, DataType.Script, argTypes, false);
            palette.AddTool(blockSpace,
                            tool("nobmp|" + methodName, category, argTypes.Select(t => blockSpace.Default(t)).ToArray()));
        }
Пример #3
0
        public void DefineNewProc(ProcDefBlock proc, string category)
        {
            string methodName = proc.GetMethodString();

            DataType[] argTypes = proc.GetArgTypes();
            blockSpace.RegisterMethod(methodName, BlockAttributes.Stack, DataType.Script, argTypes, false);
            palette.AddTool(blockSpace,
                            tool("nobmp|" + methodName, category, argTypes.Select(t => blockSpace.Default(t)).ToArray()));

            Random r      = new Random();
            int    thirdX = canvasSize.Width / 3;
            int    thirdY = canvasSize.Height / 3;
            int    x      = thirdX + r.Next(thirdX);
            int    y      = thirdY + r.Next(thirdY);

            AddTopLevel(proc, new Point(x, y));
        }
Пример #4
0
        public void DefineNewProc(ProcDefBlock proc, string category)
        {
            string methodName = proc.GetMethodString();
            DataType[] argTypes = proc.GetArgTypes();
            blockSpace.RegisterMethod(methodName, BlockAttributes.Stack, DataType.Script, argTypes, false);
            palette.AddTool(blockSpace,
                tool("nobmp|"+methodName, category, argTypes.Select(t=>blockSpace.Default(t)).ToArray()));

            Random r = new Random();
            int thirdX = canvasSize.Width / 3;
            int thirdY = canvasSize.Height / 3;
            int x = thirdX + r.Next(thirdX);
            int y = thirdY + r.Next(thirdY);
            AddTopLevel(proc, new Point(x, y));
        }
Пример #5
0
 public void DefineNewProcFromFile(ProcDefBlock proc, string category)
 {
     string methodName = proc.GetMethodString();
     DataType[] argTypes = proc.GetArgTypes();
     blockSpace.RegisterMethod(methodName, BlockAttributes.Stack, DataType.Script, argTypes, false);
     palette.AddTool(blockSpace,
         tool("nobmp|" + methodName, category, argTypes.Select(t => blockSpace.Default(t)).ToArray()));
 }