Ejemplo n.º 1
0
        public override void Initialise(MHParseNode p, MHEngine engine)
        {
            base.Initialise(p, engine);
            // Original value should be an object reference.
            MHParseNode pInitial = p.GetNamedArg(ASN1Codes.C_ORIGINAL_VALUE);
            // and this should be a ObjRef node.
            MHParseNode pArg = pInitial.GetNamedArg(ASN1Codes.C_OBJECT_REFERENCE);

            m_OriginalValue.Initialise(pArg.GetArgN(0), engine);
        }
Ejemplo n.º 2
0
        public override void Initialise(MHParseNode p, MHEngine engine)
        {
            base.Initialise(p, engine);                   // Target
            m_Succeeded.Initialise(p.GetArgN(1), engine); // Call/fork succeeded flag
            // Arguments.
            MHParseNode args = p.GetArgN(2);

            for (int i = 0; i < args.GetSeqCount(); i++)
            {
                MHParameter pParm = new MHParameter();
                m_Parameters.Append(pParm);
                pParm.Initialise(args.GetSeqN(i), engine);
            }
        }
Ejemplo n.º 3
0
        public override void Initialise(MHParseNode p, MHEngine engine)
        {
            base.Initialise(p, engine); // Target
            m_Succeeded.Initialise(p.GetArgN(1), engine);
            MHParseNode pVarSeq = p.GetArgN(2);

            for (int i = 0; i < pVarSeq.GetSeqCount(); i++)
            {
                MHObjectRef pVar = new MHObjectRef();
                m_Variables.Append(pVar);
                pVar.Initialise(pVarSeq.GetSeqN(i), engine);
            }
            m_FileName.Initialise(p.GetArgN(3), engine);
        }
Ejemplo n.º 4
0
 public void Initialise(MHParseNode p, MHEngine engine)
 {
     // A pair consisting of an object reference and an optional action slot sequence.
     m_Object.Initialise(p.GetSeqN(0), engine);
     if (p.GetSeqCount() > 1)
     {
         MHParseNode pSlots = p.GetSeqN(1);
         for (int i = 0; i < pSlots.GetSeqCount(); i++)
         {
             MHParseNode      pAct     = pSlots.GetSeqN(i);
             MHActionSequence pActions = new MHActionSequence();
             m_ActionSlots.Append(pActions);
             // The action slot entry may be NULL.
             if (pAct.NodeType != MHParseNode.PNNull)
             {
                 pActions.Initialise(pAct, engine);
             }
         }
     }
 }
Ejemplo n.º 5
0
        public override void Initialise(MHParseNode p, MHEngine engine)
        {
            base.Initialise(p, engine);
            // Original box size - two integer arguments.
            MHParseNode pOriginalBox = p.GetNamedArg(ASN1Codes.C_ORIGINAL_BOX_SIZE);
            if (pOriginalBox == null) p.Failure("OriginalBoxSize missing");
            m_nOriginalBoxWidth = pOriginalBox.GetArgN(0).GetIntValue();
            m_nOriginalBoxHeight = pOriginalBox.GetArgN(1).GetIntValue();

            // Original position - two integer arguments.  Optional
            MHParseNode pOriginalPos = p.GetNamedArg(ASN1Codes.C_ORIGINAL_POSITION);
            if (pOriginalPos != null) 
            {
                m_nOriginalPosX = pOriginalPos.GetArgN(0).GetIntValue();
                m_nOriginalPosY = pOriginalPos.GetArgN(1).GetIntValue();
            }

            // OriginalPalette ref - optional. 
            MHParseNode pOriginalPaletteRef = p.GetNamedArg(ASN1Codes.C_ORIGINAL_PALETTE_REF);
            if (pOriginalPaletteRef != null) m_OriginalPaletteRef.Initialise(pOriginalPaletteRef.GetArgN(0), engine);
        }
Ejemplo n.º 6
0
 public override void Initialise(MHParseNode p, MHEngine engine)
 {
     base.Initialise(p, engine);
     m_ResultVar.Initialise(p.GetArgN(1), engine);
 }
Ejemplo n.º 7
0
 public override void Initialise(MHParseNode p, MHEngine engine)
 {
     base.Initialise(p, engine);
     m_Feature.Initialise(p.GetArgN(1), engine);
     m_Answer.Initialise(p.GetArgN(2), engine);
 }
Ejemplo n.º 8
0
        // Set this up from the parse tree.
        public override void Initialise(MHParseNode p, MHEngine engine)
        {
            base.Initialise(p, engine);
            // The link condition is encoded differently in the binary and text representations.
            MHParseNode pLinkCond = p.GetNamedArg(ASN1Codes.C_LINK_CONDITION);

            if (pLinkCond != null)
            {                                                           // Only in binary.
                m_EventSource.Initialise(pLinkCond.GetArgN(0), engine); // Event source
                m_nEventType = pLinkCond.GetArgN(1).GetEnumValue();     // Event type
                // The event data is optional and type-dependent.
                if (pLinkCond.GetArgCount() >= 3)
                {
                    MHParseNode pEventData = pLinkCond.GetArgN(2);
                    switch (pEventData.NodeType)
                    {
                    case MHParseNode.PNBool: m_EventData.Bool = pEventData.GetBoolValue(); m_EventData.Type = MHUnion.U_Bool; break;

                    case MHParseNode.PNInt: m_EventData.Int = pEventData.GetIntValue(); m_EventData.Type = MHUnion.U_Int; break;

                    case MHParseNode.PNString: pEventData.GetStringValue(m_EventData.String); m_EventData.Type = MHUnion.U_String; break;

                    default: pEventData.Failure("Unknown type of event data"); break;
                    }
                }
            }
            else
            {                                                                       // Only in text.
                MHParseNode pEventSource = p.GetNamedArg(ASN1Codes.P_EVENT_SOURCE); // Event source
                if (pEventSource == null)
                {
                    p.Failure("Missing :EventSource");
                }
                m_EventSource.Initialise(pEventSource.GetArgN(0), engine);
                MHParseNode pEventType = p.GetNamedArg(ASN1Codes.P_EVENT_TYPE); // Event type
                if (pEventType == null)
                {
                    p.Failure("Missing :EventType");
                }
                m_nEventType = pEventType.GetArgN(0).GetEnumValue();
                MHParseNode pEventData = p.GetNamedArg(ASN1Codes.P_EVENT_DATA); // Event data - optional
                if (pEventData != null)
                {
                    MHParseNode pEventDataArg = pEventData.GetArgN(0);
                    switch (pEventDataArg.NodeType)
                    {
                    case MHParseNode.PNBool: m_EventData.Bool = pEventDataArg.GetBoolValue(); m_EventData.Type = MHUnion.U_Bool; break;

                    case MHParseNode.PNInt: m_EventData.Int = pEventDataArg.GetIntValue(); m_EventData.Type = MHUnion.U_Int; break;

                    case MHParseNode.PNString: pEventDataArg.GetStringValue(m_EventData.String); m_EventData.Type = MHUnion.U_String; break;

                    default: pEventDataArg.Failure("Unknown type of event data"); break;
                    }
                }
            }

            MHParseNode pLinkEffect = p.GetNamedArg(ASN1Codes.C_LINK_EFFECT);

            m_LinkEffect.Initialise(pLinkEffect, engine);
        }