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); }
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); }
public FieldQuery(Map map) { _map = map; _shields = ShieldManager.For(map).Fields.Where(shield => shield.PresentOnMap(map)); }