Ejemplo n.º 1
0
    public static List <BasePart> GetCustomParts(BasePart.PartType type, bool onlyLocked = false)
    {
        List <BasePart>       list        = new List <BasePart>();
        List <CustomPartInfo> customParts = WPFMonoBehaviour.gameData.m_customParts;

        for (int i = 0; i < customParts.Count; i++)
        {
            if (customParts[i].PartType == type)
            {
                for (int j = 0; j < customParts[i].PartList.Count; j++)
                {
                    if (onlyLocked && !CustomizationManager.IsPartUnlocked(customParts[i].PartList[j]))
                    {
                        list.Add(customParts[i].PartList[j]);
                    }
                    else if (!onlyLocked)
                    {
                        list.Add(customParts[i].PartList[j]);
                    }
                }
                break;
            }
        }
        return(list);
    }
Ejemplo n.º 2
0
    public static int GetUnlockedPartCount(bool useTier = false, BasePart.PartTier tier = BasePart.PartTier.Common)
    {
        int num = 0;

        if (!useTier)
        {
            num = CustomizationManager.cachedUnlockedPartCount;
        }
        if (num < 0 || useTier)
        {
            num = 0;
            List <CustomPartInfo> customParts = WPFMonoBehaviour.gameData.m_customParts;
            for (int i = 0; i < customParts.Count; i++)
            {
                if (customParts[i] != null && customParts[i].PartList != null && customParts[i].PartList.Count != 0)
                {
                    for (int j = 0; j < customParts[i].PartList.Count; j++)
                    {
                        if (CustomizationManager.IsPartUnlocked(customParts[i].PartList[j]) && (!useTier || (useTier && customParts[i].PartList[j].m_partTier == tier)))
                        {
                            num++;
                        }
                    }
                }
            }
        }
        if (!useTier)
        {
            CustomizationManager.cachedUnlockedPartCount = num;
        }
        return(num);
    }
Ejemplo n.º 3
0
        private void CheckDuplicateParts()
        {
            ConfigData config = Singleton <GameConfigurationManager> .Instance.GetConfig("part_salvage_rewards");

            for (int i = 0; i < this.m_rewards.Length; i++)
            {
                if (CustomizationManager.IsPartUnlocked(this.m_rewards[i].PartReward))
                {
                    int amount = int.Parse(config[this.m_rewards[i].PartReward.m_partTier.ToString()]);
                    this.m_rewards[i] = new LootWheelRewards.LootWheelReward(amount, this.m_rewards[i].SingleValue, LootWheelRewards.RewardType.Scrap);
                }
            }
        }
Ejemplo n.º 4
0
 public void InitButtons(PartListing partListing, Action <BasePart.PartType> onButtonPressed)
 {
     this.cachedPartListing = partListing;
     this.onButtonPressed   = onButtonPressed;
     if (this.initButtonsDone)
     {
         return;
     }
     if (this.customPartWidget != null)
     {
         Transform transform = this.cachedPartListing.transform.Find("Close");
         if (transform)
         {
             this.customPartWidget.closeButton = transform.GetComponent <Button>();
         }
     }
     for (int i = 0; i < Enum.GetNames(typeof(BasePart.PartType)).Length; i++)
     {
         for (int j = 0; j < Enum.GetNames(typeof(BasePart.PartTier)).Length; j++)
         {
             BasePart.PartType partType          = (BasePart.PartType)i;
             List <GameObject> partTierInstances = this.cachedPartListing.GetPartTierInstances(partType, (BasePart.PartTier)j);
             if (partTierInstances != null)
             {
                 for (int k = 0; k < partTierInstances.Count; k++)
                 {
                     bool enabled         = j == 0;
                     int  customPartIndex = WPFMonoBehaviour.gameData.GetCustomPartIndex(partType, partTierInstances[k].name);
                     if (j > 0)
                     {
                         enabled = CustomizationManager.IsPartUnlocked(WPFMonoBehaviour.gameData.GetCustomPart(partType, customPartIndex));
                     }
                     BoxCollider component = partTierInstances[k].GetComponent <BoxCollider>();
                     if (component != null)
                     {
                         component.enabled = enabled;
                         Button component2 = partTierInstances[k].GetComponent <Button>();
                         component2.MethodToCall.SetMethod(this, "CustomButtonPressed", new object[]
                         {
                             i,
                             customPartIndex
                         });
                     }
                 }
             }
         }
     }
     this.cachedPartListing.CreateSelectionIcons();
     this.initButtonsDone = true;
 }
