/// <summary> /// Place a single building instatiating from existing. /// </summary> private void PlaceBuilding(Building.CellPosition pos) { if (!buildingCollider.GetComponent <BuilderCollider>().isValid) { return; } FinalizeBuilding(Instantiate(building, buildingsContainer.transform), pos); CleanActionState(); followPointer = true; }
/// <summary> /// Made some after built setups. /// </summary> /// <param name="obj"></param> private void FinalizeBuilding(GameObject obj, Building.CellPosition pos) { Building buildingHelper = obj.GetComponent <Building>(); obj.GetComponent <BoxCollider2D>().enabled = true; buildingHelper.SetDefaultView(); buildingHelper.SetPosition(pos); obj.transform.position = new Vector3( obj.transform.position.x, obj.transform.position.y, -0.9999f ); }
/// <summary> /// Place building from matrix. /// </summary> private void PlaceMatrixBuildings(Building.CellPosition pos) { // If building is not valid destroy all prepared instances. foreach (GameObject obj in preparedForBuild) { if (!buildingCollider.GetComponent <BuilderCollider>().isValid) { Destroy(obj); } else { BuilderMatrixCell matrixPos = buildingsMatrix.Find(x => x.gameObject == obj); Building.CellPosition cellPos = new Building.CellPosition() { row = Mathf.Abs(matrixPos.y) + pos.row, col = Mathf.Abs(matrixPos.x) + pos.col }; FinalizeBuilding(obj, cellPos); } } CleanActionState(); }