Exemplo n.º 1
0
        private void MediatorContext_OnTsunami(object sender, EPSPTsunamiEventArgs e)
        {
            var tsunamiNotification = configuration.TsunamiNotification;

            if (!tsunamiNotification.Enabled)
            {
                return;
            }
            if (!tsunamiNotification.Sound)
            {
                return;
            }

            PlaySound(SoundType.P2PQ_Sndt);
        }
Exemplo n.º 2
0
        private void MediatorContext_OnTsunami(object sender, EPSPTsunamiEventArgs e)
        {
            var tsunamiNotification = configuration.TsunamiNotification;

            if (!tsunamiNotification.Enabled)
            {
                return;
            }

            if (!tsunamiNotification.Show)
            {
                Select("tsunami", e.ReceivedAt.ToString());
                return;
            }
            Activate("tsunami", e.ReceivedAt.ToString());
        }
Exemplo n.º 3
0
 private static void Client_OnTsunami(object sender, EPSPTsunamiEventArgs e)
 {
     AddHistory(e);
 }
Exemplo n.º 4
0
 private void PeerManager_OnTsunami(object sender, EPSPTsunamiEventArgs e)
 {
     OnTsunami(sender, e);
 }
Exemplo n.º 5
0
        private void RaiseTsunamiEvent(Packet packet)
        {
            if (packet.Code != Code.TSUNAMI)
            {
                return;
            }

            if (packet.Data == null || packet.Data.Length < 3)
            {
                return;
            }

            string[]             datas = packet.Data[2].Split(',');
            EPSPTsunamiEventArgs e     = new EPSPTsunamiEventArgs()
            {
                ReceivedAt = ProtocolTime()
            };

            Verifier.VerifyResult result = Verifier.VerifyServerData(packet.Data[2], packet.Data[1], packet.Data[0], ProtocolTime());
            e.IsExpired          = result.isExpired;
            e.IsInvalidSignature = !result.isValidSignature;

            if (datas[0] == "解除")
            {
                e.IsCancelled = true;
                OnTsunami(this, e);
                return;
            }

            e.RegionList = new List <TsunamiForecastRegion>();
            TsunamiCategory category = TsunamiCategory.Unknown;

            foreach (string data in datas)
            {
                if (data.Length <= 0)
                {
                    continue;
                }

                if (data[0] == '-')
                {
                    if (data.EndsWith("津波注意報"))
                    {
                        category = TsunamiCategory.Advisory;
                    }
                    if (data.EndsWith("津波警報"))
                    {
                        category = TsunamiCategory.Warning;
                    }
                    if (data.EndsWith("大津波警報"))
                    {
                        category = TsunamiCategory.MajorWarning;
                    }
                    continue;
                }

                if (data[0] != '*' && data[0] != '+')
                {
                    continue;
                }

                TsunamiForecastRegion item = new TsunamiForecastRegion();
                item.Category = category;
                item.Region   = data.Substring(1);
                if (data[0] == '*')
                {
                    item.IsImmediately = true;
                }

                e.RegionList.Add(item);
            }

            OnTsunami(this, e);
        }