コード例 #1
0
    private void Execute(BBMacro macro, out BBLoopAction action)
    {
        action = BBLoopAction.Continue;
        switch (macro.macroType)
        {
        case BBMacroType.If:
            BBIfMacro ifmacro = macro as BBIfMacro;
            BBMacro   future  = null;
            if (ifmacro.Test(out future))
            {
                BBMacroPlayer inserted = new BBMacroPlayer(mConfig, mModuleProxy);
                inserted.Set(future);
                inserted.Play();
                mInterrupts.Add(inserted);
            }
            else
            {
                action = ifmacro.action;
            }
            break;

        case BBMacroType.Series:
            BBSeriesMacro srmacro = macro as BBSeriesMacro;
            foreach (BBMacro item in srmacro.items)
            {
                BBMacroPlayer inserted = new BBMacroPlayer(mConfig, mModuleProxy);
                inserted.Set(item);
                mSeriesQueue.Enqueue(inserted);
            }
            break;

        case BBMacroType.Parallel:
            BBParallelMacro prmacro = macro as BBParallelMacro;
            foreach (BBMacro item in prmacro.items)
            {
                BBMacroPlayer inserted = new BBMacroPlayer(mConfig, mModuleProxy);
                inserted.Set(item);
                inserted.Play();
                mInterrupts.Add(inserted);
            }
            break;

        default:
            mEmulator.Set(Expand(macro));
            break;
        }
    }