protected void DetachAllElectrics() { CSElectric[] electrics = m_Electrics.ToArray(); foreach (CSElectric cse in electrics) { DetachElectric(cse); // Find other powerplant can supply this electric foreach (CSCommon power in cse.Assembly.AllPowerPlants) { if (power == this) { continue; } CSPowerPlant realPower = power as CSPowerPlant; realPower.AttachElectric(cse); if (cse.IsRunning) { break; } } cse.ChangeState(); } }
public bool ObjectInPowerPlant(Vector3 pos) { if (Assembly == null) { return(false); } List <CSCommon> cscs = Assembly.AllPowerPlants; for (int i = 0; i < cscs.Count; i++) { CSPowerPlant pp = cscs[i] as CSPowerPlant; if (pp.InRange(pos)) { return(true); } } return(false); }
public int AttachCommonEntity(CSCommon csc) { if (csc.Assembly == this) { return(CSConst.rrtUnkown); } if (!InRange(csc.Position)) { return(CSConst.rrtOutOfRadius); } CSConst.ObjectType type = (CSConst.ObjectType)csc.m_Type; if (IsOutOfLimit(type)) { return(CSConst.rrtOutOfRange); } // m_BelongObjectsMap[(CSConst.ObjectType) csc.m_Type].Add(csc); AddBelongBuilding((CSConst.ObjectType)csc.m_Type, csc); csc.Assembly = this; CSElectric cse = csc as CSElectric; if (cse != null) { foreach (CSCommon power in AllPowerPlants) { CSPowerPlant cspp = power as CSPowerPlant; cspp.AttachElectric(cse); if (cse.IsRunning) { break; } } } csc.ChangeState(); return(CSConst.rrtSucceed); }