public ActiveDisease(IGameController gc, DiseaseDefinitionBase disease, ActiveInjury linkedInjury, DateTime diseaseStartTime) { _gc = gc; _linkedInjury = linkedInjury; _diseaseStartTime = diseaseStartTime; Disease = disease; ComputeDisease(); Refresh(gc.WorldTime.Value); Events.NotifyAll(l => l.DiseaseTriggered(disease, linkedInjury, diseaseStartTime)); }
private void CreateAndLinkActiveDiseasesAndInjuries(Guid?worstDiseaseId, List <ActiveDiseaseSnippet> diseasesData, List <ActiveInjurySnippet> injuriesData) { ActiveInjuries.Clear(); ActiveDiseases.Clear(); var injuriesMapping = new Dictionary <Guid, Guid>(); // old id, new id foreach (var injData in injuriesData) { var inj = new ActiveInjury(_gc); inj.RestoreState(injData); injuriesMapping.Add(injData.InjuryId, inj.Injury.Id); ActiveInjuries.Add(inj); } var diseasesMapping = new Dictionary <Guid, Guid>(); // old id, new id foreach (var diseaseData in diseasesData) { var injKey = diseaseData.InjuryId.HasValue ? (injuriesMapping.ContainsKey(diseaseData.InjuryId.Value) ? injuriesMapping[diseaseData.InjuryId.Value] : (Guid?)null) : (Guid?)null; var linkedInj = injKey.HasValue ? ActiveInjuries.FirstOrDefault(x => x.Injury.Id == injKey.Value) : null; var disease = new ActiveDisease(_gc, linkedInj); disease.RestoreState(diseaseData); diseasesMapping.Add(diseaseData.DiseaseId, disease.Disease.Id); ActiveDiseases.Add(disease); } var diseaseKey = worstDiseaseId.HasValue ? (diseasesMapping.ContainsKey(worstDiseaseId.Value) ? diseasesMapping[worstDiseaseId.Value] : (Guid?)null) : (Guid?)null; var worstDisease = diseaseKey.HasValue ? ActiveDiseases.FirstOrDefault(x => x.Disease.Id == diseaseKey.Value) : null; WorstDisease = worstDisease?.Disease; injuriesMapping.Clear(); diseasesMapping.Clear(); }
public void DiseaseTriggered(IGameController sender, DiseaseDefinitionBase disease, ActiveInjury linkedInjury, DateTime diseaseStartTime) { }
public ActiveDisease(IGameController gc, Type diseaseType, ActiveInjury linkedInjury, DateTime diseaseStartTime) : this(gc, (DiseaseDefinitionBase)Activator.CreateInstance(diseaseType), linkedInjury, diseaseStartTime) { }
public bool OnApplianceTaken(IGameController gc, InventoryMedicalItemBase tool, BodyParts bodyPart, ActiveInjury injury) { if (_toolsNeeded.Count == 0) { return(true); } if (bodyPart != injury.BodyPart) { return(false); } if (_toolsNeeded[0].IsApplicableToGroup(tool.Name)) { if (_lastToolTime.HasValue) { if ((gc.WorldTime.Value - _lastToolTime.Value).TotalMinutes > MaximumTimeBetweenAppliancesInGameMinutes) { _toolsNeeded = _toolsOriginal.ToList(); _lastToolTime = null; return(false); } } _lastToolTime = gc.WorldTime; _toolsNeeded.RemoveAt(0); if (_toolsNeeded.Count == 0) { injury.Invert(); injury.DeclareInjuryTreated(); if (OnTreated != null) { OnTreated.Invoke(); } Events.NotifyAll(l => l.InjuryHealed(injury.Injury)); } return(true); } return(false); }
public ActiveDisease(IGameController gc, ActiveInjury linkedInjury) { _gc = gc; _linkedInjury = linkedInjury; }
public void DiseaseTriggered(DiseaseDefinitionBase disease, ActiveInjury linkedInjury, DateTime diseaseStartTime) { }