Newer
Older
TEST / Assets / FacebookSDK / Examples / CloudAndroid / Scripts / Menu.cs
@a_kuznecov a_kuznecov on 20 Jun 2023 2 KB First Commit
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Menu : MonoBehaviour {
  [SerializeField]
  private Button _backBtn;
  [SerializeField]
  private Sprite _mutedSprite;
  [SerializeField]
  private Sprite _volumeSprite;
  [SerializeField]
  private Image _mutedBtnImg;
  [SerializeField]
  private AudioSource _bgMusic;
  [SerializeField]
  private GameObject _pages;

  private GameObject _currentPage;
  private LogScroller _logScroller;
  private bool _muted;
  private Stack<GameObject> _pagesStack = new Stack<GameObject>();

  private void Awake () {
    _logScroller = transform.root.GetComponent<UIState>().logScroller;

    _muted = PlayerPrefs.GetInt("muted", 0) > 0 ? true : false;
    _SetMuteBtnIcon();

    // deactivate all pages and set first page as active
    foreach(Transform child in _pages.transform) {
      child.gameObject.SetActive(false);
    }
    _currentPage = _pages.transform.GetChild(0).gameObject;
    _currentPage.SetActive(true);
  }

  public void NavToPage (string pageName) {
    GameObject target = _FindChild(_pages.transform, pageName);
    // _LogText(pageName + " " + !!target);
    if (target != null) {
      _currentPage.SetActive(false);
      _pagesStack.Push(_currentPage);
      _currentPage = target;
      target.SetActive(true);
      _backBtn.interactable = true;
    } else {
      _LogText("ERR: Missing page '" + pageName + "'");
    }
  }
  public void OnBackBtnClick () {
    if (_pagesStack.Count > 0) {
      _currentPage.SetActive(false);
      GameObject target = _pagesStack.Pop();
      _currentPage = target;
      target.SetActive(true);

      if (_pagesStack.Count == 0) {
        _backBtn.interactable = false;
      }
    } else {
      _LogText("ERR: On last page?");
    }
  }
  public void OnToggleMuteBtnClick () {
    _muted = !_muted;
    PlayerPrefs.SetInt("muted", _muted ? 1 : 0);
    _SetMuteBtnIcon();
  }

  // private
  private GameObject _FindChild (Transform target, string name) {
    foreach (Transform child in target) {
      if (child.gameObject.name == name) {
        return child.gameObject;
      }
    }
    return null;
  }
  private void _LogText (string text) {
    _logScroller.Log(text);
  }
  private void _SetMuteBtnIcon () {
    Sprite targetSprite = _muted ? _mutedSprite : _volumeSprite;

    _mutedBtnImg.sprite = targetSprite;
    _bgMusic.mute = _muted;
  }
}