Esempio n. 1
0
    //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;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
Esempio n. 2
0
 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;
        }
Esempio n. 4
0
        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);
        }
Esempio n. 7
0
    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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 15
0
    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);
        }
Esempio n. 17
0
 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);
 }
Esempio n. 18
0
 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);
 }
Esempio n. 21
0
    public static IEnumerable <StructureBaseSO> PrepareFacilityDemolition(Vector3Int gridPosition, GridStructure grid)
    {
        SingleFacilitySO faciltityData = (SingleFacilitySO)grid.GetStructureDataFromTheGrid(gridPosition);

        return(faciltityData.PrepareForDestruction());
    }