public IEnumerator IE_LoadDataPlayer(SimpleJSON_DatDz.JSONNode objJson)
    {
        idMapBox        = objJson["idMapBox"].AsInt;
        maxLevelHouse   = objJson["maxLevelHouse"].AsInt;
        gold            = objJson["gold"].AsInt;
        coin            = objJson["coin"].AsInt;
        ratioBorn       = objJson["ratioBorn"].AsFloat;
        dateGame        = objJson["dateGame"].AsLong;
        dateEnemyAttack = objJson["dateEnemyAttack"].AsLong;

        var lstBuildHouseJson = objJson["lstBuildHouse"];

        for (int i = 0; i < lstBuildHouseJson.Count; i++)
        {
            BuildHouse buildHouse = new BuildHouse();
            buildHouse.ID       = lstBuildHouseJson[i]["ID"].AsInt;
            buildHouse.isUnlock = lstBuildHouseJson[i]["isUnlock"].AsBool;
            lstBuildHouse.Add(buildHouse);
        }

        var lstHousePlayerJson = objJson["lsHousePlayer"];

        if (lstHousePlayerJson.Count > 0)
        {
            for (int i = 0; i < lstHousePlayerJson.Count; i++)
            {
                HouseInfoST hInfo = new HouseInfoST();
                hInfo.ID                 = lstHousePlayerJson[i]["ID"].AsInt;
                hInfo.level              = lstHousePlayerJson[i]["level"].AsInt;
                hInfo.price              = lstHousePlayerJson[i]["price"].AsLong;
                hInfo.capWar             = lstHousePlayerJson[i]["capWar"].AsInt;
                hInfo.isLock             = lstHousePlayerJson[i]["isLock"].AsBool;
                hInfo.heroInfo           = new HeroInfoST();
                hInfo.heroInfo.ID        = lstHousePlayerJson[i]["heroInfo"]["ID"].AsInt;
                hInfo.heroInfo.CountHero = lstHousePlayerJson[i]["heroInfo"]["CountHero"].AsInt;
                lsHousePlayer.Add(hInfo);
            }
        }

        var lsBoxJson = objJson["lsBox"].AsArray;

        for (int i = 0; i < lsBoxJson.Count; i++)
        {
            BoxInfoST bInfo = new BoxInfoST();
            bInfo.col = lsBoxJson[i]["col"].AsInt;
            bInfo.row = lsBoxJson[i]["row"].AsInt;

            var goldMineJson = lsBoxJson[i]["goldMineInfo"];
            bInfo.goldMineInfo                   = new GoldMineInfoST();
            bInfo.goldMineInfo.ID                = goldMineJson["ID"].AsInt;
            bInfo.goldMineInfo.level             = goldMineJson["level"].AsInt;
            bInfo.goldMineInfo.name              = goldMineJson["name"];
            bInfo.goldMineInfo.isPlayer          = goldMineJson["isPlayer"].AsBool;
            bInfo.goldMineInfo.indexLoadGoldMine = goldMineJson["indexLoadGoldMine"].AsInt;
            bInfo.goldMineInfo.xR                = goldMineJson["xR"].AsFloat;
            bInfo.goldMineInfo.yR                = goldMineJson["yR"].AsFloat;
            bInfo.goldMineInfo.zR                = goldMineJson["zR"].AsFloat;
            bInfo.goldMineInfo.lsHeroGoldMine    = new List <HeroInfoST>();
            var lsHeroGoldMineJson = goldMineJson["lsHeroGoldMine"];

            if (lsHeroGoldMineJson.Count > 0)
            {
                for (int j = 0; j < lsHeroGoldMineJson.Count; j++)
                {
                    HeroInfoST hInfo = new HeroInfoST();
                    hInfo.ID        = lsHeroGoldMineJson[j]["ID"].AsInt;
                    hInfo.CountHero = lsHeroGoldMineJson[j]["CountHero"].AsInt;
                    bInfo.goldMineInfo.lsHeroGoldMine.Add(hInfo);
                }
            }

            lsBox.Add(bInfo);
        }

        yield return(new WaitUntil(() => lsBox.Count == lsBoxJson.Count));

        castlePlayer         = new CastleInfoST();
        castlePlayer.lsHouse = new List <HouseInfoST>();
        var lsHouseJson = objJson["castlePlayer"]["lsHouse"];

        if (lsHouseJson.Count > 0)
        {
            for (int i = 0; i < lsHouseJson.Count; i++)
            {
                HouseInfoST hInfo = new HouseInfoST();
                hInfo.ID                 = lsHouseJson[i]["ID"].AsInt;
                hInfo.level              = lsHouseJson[i]["level"].AsInt;
                hInfo.isLock             = lstHousePlayerJson[i]["isLock"].AsBool;
                hInfo.heroInfo           = new HeroInfoST();
                hInfo.heroInfo.ID        = lsHouseJson[i]["heroInfo"]["ID"].AsInt;
                hInfo.heroInfo.CountHero = lsHouseJson[i]["heroInfo"]["CountHero"].AsInt;
                castlePlayer.lsHouse.Add(hInfo);
            }
        }

        yield return(new WaitUntil(() => castlePlayer.lsHouse.Count == lsHouseJson.Count));

        Fade.Instance.EndFade(0);
    }
    public void SaveDataPlayer()
    {
        DataPlayer data = new DataPlayer();

        data.idMapBox        = GameManager.Instance.idMapBox;
        data.maxLevelHouse   = GameManager.Instance.maxLevelHouse;
        data.gold            = GameManager.Instance.gold;
        data.coin            = GameManager.Instance.coin;
        data.ratioBorn       = GameManager.Instance.ratioBorn;
        data.dateGame        = GameManager.Instance.dateGame;
        data.dateEnemyAttack = GameManager.Instance.dateEnemyAttack;
        data.lstBuildHouse   = GameManager.Instance.lsBuildHouse;

        data.castlePlayer         = new CastleInfoST();
        data.castlePlayer.lsHouse = new List <HouseInfoST>();
        foreach (House h in GameManager.Instance.castlePlayer.lsHouseRelease)
        {
            HouseInfoST hInfo = new HouseInfoST();
            hInfo.ID                 = h.info.ID;
            hInfo.level              = h.info.level;
            hInfo.heroInfo.ID        = h.info.idHero;
            hInfo.heroInfo.CountHero = h.info.countHero;
            data.castlePlayer.lsHouse.Add(hInfo);
        }

        foreach (Box b in GameManager.Instance.lsBoxManager)
        {
            BoxInfoST bInfo = new BoxInfoST();
            bInfo.col = b.info.col;
            bInfo.row = b.info.row;
            if (b.info.goldMine != null)
            {
                bInfo.goldMineInfo                   = new GoldMineInfoST();
                bInfo.goldMineInfo.ID                = b.info.goldMine.info.ID;
                bInfo.goldMineInfo.level             = b.info.goldMine.info.level;
                bInfo.goldMineInfo.name              = b.info.goldMine.info.name;
                bInfo.goldMineInfo.isPlayer          = b.info.goldMine.info.typeGoleMine == TypeGoldMine.Player ? true : false;
                bInfo.goldMineInfo.indexLoadGoldMine = b.info.goldMine.info.indexLoadGoldMine;
                bInfo.goldMineInfo.xR                = b.info.goldMine.transform.eulerAngles.x;
                bInfo.goldMineInfo.yR                = b.info.goldMine.transform.eulerAngles.y;
                bInfo.goldMineInfo.zR                = b.info.goldMine.transform.eulerAngles.z;
                bInfo.goldMineInfo.lsHeroGoldMine    = new List <HeroInfoST>();
                foreach (Hero h in b.info.goldMine.lsHeroGoldMine)
                {
                    HeroInfoST hInfo = new HeroInfoST();
                    hInfo.ID        = h.infoHero.ID;
                    hInfo.CountHero = h.infoHero.countHero;
                    bInfo.goldMineInfo.lsHeroGoldMine.Add(hInfo);
                }
            }
            else
            {
                bInfo.goldMineInfo    = new GoldMineInfoST();
                bInfo.goldMineInfo.ID = -1;
            }
            data.lsBox.Add(bInfo);
        }

        foreach (House h in GameManager.Instance.lsHousePlayer)
        {
            HouseInfoST hInfo = new HouseInfoST();
            hInfo.ID                 = h.info.ID;
            hInfo.level              = h.info.level;
            hInfo.price              = h.info.price;
            hInfo.capWar             = h.info.capWar;
            hInfo.isLock             = h.info.typeState == TypeStateHouse.Lock ? true : false;
            hInfo.heroInfo.ID        = h.info.idHero;
            hInfo.heroInfo.CountHero = h.info.countHero;
            data.lsHousePlayer.Add(hInfo);
        }

        string _path = Path.Combine(Application.persistentDataPath, "DataPlayer.json");

        File.WriteAllText(_path, JsonUtility.ToJson(data, true));
        File.ReadAllText(_path);
        PlayerPrefs.SetInt(KeyPrefs.IS_CONTINUE, 1);
        Debug.Log(SimpleJSON_DatDz.JSON.Parse(File.ReadAllText(_path)));

        //string path = "Assets/Resources/DebugJson.json";
        //StreamWriter wfile = new StreamWriter(path);
        //wfile.WriteLine(File.ReadAllText(_path));
        //wfile.Close();
    }