コード例 #1
0
ファイル: CreateItemObject.cs プロジェクト: horoxix/lootbox
    // Generates an Item
    // Pass in item taken from Open();
    public static ItemScriptableObject Generate(ItemScriptableObject iso)
    {
        GenerateSprite       generateSprite       = new GenerateSprite();
        RandomManager        randomManager        = new RandomManager();
        StatFactory          statFactory          = new ConcreteStatFactory();
        ItemScriptableObject itemScriptableObject = ScriptableObject.CreateInstance <ItemScriptableObject>();

        randomManager.SetAnimationCurve();
        itemScriptableObject.itemSprite   = iso.itemSprite;
        itemScriptableObject.itemName     = iso.itemName;
        itemScriptableObject.itemType     = iso.itemType;
        itemScriptableObject.itemTypeName = iso.itemType.ToString().ToLower();
        itemScriptableObject.rarity       = (ItemObject.Rarity)Mathf.RoundToInt(randomManager.CurveWeightedRandom(randomManager.cumulativeProbability));
        itemScriptableObject.keyword      = (ItemObject.Keywords)Mathf.RoundToInt(randomManager.CurveWeightedRandom(randomManager.cumulativeProbability));
        itemScriptableObject.statCount    = statFactory.GenerateStatAmountForObject(itemScriptableObject.rarity);
        itemScriptableObject.modifierList = new List <Stat>();
        for (int i = 0; i < itemScriptableObject.statCount; i++)
        {
            Stat.StatType statType  = statFactory.GenerateStatType();
            Stat          stat      = statFactory.GetStatObject(statType, itemScriptableObject);
            int           statIndex = DetectStatInList(itemScriptableObject.modifierList, statType);
            if (statIndex != -1)
            {
                itemScriptableObject.modifierList[statIndex].StatValue += stat.StatValue;
                itemScriptableObject.statCount--;
            }
            else
            {
                itemScriptableObject.modifierList.Add(stat);
            }
        }
        itemScriptableObject.itemBackgroundSprite = GenerateSpriteType(BackgroundSprites.backgroundSprites, itemScriptableObject.rarity);
        return(itemScriptableObject);
    }
コード例 #2
0
ファイル: CreateItem.cs プロジェクト: horoxix/lootbox
    // Generates an Item
    public static Item Create()
    {
        GenerateSprite generateSprite = new GenerateSprite();
        RandomManager  randomManager  = new RandomManager();
        StatFactory    statFactory    = new ConcreteStatFactory();
        Item           asset          = ScriptableObject.CreateInstance <Item>();

        randomManager.SetAnimationCurve();
        asset.itemType     = (Item.ItemType)UnityEngine.Random.Range(0, Enum.GetNames(typeof(Item.ItemType)).Length);
        asset.itemTypeName = asset.itemType.ToString().ToLower();
        asset.rarity       = (Item.Rarity)Mathf.RoundToInt(randomManager.CurveWeightedRandom(randomManager.cumulativeProbability));
        asset.keyword      = (Item.Keywords)Mathf.RoundToInt(randomManager.CurveWeightedRandom(randomManager.cumulativeProbability));
        asset.statCount    = statFactory.GenerateStatAmount(asset.rarity);
        asset.modifierList = new List <Stat>();
        for (int i = 0; i < asset.statCount; i++)
        {
            asset.modifierList.Add(statFactory.GetStat(statFactory.GenerateStatType(), asset));
        }
        asset.itemName             = asset.keyword.ToString().ToLower() + " " + asset.rarity.ToString().ToLower() + " " + asset.itemTypeName;
        asset.itemSpriteList       = generateSprite.GenerateSpriteList(asset.itemType);
        asset.itemSprite           = GenerateSpriteType(asset.itemSpriteList, asset.rarity);
        asset.ItemLevel            = GenerateItemLevel(asset.rarity);
        asset.itemBackgroundSprite = GenerateSpriteType(BackgroundSprites.backgroundSprites, asset.rarity);
        return(asset);
    }
コード例 #3
0
    public override Item GetItem(Item.ItemType itemType, GameObject gameObject)
    {
        Item.Rarity   rarity      = GenerateRarity();
        Item.Keywords keyword     = GenerateKeyword();
        Item          item        = gameObject.GetComponent <Item>();
        StatFactory   statFactory = new ConcreteStatFactory();

        switch (itemType)
        {
        case Item.ItemType.ARMOR:
            item.Init(Item.ItemType.ARMOR, rarity, GenerateItemSprite(ItemSprites.armorSprites, rarity), rarity + " " + keyword + " Armor", statFactory.GenerateStatAmount(rarity));
            return(item);

        case Item.ItemType.BOOTS:
            item.Init(Item.ItemType.BOOTS, rarity, GenerateItemSprite(ItemSprites.bootsSprites, rarity), rarity + " " + keyword + " Boots", statFactory.GenerateStatAmount(rarity));
            return(item);

        case Item.ItemType.HELM:
            item.Init(Item.ItemType.HELM, rarity, GenerateItemSprite(ItemSprites.helmSprites, rarity), rarity + " " + keyword + " Helm", statFactory.GenerateStatAmount(rarity));
            return(item);

        case Item.ItemType.BELT:
            item.Init(Item.ItemType.BELT, rarity, GenerateItemSprite(ItemSprites.beltsSprites, rarity), rarity + " " + keyword + " Belt", statFactory.GenerateStatAmount(rarity));
            return(item);

        case Item.ItemType.ACCESSORY:
            item.Init(Item.ItemType.ACCESSORY, rarity, GenerateItemSprite(ItemSprites.accessorySprites, rarity), rarity + " " + keyword + " Accessory", statFactory.GenerateStatAmount(rarity));
            return(item);

        case Item.ItemType.PANTS:
            item.Init(Item.ItemType.PANTS, rarity, GenerateItemSprite(ItemSprites.pantsSprites, rarity), rarity + " " + keyword + " Pants", statFactory.GenerateStatAmount(rarity));
            return(item);

        case Item.ItemType.GLOVES:
            item.Init(Item.ItemType.GLOVES, rarity, GenerateItemSprite(ItemSprites.glovesSprites, rarity), rarity + " " + keyword + " Gloves", statFactory.GenerateStatAmount(rarity));
            return(item);

        default:
            Debug.Log("Item Type not found");
            break;
        }
        throw new System.NotImplementedException();
    }