public void InstallLock(ThingWithComps lockThing) { if (!lockThing.IsLock(out var lockComp)) { if (lockOwner.Contains(lockThing)) { lockOwner.TryDrop(lockThing, ThingPlaceMode.Near, out _); return; } } var pair = new LockComp.LockThingPair(lockComp.parent, lockComp); InstallLock(pair); }
public void InstallLock(LockComp.LockThingPair pair) { pair.comp.installedThing = parent; pair.comp.postToggle = delegate { var map = parent.MapHeld; map.pathGrid.RecalculatePerceivedPathCostUnderThing(parent); map.reachability.ClearCache(); map.regionDirtyer.DirtyCells.Add(parent.Position); }; if (!locks.Contains(pair)) { locks.Add(pair); } if (!lockOwner.Contains(pair.thing)) { lockOwner.TryAddOrTransfer(pair.thing); } }
public void InstallLock(LockComp lockComp) { var pair = new LockComp.LockThingPair(lockComp.parent, lockComp); InstallLock(pair); }