Ejemplo n.º 1
0
        public DiseaseVector(VectorBooter.Data data, Variant strain)
        {
            mGuid = data.Guid;
            mNonPersistableData = data;
            mStrain             = new Variant(data, strain);

            Start(Notices.None);
        }
Ejemplo n.º 2
0
        public DiseaseVector(DiseaseVector vector, SimDescription sim)
        {
            mGuid = vector.mGuid;
            mNonPersistableData = vector.mNonPersistableData;
            mStrain             = new Variant(mNonPersistableData, vector.mStrain);

            Start(Notices.None);
        }
Ejemplo n.º 3
0
        public static bool Inoculate(SimDescription sim, VectorBooter.Data vector, bool paid, bool testExisting)
        {
            DiseaseVector inoculate = new DiseaseVector(vector, Vector.Settings.GetCurrentStrain(vector));

            inoculate.Inoculate(vector.InoculationStrain, paid);

            return(Inoculate(sim, inoculate, paid, testExisting));
        }
Ejemplo n.º 4
0
 public DiseaseVector.Variant GetCurrentStrain(VectorBooter.Data vector)
 {
     DiseaseVector.Variant strain;
     if (mVariants.TryGetValue(vector.Guid, out strain))
     {
         return(strain);
     }
     else
     {
         return(new DiseaseVector.Variant(vector));
     }
 }
Ejemplo n.º 5
0
            public int Variation(VectorBooter.Data vector)
            {
                int result = Math.Abs(mStrength - vector.InitialStrength);

                Dictionary <string, bool> mutables = vector.AllMutables;

                foreach (KeyValuePair <string, int> pair in mCounters)
                {
                    if (!mutables.ContainsKey(pair.Key))
                    {
                        continue;
                    }

                    result += Math.Abs(pair.Value);
                }

                return(result);
            }
Ejemplo n.º 6
0
            protected Variant(VectorBooter.Data vector, long strain, int strength, Dictionary <string, int> counters)
            {
                mStrain   = strain;
                mStrength = strength;
                mMutated  = false;

                Dictionary <string, bool> mutables = vector.AllMutables;

                foreach (KeyValuePair <string, int> pair in counters)
                {
                    if (!mutables.ContainsKey(pair.Key))
                    {
                        continue;
                    }

                    mCounters.Add(pair.Key, pair.Value);
                }
            }
Ejemplo n.º 7
0
        public override List <ISettingOption> GetOptions()
        {
            List <ISettingOption> results = new List <ISettingOption>();

            results.Add(new EnabledSetting(mGuid));
            results.Add(new WatchesSetting(mGuid));
            results.Add(new MotiveAdjustmentRatioSetting(mGuid));

            VectorBooter.Data vector = VectorBooter.GetVector(mGuid);
            if (vector != null)
            {
                foreach (string setting in vector.CustomSettings)
                {
                    results.Add(new CustomSetting(setting));
                }
            }

            return(results);
        }
Ejemplo n.º 8
0
        public static void StartOutbreak(VectorBooter.Data vector, bool verbose)
        {
            DiseaseVector disease = new DiseaseVector(vector, Vector.Settings.GetNewStrain(vector));

            ScoringLog.sLog.IncStat(disease.UnlocalizedName + " Attempt Outbreak");

            List <Sim> sims = new List <Sim>(LotManager.Actors);

            if (sims.Count > 0)
            {
                int count = 0;
                while ((count < Vector.Settings.mNumPatientZero) && (sims.Count > 0))
                {
                    Sim choice = RandomUtil.GetRandomObjectFromList(sims);
                    sims.Remove(choice);

                    if (choice.SimDescription.ToddlerOrBelow)
                    {
                        continue;
                    }

                    if (!Vector.Settings.mOutbreakAllowActive)
                    {
                        if (choice.Household == Household.ActiveHousehold)
                        {
                            continue;
                        }
                    }

                    if (disease.Infect(choice.SimDescription, true))
                    {
                        count++;

                        if (verbose)
                        {
                            ShowNotice(choice.SimDescription, disease, Common.kDebugging ? "Outbreak" : "");
                        }

                        ScoringLog.sLog.IncStat(disease.UnlocalizedName + " Outbreak");
                    }
                }
            }
        }
