//what to do when zone structure is placed public static void PrepareZoneStructure(Vector3Int gridPosition, GridStructure grid) { PrepareNewStructure(gridPosition, grid); ZoneStructureSO zoneData = (ZoneStructureSO)grid.GetStructureDataFromTheGrid(gridPosition); if (DoesStructureRequireAnyResource(zoneData)) { var structuresAroundPositions = grid.GetStructurePositionsInRange(gridPosition, zoneData.maxFacilitySearchRange); foreach (var structurePositionNearby in structuresAroundPositions) { var data = grid.GetStructureDataFromTheGrid(structurePositionNearby); if (data.GetType() == typeof(SingleFacilitySO)) { SingleFacilitySO facility = (SingleFacilitySO)data; if ((facility.facilityType == FacilityType.Power && zoneData.HasPower() == false && zoneData.requirePower) || (facility.facilityType == FacilityType.Water && zoneData.HasWater() == false && zoneData.requireWater)) { if (grid.ArePositionsInRange(gridPosition, structurePositionNearby, facility.singleStructureRange)) { if (facility.IsFull() == false) { facility.AddClients(new StructureBaseSO[] { zoneData }); if (DoesStructureRequireAnyResource(zoneData) == false) { return; } } } } } } } }
public void DisplayZoneStructureInfo(ZoneStructureSO data) { Show(); HideElement(clientsTxt.gameObject); SetText(nameTxt, data.buildingName); SetText(incomeTxt, data.GetIncome() + ""); SetText(upkeepTxt, data.upkeepCost + ""); if (data.requirePower) { SetToggle(powerToggle, data.HasPower()); } else { HideElement(powerToggle.gameObject); } if (data.requireWater) { SetToggle(waterToggle, data.HasWater()); } else { HideElement(waterToggle.gameObject); } if (data.requireRoadAccess) { SetToggle(roadToggle, data.HasRoadAccess()); } else { HideElement(roadToggle.gameObject); } }
public void StructureEconomyManagerPlaceResidentialAfterFacilityTooFar() { SingleFacilitySO facility = CreateFacilityAtPosition(new Vector3Int(6, 0, 6), FacilityType.Power); ZoneStructureSO residentialZone = CreateZoneAtPosition(new Vector3Int(0, 0, 0)); Assert.False(residentialZone.HasPower()); Assert.True(facility.GetNumberOfCustomers() == 0); }
public void StructureEconomyManagerAddPowerFacilityNear3Residential3Connected() { ZoneStructureSO residentialZone = CreateZoneAtPosition(new Vector3Int(0, 0, 0)); ZoneStructureSO residentialZone1 = CreateZoneAtPosition(new Vector3Int(0, 0, 3)); ZoneStructureSO residentialZone2 = CreateZoneAtPosition(new Vector3Int(0, 0, 6)); SingleFacilitySO facility = CreateFacilityAtPosition(new Vector3Int(6, 0, 6), FacilityType.Power); Assert.True(residentialZone.HasPower()); Assert.True(residentialZone1.HasPower()); Assert.True(residentialZone2.HasPower()); Assert.True(facility.GetNumberOfCustomers() == 3); }
public void StructureEconomyManager3ResidentialsConnectedToFacilityRemove2() { ZoneStructureSO residentialZone = CreateZoneAtPosition(new Vector3Int(0, 0, 0)); ZoneStructureSO residentialZone1 = CreateZoneAtPosition(new Vector3Int(0, 0, 3)); ZoneStructureSO residentialZone2 = CreateZoneAtPosition(new Vector3Int(0, 0, 6)); SingleFacilitySO facility = CreateFacilityAtPosition(new Vector3Int(6, 0, 6), FacilityType.Power); StructureEconomyManager.PrepareStructureForRemoval(new Vector3Int(0, 0, 0), _grid); StructureEconomyManager.PrepareStructureForRemoval(new Vector3Int(0, 0, 3), _grid); _grid.RemoveStructureFromTheGrid(new Vector3(0, 0, 0)); _grid.RemoveStructureFromTheGrid(new Vector3(0, 0, 3)); Assert.True(residentialZone2.HasPower()); Assert.True(facility.GetNumberOfCustomers() == 1); }
public void StructureEconomyManagerRemovePowerFacilityNear3Residential3Connected() { ZoneStructureSO residentialZone = CreateZoneAtPosition(new Vector3Int(0, 0, 0)); ZoneStructureSO residentialZone1 = CreateZoneAtPosition(new Vector3Int(0, 0, 3)); ZoneStructureSO residentialZone2 = CreateZoneAtPosition(new Vector3Int(0, 0, 6)); SingleFacilitySO facility = CreateFacilityAtPosition(new Vector3Int(6, 0, 6), FacilityType.Power); StructureEconomyManager.PrepareFacilityRemoval(new Vector3Int(6, 0, 6), _grid); _grid.RemoveStructureFromTheGrid(new Vector3Int(6, 0, 6)); Assert.False(residentialZone.HasPower()); Assert.False(residentialZone1.HasPower()); Assert.False(residentialZone2.HasPower()); Assert.True(_grid.GetStructureDataFromTheGrid(new Vector3Int(6, 0, 6)) == null); }
private static bool DoesStructureRequireAnyResource(ZoneStructureSO zoneData) { return((zoneData.requirePower && zoneData.HasPower() == false) || (zoneData.requireWater && zoneData.HasWater() == false)); }