|
@@ -507,14 +507,76 @@ namespace CommonAI.Zone.EventTrigger
|
|
|
};
|
|
|
}
|
|
|
|
|
|
- public void listen_RecvMessageFromGS(EventArguments args, InstanceZone zone, string msg)
|
|
|
+ private List<InstanceUnit> _tmpList = new List<InstanceUnit>();
|
|
|
+ public void listen_RecvMessageFromGS(EventArguments args, InstanceZone zone, string msg, string triggerUnits)
|
|
|
{
|
|
|
args = args.Clone();
|
|
|
InstanceZone.RecvMessageR2BHandler handler = new InstanceZone.RecvMessageR2BHandler((z, m) =>
|
|
|
{
|
|
|
if (m.Message == msg)
|
|
|
{
|
|
|
- TestAndDoAction(args);
|
|
|
+ if (!string.IsNullOrEmpty(triggerUnits) || !string.IsNullOrEmpty(m.TriggerUnits))
|
|
|
+ {
|
|
|
+ _tmpList.Clear();
|
|
|
+ if (!string.IsNullOrEmpty(m.TriggerUnits))
|
|
|
+ {
|
|
|
+ //游戏发送过来的,要触发的单位列表:id1,id2...
|
|
|
+ var sps = m.TriggerUnits.Split(',');
|
|
|
+ foreach (var s in sps)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var id = System.Convert.ToUInt32(s, 0);
|
|
|
+ var unit = zone.getUnit(id);
|
|
|
+ if (unit != null)
|
|
|
+ {
|
|
|
+ _tmpList.Add(unit);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch { }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!string.IsNullOrEmpty(triggerUnits))
|
|
|
+ {
|
|
|
+ //编辑器配置的,要触发的单位列表:类型1:数量1:阵营1;类型2:数量2:阵营2...
|
|
|
+ var sps = triggerUnits.Split(';');
|
|
|
+ foreach (var s in sps)
|
|
|
+ {
|
|
|
+ var info = s.Split(':');
|
|
|
+ if(info.Length == 3)
|
|
|
+ {
|
|
|
+ if(info[0] == "1")
|
|
|
+ {
|
|
|
+ //死亡单位
|
|
|
+ try
|
|
|
+ {
|
|
|
+ zone.getDeadUnit(System.Convert.ToInt32(info[1]), System.Convert.ToInt32(info[2]), ref _tmpList);
|
|
|
+ }
|
|
|
+ catch { }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ log.Error($"配置的触发单位类型不能识别: {triggerUnits}");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (_tmpList.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var unit in _tmpList)
|
|
|
+ {
|
|
|
+ args.TriggingUnit = unit;
|
|
|
+ TestAndDoAction(args);
|
|
|
+ }
|
|
|
+ _tmpList.Clear();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ TestAndDoAction(args);
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
zone.OnRecvMessageFromGS += handler;
|