public void AddRadiationPulse(float InRadiationStrength, DateTime InTimestamp, int InSourceID) { int ReplaceIndex = -1; for (var i = 0; i < RecordedPulses.Count; i++) { if (RecordedPulses[i].Destroyed || RecordedPulses[i].SourceID == InSourceID) { if (RecordedPulses[i].Destroyed) { if (ReplaceIndex == -1) { ReplaceIndex = i; } } else { RecordedPulses[i] = new RadiationPulseRecord(InRadiationStrength, InTimestamp, InSourceID); return; } } } if (ReplaceIndex != -1) { RecordedPulses[ReplaceIndex] = new RadiationPulseRecord(InRadiationStrength, InTimestamp, InSourceID); } else { RecordedPulses.Add(new RadiationPulseRecord(InRadiationStrength, InTimestamp, InSourceID)); } }
public float CalculateRadiationLevel(int BlockId = 0) { float RadiationLevel = 0; for (var i = 0; i < RecordedPulses.Count; i++) { if ((DateTime.Now - RecordedPulses[i].Timestamp).Seconds > 10) { RecordedPulses[i] = RadiationPulseRecord.ToReplace(); } else { if (RecordedPulses[i].SourceID != BlockId) { RadiationLevel += RecordedPulses[i].RadiationStrength; } } } return(RadiationLevel); }