private void addRedBoxAroundResident(string side, int num) { //adds a red border around a resident, to draw attention to that resident SideHintTile[] row; if (side == "top") { row = gameManager.puzzleGenerator.topHints; } else if (side == "bottom") { row = gameManager.puzzleGenerator.bottomHints; } else if (side == "left") { row = gameManager.puzzleGenerator.leftHints; } else { row = gameManager.puzzleGenerator.rightHints; } SideHintTile s = row[num]; s.addRedBorder(); }
public void drawFullPuzzle() { //draws the visuals for the puzzle tiles, borders, residents, and street corners float desiredPuzzleSize = puzzlePositioning.transform.localScale.x; if (canvas.GetComponent <RectTransform>().rect.height > canvas.GetComponent <CanvasScaler>().referenceResolution.y) { desiredPuzzleSize *= (canvas.GetComponent <CanvasScaler>().referenceResolution.y / canvas.GetComponent <RectTransform>().rect.height); } float defaultTileScale = puzzleGenerator.puzzleTilePrefab.GetComponent <BoxCollider2D>().size.x; float currentPuzzleSize = (size + 2) * defaultTileScale; float scaleFactor = desiredPuzzleSize / currentPuzzleSize; Vector2 puzzleCenter = puzzlePositioning.transform.position; //draw puzzle Transform parent = puzzlePositioning.transform; float totalSize = size * scaleFactor * defaultTileScale; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { Vector2 pos = new Vector2(puzzleCenter.x - (totalSize / 2) + (scaleFactor * defaultTileScale * (j + 0.5f)), puzzleCenter.y + (totalSize / 2) - (scaleFactor * defaultTileScale * (i + 0.5f))); puzzleGenerator.tilesArray[i, j].setValues(pos, scaleFactor, parent); puzzleGenerator.tilesArray[i, j].transform.Find("Building").gameObject.SetActive(showBuildings); } } //draw hints float topy = puzzleCenter.y + ((totalSize) / 2) + (scaleFactor * defaultTileScale * 0.5f); float bottomy = puzzleCenter.y - ((totalSize) / 2) - (scaleFactor * defaultTileScale * 0.5f); float leftx = puzzleCenter.x - (totalSize / 2) - (scaleFactor * defaultTileScale * (0.5f)); float rightx = puzzleCenter.x + (totalSize / 2) + (scaleFactor * defaultTileScale * (0.5f)); for (int i = 0; i < size; i++) { float tbx = puzzleCenter.x - (totalSize / 2) + (scaleFactor * defaultTileScale * (i + 0.5f)); float lry = puzzleCenter.y + ((totalSize) / 2) - (scaleFactor * defaultTileScale * (i + 0.5f)); SideHintTile topTile = puzzleGenerator.topHints[i]; SideHintTile bottomTile = puzzleGenerator.bottomHints[i]; SideHintTile leftTile = puzzleGenerator.leftHints[i]; SideHintTile rightTile = puzzleGenerator.rightHints[i]; topTile.setValues(new Vector2(tbx, topy), scaleFactor, parent); bottomTile.setValues(new Vector2(tbx, bottomy), scaleFactor, parent); leftTile.setValues(new Vector2(leftx, lry), scaleFactor, parent); rightTile.setValues(new Vector2(rightx, lry), scaleFactor, parent); topTile.rotateHint(0, (totalSize / size)); bottomTile.rotateHint(180, (totalSize / size)); leftTile.rotateHint(90, (totalSize / size)); rightTile.rotateHint(270, (totalSize / size)); } foreach (SideHintTile h in puzzleGenerator.allHints) { h.addHint(); } //draw street corners Vector2 topLeftPos = new Vector2(leftx, topy); Vector2 bottomLeftPos = new Vector2(leftx, bottomy); Vector2 topRightPos = new Vector2(rightx, topy); Vector2 bottomRightPos = new Vector2(rightx, bottomy); createCorner(topLeftPos, scaleFactor, 0, parent); createCorner(bottomLeftPos, scaleFactor, 90, parent); createCorner(topRightPos, scaleFactor, 270, parent); createCorner(bottomRightPos, scaleFactor, 180, parent); }