Пример #1
0
    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();
        }
    }
Пример #2
0
    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);
    }
Пример #3
0
    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);
    }