Untitled

mail@pastecode.io avatar
unknown
plain_text
7 months ago
4.7 kB
3
Indexable
Never
using InstantGamesBridge.Modules.Advertisement;
using UnityEngine;
using InstantGamesBridge;
using UnityEngine.UI;

public class AdManager : MonoBehaviour
{
    public Button adButton;
    public AudioSource musicAudioSource;
    public Text timerText;
    public Coins coinsScript;
    public ButtonSpriteChange ballScript;
    public Text bollTextup;
    public Text coinsTextup;
    public GameObject buttonoff;


    private float adTimerDuration = 5f;
    private float currentAdTimer = 0f;
    private bool isAdShowing = false;

    void Start()
    {
        if (adButton != null)
        {
            adButton.onClick.AddListener(ShowRewardedAd);
        }
        else
        {
            Debug.LogError("Ad Button not assigned.");
        }
    }



    void Update()
    {
        if (isAdShowing)
        {
            currentAdTimer -= Time.deltaTime;
            timerText.text = Mathf.CeilToInt(currentAdTimer).ToString();
            


            if (currentAdTimer <= 0f)
            {
                isAdShowing = false;
                buttonoff.SetActive(true);
                timerText.text = "Ad Available";

                // Вызываем метод для сброса множителя
                ResetMultiplier();
            }
        }
    }



    void UpdateBollText()
    {
        // Обновляем текст с текущим значением переменной value
        bollTextup.text = "+ " + ballScript.value.ToString();
        coinsTextup.text = "+ " + coinsScript.value.ToString();
    }


    void ShowRewardedAd()
    {
        musicAudioSource.Pause();
        Bridge.advertisement.rewardedStateChanged += OnRewardedStateChanged;
        Bridge.advertisement.ShowRewarded();
    }

    void OnRewardedStateChanged(RewardedState state)
{
    Debug.Log(state);

    switch (state)
    {
        case RewardedState.Opened:
            // Действия при открытии рекламы (возможно, остановка звука)
            musicAudioSource.Pause();
            break;

        case RewardedState.Closed:
            // Действия при закрытии рекламы (возможно, восстановление звука)
            musicAudioSource.UnPause();
            // Деактивируем кнопку
            buttonoff.SetActive(false);
            // Проверяем, была ли уже просмотрена реклама
            if (!isAdShowing)
            {
                // Запускаем таймер только если реклама еще не просматривалась
                currentAdTimer = adTimerDuration;
                isAdShowing = true;
                coinsScript.value *= 2;
                ballScript.value *= 2;
                UpdateBollText();
            }
            break;

        case RewardedState.Failed:
            // Действия при ошибке воспроизведения рекламы
            break;

        case RewardedState.Rewarded:
            // Дополнительные действия при получении награды
            break;
    }
}

void ResetMultiplier()
{
    // Проверяем, входит ли значение в указанные категории для coinsScript
    if (IsInCategory(coinsScript.value) || coinsScript.value % 3 == 0)
    {
        // Если да, то просто делим на 2
        coinsScript.value /= 2f;
    }
    else
    {
        // Если нет, то делим на 2 и прибавляем 1.5
        coinsScript.value = coinsScript.value / 2f + 1.5f;
    }

        // Проверяем, входит ли значение в указанные категории для ballScript
    if (ballScript.value % 3 == 0 || IsInCategory(ballScript.value))
    {
        // Если да, то просто делим на 2
        ballScript.value /= 2f;
    }
    else
    {
        // Если нет, то делим на 2 и прибавляем 1.5
        ballScript.value = ballScript.value / 2f + 1.5f;
    }


    UpdateBollText();
    // Можешь добавить другие действия по необходимости
}

bool IsInCategory(float value)
{
    // Проверяем, входит ли значение в указанные категории
    int intValue = Mathf.RoundToInt(value);
    return (intValue % 10 == 0) || (intValue % 3 == 1);
}



}
Leave a Comment