Ejemplo n.º 1
0
        public static bool DestroyStructure(HexCoordinates coords)
        {
            Console.WriteLine("structure has been destroyed");
            HexCell cell = grid.GetCell(coords);

            if (cell == null)
            {
                return(false);
            }
            Structure structure = cell.Structure;

            if (structure != null)
            {
                cell.Structure = null;
                if (typeof(Building).IsAssignableFrom(structure.GetType()))
                {
                    Building building = (Building)structure;
                    buildings.RemoveAll(elem => elem == building);
                    carts.RemoveAll(elem => elem.Origin == building);
                    foreach (Building b in buildings)
                    {
                        if (b is ICartHandler)
                        {
                            ((ICartHandler)b).Carts.RemoveAll(elem => elem.Origin == building);
                            if (b is InventoryBuilding)
                            {
                                if (building is InventoryBuilding)
                                {
                                    ((InventoryBuilding)b).AllowedRessources.Remove((InventoryBuilding)building);
                                }
                            }
                        }
                    }
                    if (structure is ICartHandler)
                    {
                        ComputeConnectedStorages();
                    }
                    Tribe tribe = GetTribe(building.Tribe);
                    tribe.RemoveBuilding(building.GetType());
                }
                else if (typeof(Ressource).IsAssignableFrom(structure.GetType()))
                {
                    ressources.RemoveAll(elem => elem == structure);
                }
            }
            return(true);
        }