public void SaveTest() { DataBase.Lands testData = new DataBase.Lands(); List <DataBase.Land> landList = new List <DataBase.Land>(); for (int i = 0; i < 5; i++) { DataBase.Land aa = new DataBase.Land(); aa.id = 0100 + i; aa.name = "asd" + i; // aa.puzzleList_N = new string[6] { "0101", "0102", "0103", "0104", "0105", "0106" }; // aa.puzzleList_S = new string[3] { "0101", "0103", "0108" }; landList.Add(aa); } Debug.Log(landList[0].id); testData.lands = landList.ToArray(); string td = JsonUtility.ToJson(testData); Debug.Log(td); DataBase.Lands testData2 = JsonUtility.FromJson <DataBase.Lands>(td); for (int i = 0; i < testData2.lands.Length; i++) { Debug.Log(testData2.lands[i].name); } DirectoryInfo di = new DirectoryInfo(Application.persistentDataPath + "/TestSave"); if (di.Exists == false) { di.Create(); }//폴더 없으면 만듦. BinaryFormatter bf = new BinaryFormatter(); if (System.IO.File.Exists(Application.persistentDataPath + "/TestSave/" + "Test" + ".save")) { Debug.Log("double"); } //덮어쓸거야?} FileStream fs = new FileStream(Application.persistentDataPath + "/TestSave/" + "Test" + ".json", FileMode.Create); bf.Serialize(fs, td); fs.Close(); Debug.Log(td); }
/// <summary> /// BaseSetting ( BG, ETC ) /// </summary> public void LandObjectSetting() { for (int i = 0; i < landList.Count; i++) { GameObject tempLand = Resources.Load <GameObject>("Prefabs/Lands/Land_Base"); landObjList.Add(Instantiate(tempLand, Vector3.zero, Quaternion.identity)); landObjList[i].gameObject.SetActive(true); landObjList[i].gameObject.name = (i + 1).ToString(); landObjList[i].transform.SetParent(transform); landObjList[i].GetComponent <LandController>().LandSettingBG(i + 1); // LandSetting( Land ID ); } // LandObjBase Setting if (firstGame == true) { gotLandObjList.Add(landObjList[0]); gotLandObjList.Add(landObjList[1]); UserManager.Instance.AddGotland(1); UserManager.Instance.AddGotland(2); UserManager.Instance.currentUser.name = "test";//local ID 만들어서 넣어야함. currentLand = landList[0]; PuzzleManager.instance.currentLandObj = gotLandObjList[0]; //currentLandObj등록 } // first면 처음 만드는거. else { Debug.Log("non first"); gotLandObjList.Clear(); for (int i = 0; i < UserManager.Instance.currentUser.gotLandList.Count; i++) { gotLandObjList.Add(landObjList[i]); }// gotLandObjList갱신. currentLand = landList[UserManager.Instance.currentUser.lastLand - 1]; PuzzleManager.instance.currentLandObj = landObjList[currentLand.id - 1]; //CurrentLandSetting(false); //after clear } // first가 아니면 currentLand 불러오기. + Land Setting. //Destroy(tempLand); SelectLandOnly(currentLand.id); //Debug.Log("gotLandCount : "+UserManager.Instance.currentUser.gotLandList.Count); }
} //Canvas + Camera + PuzzleIcon + unit #endregion public void LandChange(string dir) { //Debug.Log("Try_LandChange"); int landNum = currentLand.id; if (dir == "R" || dir == "r") { landNum++; } else if (dir == "L" || dir == "l") { landNum--; } if (landNum <= landObjList.Count && landNum > 0) { currentLand = landList[landNum - 1]; SelectLandOnly(landNum); } }
/// <summary> /// 0: ID, 1:Name, 2:Size, 3:UseSpriteNum_Min, 4: UseSpriteNum_Max, 5: Type(N or S) /// LoadPuzzles 보다 먼저 실행. /// </summary> IEnumerator LoadLands() { loadAll = false; Debug.Log("tryLoadLand"); float time = 0; while (time < 3f) { if (NetworkConnectionChecker.instance.success == true) { List <DataBase.Land> tempLandList = new List <DataBase.Land>(); #region LoadLandDB_Firebase FirebaseDatabase.DefaultInstance.GetReference("Lands").GetValueAsync().ContinueWith ( task => { if (task.IsFaulted) { Debug.Log("Land, Handle the error"); // Handle the error... } else if (task.IsCompleted && loadLand == false) { //Debug.Log("Land, TaskComplite"); DataSnapshot snapshot = task.Result; for (int i = 1; i < snapshot.ChildrenCount; i++) { DataBase.Land tempLand = new DataBase.Land(); string i_ = i.ToString(); //'Lands'DB 용 ID. tempLand.id = Convert.ToInt32(snapshot.Child(i_).Child("0").GetValue(true)); //snapShot에서 Land ID가져오기. tempLand.name = snapshot.Child(i_).Child("1").GetValue(true).ToString(); tempLand.price = Convert.ToInt32(snapshot.Child(i_).Child("7").GetValue(true)); string puzzleIDFront = tempLand.id < 10 ? "0" + tempLand.id : tempLand.id.ToString(); #region puzzleList_S List <string> skillNum = new List <string>(); for (int j = 0; j < 4; j++) { int tempj = 3 + j; string spNum = snapshot.Child(i_).Child(tempj.ToString()).GetValue(true).ToString(); if (spNum != "0") { spNum = System.Convert.ToInt32(spNum) < 10 ? "0" + spNum : spNum; skillNum.Add(spNum); //skillPuzzleID_Back } } tempLand.puzzleList_S = new List <string>(); for (int j = 0; j < skillNum.Count; j++) { tempLand.puzzleList_S.Add(puzzleIDFront + skillNum[j]); //skillPuzzleID_All } #endregion //skill Puzzle 만 모아놓기 #region puzzleList_N List <string> normalIDList = new List <string>(); //tempLand.puzzleList_N = new string[System.Convert.ToInt32(snapshot.Child(i_).Child("2").GetValue(true))]; for (int j = 0; j < System.Convert.ToInt32(snapshot.Child(i_).Child("2").GetValue(true)); j++) { int sameCnt = 0; int max = j + 1; string puzzleIDBack = max < 10 ? "0" + max : max.ToString(); foreach (string x in skillNum) { if (x == puzzleIDBack) { sameCnt++; } } if (sameCnt == 0) { string normalID = puzzleIDFront + puzzleIDBack; normalIDList.Add(normalID); } } tempLand.puzzleList_N = new List <string>(); for (int j = 0; j < normalIDList.Count; j++) { tempLand.puzzleList_N.Add(normalIDList[j]); } #endregion // 모아놓은 skill puzzle을 제외한 normal puzzle만 모아놓기. tempLandList.Add(tempLand); } LandManager.instance.landList = new List <DataBase.Land>(); LandManager.instance.landList = tempLandList; loadLand = true; Debug.Log("land_True"); } } ); #endregion } else { loadLand = true; //읽씹. } yield return(new WaitForSeconds(0.02f)); time += 0.02f; } }//After Check That Internet Connection.