Пример #1
0
 private void OnKill(Damage dmg, Unit unit)
 {
     killHandlers.ForEach((e) => e.onKill(dmg, unit));
     if (KillListener != null)
     {
         KillListener.Invoke(dmg, unit);
     }
 }
Пример #2
0
        /// <summary>
        /// DI 所使用的构造方法
        /// </summary>
        /// <param name="options"></param>
        /// <param name="logger"></param>
        /// <param name="killAllListener"></param>
        /// <param name="killListener"></param>
        /// <param name="triggerListener"></param>
        public SwarmClient(IOptions <SwarmClientOptions> options, ILogger <SwarmClient> logger,
                           KillAllListener killAllListener,
                           KillListener killListener,
                           TriggerListener triggerListener)
        {
            _logger = logger;

            var ops = options.Value;

            Name              = ops.Name;
            Host              = new Uri(ops.Host).ToString();
            Group             = ops.Group;
            AccessToken       = ops.AccessToken;
            RetryTimes        = ops.RetryTimes;
            Ip                = ops.Ip;
            HeartbeatInterval = ops.HeartbeatInterval;

            _killAllListener = killAllListener;
            _killListener    = killListener;
            _triggerListener = triggerListener;

            //TODO: Validate data
            Name = string.IsNullOrWhiteSpace(Name) ? Dns.GetHostName() : Name;

            if (string.IsNullOrWhiteSpace(Ip))
            {
                var interfaces = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault(i =>
                                                                                           (i.NetworkInterfaceType == NetworkInterfaceType.Ethernet ||
                                                                                            i.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) &&
                                                                                           i.OperationalStatus == OperationalStatus.Up);
                if (interfaces != null)
                {
                    Ip = interfaces.GetIPProperties().UnicastAddresses.FirstOrDefault(a =>
                                                                                      a.IPv4Mask?.ToString() != "255.255.255.255" &&
                                                                                      a.Address.AddressFamily == AddressFamily.InterNetwork)?.Address
                         .ToString();
                }
            }

            if (string.IsNullOrWhiteSpace(Ip))
            {
                Ip = "127.0.0.1";
            }
        }