Ejemplo n.º 5
0
 public static void UnlockPart(BasePart part, string unlockType)
 {
     if (CustomizationManager.IsPartUnlocked(part))
     {
         return;
     }
     CustomizationManager.cachedUnlockedPartCount = -1;
     GameProgress.SetBool(part.name, true, GameProgress.Location.Local);
     CustomizationManager.SetPartNew(part, true);
     CustomizationManager.SetPartUsed(part, false);
     CustomizationManager.CheckUnlockPartAchievements();
     if (CustomizationManager.OnPartUnlocked != null)
     {
         CustomizationManager.OnPartUnlocked(part);
     }
 }
Ejemplo n.º 6
0
    public static int UnlockablesLeft()
    {
        int num = 0;

        if (!AlienCustomizationManager.s_initialized)
        {
            return(0);
        }
        for (int i = 0; i < AlienCustomizationManager.s_unlockOrder.Count; i++)
        {
            if (!CustomizationManager.IsPartUnlocked(AlienCustomizationManager.s_unlockOrder[i]))
            {
                num++;
            }
        }
        return(num);
    }
Ejemplo n.º 7
0
 public static bool GetNextUnlockable(out BasePart part)
 {
     part = null;
     if (!AlienCustomizationManager.s_initialized)
     {
         return(false);
     }
     for (int i = 0; i < AlienCustomizationManager.s_unlockOrder.Count; i++)
     {
         if (!CustomizationManager.IsPartUnlocked(AlienCustomizationManager.s_unlockOrder[i]))
         {
             part = AlienCustomizationManager.s_unlockOrder[i];
             break;
         }
     }
     return(part != null);
 }
Ejemplo n.º 8
0
    private static bool HasPartFlags(BasePart part, PartFlags flags)
    {
        if (part == null)
        {
            return(false);
        }
        PartFlags partFlags = CustomizationManager.PartFlags.None;

        if (!CustomizationManager.IsPartUnlocked(part))
        {
            partFlags |= CustomizationManager.PartFlags.Locked;
        }
        if (part.craftable)
        {
            partFlags |= CustomizationManager.PartFlags.Craftable;
        }
        if (part.lootCrateReward)
        {
            partFlags |= CustomizationManager.PartFlags.Rewardable;
        }
        return((partFlags & flags) == flags);
    }
