private void Drag(PipeSlot pipeSlot) { if (draggableObject.enabled) { draggableObject.transform.position = Input.mousePosition; } }
private void Drop(PipeSlot pipeSlot) { Pipe draggedPipe = draggedSlot.Pipe; if (draggedSlot.canDrag && pipeSlot.canDrag) { draggedSlot.Pipe = pipeSlot.Pipe; pipeSlot.Pipe = draggedPipe; } }
private void BeginDrag(PipeSlot pipeSlot) { if (pipeSlot.Pipe != null && pipeSlot.canDrag) { draggedSlot = pipeSlot; draggableObject.sprite = pipeSlot.Pipe.Icon; draggableObject.transform.position = Input.mousePosition; draggableObject.enabled = true; } }
private void EndDrag(PipeSlot pipeSlot) { draggedSlot = null; draggableObject.enabled = false; }
private void Update() { waitingTime -= Time.deltaTime; if (isDone && waitingTime <= -1.0f) { if (fail) { SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); } else { SceneManager.LoadScene("Level_tutorial"); } } recentSlot = pipeSlots[i]; recentSlot.canDrag = false; recentPipe = pipeSlots[i].Pipe; animationTimer += Time.deltaTime; AnimateTile(recentSlot, recentPipe); targetTime -= Time.deltaTime; if (targetTime <= 0.0f && !isDone) { currentTile = 0; animationTimer = 0.0f; try { //Check if there's connection to the right if ((recentPipe.right && (i + 1) % 8 != 7 && pipeSlots[i + 1].Pipe.left && !cameFrom.Equals("right"))) { i += 1; cameFrom = "left"; Debug.Log("ide w prawo"); } //Check if there's connection to the top else if (recentPipe.top && i - 8 > 0 && pipeSlots[i - 8].Pipe.bot && !cameFrom.Equals("top")) { i -= 8; cameFrom = "bot"; Debug.Log("ide do gory"); } //Check if there's connection to the left else if (recentPipe.left && (i - 1) % 8 >= 0 && pipeSlots[i - 1].Pipe.right && !cameFrom.Equals("left")) { i -= 1; cameFrom = "right"; Debug.Log("ide w lewo"); } //Check if there's connection to the down else if (recentPipe.bot && i + 8 < pipeSlots.Length && pipeSlots[i + 8].Pipe.top && !cameFrom.Equals("bot")) { i += 8; cameFrom = "top"; Debug.Log("ide w dol."); } //implementation of edge case else if (recentPipe.right && i == 38 && pipeSlots[i + 1].Pipe.left) { recentPipe = pipeSlots[i + 1].Pipe; i += 1; Debug.Log("ide w prawo"); } else { isDone = true; waitingTime = 0.0f; fail = true; tryAgainText.SetActive(true); Debug.Log("Przegrales"); } targetTime += 3.0f; } catch (Exception) { isDone = true; waitingTime = 0.0f; fail = true; tryAgainText.SetActive(true); Debug.Log("Przegrales"); } if (i == pipeSlots.Length - 1) { waitingTime = 0.0f; Debug.Log("Finally"); isDone = true; } } }
private void AnimateTile(PipeSlot pipeSlot, Pipe pipe) { if (targetTime <= -500.0f) { pipeSlot.Image.sprite = pipe.frameArrayDefault[pipe.frameArrayDefault.Length - 1]; } else if (animationTimer >= targetTime / pipe.frameArrayDefault.Length && currentTile < pipe.frameArrayDefault.Length) { animationTimer -= targetTime / pipe.frameArrayDefault.Length; //right & bot; if (pipe.bot && pipe.right) { if (cameFrom.Equals("bot")) { pipeSlot.Image.sprite = pipe.frameArrayDefault[currentTile]; } else { pipeSlot.Image.sprite = pipe.frameArrayInverted[currentTile]; } } //right & top else if (pipe.right && pipe.top) { if (cameFrom.Equals("top")) { pipeSlot.Image.sprite = pipe.frameArrayDefault[currentTile]; } else { pipeSlot.Image.sprite = pipe.frameArrayInverted[currentTile]; } } //left & bot else if (pipe.left && pipe.bot) { if (cameFrom.Equals("left")) { pipeSlot.Image.sprite = pipe.frameArrayDefault[currentTile]; } else { pipeSlot.Image.sprite = pipe.frameArrayInverted[currentTile]; } } //left & top else if (pipe.left && pipe.top) { if (cameFrom.Equals("top")) { pipeSlot.Image.sprite = pipe.frameArrayDefault[currentTile]; } else { pipeSlot.Image.sprite = pipe.frameArrayInverted[currentTile]; } } //top & bot, left & right else if (((pipe.left && pipe.right) || (pipe.top && pipe.bot))) { if (cameFrom.Equals("left") || cameFrom.Equals("top") || cameFrom.Equals("null")) { pipeSlot.Image.sprite = pipe.frameArrayDefault[currentTile]; } else { pipeSlot.Image.sprite = pipe.frameArrayInverted[currentTile]; } } currentTile++; } }