Ejemplo n.º 1
0
    void OnMouseOverItem(RedeDeItem item)
    {
        if (_itemAtualmenteAtivo == item)
        {
            _itemAtualmenteAtivo = null;
            return;
        }
        if (_itemAtualmenteAtivo == null)
        {
            _itemAtualmenteAtivo = item;
        }
        else
        {
            float xDiff = Mathf.Abs(item.x - _itemAtualmenteAtivo.x);
            float yDiff = Mathf.Abs(item.y - _itemAtualmenteAtivo.y);
            if (xDiff + yDiff == 1)
            {
                StartCoroutine(Swap(_itemAtualmenteAtivo, item));

                //Permetir Swap
            }

            else
            {
                Debug.LogError("Eles estão a mais de uma unidade longe um do outro");
                // Negar Swap
            }

            _itemAtualmenteAtivo = null;
        }
    }
Ejemplo n.º 2
0
    RedeDeItem InstantieteComida(int x, int y)
    {
        GameObject randomcomidas = _comida[Random.Range(0, _comida.Length)];

        RedeDeItem newComida = ((GameObject)Instantiate(randomcomidas, new Vector3(x * C_Widy, y), Quaternion.identity)).GetComponent <RedeDeItem>();

        newComida.PosicaoDoItemAlterada(x, y);
        return(newComida);
    }
Ejemplo n.º 3
0
    IEnumerator Swap(RedeDeItem a, RedeDeItem b)
    {
        TrocarRigiboodyStatus(false);// Desativar todos os Corpos Rigidos
        float   movDuration = 0.3f;
        Vector3 aPosition   = a.transform.position;

        StartCoroutine(a.transform.Move(b.transform.position, movDuration));
        StartCoroutine(b.transform.Move(aPosition, movDuration));
        yield return(new WaitForSeconds(movDuration));

        TrocarRigiboodyStatus(true);// Desativar todos os Corpos Rigidos
        _itemAtualmenteAtivo = null;
    }
Ejemplo n.º 4
0
    List <RedeDeItem> SearchVertically(RedeDeItem item)
    {
        List <RedeDeItem> vItemns = new List <RedeDeItem> {
            item
        };
        int lower = item.y - 1;
        int upper = item.y + 1;

        while (lower >= 0 && _items[item.x, lower].id == item.id)
        {
            vItemns.Add(_items[item.x, lower]);
            lower--;
        }
        while (upper < ySize && _items[item.x, upper].id == item.id)
        {
            vItemns.Add(_items[item.x, upper]);
            upper++;
        }
        return(vItemns);
    }
Ejemplo n.º 5
0
    List <RedeDeItem> SearchHorizontally(RedeDeItem item)
    {
        List <RedeDeItem> hItemns = new List <RedeDeItem> {
            item
        };
        int left  = item.x - 1;
        int right = item.x + 1;

        while (left >= 0 && _items[left, item.y].id == item.id)
        {
            hItemns.Add(_items[left, item.y]);
            left--;
        }
        while (right < xSize && _items[right, item.y].id == item.id)
        {
            hItemns.Add(_items[right, item.y]);
            right++;
        }

        return(hItemns);
    }