// load the all slot data from cache file. private void InitDataFromFile() { CharacterMenuData serializableData = LoadAllDeckDataFromFile(); allPlaySlotObjectInAllDeck = new List <List <GameObject> > (); allRestSlotObjectInAllDeck = new List <List <GameObject> > (); for (int i = 0; i < MaxDeckNumber; i++) { CharacterDeckData deckData = serializableData.allDeckData [i]; CharacterSlotData[] allPlaySlotDataInOneDeck = deckData.allPlaySlotData; CharacterSlotData[] allRestSlotDataInOneDeck = deckData.allRestSlotData; //Debug.Log (allPlaySlotDataInOneDeck [0].ToString()); List <GameObject> allPlayObjects = new List <GameObject> (); List <GameObject> allRestObjects = new List <GameObject> (); for (int j = 0; j < MaxPlaySlotNumber; j++) { GameObject newSlotObject = characterSlotPool.GetObject(); CharacterSlotDataController ctl = newSlotObject.GetComponent <CharacterSlotDataController> (); CharacterSlotData newDataInObject = ctl.characterSlotData; newDataInObject.isEmpty = allPlaySlotDataInOneDeck [j].isEmpty; newDataInObject.characterId = allPlaySlotDataInOneDeck [j].characterId; newDataInObject.lvl = allPlaySlotDataInOneDeck [j].lvl; newDataInObject.exp = allPlaySlotDataInOneDeck [j].exp; newDataInObject.weight = allPlaySlotDataInOneDeck [j].weight; newDataInObject.imagePath = allPlaySlotDataInOneDeck [j].imagePath; allPlayObjects.Add(newSlotObject); } for (int j = 0; j < allRestSlotDataInOneDeck.Length; j++) { GameObject newSlotObject = characterSlotPool.GetObject(); CharacterSlotDataController ctl = newSlotObject.GetComponent <CharacterSlotDataController> (); CharacterSlotData newDataInObject = ctl.characterSlotData; newDataInObject.isEmpty = allRestSlotDataInOneDeck [j].isEmpty; newDataInObject.characterId = allRestSlotDataInOneDeck [j].characterId; newDataInObject.lvl = allRestSlotDataInOneDeck [j].lvl; newDataInObject.exp = allRestSlotDataInOneDeck [j].exp; newDataInObject.weight = allRestSlotDataInOneDeck [j].weight; newDataInObject.imagePath = allRestSlotDataInOneDeck [j].imagePath; allRestObjects.Add(newSlotObject); } allPlaySlotObjectInAllDeck.Add(allPlayObjects); allRestSlotObjectInAllDeck.Add(allRestObjects); } }
// save the all slot data to the cache file private void SaveAllDeckDataToFile() { string filePath = Path.Combine(Application.streamingAssetsPath, "data.json"); if (File.Exists(filePath)) { CharacterMenuData dataNeedWrite = AllSlotObjectDataToSerializableData(); string dataAsJson = JsonUtility.ToJson(dataNeedWrite); File.WriteAllText(filePath, dataAsJson); } else { Debug.LogError("Cannot write character menu data to file!"); } }
// get the cache file. private CharacterMenuData LoadAllDeckDataFromFile() { CharacterMenuData result = new CharacterMenuData(); string filePath = Path.Combine(Application.streamingAssetsPath, "data.json"); if (File.Exists(filePath)) { string dataAsJson = File.ReadAllText(filePath); result = JsonUtility.FromJson <CharacterMenuData> (dataAsJson); return(result); } else { Debug.LogError("Cannot load character menu data from file!"); return(null); } }
// make all slot object to format with serializable data private CharacterMenuData AllSlotObjectDataToSerializableData() { CharacterMenuData result = new CharacterMenuData(); result.allDeckData = new CharacterDeckData[MaxDeckNumber]; for (int i = 0; i < MaxDeckNumber; i++) { List <GameObject> allPlaySlotInOneDeck = allPlaySlotObjectInAllDeck [i]; List <GameObject> allRestSlotInOneDeck = allRestSlotObjectInAllDeck [i]; result.allDeckData [i] = new CharacterDeckData(); result.allDeckData[i].allPlaySlotData = new CharacterSlotData[MaxPlaySlotNumber]; result.allDeckData[i].allRestSlotData = new CharacterSlotData[allRestSlotInOneDeck.Count]; for (int j = 0; j < MaxPlaySlotNumber; j++) { CharacterSlotDataController ctl = allPlaySlotInOneDeck [j].GetComponent <CharacterSlotDataController> (); CharacterSlotData dataInObject = ctl.characterSlotData; CharacterSlotData resultSlotData = new CharacterSlotData(); resultSlotData.isEmpty = dataInObject.isEmpty; resultSlotData.characterId = dataInObject.characterId; resultSlotData.lvl = dataInObject.lvl; resultSlotData.exp = dataInObject.exp; resultSlotData.weight = dataInObject.weight; resultSlotData.imagePath = dataInObject.imagePath; result.allDeckData [i].allPlaySlotData [j] = resultSlotData; } for (int j = 0; j < allRestSlotInOneDeck.Count; j++) { CharacterSlotDataController ctl = allRestSlotInOneDeck [j].GetComponent <CharacterSlotDataController> (); CharacterSlotData dataInObject = ctl.characterSlotData; CharacterSlotData resultSlotData = new CharacterSlotData(); resultSlotData.isEmpty = dataInObject.isEmpty; resultSlotData.characterId = dataInObject.characterId; resultSlotData.lvl = dataInObject.lvl; resultSlotData.exp = dataInObject.exp; resultSlotData.weight = dataInObject.weight; resultSlotData.imagePath = dataInObject.imagePath; result.allDeckData [i].allRestSlotData [j] = resultSlotData; } } return(result); }