Пример #1
0
        /// <summary>
        /// Check if we should trigger due symptoms
        /// </summary>
        private void CheckSymptomOccurence(SicknessAffliction sicknessAffliction, LivingHealthMasterBase playerHealth)
        {
            Sickness sickness = sicknessAffliction.Sickness;

            // Loop on each reached stage to see if a symptom should trigger
            for (int stage = 0; stage < sickness.SicknessStages.Count; stage++)
            {
                if (stage < sicknessAffliction.CurrentStage)
                {
                    float?stageNextOccurence = sicknessAffliction.GetStageNextOccurence(stage);
                    if ((stageNextOccurence != null) && (startedTime > stageNextOccurence))
                    {
                        SicknessStage sicknessStage = sickness.SicknessStages[stage];

                        // Since many symptoms need to be called within the main thread, we invoke it
                        sicknessManager.blockingCollectionSymptoms.Add(new SymptomManifestation(sicknessAffliction, stage, playerHealth));

                        if (sicknessStage.RepeatSymptom)
                        {
                            ScheduleStageSymptom(sicknessAffliction, stage);
                        }
                    }
                }
            }
        }