AppSettings.cs 4.29 KB
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.Networking;

public class AppSettings : Singleton<AppSettings>
{
    public enum ClientOverride
    {
        NONE,
        CLIENT,
        SERVER
    };
    public ClientOverride debugOverride;

    public CanvasGroup splash;
    [Header("Settings")]
    public CanvasGroup settings;
    public InputField serverIp;
    //public Toggle isServer;

    void Awake ()
    {
        splash.alpha = 1;
	}

    public bool isServer { get; private set; }

    void Start()
    {
        settings.blocksRaycasts = false;
        if (debugOverride == ClientOverride.NONE)
            isServer = !Application.isMobilePlatform;
        else
        {
            if (debugOverride == ClientOverride.CLIENT)
                isServer = false;
            else
                isServer = true;
        }
        //isServer = !Application.isEditor;

        if (!isServer)
        {
            if (!PlayerPrefs.HasKey("serverIp"))
                ShowSettings();
            else
            {
                string ip = PlayerPrefs.GetString("serverIp");
                Finalize(false, ip);
            }
        }
        else
            Finalize(true, string.Empty);

        //if (server)
        //    Finalize(true, string.Empty);
        //else
        //{
        //    if (!PlayerPrefs.HasKey("serverIp"))
        //        ShowSettings();
        //    else
        //    {
        //        string ip = PlayerPrefs.GetString("serverIp");
        //        Finalize(false, ip);
        //    }

        //}

        //if (!PlayerPrefs.HasKey("isServer"))
        //{
        //    ShowSettings();
        //}
        //else
        //{
        //    bool server = PlayerPrefs.GetString("isServer").ToLower() == "true" ? true : false;
        //    string ip = string.Empty;

        //    if (!server && !PlayerPrefs.HasKey("serverIp"))
        //    {
        //        ShowSettings();
        //    }
        //    else if (!server)
        //    {
        //        ip = PlayerPrefs.GetString("serverIp");
        //        Finalize(server, ip);
        //    }
        //    else
        //        Finalize(server, ip);
        //}

        Invoke("HideSplash", 3);
    }

    private void HideSplash()
    {
        AppManager.Instance.TweenCanvasGroup(splash, 0, 1);
        splash.blocksRaycasts = false;
    }

    public void SaveSettings()
    {
        //bool server = isServer.isOn;
        string ip = serverIp.text;

        Finalize(isServer, ip);
    }

    private void Finalize(bool server, string ip)
    {
        if (server)
        {
            NetworkManager.singleton.StartServer();
            AppManager.Instance.SpawnServerCanvas();
        }
        else
        {
            NetworkManager.singleton.networkAddress = ip;
            NetworkManager.singleton.StartClient();
        }

        PlayerPrefs.SetString("serverIp", ip);
        //PlayerPrefs.SetString("isServer", server.ToString());

        settings.blocksRaycasts = false;
        AppManager.Instance.TweenCanvasGroup(settings, 0, 1);

        _inSettings = false;
    }

    private bool _inSettings = false;

    public void ShowSettings()
    {
        if (_inSettings) return;

        //bool server = false;
        string ip = string.Empty;

        //if (PlayerPrefs.HasKey("isServer"))
            //server = PlayerPrefs.GetString("isServer").ToLower() == "true" ? true : false;
        if (PlayerPrefs.HasKey("serverIp"))
            ip = PlayerPrefs.GetString("serverIp");

        serverIp.text = ip;
        //isServer.isOn = server;

        _inSettings = true;
        settings.blocksRaycasts = true;
        settings.alpha = 1;
    }

    public void SettingsTap()
    {
        if (_inSettings) return;

        _didTap = true;
        _tapCount++;
    }

    private bool _didTap;
    private int _tapCount;
    private float _tapTimer;

    void Update()
    {
        if (_didTap)
        {
            _tapTimer += Time.deltaTime;

            if (_tapCount > 5)
            {
                ShowSettings();
                _tapCount = 0;
                _didTap = false;
                _tapTimer = 0;
            }

            if (_tapTimer > 1)
            {
                _tapCount = 0;
                _didTap = false;
                _tapTimer = 0;
            }
        }
    }
}