﻿using UnityEngine;
using System.IO;
using System;

namespace Yodo1.FanCraft
{
    public class XCodeClass : System.IDisposable
    {
        private string filePath;

        public XCodeClass(string fPath)
        {
            filePath = fPath;
            if (!File.Exists(filePath))
            {
                Debug.LogError(filePath + "路径下文件不存在");
            }
        }

        public void WriteBelow(string below, string text)
        {
            StreamReader streamReader = new StreamReader(filePath);
            string text_all = streamReader.ReadToEnd();
            streamReader.Close();
            if (text_all.Contains(text))
            {
                Debug.Log("重复添加:" + text);
                return;
            }

            int beginIndex = text_all.IndexOf(below);
            if (beginIndex == -1)
            {
                Debug.LogError(filePath + "中没有找到标致" + below);
                return;
            }

            int endIndex = text_all.LastIndexOf("\n", beginIndex + below.Length);

            text_all = text_all.Substring(0, endIndex) + "\n" + text + text_all.Substring(endIndex);

            StreamWriter streamWriter = new StreamWriter(filePath);
            streamWriter.Write(text_all);
            streamWriter.Close();
        }

        public void Replace(string oldStr, string newStr)
        {
            if (File.Exists(filePath))
            {
                try
                {
                    StreamReader streamReader = new StreamReader(filePath);
                    string text_all = streamReader.ReadToEnd();
                    streamReader.Close();

                    text_all = text_all.Replace(oldStr, newStr);

                    StreamWriter streamWriter = new StreamWriter(filePath);
                    streamWriter.Write(text_all);
                    streamWriter.Close();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    Debug.LogError("Replace failed." + filePath + " " + oldStr + " " + newStr);
                }
            }
        }

        public bool IsHaveText(string below)
        {
            StreamReader streamReader = new StreamReader(filePath);
            string text_all = streamReader.ReadToEnd();
            streamReader.Close();
            if (text_all.Contains(below))
            {
                return true;
            }

            return false;
        }


        public void Dispose()
        {
        }
    }
}
