Exemplo n.º 1
0
 internal void StartLife()
 {
     Observable.Interval(TimeSpan.FromSeconds(1)).Subscribe(x =>
     {
         try
         {
             if (Monsters.Count(s => s.IsAlive) == 0)
             {
                 OnMapClean.ForEach(e =>
                 {
                     EventHelper.Instance.RunEvent(e);
                 });
                 OnMapClean.RemoveAll(s => s != null);
             }
             if (!IsSleeping)
             {
                 RemoveMapItem();
             }
         }
         catch (Exception e)
         {
             Logger.Error(e);
         }
     });
 }
Exemplo n.º 2
0
 internal void StartLife()
 {
     Observable.Interval(TimeSpan.FromSeconds(1)).Subscribe(x =>
     {
         if (InstanceBag?.EndState == 0)
         {
             Parallel.ForEach(WaveEvents, waveEvent =>
             {
                 if (waveEvent?.LastStart.AddSeconds(waveEvent.Delay) <= DateTime.Now)
                 {
                     if (waveEvent.Offset == 0 && waveEvent.RunTimes > 0)
                     {
                         waveEvent.Events.ForEach(e => EventHelper.Instance.RunEvent(e));
                         waveEvent.RunTimes--;
                     }
                     waveEvent.Offset    = waveEvent.Offset > 0 ? (byte)(waveEvent.Offset - 1) : (byte)0;
                     waveEvent.LastStart = DateTime.Now;
                 }
             });
             try
             {
                 if (!Monsters.Any(s => s.IsAlive && s.Owner?.Character == null && s.Owner?.Mate == null) && DelayedMonsters.Count == 0)
                 {
                     List <EventContainer> OnMapCleanCopy = OnMapClean.ToList();
                     OnMapCleanCopy.ForEach(e => EventHelper.Instance.RunEvent(e));
                     OnMapClean.RemoveAll(s => s != null && OnMapCleanCopy.Contains(s));
                 }
                 if (!IsSleeping)
                 {
                     RemoveMapItem();
                 }
             }
             catch (Exception e)
             {
                 Logger.Error(e);
             }
         }
     });
 }
Exemplo n.º 3
0
 internal void StartLife()
 {
     Observable.Interval(TimeSpan.FromSeconds(5)).Subscribe(x =>
     {
         if (InstanceBag?.EndState != 1)
         {
             Parallel.ForEach(WaveEvents, waveEvent =>
             {
                 if (waveEvent.LastStart.AddSeconds(waveEvent.Delay) <= DateTime.Now)
                 {
                     if (waveEvent.Offset == 0)
                     {
                         waveEvent.Events.ForEach(e => EventHelper.Instance.RunEvent(e));
                     }
                     waveEvent.Offset    = waveEvent.Offset > 0 ? (byte)(waveEvent.Offset - 1) : (byte)0;
                     waveEvent.LastStart = DateTime.Now;
                 }
             });
             try
             {
                 if (!Monsters.Any(s => s.IsAlive))
                 {
                     OnMapClean.ForEach(e => EventHelper.Instance.RunEvent(e));
                     OnMapClean.RemoveAll(s => s != null);
                 }
                 if (!IsSleeping)
                 {
                     RemoveMapItem();
                 }
             }
             catch (Exception e)
             {
                 Logger.Error(e);
             }
         }
     });
 }
Exemplo n.º 4
0
 internal void StartLife()
 {
     Observable.Interval(TimeSpan.FromSeconds(1)).Subscribe(x =>
     {
         WaveEvents.ForEach(s =>
         {
             if (s.LastStart.AddSeconds(s.Delay) <= DateTime.Now)
             {
                 if (s.Offset == 0)
                 {
                     s.Events.ForEach(e => EventHelper.Instance.RunEvent(e));
                 }
                 s.Offset    = s.Offset > 0 ? (byte)(s.Offset - 1) : (byte)0;
                 s.LastStart = DateTime.Now;
             }
         });
         try
         {
             if (Monsters.Count(s => s.IsAlive) == 0)
             {
                 OnMapClean.ForEach(e =>
                 {
                     EventHelper.Instance.RunEvent(e);
                 });
                 OnMapClean.RemoveAll(s => s != null);
             }
             if (!IsSleeping)
             {
                 RemoveMapItem();
             }
         }
         catch (Exception e)
         {
             Logger.Error(e);
         }
     });
 }