コード例 #1
0
        public static void DeployShield(Pawn pawn, IShield shield)
        {
            var deployed = new Comp_DeployedShield(shield);

            deployed.props = new CompProperties_DeployedShield();

            switch (shield)
            {
            case IEnergyNode node:
                node.ConnectTo(null);     // TODO get pawn net
                break;
            }

            pawn.AllComps.Add(deployed);
            ShieldManager.For(pawn.Map).Add(deployed.Fields);
        }
コード例 #2
0
        public static void UndeployShield(Pawn pawn, IShield shield)
        {
            pawn.AllComps
            .Where(comp => comp == shield)
            .Do(comp =>
            {
                pawn.AllComps.Remove(comp);
            });

            switch (shield)
            {
            case IEnergyNode node:
                node.Disconnect();
                break;
            }

            ShieldManager.For(pawn.Map).Del(shield.Fields);
        }
コード例 #3
0
        public void ExposeData()
        {
            Scribe_Collections.Look(ref _associated, "associatedMaps", LookMode.Reference);
            Scribe_Collections.Look(ref _linearLinks, "linearLinks", LookMode.Deep);

            if (Scribe.mode == LoadSaveMode.PostLoadInit)
            {
                if (_linearLinks == null)
                {
                    _linearLinks = new HashSet <LinearShieldLink>();
                }

                if (_associated == null)
                {
                    _associated = new HashSet <Map>();
                }

                if (Scribe.mode == LoadSaveMode.PostLoadInit)
                {
                    AssociatedMaps.Do(map => ShieldManager.Register(map, this));
                }
            }
        }
コード例 #4
0
ファイル: FieldQuery.cs プロジェクト: Thielquis/Shields
 public FieldQuery(Map map)
 {
     _map     = map;
     _shields = ShieldManager.For(map).Fields.Where(shield => shield.PresentOnMap(map));
 }