Exemple #1
0
        public void Remove(MapLayerMatrix mapLayerMatrix, short pointX, short pointY, byte radius, sbyte forcedValue = -1)
        {
            for (int x = pointX - radius; x < pointX + radius + 1; x++)
            {
                if (x < 0 || x > mapLayerMatrix.Width - 1)
                {
                    continue;
                }

                for (int y = pointY - radius; y < pointY + radius + 1; y++)
                {
                    if (y < 0 || y > mapLayerMatrix.Height - 1)
                    {
                        continue;
                    }

                    if (forcedValue == -1)
                    {
                        mapLayerMatrix.Matrix[x, y] -= (byte)((radius + 1) - Math.Max(Math.Abs(pointX - x), Math.Abs(pointY - y)));
                    }
                    else
                    {
                        mapLayerMatrix.Matrix[x, y] = (byte)forcedValue;
                    }
                }
            }

            mapLayerMatrix.LastUpdate = DateTime.Now.Ticks;
        }
Exemple #2
0
        public byte Get(MapLayerMatrix mapLayerMatrix, short pointX, short pointY)
        {
            if (pointX < 0 || pointY < 0 || pointX > mapLayerMatrix.Width - 1 || pointY > mapLayerMatrix.Height - 1)
            {
                return(0);
            }

            return(mapLayerMatrix.Matrix[pointX, pointY]);
        }
 WallSidesUpdater(
     MapLayerMatrixManager mapLayerMatrixManager,
     MapLayerMatrix mapLayerMatrixWallsEditor,
     MapLayerMatrix mapLayerMatrixWalls
     )
 {
     _mapLayerMatrixManager     = mapLayerMatrixManager;
     _mapLayerMatrixWallsEditor = mapLayerMatrixWallsEditor;
     _mapLayerMatrixWalls       = mapLayerMatrixWalls;
 }
Exemple #4
0
        public BuildingCollisionDetector(
            BuildingAreaGetter buildingAreaGetter,
            MapLayerMatrixManager mapLayerMatrixManager,
            MapLayerMatrix mapLayerMatrixBuildings
            )
        {
            _buildingAreaGetter = buildingAreaGetter;

            _mapLayerMatrixManager   = mapLayerMatrixManager;
            _mapLayerMatrixBuildings = mapLayerMatrixBuildings;
        }
Exemple #5
0
        public BuildingMapMatrixUpdater(
            BuildingAreaGetter buildingAreaGetter,
            MapLayerMatrixManager mapLayerMatrixManager,
            MapLayerMatrix mapLayerMatrixBuildings
            )
        {
            _buildingAreaGetter = buildingAreaGetter;

            _mapLayerMatrixManager   = mapLayerMatrixManager;
            _mapLayerMatrixBuildings = mapLayerMatrixBuildings;
        }
Exemple #6
0
 public WallSpawner(
     BuildingList buildingList,
     BuildingMapMatrixUpdater buildingMapMatrixUpdater,
     WallData wallData,
     MapLayerMatrixManager mapLayerMatrixManager,
     MapLayerMatrix mapLayerMatrixWalls
     ) : base(buildingList, buildingMapMatrixUpdater)
 {
     _wallData = wallData;
     _mapLayerMatrixManager = mapLayerMatrixManager;
     _mapLayerMatrixWalls   = mapLayerMatrixWalls;
 }
Exemple #7
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;
        }
    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);
    }