예제 #1
0
    public override SaveData GetSaveData()
    {
        TreasureSaveData saveData = new TreasureSaveData();

        saveData.Name = Utils.GetCleanName(gameObject.name);
        return(saveData);
    }
예제 #2
0
    // 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);
    }