public static void EditSlotShape(Transform slot, GameShape.ShapeType shapeType, GameShape.ColorType shapeColor, float shapeSize) { GameShape newShape = slot.GetComponent <GameSlot>().GetSlotShapeTransform().GetComponent <GameShape>(); newShape.transform.localScale = new Vector3(shapeSize, shapeSize); GameShape shapeRef = newShape.GetComponent <GameShape>(); shapeRef.SetShapeColor(shapeColor); shapeRef.SetShapeType(shapeType); EditorUtility.SetDirty(shapeRef); EditorUtility.SetDirty(shapeRef.GetComponent <Image>()); EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); }
private void ConstructBoard(BoardData data, Transform boardParent) { // Getting board parents //GameObject shapePrefab = GameManager.manager.shapePrefab; float cellSize = boardParent.GetComponent <GridLayoutGroup>().cellSize.y; float shapeSize = 2.25f * (cellSize / 384); int boardCount = data.boardSize.x * data.boardSize.y; boardManager.shapeSize = shapeSize; // Declaring Tracker Variables GameSlot slot; GameShape shape; SlotLock slotLock; ShapeTransformer shapeTransformer; // Loop through the board and set the board state to the data for (int i = 0; i < boardCount; i++) { // Getting the Game Slot/Shape Reference slot = boardParent.GetChild(i).GetComponent <GameSlot>(); shape = slot?.GetSlotShape(); slotLock = slot?.GetSlotLock(); shapeTransformer = boardParent.GetChild(i).GetComponent <ShapeTransformer>(); #region Generating Slot Shape if (shape != null) { // Checking if a shape doesn't exist on the passed in data if (data.shapes[i] == null || data.shapes[i].shapeType == GameShape.ShapeType.None) { Destroy(shape.gameObject); } else if (shape.GetShapeData() != data.shapes[i]) { // Shape does exist but doesn't match the shape in the data, set them to be equivalent shape.SetShapeColor(data.shapes[i].shapeColor); shape.SetShapeType(data.shapes[i].shapeType); } } else { // Checking to see if a shape exists in the data at the given spot, if so create a new one if (data.shapes[i] != null && data.shapes[i].shapeType != GameShape.ShapeType.None) { // Creating the shape GameObject newShape = Instantiate(shapePrefab, slot.transform); newShape.transform.localPosition = new Vector3(0.5f, -0.5f, 0f); newShape.transform.localScale = new Vector3(shapeSize, shapeSize, 0f); // Getting the GameShape reference and setting it equal to the shape in the data GameShape shapeRef = newShape.GetComponent <GameShape>(); shapeRef.SetShapeColor(data.shapes[i].shapeColor); shapeRef.SetShapeType(data.shapes[i].shapeType); slot.SetSlotShapeReference(shapeRef.transform); } } #endregion #region Generating Slot Lock if (slotLock != null) { LockData lockData = data.locks[i]; if (lockData != null) { Debug.Log($"Generating Slot Lock at Index {i} of type {lockData.lockType} with {lockData.lockTimer} move(s) left"); // Active if (lockData.lockTimer > 0) { if (slotLock.GetLockCounter() <= 0) { slotLock.SetLockToActive(); } slotLock.SetLockSettings(lockData.lockType, lockData.lockTimer); slot.LockGameSlot(); } else if (slotLock.GetLockCounter() > 0) { slotLock.SetLockToDestruct(); } } } else { LockData lockData = data.locks[i]; if (lockData != null && lockData.lockType != SlotLock.LockType.None) { GameObject newLock = Instantiate(slotLockPrefab, slot.transform); newLock.transform.localPosition = new Vector3(0f, -cellSize / 2f, 0f); newLock.transform.localScale = new Vector3(cellSize / 384f, cellSize / 384f); slotLock = newLock.GetComponent <SlotLock>(); slotLock.SetLockSettings(lockData.lockType, lockData.lockTimer); slot.GetComponent <GameSlot>().SetSlotLock(slotLock); } } #endregion #region Generate Shape Transformers if (shapeTransformer != null) { shapeTransformer.SetTransformerData(data.transformers[i]); } #endregion } }