Ejemplo n.º 9
0
        public bool OnLoadFixup()
        {
            mNonPersistableData = VectorBooter.GetVector(Guid);
            if (mNonPersistableData == null)
            {
                return(false);
            }

            if (mStrain == null)
            {
                mStrain = new Variant(mNonPersistableData, Vector.Settings.GetCurrentStrain(mNonPersistableData));
            }

            if (mStage > mNonPersistableData.NumStages)
            {
                mStage = 0;
            }

            return(true);
        }
Ejemplo n.º 10
0
 public Variant(VectorBooter.Data vector, Variant strain)
     : this(vector, strain.Strain, strain.Strength, strain.mCounters)
 {
 }
Ejemplo n.º 11
0
 public Variant(VectorBooter.Data vector)
     : this(vector, 1, vector.InitialStrength, new Dictionary <string, int>())
 {
 }
Ejemplo n.º 12
0
 public InstigatorListener(EventTypeId id, VectorBooter.Data vector, InstigatorBooter.Data instigator)
     : base(id, null)
 {
     mVector = vector;
     mInstigator = instigator;
 }
Ejemplo n.º 13
0
 public InstigatorListener(EventTypeId id, VectorBooter.Data vector, InstigatorBooter.Data instigator)
     : base(id, null)
 {
     mVector     = vector;
     mInstigator = instigator;
 }
Ejemplo n.º 14
0
        protected DiseaseVector.Variant GetNewStrain(VectorBooter.Data vector, DiseaseVector.Variant strain, bool force)
        {
            DiseaseVector.Variant newStrain = new DiseaseVector.Variant(vector, strain);

            if ((force) || (strain.Mutated))
            {
                // Doing this stops the previous strain from reentering this process
                strain.Mutated = false;

                long id = 1;

                DiseaseVector.Variant oldStrain;
                if (mVariants.TryGetValue(vector.Guid, out oldStrain))
                {
                    if (oldStrain.Strain < strain.Strain)
                    {
                        oldStrain.Strain = strain.Strain;
                    }

                    id = oldStrain.Strain;
                }
                else
                {
                    oldStrain = null;
                }

                if ((oldStrain == null) || (oldStrain.Variation(vector) < newStrain.Variation(vector)))
                {
                    newStrain.Strain++;

                    oldStrain = new DiseaseVector.Variant(newStrain, id + 1);

                    mVariants.Remove(vector.Guid);
                    mVariants.Add(vector.Guid, oldStrain);

                    if (Common.kDebugging)
                    {
                        Common.DebugNotify("BETTER " + vector.Guid + " Strain:" + Common.NewLine + oldStrain);
                    }
                }
                else if (RandomUtil.RandomChance01(vector.StrainMutationRate * (force ? 2 : 1)))
                {
                    newStrain.Strain = id + 1;

                    if (force)
                    {
                        oldStrain.Strain = newStrain.Strain;

                        if (Common.kDebugging)
                        {
                            Common.DebugNotify("OUTBREAK " + vector.Guid + " Strain:" + Common.NewLine + newStrain);
                        }
                    }
                    else
                    {
                        if (Common.kDebugging)
                        {
                            Common.DebugNotify("RANDOM " + vector.Guid + " Strain:" + Common.NewLine + newStrain);
                        }
                    }
                }
            }

            return(newStrain);
        }
Ejemplo n.º 15
0
 public DiseaseVector.Variant GetNewStrain(VectorBooter.Data vector, DiseaseVector.Variant strain)
 {
     return(GetNewStrain(vector, strain, false));
 }
Ejemplo n.º 16
0
 public DiseaseVector.Variant GetNewStrain(VectorBooter.Data vector)
 {
     return(GetNewStrain(vector, GetCurrentStrain(vector), true));
 }