public void DestroyBuilding(GameObject building)
    {
        BuildingController buildingCtrl = building.GetComponent <BuildingController>();

        if (buildingCtrl != null)
        {
            this.allBuildingsDictionary.Remove(buildingCtrl.Building.BuildingId);
            if (this.baseBuildingDictionary.ContainsValue(building))
            {
                this.baseBuildingDictionary.Remove(buildingCtrl.Building.FactionType);
            }
            buildingCtrl.DestroySelf();
        }
    }
    public void DestroyAllBuildings()
    {
        List <GameObject> allBuildings = new List <GameObject>();

        allBuildings.AddRange(this.allBuildingsDictionary.Values);
        for (int i = 0; i < allBuildings.Count; i++)
        {
            GameObject building = allBuildings[i];
            if (building != null)
            {
                BuildingController buildingCtrl = building.GetComponent <BuildingController>();
                buildingCtrl.DestroySelf();
            }
        }
        this.allBuildingsDictionary.Clear();
        this.baseBuildingDictionary.Clear();
        this.buildingIdSeq = 0;
    }