private void ChainOutbreak(object sender, OutbreakEventArgs e) { IEnumerable<NodeDiseaseCounter> outbreakCounters = nodeCounters.Where(i => e.OriginCounter.Node.Connections.Contains(i.Node)); foreach (NodeDiseaseCounter nodeCounter in outbreakCounters.Where(i => !e.OriginList.Contains(i))) { if (Count == 0) return; if (outbreakCounter.Count == 7) return; nodeCounter.OutbreakInfection(e); } }
private void Outbreak(object sender, OutbreakEventArgs e) { Increase(); }
internal void OutbreakInfection(OutbreakEventArgs e) { foreach (Player player in Node.Players) { if (Disease.IsCured == true && player is Medic) return; if (player is QuarantineSpecialist) return; } foreach (Node node in Node.Connections) { foreach (Player player in node.Players) { if (player is QuarantineSpecialist) return; } } if (Count < 3) { Count++; if (ChainInfected != null) ChainInfected(this, new InfectionEventArgs(this, 1)); e.AffectedCities.Add(this); } else { e.ChainCities.Add(this); e.OriginList.Add(this); if (ChainOutbreak != null) ChainOutbreak(this, e); } }