//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 DisplayFacilityStructureInfo(SingleFacilitySO data) { Show(); 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); } SetText(clientsTxt, data.GetNumberOfCustomers() + "/" + data.maxCustomers); }
public void Init() { structureRepo = Substitute.For <StructureRepository>(); CollectionSO collection = new CollectionSO(); testRoad = new GameObject(); testSingleStructure = new GameObject(); testZone = new GameObject(); var road = new RoadStructureSO(); road.buildingName = "Road"; road.prefab = testRoad; var facility = new SingleFacilitySO(); facility.buildingName = "PowerPlant"; facility.prefab = testSingleStructure; var zone = new ZoneStructureSO(); zone.buildingName = "Commercial"; zone.prefab = testZone; collection.roadStructure = road; collection.singleStructureList = new List <SingleStructureBaseSO>(); collection.singleStructureList.Add(facility); collection.zonesList = new List <ZoneStructureSO>(); collection.zonesList.Add(zone); structureRepo.modelDataCollection = collection; }
public void Init() { CollectionSO collection = new CollectionSO(); var road = new RoadStructureSO(); road.buildingName = "Road"; collection.roadStructure = road; var facility = new SingleFacilitySO(); facility.buildingName = "PowerPlant"; collection.singleStructureList = new List <SingleStructureBaseSO>(); collection.singleStructureList.Add(facility); var zone = new ZoneStructureSO(); zone.buildingName = "Commercial"; collection.zonesList = new List <ZoneStructureSO>(); collection.zonesList.Add(zone); GameObject testObject = new GameObject(); repository = testObject.AddComponent <StructureRepository>(); repository.modelDataCollection = collection; }
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); }
private SingleFacilitySO CreateSiloSingleFacilityAtPosition(Vector3Int position) { SingleFacilitySO silo = CreateSiloSingleFacility(); _grid.PlaceStructureOnTheGrid(_structureObject, position, silo); StructureEconomyManager.PrepareFacilityStructure(position, _grid); return(silo); }
public static void PrepareFacilityStructure(Vector3Int gridPosition, GridStructure grid) { PrepareNewStructure(gridPosition, grid); SingleFacilitySO faciltityData = (SingleFacilitySO)grid.GetStructureDataFromTheGrid(gridPosition); var structuresAroundFacility = grid.GetStructuresDataInRange(gridPosition, faciltityData.singleStructureRange); faciltityData.AddClients(structuresAroundFacility); }
public void StructureEconomyManagerPlaceUpgradedFacilityAddsMoreClients() { //Add Test here for upgraded silo SingleFacilitySO facility = CreateFacilityAtPosition(new Vector3Int(6, 0, 0), FacilityType.Power); facility.singleStructureRange = 1; ZoneStructureSO residentialZone = CreateZoneAtPosition(new Vector3Int(0, 0, 0)); Assert.True(facility.GetNumberOfCustomers() == 0); }
public void StructureEconomyManagerAdd3FacilityStructureNearRoadConnectionWith1() { CreateRoadATPosition(new Vector3Int(3, 0, 3)); SingleFacilitySO facility = CreateFacilityAtPosition(new Vector3Int(0, 0, 0)); SingleFacilitySO facility1 = CreateFacilityAtPosition(new Vector3Int(0, 0, 3)); SingleFacilitySO facility2 = CreateFacilityAtPosition(new Vector3Int(0, 0, 6)); Assert.False(facility.HasRoadAccess()); Assert.True(facility1.HasRoadAccess()); Assert.False(facility2.HasRoadAccess()); }
private SingleFacilitySO CreateFacilityAtPosition(Vector3Int positon, FacilityType facilityType = FacilityType.None) { SingleFacilitySO facility = new SingleFacilitySO(); facility.requireRoadAccess = true; facility.singleStructureRange = 3; facility.facilityType = facilityType; facility.maxCustomers = 3; _grid.PlaceStructureOnTheGrid(_structureObject, positon, facility); StructureEconomyManager.PrepareFacilityStructure(positon, _grid); return(facility); }
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 GetDataStructureInRange1Contains0Test() { RoadStructureSO road = new RoadStructureSO(); SingleStructureBaseSO singleStructure = new SingleFacilitySO(); GameObject gameObject = new GameObject(); grid.PlaceStructureOnTheGrid(gameObject, new Vector3(3, 0, 3), road); grid.PlaceStructureOnTheGrid(gameObject, new Vector3(9, 0, 3), road); grid.PlaceStructureOnTheGrid(gameObject, new Vector3(3, 0, 9), road); grid.PlaceStructureOnTheGrid(gameObject, new Vector3(9, 0, 9), road); var list = grid.GetStructuresDataInRange(new Vector3(6, 0, 6), 1).ToList(); Assert.IsTrue(list.Count == 0); }
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); }
public static StructureRepository CreateStructureRepositoryContainingFacility() { StructureRepository structureRepository = Substitute.For <StructureRepository>(); CollectionSO collection = ScriptableObject.CreateInstance <CollectionSO>(); SingleFacilitySO facility = ScriptableObject.CreateInstance <SingleFacilitySO>(); facility.buildingName = "Water Tower"; facility.prefab = GetAGameObjectWithMaterial(); collection.singleStructures = new List <SingleStructureBaseSO>(); collection.singleStructures.Add(facility); structureRepository.modelDataCollection = collection; return(structureRepository); }
private static SingleFacilitySO CreateSiloSingleFacility() { SingleFacilitySO silo = ScriptableObject.CreateInstance <SingleFacilitySO>(); GameObject TestPrefab = new GameObject(); GameObject TestPrefab2 = new GameObject(); silo.buildingName = "Silo"; silo.facilityType = FacilityType.Silo; silo.requireRoadAccess = true; silo.requirePower = false; silo.requireWater = false; silo.upgradable = true; silo.fullyUpgraded = false; silo.upkeepCost = 0; silo.prefab = TestPrefab; silo.upgradeLevelPrefabs[0] = TestPrefab2; return(silo); }
public void DisplayFacilityStructureInfo(SingleFacilitySO data) { Show(); HideElement(upkeepText.gameObject); HideElement(residentsText.gameObject); SetText(nameText, data.buildingName); SetText(incomeText, data.GetIncome() + ""); SetText(clientText, data.GetNumberOfCustomers() + "/" + data.maxCustomers); CheckStructureToDisplayMaterialBuildTimeText(data); CheckStructureToDisplayUpgradeAmountText(data); CheckStructureToDisplayPowerToggle(data); CheckStructureToDisplayRoadToggle(data); CheckStructureToDisplayWaterToggle(data); CheckStructureToDisplayUpgradeToggle(data); CheckStructureToDisplaySiloToggle(data); CheckStructureToDisplayLawEnforcementToggle(data); CheckStructureToDisplayFireProtectionToggle(data); CheckStructureToDisplayHealthcareToggle(data); CheckStructureToDisplayPostalServiceToggle(data); CheckStructureToDisplayBankingServiceToggle(data); CheckStructureToDisplayGarbageServiceToggle(data); }
private static void AddFacilityTypeToStructure(Vector3Int gridPosition, GridStructure grid, StructureBaseSO structureData) { if (DoesStructureRequireAnyResources(structureData)) { var structuresAroundPositions = grid.GetStructurePositionInRange(gridPosition, structureData.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 && structureData.HasPower() == false && structureData.requirePower) || (facility.facilityType == FacilityType.Water && structureData.HasWater() == false && structureData.requireWater) || (facility.facilityType == FacilityType.Silo && structureData.HasSilo() == false && structureData.requireSilo) || (facility.facilityType == FacilityType.Healthcare && structureData.HasHealthcare() == false && structureData.requireHealthcare) || (facility.facilityType == FacilityType.LawEnforcement && structureData.HasLawEnforcement() == false && structureData.requireLawEnforcement) || (facility.facilityType == FacilityType.FireProtection && structureData.HasFireProtection() == false && structureData.requireFireProtection) || (facility.facilityType == FacilityType.Postal && structureData.HasPostalService() == false && structureData.requirePostalService) || (facility.facilityType == FacilityType.Banking && structureData.HasBankingService() == false && structureData.requireBankService) || (facility.facilityType == FacilityType.Garbage && structureData.HasGarbageService() == false && structureData.requireGarbageService) || (facility.facilityType == FacilityType.Education && structureData.HasEducationService() == false && structureData.requireEducationSerivce)) { if (grid.ArePositionsInRange(gridPosition, structurePositionNearBy, facility.singleStructureRange)) { if (facility.IsFull() == false) { facility.AddClient(new StructureBaseSO[] { structureData }); if (DoesStructureRequireAnyResources(structureData) == false) { return; } } } } } } } }
public void Init() { CollectionSO collection = ScriptableObject.CreateInstance <CollectionSO>(); RoadStructureSO road = ScriptableObject.CreateInstance <RoadStructureSO>(); ZoneStructureSO zone = ScriptableObject.CreateInstance <ZoneStructureSO>(); SingleFacilitySO facility = ScriptableObject.CreateInstance <SingleFacilitySO>(); //SingleStructureBaseSO single = ScriptableObject.CreateInstance<SingleStructureBaseSO>(); road.buildingName = "Road"; zone.buildingName = "Commercial"; facility.buildingName = "PowerPlant"; collection.roadStructure = road; collection.singleStructures = new List <SingleStructureBaseSO>(); collection.singleStructures.Add(facility); collection.zoneStructures.Add(zone); GameObject testObject = new GameObject(); _repository = testObject.AddComponent <StructureRepository>(); _repository.modelDataCollection = collection; }
public void DisplayFacilityStructureInfo(SingleFacilitySO data) { structureInfoPanelHelper.DisplayFacilityStructureInfo(data); }
public static IEnumerable <StructureBaseSO> PrepareFacilityDemolition(Vector3Int gridPosition, GridStructure grid) { SingleFacilitySO faciltityData = (SingleFacilitySO)grid.GetStructureDataFromTheGrid(gridPosition); return(faciltityData.PrepareForDestruction()); }