示例#1
0
    private static VTrigger CreateTrigger(TriggerType type)
    {
        int      num      = TriggerManager.assign_trigger_id();
        VTrigger vTrigger = null;

        switch (type)
        {
        case TriggerType.GameTrigger:
            vTrigger = new GameTrigger(num);
            break;

        case TriggerType.UnitTrigger:
            vTrigger = new UnitTrigger(num);
            break;

        case TriggerType.TimerTrigger:
            vTrigger = new TimerTrigger(num);
            break;
        }
        if (vTrigger != null)
        {
            if (!TriggerManager.triggers.ContainsKey(num))
            {
                TriggerManager.triggers.Add(num, vTrigger);
            }
            else
            {
                TriggerManager.triggers[num] = vTrigger;
            }
        }
        return(vTrigger);
    }
示例#2
0
 private static void TriggerRegisterUnitEvent(UnitTrigger trigger, UnitEvent e, int u_id)
 {
     trigger.trigger_event = (int)e;
     trigger.trigger_type  = 2;
     trigger.unit_id       = u_id;
     TriggerManager.AddUnitEvent(trigger);
 }
示例#3
0
 private static void AddUnitEvent(UnitTrigger trigger)
 {
     if (!TriggerManager.character_callbacks.ContainsKey(trigger.trigger_event))
     {
         TriggerManager.character_callbacks.Add(trigger.trigger_event, new List <UnitTrigger>());
     }
     TriggerManager.character_callbacks[trigger.trigger_event].Add(trigger);
 }
示例#4
0
 private static void TriggerRegisterUnitEvent(UnitTrigger trigger, UnitEvent e, int teamtype, string u_tag)
 {
     trigger.trigger_event = (int)e;
     trigger.trigger_type  = 2;
     trigger.teamtype      = teamtype;
     trigger.unit_tag      = u_tag;
     TriggerManager.AddUnitEvent(trigger);
 }
示例#5
0
    public static VTrigger CreateUnitEventTrigger(UnitEvent e, TriggerCondition condition, TriggerAction action, int u_id)
    {
        UnitTrigger unitTrigger = (UnitTrigger)TriggerManager.CreateTrigger(TriggerType.UnitTrigger);

        TriggerManager.TriggerRegisterUnitEvent(unitTrigger, e, u_id);
        TriggerManager.TriggerAddCondition(unitTrigger, condition);
        TriggerManager.TriggerAddAction(unitTrigger, action);
        return(unitTrigger);
    }
示例#6
0
    public void SendUnitStateEvent(UnitEvent e, Units tu, Units tt = null, BuffVo buff = null)
    {
        object obj = TriggerManager.unitLockObject;

        lock (obj)
        {
            if (TriggerManager.character_callbacks.ContainsKey((int)e))
            {
                List <UnitTrigger> list = TriggerManager.character_callbacks[(int)e];
                if (list != null)
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        UnitTrigger unitTrigger = list[i];
                        if (unitTrigger != null && tu != null)
                        {
                            TriggerManager.m_unit_trigger = unitTrigger;
                            TriggerManager.m_trigger_unit = tu;
                            TriggerManager.m_target_unit  = tt;
                            if (unitTrigger.unit_id == tu.unique_id)
                            {
                                this.doTriggerAction(unitTrigger);
                            }
                            else if (unitTrigger.unit_id == 0)
                            {
                                if (unitTrigger.unit_tag != null && unitTrigger.unit_tag.Equals(tu.tag) && unitTrigger.teamtype == tu.teamType)
                                {
                                    this.doTriggerAction(unitTrigger);
                                }
                                else if (unitTrigger.unit_tag == null && unitTrigger.teamtype == tu.teamType)
                                {
                                    this.doTriggerAction(unitTrigger);
                                }
                                else if (unitTrigger.unit_tag != null && unitTrigger.unit_tag.Equals(tu.tag) && unitTrigger.teamtype == -1)
                                {
                                    this.doTriggerAction(unitTrigger);
                                }
                            }
                        }
                    }
                }
            }
        }
    }