Esempio n. 1
0
 // 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;
             }
         }
     }
 }
Esempio n. 2
0
    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);
    }
Esempio n. 3
0
    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);
        }
    }