Inheritance: MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
    public void Selecao(IconePersonagem icone)
    {
        AudioManager.instance.TocarSFX("clique");

        if (!icone.selecionado)  // O ícone foi selecionado
        {
            // Marca o último ícone selecionado como falso
            if (iconeSelecionado)
            {
                iconeSelecionado.selecionado = false;
            }

            iconeSelecionado = icone;  // Agora esse ícone será o último selecionado

            // Posiciona o anel de seleção sobre o botão selecionado
            anelDeSelecao.enabled = true;
            var posicaoDoIcone = icone.GetComponent <RectTransform>().anchoredPosition;
            anelDeSelecao.rectTransform.anchoredPosition = posicaoDoIcone;

            atualizar(icone);
            atualizarEstadoDeJogo(icone);
        }
        else  // Cancela a seleção do ícone caso o jogador clique nele de novo
        {
            // Redefine a seleção
            iconeSelecionado      = null;
            anelDeSelecao.enabled = false;

            resetar();
            resetarEstadoDeJogo();
        }

        icone.selecionado = !icone.selecionado;  // Inverte o estado de seleção
    }
 public void HoverEnter(IconePersonagem icone)
 {
     if (!iconeSelecionado)
     {
         atualizar(icone);
     }
 }
    private void atualizar(IconePersonagem icone)
    {
        // Ativar sprites do preview
        corpoPersonagemSelecionada.gameObject.SetActive(true);
        cabeloPersonagemSelecionada.gameObject.SetActive(true);
        roupaPersonagemSelecionada.gameObject.SetActive(true);

        // Alterar o preview da personagem selecionada
        corpoPersonagemSelecionada.sprite  = icone.SpriteCorpo;
        cabeloPersonagemSelecionada.sprite = icone.SpriteCabelo;
        roupaPersonagemSelecionada.sprite  = icone.SpriteRoupa;
    }
Esempio n. 4
0
    public bool Selecionar(IconePersonagem icone)
    {
        // Se botão não faz parte do grupo, ignorar
        if (!iconesPersonagem.Contains(icone))
        {
            return(false);
        }

        var iconeQueEstavaSelecionado = IconeSelecionado;

        if (iconeQueEstavaSelecionado)
        {
            // Se o botão que foi selecionado já estava selecionado, ignorar
            if (iconeQueEstavaSelecionado == icone)
            {
                return(true);
            }

            iconeQueEstavaSelecionado.Selecionado = false;
        }

        icone.Selecionado = true;

        // Posicionar anel de seleção sobre o botão selecionado
        AnelDeSelecao.enabled = true;
        var posicaoDoBotao = icone.GetComponent <RectTransform>().anchoredPosition;

        AnelDeSelecao.rectTransform.anchoredPosition = posicaoDoBotao;

        // Avisar observadores qual é o novo botão selecionado
        QuandoUmElementoForSelecionadoEvent?.Invoke(icone);

        // Gravar no estado do jogo as características da personagem selecionada
        var estadoDoJogo = EstadoDoJogo.Instance;

        estadoDoJogo.SpriteCorpoPersonagem  = icone.SpriteCorpo;
        estadoDoJogo.SpriteCabeloPersonagem = icone.SpriteCabelo;
        estadoDoJogo.SpriteRoupaPersonagem  = icone.SpriteRoupa;

        estadoDoJogo.SpriteIconePersonagem = icone.ImageComponent.sprite;

        return(true);
    }
    private void atualizarEstadoDeJogo(IconePersonagem icone)
    {
        // Altera o sprite do pequeno guia da página para o sprite do selecionado
        iconManager.SetIcon(0, icone.GetComponent <Image>().sprite);

        // Grava no estado do jogo as características da personagem selecionada
        var estadoDoJogo = EstadoDoJogo.Instance;

        estadoDoJogo.SpriteCorpoPersonagem         = icone.SpriteCorpo;
        estadoDoJogo.SpriteCabeloPersonagem        = icone.SpriteCabelo;
        estadoDoJogo.SpriteRoupaPersonagem         = icone.SpriteRoupa;
        estadoDoJogo.SpriteCorpoPersonagemSentado  = icone.SpriteCorpoSentado;
        estadoDoJogo.SpriteCabeloPersonagemSentado = icone.SpriteCabeloSentado;
        estadoDoJogo.SpriteRoupaPersonagemSentado  = icone.SpriteRoupaSentado;
        estadoDoJogo.SpriteIconePersonagem         = icone.GetComponent <Image>().sprite;

        // Ativar o botão de confirmar agora que há uma seleção
        botaoConfirmar.interactable = true;
    }