Ejemplo n.º 9
0
    public void AddLootCrate(LootCrateType lootCrateType, int amount, LootCrate.AnalyticData data, bool fromQueue = false, int xp = 0)
    {
        if (this.lootcrateRewardQueue == null)
        {
            this.lootcrateRewardQueue = new Queue <LootCrateRewardQueueElement>();
        }
        if (this.lootCrateAnimation != null)
        {
            if (this.lootCrateAnimationInstance == null)
            {
                this.lootCrateAnimationInstance = UnityEngine.Object.Instantiate <GameObject>(this.lootCrateAnimation, Vector3.up * 1000f, Quaternion.identity);
            }
            else
            {
                this.lootCrateAnimationInstance.SetActive(true);
            }
            this.lootCrateAnimationInstance.transform.parent = base.transform;
            LootCrateRewardQueueElement lootCrateRewardQueueElement = null;
            if (!fromQueue)
            {
                bool flag = this.lootcrateRewardQueue.Count == 0;
                for (int i = 0; i < amount; i++)
                {
                    lootCrateRewardQueueElement = new LootCrateRewardQueueElement(lootCrateType, data, xp);
                    this.lootcrateRewardQueue.Enqueue(lootCrateRewardQueueElement);
                }
                if (!flag)
                {
                    return;
                }
            }
            else
            {
                lootCrateRewardQueueElement = this.lootcrateRewardQueue.Peek();
            }
            this.closeButton.SetActive(false);
            this.closeButtonGfx.SetActive(false);
            this.crateOpened = false;
            LootCrateRewards.SlotRewards[] randomRewards = LootCrateRewards.GetRandomRewards(lootCrateType);
            if (randomRewards == null)
            {
                return;
            }
            int             num = 0;
            LootCrateButton componentInChildren = this.lootCrateAnimationInstance.GetComponentInChildren <LootCrateButton>();
            componentInChildren.GainedXP = lootCrateRewardQueueElement.xp;
            componentInChildren.Init(lootCrateType);
            LootCrateButton lootCrateButton = componentInChildren;
            lootCrateButton.onOpeningDone = (Action)Delegate.Combine(lootCrateButton.onOpeningDone, new Action(delegate()
            {
                base.StartCoroutine(this.CrateOpened());
            }));
            base.StartCoroutine(this.DelayIntro(componentInChildren, Vector3.forward * -1f));
            List <BasePart> list  = new List <BasePart>();
            int             num2  = 0;
            int             num3  = 0;
            int             num4  = 0;
            int             num5  = 0;
            int             num6  = 0;
            int             num7  = 0;
            List <int>      list2 = new List <int>();
            for (int j = 0; j < randomRewards.Length; j++)
            {
                int num8 = UnityEngine.Random.Range(0, randomRewards.Length);
                int num9 = randomRewards.Length;
                while (list2.Contains(num8) && num9 >= 0)
                {
                    if (++num8 >= randomRewards.Length)
                    {
                        num8 = 0;
                    }
                    num9--;
                }
                if (num9 >= 0)
                {
                    list2.Add(num8);
                    LootCrateRewards.SlotRewards reward = randomRewards[num8];
                    LootCrateRewards.Reward      type   = reward.Type;
                    switch (type)
                    {
                    case LootCrateRewards.Reward.Part:
                    {
                        bool     isDuplicatePart = false;
                        int      num10           = 0;
                        int      num11           = 10;
                        BasePart randomLootCrateRewardPartFromTier;
                        do
                        {
                            randomLootCrateRewardPartFromTier = CustomizationManager.GetRandomLootCrateRewardPartFromTier(reward.PartTier, false);
                            num11--;
                        }while (list.Contains(randomLootCrateRewardPartFromTier) && num11 > 0);
                        list.Add(randomLootCrateRewardPartFromTier);
                        if (CustomizationManager.IsPartUnlocked(randomLootCrateRewardPartFromTier))
                        {
                            num10 = Singleton <GameConfigurationManager> .Instance.GetValue <int>("part_salvage_rewards", randomLootCrateRewardPartFromTier.m_partTier.ToString());

                            GameProgress.AddScrap(num10);
                            num2 += num10;
                            num7++;
                            isDuplicatePart = true;
                        }
                        else
                        {
                            CustomizationManager.UnlockPart(randomLootCrateRewardPartFromTier, lootCrateType.ToString() + "_crate");
                        }
                        componentInChildren.SetIcon(num, randomLootCrateRewardPartFromTier.m_constructionIconSprite.gameObject, string.Empty, (int)reward.PartTier, isDuplicatePart, true);
                        componentInChildren.SetScrapIcon(num, this.scrapIcons[0], num10.ToString());
                        BasePart.PartTier partTier = reward.PartTier;
                        if (partTier != BasePart.PartTier.Common)
                        {
                            if (partTier != BasePart.PartTier.Rare)
                            {
                                if (partTier == BasePart.PartTier.Epic)
                                {
                                    num6++;
                                }
                            }
                            else
                            {
                                num5++;
                            }
                        }
                        else
                        {
                            num4++;
                        }
                        break;
                    }

                    case LootCrateRewards.Reward.Powerup:
                    {
                        GameObject iconPrefab       = this.powerUpIcons[reward.Powerup - LootCrateRewards.Powerup.Magnet];
                        string     customTypeOfGain = lootCrateType.ToString() + " crate";
                        switch (reward.Powerup)
                        {
                        case LootCrateRewards.Powerup.Magnet:
                            GameProgress.AddSuperMagnet(1);
                            if (Singleton <IapManager> .Instance != null)
                            {
                                Singleton <IapManager> .Instance.SendFlurryInventoryGainEvent(IapManager.InAppPurchaseItemType.SuperMagnetSingle, 1, customTypeOfGain);
                            }
                            break;

                        case LootCrateRewards.Powerup.Superglue:
                            GameProgress.AddSuperGlue(1);
                            if (Singleton <IapManager> .Instance != null)
                            {
                                Singleton <IapManager> .Instance.SendFlurryInventoryGainEvent(IapManager.InAppPurchaseItemType.SuperGlueSingle, 1, customTypeOfGain);
                            }
                            break;

                        case LootCrateRewards.Powerup.Turbo:
                            GameProgress.AddTurboCharge(1);
                            if (Singleton <IapManager> .Instance != null)
                            {
                                Singleton <IapManager> .Instance.SendFlurryInventoryGainEvent(IapManager.InAppPurchaseItemType.TurboChargeSingle, 1, customTypeOfGain);
                            }
                            break;

                        case LootCrateRewards.Powerup.Supermechanic:
                            GameProgress.AddBluePrints(1);
                            if (Singleton <IapManager> .Instance != null)
                            {
                                Singleton <IapManager> .Instance.SendFlurryInventoryGainEvent(IapManager.InAppPurchaseItemType.BlueprintSingle, 1, customTypeOfGain);
                            }
                            break;

                        case LootCrateRewards.Powerup.NightVision:
                            GameProgress.AddNightVision(1);
                            if (Singleton <IapManager> .Instance != null)
                            {
                                Singleton <IapManager> .Instance.SendFlurryInventoryGainEvent(IapManager.InAppPurchaseItemType.NightVisionSingle, 1, customTypeOfGain);
                            }
                            break;
                        }
                        componentInChildren.SetIcon(num, iconPrefab, string.Empty, 0, false, true);
                        break;
                    }

                    case LootCrateRewards.Reward.Dessert:
                        if (reward.GoldenCupcake)
                        {
                            GameObject gameObject = WPFMonoBehaviour.gameData.m_desserts[WPFMonoBehaviour.gameData.m_desserts.Count - 1];
                            Dessert    component  = gameObject.GetComponent <Dessert>();
                            GameProgress.AddDesserts(component.saveId, 1);
                            componentInChildren.SetIcon(num, this.dessertIcons[1], string.Empty, 0, false, true);
                        }
                        else
                        {
                            GameObject gameObject2 = WPFMonoBehaviour.gameData.m_desserts[UnityEngine.Random.Range(0, WPFMonoBehaviour.gameData.m_desserts.Count - 1)];
                            Dessert    component2  = gameObject2.GetComponent <Dessert>();
                            GameProgress.AddDesserts(component2.saveId, reward.Desserts);
                            componentInChildren.SetIcon(num, this.dessertIcons[0], reward.Desserts.ToString(), 0, false, true);
                        }
                        num3 += reward.Desserts;
                        break;

                    case LootCrateRewards.Reward.Scrap:
                    {
                        GameProgress.AddScrap(reward.Scrap);
                        num2 += reward.Scrap;
                        GameObject        scrapRewardContainer = componentInChildren.SetIcon(num, this.scrapIcons[0], reward.Scrap.ToString(), 0, false, true);
                        LootRewardElement component3           = scrapRewardContainer.GetComponent <LootRewardElement>();
                        if (component3 != null)
                        {
                            LootRewardElement lootRewardElement = component3;
                            lootRewardElement.onRewardOpened = (Action)Delegate.Combine(lootRewardElement.onRewardOpened, new Action(delegate()
                                {
                                    ScrapButton.Instance.AddParticles(scrapRewardContainer, reward.Scrap, 0f, (float)reward.Scrap);
                                }));
                        }
                        break;
                    }

                    case LootCrateRewards.Reward.Coin:
                    {
                        GameProgress.AddSnoutCoins(reward.Coins);
                        GameObject        coinRewardContainer = componentInChildren.SetIcon(num, this.coinIcons[0], reward.Coins.ToString(), 0, false, true);
                        LootRewardElement component4          = coinRewardContainer.GetComponent <LootRewardElement>();
                        if (component4 != null)
                        {
                            LootRewardElement lootRewardElement2 = component4;
                            lootRewardElement2.onRewardOpened = (Action)Delegate.Combine(lootRewardElement2.onRewardOpened, new Action(delegate()
                                {
                                    SnoutButton.Instance.AddParticles(coinRewardContainer, reward.Scrap, 0f, (float)reward.Scrap);
                                }));
                        }
                        break;
                    }
                    }
                    num++;
                }
            }
            if (lootCrateRewardQueueElement != null && num > 0)
            {
                lootCrateRewardQueueElement.SetRewarded();
                int @int = GameProgress.GetInt(lootCrateType.ToString() + "_crates_collected", 0, GameProgress.Location.Local, null);
                GameProgress.SetInt(lootCrateType.ToString() + "_crates_collected", @int + 1, GameProgress.Location.Local);
            }
            EventManager.Send(new LootCrateDelivered(lootCrateType));
            int value = GameProgress.GetInt("Total_parts_scrapped", 0, GameProgress.Location.Local, null) + num7;
            GameProgress.SetInt("Total_parts_scrapped", value, GameProgress.Location.Local);
            int value2 = GameProgress.GetInt("Total_parts_received", 0, GameProgress.Location.Local, null) + num4 + num5 + num6;
            GameProgress.SetInt("Total_parts_received", value2, GameProgress.Location.Local);
        }
    }
