コード例 #1
0
        // TODO: learn how to add to option menu in game for modifying
        public static void Init()
        {
            GetThings.Add(ThingDefOf.AIPersonaCore);
            GetThings.Add(ThingDefOf.OrbitalTargeterBombardment);
            GetThings.Add(ThingDefOf.OrbitalTargeterPowerBeam);
            GetThings.Add(ThingDefOf.TechprofSubpersonaCore);
            GetThings.Add(ThingDefOf.VanometricPowerCell);
            GetThings.Add(ThingDefOf.InfiniteChemreactor);
            GetThings.Add(ThingDefOf.PsychicEmanator);
            GetThings.Add(ThingDefOf.PowerBeam);

            GetPawns.Add(PawnKindDefOf.Thrumbo);
            GetPawns.Add(PawnKindDefOf.Megascarab);
            GetPawns.Add(PawnKindDefOf.Megaspider);
            GetPawns.Add(PawnKindDefOf.Spelopede);
            GetPawns.Add(PawnKindDefOf.Alphabeaver);

            var validThings = from thing in DefDatabase <ThingDef> .AllDefsListForReading
                              where thing.recipeMaker != null || thing.researchPrerequisites != null
                              select thing;

            Log.Message("[A Petition For Provisions] Caching tech-level for things");
            foreach (var validThing in validThings)
            {
                var currentTechLevel = TechLevel.Neolithic;
                if (validThing.researchPrerequisites?.Count > 0)
                {
                    foreach (var validThingResearchPrerequisite in validThing.researchPrerequisites)
                    {
                        if (validThingResearchPrerequisite.techLevel > currentTechLevel)
                        {
                            currentTechLevel = validThingResearchPrerequisite.techLevel;
                        }
                    }
                }

                if (validThing.recipeMaker?.researchPrerequisites?.Count > 0)
                {
                    foreach (var validThingResearchPrerequisite in validThing.recipeMaker.researchPrerequisites)
                    {
                        if (validThingResearchPrerequisite.techLevel > currentTechLevel)
                        {
                            currentTechLevel = validThingResearchPrerequisite.techLevel;
                        }
                    }
                }

                if (validThing.recipeMaker?.researchPrerequisite?.techLevel > currentTechLevel)
                {
                    currentTechLevel = validThing.recipeMaker.researchPrerequisite.techLevel;
                }

                researchTechCache.Add(validThing, currentTechLevel);
            }

            Log.Message("[A Petition For Provisions] Caching complete");
        }
コード例 #2
0
        public async Task <TResult> GetThingsAsync <TResult>(
            RecordReference record, Array queries, CancellationToken cancelToken)
        {
            if (record == null)
            {
                throw new ArgumentNullException("record");
            }
            if (queries == null)
            {
                throw new ArgumentNullException("queries");
            }

            var      requestBody = new RequestBody(queries);
            var      method      = new GetThings(m_client, record, requestBody, typeof(TResult));
            Response response    = await method.ExecuteAsync(cancelToken);

            return((TResult)response.GetResult());
        }
コード例 #3
0
 public static bool Contains(ThingDef def)
 {
     return(GetThings.Contains(def));
 }
コード例 #4
0
 public static void Remove(ThingDef def)
 {
     GetThings.Remove(def);
 }
コード例 #5
0
 public static void Add(ThingDef def)
 {
     GetThings.Add(def);
 }