RefreshThingList() публичный статический Метод

Return a copy of the listToRefresh but remove any destroyed item.
public static RefreshThingList ( List listToRefresh ) : List
listToRefresh List
Результат List
Пример #1
0
        public override void Destroy(DestroyMode mode = DestroyMode.Vanish)
        {
            base.Destroy(mode);

            this.outpostThingList = OG_Util.RefreshThingList(this.outpostThingList);
            string eventTitle = "Coralie out";
            string eventText  = "   M&Co. system maintenance request\n\n" +
                                "Request author: Coralie\n" +
                                "Function: M&Co. outpost AI\n\n" +
                                "Defect description:\n" +
                                "Coralie here. I detect several severe dysfunctions.\n" +
                                "- video sensors:    LINK DAMAGED\n" +
                                "- threat sensors:   NO RESPONSE\n" +
                                "- security systems: OFFLINE\n" +
                                "- power status:     INTERNAL BAT LVL CRITICAL\n\n" +
                                "I urgently request the sending of a repair tea-\n\n" +
                                "*Grrz*... *Pchii*... *Fzzt*\n\n" +
                                "---- End of transmision ---";

            if (this.Faction == Faction.OfColony)
            {
                Find.LetterStack.ReceiveLetter(eventTitle, eventText, LetterType.BadUrgent);
            }
            else
            {
                ChangeOutpostThingsFaction(null);
                LaunchSecurityDropPods(4, OG_Util.OutpostScoutDef, false);
                Find.LetterStack.ReceiveLetter(eventTitle, eventText, LetterType.BadNonUrgent);
            }
            ChangeOutpostTurretsFaction(null, true);
            ChangeOutpostDoorsFaction(null, true);
            Thing coralie = ThingMaker.MakeThing(ThingDef.Named("AIPersonaCore"));

            GenSpawn.Spawn(coralie, this.Position);
        }
Пример #2
0
        public override void ExposeData()
        {
            base.ExposeData();

            this.outpostThingList = OG_Util.RefreshThingList(this.outpostThingList);
            Scribe_Collections.LookList <Thing>(ref this.outpostThingList, "outpostThingList", LookMode.MapReference);
            Scribe_Values.LookValue <IntVec3>(ref this.dropZoneCenter, "dropZoneCenter");
        }
Пример #3
0
 public void TryToCaptureOutpost(string eventTitle, string eventText, LetterType letterType, Faction turretsNewFaction, bool deactivateTurrets,
                                 Faction doorsNewFaction, bool deactivateDoors, int dropPodsNumber, PawnKindDef securityForcesDef)
 {
     SetOutpostSecurityForcesHostileToColony();
     this.outpostThingList = OG_Util.RefreshThingList(this.outpostThingList);
     ChangeOutpostThingsFaction(null);
     ChangeOutpostTurretsFaction(turretsNewFaction, deactivateTurrets);
     ChangeOutpostDoorsFaction(doorsNewFaction, deactivateDoors);
     LaunchSecurityDropPods(dropPodsNumber, securityForcesDef, true);
     OG_Util.DestroyOutpostArea();
     Find.LetterStack.ReceiveLetter(eventTitle, eventText, letterType, new TargetInfo(this.Position));
 }
Пример #4
0
        public static void GenerateOutpost(OG_OutpostData outpostDataParameter)
        {
            outpostData = outpostDataParameter;
            outpostData.triggerIntrusion = null;
            outpostData.outpostThingList = new List <Thing>();

            // Reset zoneMap.
            for (int zoneOrd = 0; zoneOrd < verticalZonesNumber; zoneOrd++)
            {
                for (int zoneAbs = 0; zoneAbs < horizontalZonesNumber; zoneAbs++)
                {
                    zoneMap[zoneOrd, zoneAbs] = new ZoneProperties(ZoneType.NotYetGenerated, Rot4.North, Rot4.North);
                }
            }
            // Clear the whole area and remove any roof.
            CellRect rect = new CellRect(outpostData.areaSouthWestOrigin.x - 1, outpostData.areaSouthWestOrigin.z - 1, areaSideLength + 2, areaSideLength + 2);

            foreach (IntVec3 cell in rect.Cells)
            {
                Find.RoofGrid.SetRoof(cell, null);
                List <Thing> thingList = cell.GetThingList();
                for (int j = thingList.Count - 1; j >= 0; j--)
                {
                    Thing thing = thingList[j];
                    if (thing.def.destroyable)
                    {
                        thing.Destroy(DestroyMode.Vanish);
                    }
                }
            }
            // Create the intrusion trigger.
            outpostData.triggerIntrusion = (TriggerIntrusion)ThingMaker.MakeThing(ThingDef.Named("TriggerIntrusion"));
            GenSpawn.Spawn(outpostData.triggerIntrusion, rect.CenterCell);

            GenerateOutpostLayout();

            // TODO: debug. Display the generated layout.

            /*for (int zoneOrd = 0; zoneOrd < verticalZonesNumber; zoneOrd++)
             * {
             *  for (int zoneAbs = 0; zoneAbs < horizontalZonesNumber; zoneAbs++)
             *  {
             *      ZoneProperties zone = zoneMap[zoneOrd, zoneAbs];
             *      Log.Message("Layout: zoneMap[" + zoneOrd + "," + zoneAbs + "] => " + zone.zoneType.ToString() + "," + zone.rotation.ToString() + "," + zone.linkedZoneRelativeRotation.ToString());
             *  }
             * }*/
            GenerateOutpostZones(outpostData.areaSouthWestOrigin);

            IntVec3 mainRoomZoneOrigin = Zone.GetZoneOrigin(outpostData.areaSouthWestOrigin, mainRoomZoneAbs, mainRoomZoneOrd);

            OG_Common.GenerateSas(mainRoomZoneOrigin + new IntVec3(5, 0, 10), Rot4.North, 3, smallRoomWallOffset * 2, ref outpostData);
            OG_Common.GenerateSas(mainRoomZoneOrigin + new IntVec3(10, 0, 5), Rot4.East, 3, smallRoomWallOffset * 2, ref outpostData);
            OG_Common.GenerateSas(mainRoomZoneOrigin + new IntVec3(5, 0, 0), Rot4.South, 3, smallRoomWallOffset * 2, ref outpostData);
            OG_Common.GenerateSas(mainRoomZoneOrigin + new IntVec3(0, 0, 5), Rot4.West, 3, smallRoomWallOffset * 2, ref outpostData);

            // Generate laser fences.
            OG_LaserFence.GenerateLaserFence(zoneMap, ref outpostData);
            // Generate battle remains.
            OG_WarfieldEffects.GenerateWarfieldEffects(zoneMap, horizontalZonesNumber, verticalZonesNumber, outpostData);
            // Damage outpost to reflect its history.
            OG_RuinEffects.GenerateRuinEffects(ref outpostData);
            // Don't generate permanent inhabitants for small outposts. Those are just used as a shack by exploration teams.

            // Initialize command console data.
            outpostData.outpostThingList    = OG_Util.RefreshThingList(outpostData.outpostThingList);
            commandConsole.outpostThingList = outpostData.outpostThingList.ListFullCopy <Thing>();
            commandConsole.dropZoneCenter   = outpostData.dropZoneCenter;
            // Initialize intrusion trigger data.
            outpostData.triggerIntrusion.commandConsole = commandConsole;

            SendWelcomeLetter(outpostData);
        }