public void demolishBuilding(ushort index, bool IsManual) { SimulationManager simManager = Singleton <SimulationManager> .instance; BuildingManager buildManager = Singleton <BuildingManager> .instance; if (index >= buildManager.m_buildings.m_buffer.Length) { UnityEngine.Debug.LogWarning("Autodemolish: building " + index + " not exists."); return; } Building build = buildManager.m_buildings.m_buffer[index]; bool needToDemolish = false; DemolishCounter.DemolishType DemolishType = DemolishCounter.DemolishType.Null; if (BulldozerPanelInterface.b_demolishAbandoned && ((build.m_flags & Building.Flags.Abandoned) != Building.Flags.None)) { DemolishType = DemolishCounter.DemolishType.Abandon; needToDemolish = true; } else if (BulldozerPanelInterface.b_demolishBurned && ((build.m_flags & Building.Flags.BurnedDown) != Building.Flags.None)) { DemolishType = DemolishCounter.DemolishType.Burned; needToDemolish = true; } if (needToDemolish) { DeleteBuildingImpl(index, true, DemolishType, IsManual); return; } }
private void DeleteBuildingImpl(ushort building, bool showEffect, DemolishCounter.DemolishType DemolishType, bool IsManual) { BuildingManager buildManager = Singleton <BuildingManager> .instance; if (building <= buildManager.m_buildings.m_buffer.Length) { if (Singleton <BuildingManager> .instance.m_buildings.m_buffer[building].m_flags != Building.Flags.None) { BuildingManager instance = Singleton <BuildingManager> .instance; BuildingInfo info = instance.m_buildings.m_buffer[(int)building].Info; if (info.m_buildingAI.CheckBulldozing(building, ref instance.m_buildings.m_buffer[(int)building]) == ToolBase.ToolErrors.None) { int buildingRefundAmount = this.GetBuildingRefundAmount(building); if (buildingRefundAmount != 0) { Singleton <EconomyManager> .instance.AddResource(EconomyManager.Resource.RefundAmount, buildingRefundAmount, info.m_class); } Vector3 pos = instance.m_buildings.m_buffer[(int)building].m_position; float angle = instance.m_buildings.m_buffer[(int)building].m_angle; int length = instance.m_buildings.m_buffer[(int)building].Length; instance.ReleaseBuilding(building); DemolishCounter.AddToCount(DemolishType, IsManual ? 0 : 1); if (info.m_class.m_service > ItemClass.Service.Office) { Singleton <CoverageManager> .instance.CoverageUpdated(info.m_class.m_service, info.m_class.m_subService, info.m_class.m_level); } if (showEffect) { DispatchAutobulldozeEffect(info, pos, angle, length); } } } } }