public override SaveData GetSaveData() { TreasureSaveData saveData = new TreasureSaveData(); saveData.Name = Utils.GetCleanName(gameObject.name); return(saveData); }
// static function to generate items from treasure save data public static List <ItemSaveData> GenerateItems(TreasureSaveData saveData) { List <ItemSaveData> itemsSaveData = new List <ItemSaveData>(); // get treasure object from resources GameObject treasurePrefab = Resources.Load <GameObject>("Treasures/" + saveData.Name); GameObject treasureObj = Instantiate(treasurePrefab); Treasure treasure = treasureObj.GetComponent <Treasure>(); // check if create treasure if (!Utils.IsChanceOccured(treasure.Chance2Create)) { return(itemsSaveData); } foreach (string path in treasure.Paths) { // get rnadom item from current resources path GameObject[] itemPrefabs = Resources.LoadAll <GameObject>("Items/" + path); if (itemPrefabs.Length == 0) { Debug.LogError("no prefabs inside path: " + path); } GameObject randomItemPrefab = itemPrefabs[Random.Range(0, itemPrefabs.Length)]; // check the chance to create the current item if (!Utils.IsChanceOccured(treasure.Chance2CreateEachMemebr)) { continue; } GameObject itemObj = Instantiate(randomItemPrefab); ItemSaveData itemSaveData = itemObj.GetComponent <Item>().GetSaveData() as ItemSaveData; Item.AddRandomness(ref itemSaveData); itemsSaveData.Add(itemSaveData); Destroy(itemObj.gameObject); } Destroy(treasureObj.gameObject); return(itemsSaveData); }