Ejemplo n.º 10
0
 private void CreatePartIcons(PartData data, float xPos, Transform parent, List <GameObject> newButtons)
 {
     for (int i = 0; i < this.PartTierCount - 1; i++)
     {
         for (int j = 0; j < data.RowWidth(); j++)
         {
             int     index         = j;
             Vector3 localPosition = new Vector3(xPos + (float)index * this.horizontalPadding, (float)(this.PartTierCount / 2) - (float)i * this.verticalPadding + this.verticalPadding);
             localPosition.y += ((i != 0) ? 0f : this.firstRowPadding);
             BasePart.PartTier tier = (BasePart.PartTier)i;
             bool flag;
             if (tier == BasePart.PartTier.Epic)
             {
                 flag = (index < data.PartCount(tier) || data.PartCount(BasePart.PartTier.Legendary) > 0);
                 if (index >= data.PartCount(tier))
                 {
                     index -= data.PartCount(tier);
                     tier   = BasePart.PartTier.Legendary;
                 }
             }
             else
             {
                 flag = (index < data.PartCount(tier));
             }
             if (!this.columns.Contains(localPosition.x))
             {
                 this.columns.Add(localPosition.x);
             }
             if (flag)
             {
                 GameObject bg = UnityEngine.Object.Instantiate <GameObject>(this.GetIconBackground(tier));
                 bg.transform.parent        = parent;
                 bg.transform.localPosition = localPosition;
                 Sprite     icon2 = data.GetIcon(tier, index);
                 GameObject icon  = null;
                 if (icon2 != null)
                 {
                     icon = UnityEngine.Object.Instantiate <GameObject>(icon2.gameObject);
                     icon.transform.parent        = bg.transform;
                     icon.transform.localPosition = new Vector3(0f, 0f, -0.1f);
                     icon.transform.localScale    = Vector3.one * this.iconScale;
                 }
                 if (tier != BasePart.PartTier.Regular)
                 {
                     this.ToGray(bg, !CustomizationManager.IsPartUnlocked(data.parts[tier][index]));
                 }
                 if (this.IsKingsFavorite(data.parts[tier][index]))
                 {
                     GameObject gameObject;
                     this.AddKingsFavoriteTag(bg, out gameObject);
                 }
                 GameObject item;
                 if (CustomizationManager.IsPartNew(data.parts[tier][index]) && this.AddNewContentTag(bg, out item))
                 {
                     newButtons.Add(item);
                 }
                 data.AddPartRoot(tier, bg);
                 Button           button            = bg.GetComponentInChildren <Button>();
                 GameObjectEvents gameObjectEvents  = bg.AddComponent <GameObjectEvents>();
                 GameObjectEvents gameObjectEvents2 = gameObjectEvents;
                 gameObjectEvents2.OnEnabled = (Action <bool>) Delegate.Combine(gameObjectEvents2.OnEnabled, new Action <bool>(delegate(bool enabled)
                 {
                     if (enabled)
                     {
                         if (this.IsKingsFavorite(data.parts[tier][index]))
                         {
                             GameObject gameObject2;
                             this.AddKingsFavoriteTag(bg, out gameObject2);
                         }
                         else
                         {
                             this.ClearKingsFavoriteTag(bg);
                         }
                         if (tier != BasePart.PartTier.Regular)
                         {
                             bool flag2 = CustomizationManager.IsPartUnlocked(data.parts[tier][index]);
                             this.ToGray(bg, !flag2);
                             Collider component = bg.GetComponent <Collider>();
                             component.enabled  = flag2;
                             button.enabled     = flag2;
                             if (tier == BasePart.PartTier.Legendary)
                             {
                                 if (icon)
                                 {
                                     icon.SetActive(flag2);
                                 }
                                 bg.transform.Find("QuestionMark").gameObject.SetActive(!flag2);
                             }
                             int lastUsedPartIndex = CustomizationManager.GetLastUsedPartIndex(data.PartType);
                             data.UpdateSelectionIcon(this.gameData.GetCustomPart(data.PartType, lastUsedPartIndex).name);
                             if (CustomizationManager.IsPartNew(data.parts[tier][index]))
                             {
                                 GameObject item2;
                                 if (this.AddNewContentTag(bg, out item2))
                                 {
                                     newButtons.Add(item2);
                                 }
                             }
                             else
                             {
                                 this.ClearNewTags(bg);
                             }
                         }
                     }
                 }));
                 GameObjectEvents gameObjectEvents3 = gameObjectEvents;
                 gameObjectEvents3.OnVisible = (Action <bool>) Delegate.Combine(gameObjectEvents3.OnVisible, new Action <bool>(delegate(bool visible)
                 {
                     button.enabled = visible;
                 }));
                 this.SetSortingLayer(bg, this.sortingLayer);
             }
         }
     }
 }
