﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using UnityEditor;
using UnityEngine;
using UnityEngine.Networking;

public class WortiseSettingsWindow : EditorWindow
{
    private const int width = 500;
    private const int height = 120;

    private const string settingsPath = "Assets/Resources/WortiseSettings.asset";

    private WortiseSettings settings;


    public static void ShowWindow()
    {
        WortiseSettingsWindow window = GetWindow<WortiseSettingsWindow>(true, "Wortise Settings");
        window.minSize = new Vector2(width, height);
        window.Focus();
    }

    void OnEnable()
    {
        LoadOrCreateSettings();
    }

    void OnGUI()
    {
        if (settings == null)
        {
            LoadOrCreateSettings();
        }

        EditorGUI.BeginChangeCheck();

        GUILayout.BeginHorizontal();
        GUILayout.Label("Google Settings", EditorStyles.boldLabel);
        GUILayout.EndHorizontal();

        EditorGUILayout.Space(6);

        EditorGUILayout.BeginVertical(EditorStyles.helpBox);

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("App ID (Android)", GUILayout.Width(120));

        settings.googleAndroidAppId = EditorGUILayout.TextField(settings.googleAndroidAppId);

        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("App ID (iOS)", GUILayout.Width(120));

        settings.googleIosAppId = EditorGUILayout.TextField(settings.googleIosAppId);

        EditorGUILayout.EndHorizontal();

        EditorGUILayout.EndVertical();

        EditorGUILayout.Space(10);

        if (GUILayout.Button("OK"))
        {
            Close();
        }

        if (EditorGUI.EndChangeCheck())
        {
            SaveSettings();
        }
    }

    private void LoadOrCreateSettings()
    {
        settings = AssetDatabase.LoadAssetAtPath<WortiseSettings>(settingsPath);

        if (settings == null)
        {
            string directory = Path.GetDirectoryName(settingsPath);
            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }

            settings = ScriptableObject.CreateInstance<WortiseSettings>();
            AssetDatabase.CreateAsset(settings, settingsPath);
            AssetDatabase.SaveAssets();
        }
    }

    private void SaveSettings()
    {
        EditorUtility.SetDirty(settings);
        AssetDatabase.SaveAssets();
    }
}
