private void CreateRoadAtPosition(Vector3Int position)
        {
            RoadStructureSO roadStructure = ScriptableObject.CreateInstance <RoadStructureSO>();

            _grid.PlaceStructureOnTheGrid(_structureObject, position, roadStructure);
            StructureEconomyManager.PrepareRoadStructure(position, _grid);
        }
Example #2
0
    public static IEnumerable <StructureBaseSO> PrepareRoadDemolition(Vector3Int gridPosition, GridStructure grid)
    {
        RoadStructureSO roadData             = (RoadStructureSO)grid.GetStructureDataFromTheGrid(gridPosition);
        var             structuresAroundRoad = grid.GetStructuresDataInRange(gridPosition, roadData.structureRange);

        return(roadData.PrepareRoadDemolition(structuresAroundRoad));
    }
        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;
        }
Example #4
0
        public void InitBeforeEveryTests()
        {
            PlacementManager placementManager = Substitute.For <PlacementManager>();

            materialTransparent = new Material(Shader.Find("Standard"));
            placementManager.transparentMaterial = materialTransparent;
            GameObject ground = new GameObject();

            ground.transform.position = Vector3.zero;
            placementManager.ground   = ground.transform;
            StructureRepository structureRepository = Substitute.For <StructureRepository>();
            CollectionSO        collection          = new CollectionSO();
            RoadStructureSO     road = new RoadStructureSO();

            road.buildingName = "Road";
            GameObject roadChild = new GameObject("Road", typeof(MeshRenderer));

            roadChild.GetComponent <MeshRenderer>().material.color = Color.blue;
            GameObject roadPrefab = new GameObject("Road");

            roadChild.transform.SetParent(roadPrefab.transform);
            road.prefab = roadPrefab;
            collection.roadStructure = road;
            structureRepository.modelDataCollection = collection;
            buildingManager = new BuildingManager(3, 10, 10, placementManager, structureRepository);
        }
Example #5
0
    //what to do when road is placed
    public static void PrepareRoadStructure(Vector3Int gridPosition, GridStructure grid)
    {
        RoadStructureSO roadData             = (RoadStructureSO)grid.GetStructureDataFromTheGrid(gridPosition);
        var             structuresAroundRoad = grid.GetStructuresDataInRange(gridPosition, roadData.structureRange);

        roadData.PrepareRoad(structuresAroundRoad);
    }
Example #6
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;
        }
Example #7
0
        public void CellGetStructureData()
        {
            Cell            cell   = new Cell();
            RoadStructureSO roadSO = ScriptableObject.CreateInstance <RoadStructureSO>();

            cell.SetConstruction(new GameObject(), roadSO);
            Assert.AreEqual(roadSO, cell.GetStructureData());
        }
Example #8
0
        public void CellGetStructureData()
        {
            Cell            cell   = new Cell();
            RoadStructureSO roadSO = new RoadStructureSO();

            cell.SetConstruction(new GameObject(), roadSO);

            Assert.AreEqual(roadSO, cell.GetStructureData());
        }
        public void StructureManagerEconomyTestsRemoveRoadNearReidentialStructureRoadDiagonalConnections()
        {
            ZoneStructureSO residentialZone = CreateZoneAtPosition(new Vector3Int(0, 0, 0));
            RoadStructureSO roadStructure   = ScriptableObject.CreateInstance <RoadStructureSO>();

            CreateRoadAtPosition(new Vector3Int(3, 0, 3));
            StructureEconomyManager.PrepareRoadRemoval(new Vector3Int(3, 0, 3), _grid);
            _grid.RemoveStructureFromTheGrid(new Vector3(3, 0, 3));
            Assert.False(residentialZone.HasRoadAccess());
        }
Example #10
0
        public void StructureEconomyManagerRemoveRoadNearReidentialStructureConnection()
        {
            ZoneStructureSO residentialZone = CreateZOneAtPosition(new Vector3Int(0, 0, 0));
            RoadStructureSO roadStructure   = ScriptableObject.CreateInstance <RoadStructureSO>();

            CreateRoadATPosition(new Vector3Int(3, 0, 0));
            StructureEconomyManager.PrepareRoadDemolition(new Vector3Int(3, 0, 0), grid);
            grid.RemoveStructureFromTheGrid(new Vector3(3, 0, 0));
            Assert.False(residentialZone.HasRoadAccess());
        }
Example #11
0
    public static StructureRepository CreateStructureRepositoryContainingRoad()
    {
        StructureRepository structureRepository = Substitute.For <StructureRepository>();
        CollectionSO        collection          = new CollectionSO();
        RoadStructureSO     road = new RoadStructureSO();

        road.buildingName        = "Road";
        road.prefab              = GetAGameObjectWithMaterial();
        collection.roadStructure = road;
        structureRepository.modelDataCollection = collection;
        return(structureRepository);
    }
Example #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);
        }
Example #13
0
        public void GetDataStructureTest()
        {
            RoadStructureSO       road            = ScriptableObject.CreateInstance <RoadStructureSO>();
            SingleStructureBaseSO singleStructure = ScriptableObject.CreateInstance <SingleFacilitySO>();
            GameObject            gameObject      = new GameObject();

            grid.PlaceStructureOnTheGrid(gameObject, new Vector3(0, 0, 0), road);
            grid.PlaceStructureOnTheGrid(gameObject, new Vector3(3, 0, 0), road);
            grid.PlaceStructureOnTheGrid(gameObject, new Vector3(0, 0, 3), singleStructure);
            grid.PlaceStructureOnTheGrid(gameObject, new Vector3(3, 0, 3), singleStructure);
            var list = grid.GetAllStructures().ToList();

            Assert.IsTrue(list.Count == 4);
        }
        public void GetDataStructureInRange2Contains8Test()
        {
            RoadStructureSO       road            = ScriptableObject.CreateInstance <RoadStructureSO>();
            SingleStructureBaseSO singleStructure = ScriptableObject.CreateInstance <SingleFacilitySO>();
            GameObject            gameObject      = new GameObject();

            _grid.PlaceStructureOnTheGrid(gameObject, new Vector3(3, 0, 3), road);
            _grid.PlaceStructureOnTheGrid(gameObject, new Vector3(6, 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(6, 0, 9), road);
            _grid.PlaceStructureOnTheGrid(gameObject, new Vector3(9, 0, 9), road);
            _grid.PlaceStructureOnTheGrid(gameObject, new Vector3(3, 0, 6), road);
            _grid.PlaceStructureOnTheGrid(gameObject, new Vector3(9, 0, 6), road);
            var list = _grid.GetStructuresDataInRange(new Vector3(6, 0, 6), 2).ToList();

            Assert.IsTrue(list.Count == 8);
        }
        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;
        }