Ejemplo n.º 11
0
    private static void CheckUnlockPartAchievements()
    {
        if (!Singleton <SocialGameManager> .IsInstantiated())
        {
            return;
        }
        bool            flag          = false;
        int             common        = 0;
        int             rare          = 0;
        int             epic          = 0;
        List <BasePart> allTierParts  = CustomizationManager.GetAllTierParts(BasePart.PartTier.Common, CustomizationManager.PartFlags.None);
        List <BasePart> allTierParts2 = CustomizationManager.GetAllTierParts(BasePart.PartTier.Rare, CustomizationManager.PartFlags.None);
        List <BasePart> allTierParts3 = CustomizationManager.GetAllTierParts(BasePart.PartTier.Epic, CustomizationManager.PartFlags.None);

        foreach (BasePart basePart in allTierParts)
        {
            if (CustomizationManager.IsPartUnlocked(basePart))
            {
                common++;
                if (basePart.tags != null && basePart.tags.Contains("Gold"))
                {
                    flag = true;
                }
            }
        }
        foreach (BasePart basePart2 in allTierParts2)
        {
            if (CustomizationManager.IsPartUnlocked(basePart2))
            {
                rare++;
                if (basePart2.tags != null && basePart2.tags.Contains("Gold"))
                {
                    flag = true;
                }
            }
        }
        foreach (BasePart basePart3 in allTierParts3)
        {
            if (CustomizationManager.IsPartUnlocked(basePart3))
            {
                epic++;
                if (basePart3.tags != null && basePart3.tags.Contains("Gold"))
                {
                    flag = true;
                }
            }
        }
        if (common > 0)
        {
            Singleton <SocialGameManager> .Instance.TryReportAchievementProgress("grp.COMMON_COLLECTOR", 100.0, (int limit) => common >= limit);
        }
        if (rare > 0)
        {
            Singleton <SocialGameManager> .Instance.TryReportAchievementProgress("grp.RARE_COLLECTOR", 100.0, (int limit) => rare >= limit);
        }
        if (epic > 0)
        {
            Singleton <SocialGameManager> .Instance.TryReportAchievementProgress("grp.EPIC_COLLECTOR", 100.0, (int limit) => epic >= limit);
        }
        if (flag)
        {
            Singleton <SocialGameManager> .Instance.ReportAchievementProgress("grp.GET_GOLDEN_PART", 100.0);
        }
    }