override public void SetBasement(Plane b, PixelPosByte pos) { if (b == null) { return; } if (current != null) { var c = current; current = null; c.Annihilate(true, true, false); } SetWorkbuildingData(b, pos); if (!subscribedToUpdate) { GameMaster.realMaster.labourUpdateEvent += LabourUpdate; subscribedToUpdate = true; } var observer = colony.observer; if (observer != null && !observer.activeFastButtons.Contains(ID)) { observer.AddFastButton(this); } current = this; }
override public void Annihilate(bool clearFromSurface, bool returnResources, bool leaveRuins) { if (destroyed) { return; } else { destroyed = true; } PrepareWorkbuildingForDestruction(clearFromSurface, returnResources, leaveRuins); if (subscribedToUpdate) { GameMaster.realMaster.labourUpdateEvent -= LabourUpdate; subscribedToUpdate = false; } if (current == this) { current = null; var observer = colony.observer; if (observer != null && observer.activeFastButtons.Contains(ID)) { observer.RemoveFastButton(this); } } Destroy(gameObject); }
override public void Annihilate(StructureAnnihilationOrder order) { if (destroyed) { return; } else { destroyed = true; } PrepareWorkbuildingForDestruction(order); if (subscribedToUpdate) { GameMaster.realMaster.labourUpdateEvent -= LabourUpdate; subscribedToUpdate = false; } if (current == this) { current = null; if (order.doSpecialChecks) { var observer = colony.observer; if (observer != null && observer.activeFastButtons.Contains(ID)) { observer.RemoveFastButton(this); } } } Destroy(gameObject); }