Exemplo n.º 1
0
        private static IEnumerator ProcessPendingCompounds(bool bForce = false)
        {
            if (bProcessingCompounds)
            {
                if (bForce)
                {
                    Log.LogDebug("ProcessPendingCompounds executing: forced");
                }
                else
                {
                    yield break;
                }
            }

            if (pendingCompoundTech.Count < 1)
            {
                bProcessingCompounds = false;
                yield break;
            }

            Log.LogDebug("ProcessPendingCompounds executing");
            bProcessingCompounds = true;

            int tries = 0;

            while (pendingCompoundTech.Count > 0)
            {
                List <KnownTech.CompoundTech> compounds = (List <KnownTech.CompoundTech>)knownTechCompoundTech.GetValue(null);
                HashSet <TechType>            removals  = new HashSet <TechType>();
                Log.LogDebug($"Attempting to process pending compound tech: pendingCompoundTech.Count == {pendingCompoundTech.Count}, attempt {++tries}");
                if (compounds != null)
                {
                    Log.LogDebug("Successfully retrieved KnownTech.compoundTech: Now processing pendingCompoundTech");
                    foreach (KeyValuePair <TechType, List <TechType> > kvp in pendingCompoundTech)
                    {
                        Log.LogDebug($"Adding compoundTech: techType = {kvp.Key.AsString()}");
                        KnownTech.CompoundTech compound = new KnownTech.CompoundTech();
                        compound.techType     = kvp.Key;
                        compound.dependencies = kvp.Value;
                        compounds.Add(compound);
                        removals.Add(kvp.Key);
                    }
                }
                else
                {
                    Log.LogDebug($"KnownTech.compoundTech could not be retrieved");
                }

                foreach (TechType tt in removals)
                {
                    pendingCompoundTech.Remove(tt);
                }
                removals.Clear();

                yield return(new WaitForSecondsRealtime(2f));
            }

            bProcessingCompounds = false;
        }
Exemplo n.º 2
0
 public static void AddCompoundTech(KnownTech.CompoundTech compound, bool bForce = false)
 {
     if (compound != null)
     {
         pendingCompoundTech.Add(compound);
     }
     //CoroutineHost.StartCoroutine(ProcessPendingCompounds(bForce));
 }
Exemplo n.º 3
0
        protected override void OnFinishedPatch()
        {
            base.OnFinishedPatch();

            KnownTech.CompoundTech compound = new KnownTech.CompoundTech();
            compound.techType     = this.TechType;
            compound.dependencies = new List <TechType>()
            {
                TechType.ReinforcedDiveSuit,
                Main.GetModTechType("SurvivalSuit")
            };
            Reflection.AddCompoundTech(compound);
        }
 public SurvivalSuitBlueprint_FromSurvivalCold() : base("SurvivalSuitBlueprint_FromSurvivalCold")
 {
     OnFinishedPatching += () =>
     {
         KnownTech.CompoundTech compound = new KnownTech.CompoundTech();
         compound.techType     = this.TechType;
         compound.dependencies = new List <TechType>()
         {
             TechType.ReinforcedDiveSuit,
             TechType.Stillsuit,
             TechType.ColdSuit
         };
         Reflection.AddCompoundTech(compound);
     };
 }
Exemplo n.º 5
0
 public HighCapacityBooster() : base("HighCapacityBooster", "High Capacity Booster Tank", "Booster tank with increased oxygen capacity.")
 {
     OnFinishedPatching += () =>
     {
         Main.AddSubstitution(this.TechType, TechType.SuitBoosterTank);
         Main.AddSubstitution(this.TechType, TechType.HighCapacityTank);
         Main.AddModTechType(this.TechType);
         KnownTech.CompoundTech compound = new KnownTech.CompoundTech();
         compound.techType     = this.TechType;
         compound.dependencies = new List <TechType>()
         {
             TechType.SuitBoosterTank,
             TechType.HighCapacityTank
         };
         Reflection.AddCompoundTech(compound);
         CoroutineHost.StartCoroutine(PostPatchSetup());
     };
 }
Exemplo n.º 6
0
        protected virtual void OnFinishedPatch()
        {
            //Main.AddSubstitution(this.TechType, TechType.Stillsuit);
            foreach (TechType tt in substitutions)
            {
                Main.AddSubstitution(this.TechType, tt);
            }
            Main.AddModTechType(this.TechType);
            PlayerPatch.AddSurvivalSuit(this.TechType);

            if (CompoundDependencies.Count > 0)
            {
                KnownTech.CompoundTech compound = new KnownTech.CompoundTech();
                compound.techType     = this.TechType;
                compound.dependencies = CompoundDependencies;
                Reflection.AddCompoundTech(compound);
            }
            //SurvivalPatches.AddNeedsCapOverride(this.TechType, SurvivalCapOverride);
        }
Exemplo n.º 7
0
 public InsulatedRebreather() : base("InsulatedRebreather", "Insulated Rebreather", "Rebreather equipped with insulation helps slow the onset of hypothermia")
 {
     OnFinishedPatching += () =>
     {
         int coldResist = TechData.GetColdResistance(TechType.ColdSuitHelmet);
         CombinedItems.Reflection.AddColdResistance(this.TechType, System.Math.Max(20, coldResist));
         CombinedItems.Reflection.SetItemSize(this.TechType, 2, 2);
         Log.LogDebug($"Finished patching {this.TechType.AsString()}, found source cold resist of {coldResist}, cold resistance for techtype {this.TechType.AsString()} = {TechData.GetColdResistance(this.TechType)}");
         Main.AddSubstitution(this.TechType, TechType.ColdSuitHelmet);
         Main.AddSubstitution(this.TechType, TechType.Rebreather);
         Main.AddModTechType(this.TechType);
         KnownTech.CompoundTech compound = new KnownTech.CompoundTech();
         compound.techType     = this.TechType;
         compound.dependencies = new List <TechType>()
         {
             TechType.Rebreather,
             TechType.ColdSuit
         };
         Reflection.AddCompoundTech(compound);
     };
 }
Exemplo n.º 8
0
 public ReinforcedColdSuit() : base("ReinforcedColdSuit", "Reinforced Cold Suit", "Reinforced, insulated diving suit providing physical protection and insulation from extreme temperatures.")
 {
     OnFinishedPatching += () =>
     {
         int coldResist = TechData.GetColdResistance(TechType.ColdSuit);
         Reflection.AddColdResistance(this.TechType, System.Math.Max(50, coldResist));
         Reflection.SetItemSize(this.TechType, 2, 3);
         Log.LogDebug($"Finished patching {this.TechType.AsString()}, found source cold resist of {coldResist}, cold resistance for techtype {this.TechType.AsString()} = {TechData.GetColdResistance(this.TechType)}");
         Main.AddSubstitution(this.TechType, TechType.ColdSuit);
         Main.AddSubstitution(this.TechType, TechType.ReinforcedDiveSuit);
         Main.AddModTechType(this.TechType);
         KnownTech.CompoundTech compound = new KnownTech.CompoundTech();
         compound.techType     = this.TechType;
         compound.dependencies = new List <TechType>()
         {
             TechType.ReinforcedDiveSuit,
             TechType.ColdSuit
         };
         Reflection.AddCompoundTech(compound);
     };
 }