public void Awake()
    {
        var noiseGenerator = new NoiseGenerator(
            Mathf.RoundToInt(terrain.terrainData.size.x),
            Mathf.RoundToInt(terrain.terrainData.size.z)
            );

        //lists
        var buildingList = new BuildingList();
        var personList   = new PersonList();

        peopleManager.Init(personList);

        var mapGenerator = new MapGenerator(terrain.terrainData, noiseGenerator, buildingList, personList);

        mapGenerator.Generate();

        var terrainHitter = new TerrainHitter();

        cameraManager.Init(terrainHitter);
        var terrainPositionsFromCameraBoundariesGetter = new TerrainPositionsFromCameraBoundariesGetter(terrainHitter, cameraComponent);

        //displayers
        var buildingsDisplayer = new BuildingsDisplayer(objectPoolerManager, buildingList);
        var peopleDisplayer    = new PeopleDisplayer(objectPoolerManager, personList);

        objectPoolerDisplayer.Init(terrainPositionsFromCameraBoundariesGetter, buildingsDisplayer, peopleDisplayer);
    }
예제 #2
0
        public BuildingPlacer(
            BuildingFromSpawnerGetter buildingFromSpawnerGetter,
            TerrainHitter terrainHitter,
            Camera cameraComponent,
            BuildingList buildingList,
            BuildingsDisplayer buildingsDisplayer,
            BuildingCollisionDetector buildingCollisionDetector,
            BuildingByTypeSpawner buildingByTypeSpawner,
            MapLayerMatrixManager mapLayerMatrixManager,
            MapLayerMatrix mapLayerMatrixWallsEditor
            )
        {
            _buildingFromSpawnerGetter = buildingFromSpawnerGetter;
            _terrainHitter             = terrainHitter;
            _cameraComponent           = cameraComponent;
            _buildingList              = buildingList;
            _buildingsDisplayer        = buildingsDisplayer;
            _buildingCollisionDetector = buildingCollisionDetector;
            _buildingByTypeSpawner     = buildingByTypeSpawner;

            _mapLayerMatrixManager     = mapLayerMatrixManager;
            _mapLayerMatrixWallsEditor = mapLayerMatrixWallsEditor;
        }
예제 #3
0
 public TerrainPositionsFromCameraBoundariesGetter(TerrainHitter terrainHitter, Camera cameraComponent)
 {
     _terrainHitter   = terrainHitter;
     _cameraComponent = cameraComponent;
 }
예제 #4
0
 public void Init(TerrainHitter terrainHitter)
 {
     _terrainHitter = terrainHitter;
 }
예제 #5
0
    public void Awake()
    {
        //config
        var terrainData = terrain.terrainData;

        int mapWidth  = terrainData.heightmapResolution;
        int mapHeight = terrainData.heightmapResolution;

        //lists
        var buildingList = new BuildingList();

        //matrices
        var mapLayerMatrixManager = new MapLayerMatrixManager();

        var mapLayerMatrixBuildings   = new MapLayerMatrix((short)mapWidth, (short)mapHeight);
        var mapLayerMatrixWalls       = new MapLayerMatrix((short)mapWidth, (short)mapHeight);
        var mapLayerMatrixWallsEditor = new MapLayerMatrix((short)mapWidth, (short)mapHeight);

        var terrainHitter = new TerrainHitter();

        cameraManager.Init(terrainHitter);
        var terrainPositionsFromCameraBoundariesGetter = new TerrainPositionsFromCameraBoundariesGetter(terrainHitter, cameraComponent);

        buildingsTypesList.Init();

        var buildingAreaGetter       = new BuildingAreaGetter(buildingsTypesList);
        var buildingMapMatrixUpdater = new BuildingMapMatrixUpdater(
            buildingAreaGetter,
            mapLayerMatrixManager,
            mapLayerMatrixBuildings
            );

        var wallSpawner = new WallSpawner(
            buildingList,
            buildingMapMatrixUpdater,
            wallData,
            mapLayerMatrixManager,
            mapLayerMatrixWalls
            );

        var towerSpawner = new TowerSpawner(buildingList, buildingMapMatrixUpdater);
        var buildingFromSpawnerGetter = new BuildingFromSpawnerGetter(wallSpawner, towerSpawner);

        var wallSidesUpdater = new WallSidesUpdater(
            mapLayerMatrixManager,
            mapLayerMatrixWallsEditor,
            mapLayerMatrixWalls
            );

        //displayers
        var buildingsDisplayer = new BuildingsDisplayer(objectPoolerManager, buildingList, wallSidesUpdater);

        objectPoolerDisplayer.Init(terrainPositionsFromCameraBoundariesGetter, buildingsDisplayer);

        var buildingCollisionDetector = new BuildingCollisionDetector(
            buildingAreaGetter,
            mapLayerMatrixManager,
            mapLayerMatrixBuildings
            );

        var buildingByTypeSpawner = new BuildingByTypeSpawner(wallSpawner, towerSpawner);

        var buildingPlacer = new BuildingPlacer(
            buildingFromSpawnerGetter,
            terrainHitter,
            cameraComponent,
            buildingList,
            buildingsDisplayer,
            buildingCollisionDetector,
            buildingByTypeSpawner,
            mapLayerMatrixManager,
            mapLayerMatrixWallsEditor
            );

        viewManager.Init(buildingsTypesList, buildingPlacer, canvas);
    }