Beispiel #1
0
        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));
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
 public void DiseaseTriggered(IGameController sender, DiseaseDefinitionBase disease, ActiveInjury linkedInjury, DateTime diseaseStartTime)
 {
 }
Beispiel #4
0
 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);
        }
Beispiel #6
0
 public ActiveDisease(IGameController gc, ActiveInjury linkedInjury)
 {
     _gc           = gc;
     _linkedInjury = linkedInjury;
 }
Beispiel #7
0
 public void DiseaseTriggered(DiseaseDefinitionBase disease, ActiveInjury linkedInjury, DateTime diseaseStartTime)
 {
 }