Ejemplo n.º 1
0
    public void SwapGems(Gem currentGem)
    {
        if (lastGem == null)
        {
            lastGem = currentGem;
        }
        else if (lastGem == currentGem)
        {
            lastGem = null;
        }
        else
        {
            if (lastGem.IsNeighborWith(currentGem))
            {
                gem1Start = lastGem.transform.position;
                gem1End   = currentGem.transform.position;

                gem2Start = currentGem.transform.position;
                gem2End   = lastGem.transform.position;

                startTime = Time.time;
                TogglePhysics(true);
                gem1       = lastGem;
                gem2       = currentGem;
                isSwapping = true;
            }
            else
            {
                lastGem.AwakeSelector();
                lastGem = currentGem;
            }
        }
    }
Ejemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        if (isMatched)
        {
            for (int i = 0; i < gems.Count; i++)
            {
                if (gems[i].isMatched)
                {
                    gems[i].CreateGem();
                    gems[i].transform.position = new Vector3(
                        gems[i].transform.position.x,
                        gems[i].transform.position.y + 6,
                        gems[i].transform.position.z);
                }
            }
            isMatched = false;
        }
        else if (isSwapping)
        {
            MoveGem(gem1, gem1End, gem1Start);
            MoveNegGem(gem2, gem2End, gem2Start);
            if (Vector3.Distance(gem1.transform.position, gem1End) < .1f || Vector3.Distance(gem2.transform.position, gem2End) < .1f)
            {
                gem1.transform.position = gem1End;
                gem2.transform.position = gem2End;

                lastGem    = null;
                isSwapping = false;
                TogglePhysics(false);
                if (!SwapBack)
                {
                    gem1.AwakeSelector();
                    gem2.AwakeSelector();
                    CheckForMatches();
                }
                else
                {
                    SwapBack = false;
                }
            }
        }
        else if (!CheckStateOfBoard())
        {
            for (int i = 0; i < gems.Count; i++)
            {
                CheckForNearbyMatches(gems[i]);
            }
            if (!DoesBoardContainMatches())
            {
                isMatched = true;
                for (int i = 0; i < gems.Count; i++)
                {
                    gems[i].isMatched = true;
                }
            }
        }
    }