예제 #1
0
    public void DetachCommonEntity(CSCommon csc)
    {
        csc.Assembly = null;
        //		m_BelongObjectsMap[(CSConst.ObjectType) csc.m_Type].Remove(csc);
        RemoveBelongBuilding((CSConst.ObjectType)csc.m_Type, csc);

        CSElectric cse = csc as CSElectric;

        if (cse != null)
        {
            if (cse.m_PowerPlant != null)
            {
                cse.m_PowerPlant.DetachElectric(cse);
            }
        }
        csc.ChangeState();
    }
예제 #2
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);
    }