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