/// <summary> /// 创建触发器, /// </summary> private ITriggerItem CreateTrigger(WarMsg_Type care, int npcId, int trCfgNum, RtBufData buff) { int id = 0; ITriggerItem one = null; List <ITriggerItem> idleList = null; if (OnIdle.TryGetValue(care, out idleList)) { one = idleList.Count > 0 ? idleList[0] : null; if (one == null) { //Create the new one one = CreateNewTrigger(care, trCfgNum); } else { idleList.RemoveAt(0); TriggerConfigData cfg = null; if (trCfgNum > 0) { cfg = triggerLoader.get(trCfgNum); } ((Trigger)one).Init(cfg, -1); } } else { //Create the new one one = CreateNewTrigger(care, trCfgNum); } id = one.GetID(); List <ITriggerItem> workList = null; if (OnWork.TryGetValue(care, out workList)) { workList.Add(one); } else { workList = new List <ITriggerItem>(); workList.Add(one); OnWork[care] = workList; } //挂在Npc上 ServerNPC npc = WarServerManager.Instance.npcMgr.GetNPCByUniqueID(npcId); npc.addTrigger(id); ((Trigger)one).HangUpNpcId = npcId; //关联的Buff是否存在 if (buff != null) { ((Trigger)one).HangUpBuffId = buff.ID; buff.TriggerID = id; } return(one); }