// Update is called once per frame void Update() { if (Solved() == true) { Debug.Log("Game is Won!"); SceneManager.LoadScene("Win"); } else { if (Input.GetMouseButton(0) && getStack == null) { getStack = GetFromDisk(); if (getStack != null) { selectedDisk = getStack.Peek(); initialVector = selectedDisk.gameObject.transform.position; } } if (Input.GetMouseButton(0) && getStack != null) { Vector3 target = Input.mousePosition; target = Camera.main.ScreenToWorldPoint(target); target.z = selectedDisk.gameObject.transform.position.z; selectedDisk.gameObject.transform.position = target; } if (!Input.GetMouseButton(0) && getStack != null) { dropStack = GetFromStump(); if (dropStack != null && dropStack != getStack && CanMove(getStack, dropStack)) { if (CanMove(getStack, dropStack)) { MoveDisk(getStack, dropStack); moveCountSO.moveCount++; getStack = null; dropStack = null; selectedDisk = null; } } else { selectedDisk.gameObject.transform.position = initialVector; getStack = null; dropStack = null; selectedDisk = null; } } } }
private void MoveDisk(Stack <GameDisk> former, Stack <GameDisk> target) { GameDisk gD = former.Pop(); GameDisk top; if (target.Count == 0) { GameObject g; stackDictionary.TryGetValue(target, out g); gD.gameObject.transform.position = GetBottomPosition(g); } else { top = target.Peek(); gD.gameObject.transform.position = GetTopPosition(top.gameObject); } target.Push(gD); AlignBottom(gD.gameObject); }
private void DiskSpawn() { for (int i = 1; i < diskAmountSO.diskAmount + 1; i++) { GameDisk disk = new GameDisk(diskAmountSO.diskAmount - i, gameDisk, spriteDrawMode); //Set this gameobject as Parent disk.gameObject.transform.SetParent(this.gameObject.transform); //Positioning disk.gameObject.transform.position = treeStumps[0].transform.position + Vector3.down * (i - 1); if (i > 1) { disk.gameObject.transform.position = GetTopPosition(leftStump.Peek().gameObject); } AlignBottom(disk.gameObject); leftStump.Push(disk); } }