コード例 #1
0
        /// <summary> initialize the mission. Get all triggers and event listeners </summary>
        internal void Init()
        {
            m_EventListeners = new List <EventListener>(16);
            m_Triggers       = new Trigger[m_Raw.triggers.Length];

            for (int i = 0; i < m_Raw.triggers.Length; i++)
            {
                TriggerRaw tr = m_Raw.triggers[i];
                m_Triggers[i] = new Trigger(m_Raw.triggers[i], this, i);

                List <EventListener> list = new List <EventListener>();
                for (int j = 0; j < tr.events.Length; ++j)
                {
                    EventListener listener = Asm.CreateEventListenerInstance(tr.events[j].classname);

                    if (listener == null)
                    {
                        continue;
                    }

                    listener.Init(m_Triggers[i], tr.events[j]);

                    m_EventListeners.Add(listener);
                    list.Add(listener);
                }
                m_Triggers[i].eventListeners = list;
            }

            // Sort by order
            m_EventListeners.Sort((lhs, rhs) => { return(lhs.order - rhs.order); });
        }
コード例 #2
0
ファイル: DebugCMD.cs プロジェクト: shrubba/planetexplorers
    string CustomEvent(string param)
    {
        param = param.Trim();
        if (string.IsNullOrEmpty(param))
        {
            return("parameters needed");
        }
        string[] ss        = param.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
        string   classname = ss[0];

        ScenarioRTL.EventListener   evt = ScenarioRTL.Asm.CreateEventListenerInstance(classname);
        ScenarioRTL.IO.StatementRaw raw = new ScenarioRTL.IO.StatementRaw();

        if (evt == null)
        {
            return("cannot create statement");
        }

        raw.classname  = classname;
        raw.order      = 0;
        raw.parameters = new ScenarioRTL.IO.ParamRaw(ss.Length - 1);
        for (int i = 1; i < ss.Length; ++i)
        {
            string   paramstr = ss[i];
            string[] nv       = paramstr.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
            if (nv.Length == 2)
            {
                raw.parameters.Set(i - 1, nv[0], nv[1]);
            }
            else
            {
                raw.parameters.Set(i - 1, "null", "0");
            }
        }
        evt.Init(null, raw);
        evt.OnPost += OnCustomEventPost;
        evt.Listen();
        return("[" + classname + "] is listening");
    }