コード例 #1
0
ファイル: MHTokenGroup.cs プロジェクト: mcgoober/mheg-dotnet
        public override void Initialise(MHParseNode p, MHEngine engine)
        {
            base.Initialise(p, engine);
            MHParseNode pMovements = p.GetNamedArg(ASN1Codes.C_MOVEMENT_TABLE);

            if (pMovements != null)
            {
                for (int i = 0; i < pMovements.GetArgCount(); i++)
                {
                    MHMovement pMove = new MHMovement();
                    m_MovementTable.Append(pMove);
                    pMove.Initialise(pMovements.GetArgN(i), engine);
                }
            }
            MHParseNode pTokenGrp = p.GetNamedArg(ASN1Codes.C_TOKEN_GROUP_ITEMS);

            if (pTokenGrp != null)
            {
                for (int i = 0; i < pTokenGrp.GetArgCount(); i++)
                {
                    MHTokenGroupItem pToken = new MHTokenGroupItem();
                    m_TokenGrpItems.Append(pToken);
                    pToken.Initialise(pTokenGrp.GetArgN(i), engine);
                }
            }
            MHParseNode pNoToken = p.GetNamedArg(ASN1Codes.C_NO_TOKEN_ACTION_SLOTS);

            if (pNoToken != null)
            {
                for (int i = 0; i < pNoToken.GetArgCount(); i++)
                {
                    MHParseNode      pAct     = pNoToken.GetArgN(i);
                    MHActionSequence pActions = new MHActionSequence();
                    m_NoTokenActionSlots.Append(pActions);
                    // The action slot entry may be NULL.
                    if (pAct.NodeType != MHParseNode.PNNull)
                    {
                        pActions.Initialise(pAct, engine);
                    }
                }
            }
        }
コード例 #2
0
ファイル: MHTokenGroup.cs プロジェクト: mcgoober/mheg-dotnet
 public override void CallActionSlot(int n, MHEngine engine)
 {
     if (m_nTokenPosition == 0)
     { // No slot has the token.
         if (n > 0 && n <= m_NoTokenActionSlots.Size)
         {
             engine.AddActions(m_NoTokenActionSlots.GetAt(n - 1));
         }
     }
     else
     {
         if (m_nTokenPosition > 0 && m_nTokenPosition <= m_TokenGrpItems.Size)
         {
             MHTokenGroupItem pGroup = m_TokenGrpItems.GetAt(m_nTokenPosition - 1);
             if (n > 0 && n <= pGroup.ActionSlots.Size)
             {
                 engine.AddActions(pGroup.ActionSlots.GetAt(n - 1));
             }
         }
     }
 }