protected override void PostProcessTrigger(MegaloScriptTrigger root, MegaloScriptTrigger parent, MegaloScriptTriggerBase current)
 {
     if (mCompileReferences)
     {
         mOwnerState.Compile(current.References);
     }
 }
        void ProcessTriggerRecursive(MegaloScriptTrigger root, MegaloScriptTrigger parent, MegaloScriptTriggerBase current)
        {
            bool preprocessed = PreProcessTrigger(root, parent, current);

            if (preprocessed)
            {
                foreach (var handle in current.References)
                {
                    if (handle.Type == MegaloScriptModelObjectType.Action)
                    {
                        var action = Model.Actions[handle.Id];

                        if (action.ProtoData == Database.ForEachAction)
                        {
                            var index_param    = action.GetArgument <MegaloScriptIndexValue>(Model, 0);
                            int trigger_index  = index_param.Value;
                            var recurse_parent = current as MegaloScriptTrigger ?? parent;
                            ProcessTriggerRecursive(root, recurse_parent, Model.Triggers[trigger_index]);
                        }
                        else if (action.ProtoData == Database.BeginAction)
                        {
                            var index_param   = action.GetArgument <MegaloScriptVirtualTriggerValue>(Model, 0);
                            int trigger_index = index_param.VirtualTriggerHandle.Id;
                            ProcessTriggerRecursive(root, parent, Model.VirtualTriggers[trigger_index]);
                        }
                    }
                }
            }

            PostProcessTrigger(root, parent, current);
        }
Exemple #3
0
            // When processing (decompiling) a Trigger, current is a MegaloScriptTrigger
            // When processing (decompiling) a VirtualTrigger, current will be a MegaloScriptVirtualTrigger
            protected override bool PreProcessTrigger(MegaloScriptTrigger root, MegaloScriptTrigger parent, MegaloScriptTriggerBase current)
            {
                if (current.ObjectType != MegaloScriptModelObjectType.VirtualTrigger && string.IsNullOrEmpty(current.Name))
                {
                    current.Name = string.Format("{0}_InnerLoop{1}", parent.Name, current.Id.ToString());
                }

                return(true);
            }
            protected override bool PreProcessTrigger(MegaloScriptTrigger root, MegaloScriptTrigger parent, MegaloScriptTriggerBase current)
            {
                mCompileReferences = true;

                var trigger = current as MegaloScriptTrigger;

                if (trigger != null)
                {
                    if (!trigger.CommentOut)
                    {
                        mOwnerState.TriggerWriteOrder.Add(current.Id);
                        mOwnerState.TriggerRemappings.Add(current.Id, mNextRemapIndex);
                        mNextRemapIndex++;
                    }
                    else
                    {
                        mCompileReferences = false;
                    }
                }

                return(mCompileReferences);
            }
 protected virtual void PostProcessTrigger(MegaloScriptTrigger root, MegaloScriptTrigger parent, MegaloScriptTriggerBase current)
 {
 }
 // When processing a Trigger, current is a MegaloScriptTrigger
 // When processing a VirtualTrigger, current will be a MegaloScriptVirtualTrigger
 protected virtual bool PreProcessTrigger(MegaloScriptTrigger root, MegaloScriptTrigger parent, MegaloScriptTriggerBase current)
 {
     return(true);
 }