Пример #1
0
    private UniRx.IObservable <float> CreateHeroBonusMultiplier(BonusTypeEnum bonusType, int heroIndex, float mult, int milestone)
    {
        HeroRunner orCreateHeroRunner = Singleton <HeroTeamRunner> .Instance.GetOrCreateHeroRunner(heroIndex);

        return(from level in orCreateHeroRunner.Level
               select(level < milestone) ? BonusTypeHelper.GetOrigin(bonusType) : mult);
    }
Пример #2
0
    private string GetPrefabPath()
    {
        HeroRunner heroRunner = (HeroRunner)Singleton <PropertyManager> .Instance.GetContext("HeroRunner", base.transform);

        PerkRunner perkRunner = (PerkRunner)Singleton <PropertyManager> .Instance.GetContext("PerkRunner", base.transform);

        BonusMultConfig bonusMultConfig = PersistentSingleton <Economies> .Instance.PerkMilestoneConfigs[heroRunner.HeroIndex].Items[perkRunner.PerkIndex];

        return("UI/PerkPanels/PerkPanel." + bonusMultConfig.BonusType);
    }
Пример #3
0
    public override void Install(Dictionary <string, object> parameters)
    {
        if (parameters != null && parameters.ContainsKey("PerkIndex"))
        {
            m_perkIndex = (int)parameters["PerkIndex"];
        }
        HeroRunner heroRunner = (HeroRunner)Singleton <PropertyManager> .Instance.GetContext("HeroRunner", base.transform);

        Add("PerkRunner", heroRunner.GetOrCreatePerkRunner(m_perkIndex));
    }
Пример #4
0
    public override void Install(Dictionary <string, object> parameters)
    {
        if (parameters != null && parameters.ContainsKey("HeroIndex"))
        {
            m_heroIndex = (int)parameters["HeroIndex"];
        }
        HeroRunner orCreateHeroRunner = Singleton <HeroTeamRunner> .Instance.GetOrCreateHeroRunner(m_heroIndex);

        EvolveRunner = new HeroEvolveRunner(orCreateHeroRunner);
        Add("HeroEvolveRunner", EvolveRunner);
    }
Пример #5
0
 public void InstantiateMiniMilestoneNotification(HeroRunner heroMiniMilestone)
 {
     if (CurrentHeroIndex != heroMiniMilestone.HeroIndex || !(CurrentNotification != null) || !CurrentNotification.activeSelf)
     {
         string path = "UI/Notifications/MiniMilestoneNotification";
         Dictionary <string, object> dictionary = new Dictionary <string, object>();
         dictionary.Add("HeroIndex", heroMiniMilestone.HeroIndex);
         CurrentHeroIndex    = heroMiniMilestone.HeroIndex;
         CurrentNotification = Singleton <PropertyManager> .Instance.InstantiateFromResourcesSetParent(path, Vector3.zero, Quaternion.identity, dictionary, base.transform);
     }
 }
Пример #6
0
    public HeroEvolveRunner(HeroRunner hero)
    {
        m_heroRunner            = hero;
        LocalizedName.Value     = m_heroRunner.LocalizedName.Value;
        LocalizedNameDesc.Value = m_heroRunner.LocalizedNameDesc.Value;
        Tier.Value            = m_heroRunner.Tier.Value;
        Berries.Value         = m_heroRunner.Berries.Value;
        UnusedBerries.Value   = m_heroRunner.UnusedBerries.Value;
        TierUpAvailable.Value = m_heroRunner.TierUpAvailable.Value;
        Requirement.Value     = Singleton <EconomyHelpers> .Instance.GetTierBerryDeltaReq(Tier.Value);

        Progress.Value = (float)Berries.Value / (float)Requirement.Value;
    }
Пример #7
0
    public PerkRunner(int perkIndex, HeroRunner hero)
    {
        SceneLoader instance = SceneLoader.Instance;

        PerkIndex = perkIndex;
        Hero      = hero;
        Unlocked  = (from count in Hero.UnlockedPerkCount
                     select count > perkIndex).TakeUntilDestroy(instance).ToReactiveProperty();
        AtLevel = new ReactiveProperty <int>(PersistentSingleton <Economies> .Instance.PerkMilestones[PerkIndex]);
        BonusMultConfig bonusMultConfig = PersistentSingleton <Economies> .Instance.PerkMilestoneConfigs[Hero.HeroIndex].Items[PerkIndex];

        LocalizedTitle = new ReactiveProperty <string>(PersistentSingleton <LocalizationService> .Instance.Text("Perk." + bonusMultConfig.BonusType + ".Title"));
        LocalizedDesc  = new ReactiveProperty <string>(BonusTypeHelper.GetAttributeText(bonusMultConfig.BonusType, bonusMultConfig.Amount));
    }
Пример #8
0
    public HeroCostRunner(int heroIndex)
    {
        SceneLoader instance = SceneLoader.Instance;

        HeroIndex    = heroIndex;
        m_heroRunner = Singleton <HeroTeamRunner> .Instance.GetOrCreateHeroRunner(heroIndex);

        UniRx.IObservable <BigDouble> costOne = m_heroRunner.Level.CombineLatest(Singleton <CumulativeBonusRunner> .Instance.BonusMult[6], (int level, BigDouble mult) => Singleton <EconomyHelpers> .Instance.GetUpgradeCost(heroIndex, level));
        UniRx.IObservable <BigDouble> costTen = m_heroRunner.Level.CombineLatest(Singleton <CumulativeBonusRunner> .Instance.BonusMult[6], (int level, BigDouble mult) => Singleton <EconomyHelpers> .Instance.GetUpgradeCostRepeat(heroIndex, level, 10 - level % 10));
        UniRx.IObservable <BigDouble> costMax = m_heroRunner.Level.CombineLatest(PlayerData.Instance.Coins, Singleton <CumulativeBonusRunner> .Instance.BonusMult[6], (int lvl, BigDouble coins, BigDouble mult) => Singleton <EconomyHelpers> .Instance.GetUpgradeMaxCost(heroIndex, lvl, coins));
        Cost = (from cost in Singleton <UpgradeRunner> .Instance.UpgradeStep.Select(delegate(UpgradeEnum step)
        {
            switch (step)
            {
            case UpgradeEnum.One:
                return(costOne);

            case UpgradeEnum.Ten:
                return(costTen);

            case UpgradeEnum.Max:
                return(costMax);

            default:
                return(costOne);
            }
        }).Switch()
                select(!(cost >= new BigDouble(1.0))) ? new BigDouble(1.0) : cost).TakeUntilDestroy(instance).ToReactiveProperty();
        LevelsToUpgrade = Singleton <UpgradeRunner> .Instance.UpgradeStep.CombineLatest(PlayerData.Instance.Coins, m_heroRunner.Level, delegate(UpgradeEnum step, BigDouble coins, int lvl)
        {
            switch (step)
            {
            case UpgradeEnum.One:
                return(1);

            case UpgradeEnum.Ten:
                return(10 - lvl % 10);

            case UpgradeEnum.Max:
                return(Singleton <EconomyHelpers> .Instance.GetUpgradeMaxLevels(heroIndex, lvl, coins));

            default:
                return(1);
            }
        }).TakeUntilDestroy(instance).ToReactiveProperty();

        UpgradeAvailable = Cost.CombineLatest(PlayerData.Instance.Coins, (BigDouble cost, BigDouble coins) => cost <= coins).CombineLatest(m_heroRunner.Found, (bool cost, bool found) => cost && found).TakeUntilDestroy(instance)
                           .ToReactiveProperty();
    }
Пример #9
0
    public HeroDamageRunner(int heroIndex)
    {
        SceneLoader instance = SceneLoader.Instance;

        HeroIndex    = heroIndex;
        m_heroRunner = Singleton <HeroTeamRunner> .Instance.GetOrCreateHeroRunner(heroIndex);

        m_heroConfig   = PersistentSingleton <Economies> .Instance.Heroes[HeroIndex];
        TierDamageMult = (from tier in m_heroRunner.Tier
                          select new BigDouble(Singleton <EconomyHelpers> .Instance.GetTierDamageMult(tier))).TakeUntilDestroy(instance).ToReactiveProperty();
        TierDamageString = (from tier in TierDamageMult
                            select tier * 100.0 into upgrade
                            select PersistentSingleton <LocalizationService> .Instance.Text("Attribute.CompanionDamage", upgrade)).TakeUntilDestroy(instance).ToReactiveProperty();
        TierDamageNextUpgrade = (from tier in m_heroRunner.Tier
                                 select Singleton <EconomyHelpers> .Instance.GetTierDamageMult(tier + 1) * 100f into upgrade
                                 select "+" + PersistentSingleton <LocalizationService> .Instance.Text("Attribute.StepMultiplier", upgrade)).TakeUntilDestroy(instance).ToReactiveProperty();
        if (HeroIndex == 0)
        {
            Damage = (from lvl in m_heroRunner.Level
                      select GetDamage(lvl)).CombineLatest(Singleton <CumulativeBonusRunner> .Instance.BonusMult[0], (BigDouble damage, BigDouble mult) => damage * mult).CombineLatest(Singleton <CumulativeBonusRunner> .Instance.BonusMult[5], (BigDouble damage, BigDouble mult) => damage * mult).CombineLatest(Singleton <PerkMilestoneRunner> .Instance.MiniTapDamageMult, (BigDouble damage, BigDouble mult) => damage * mult)
                     .CombineLatest(PlayerData.Instance.BoostersEffect[0], (BigDouble damage, float mult) => damage * mult)
                     .CombineLatest(Singleton <TeamBoostRunner> .Instance.DamageMult, (BigDouble damage, float mult) => damage * mult)
                     .CombineLatest(TierDamageMult, (BigDouble damage, BigDouble mult) => damage * mult)
                     .CombineLatest(Singleton <HammerTimeRunner> .Instance.Active, (BigDouble damage, bool active) => (!active) ? damage : (damage * PersistentSingleton <GameSettings> .Instance.GoldenHammerMultiplier))
                     .CombineLatest(Singleton <TournamentRunner> .Instance.TrophyHeroDamageMultiplier, (BigDouble damage, BigDouble mult) => damage * mult)
                     .CombineLatest(Singleton <TournamentRunner> .Instance.TrophyAllDamageMultiplier, (BigDouble damage, BigDouble mult) => damage * mult)
                     .TakeUntilDestroy(instance)
                     .ToReactiveProperty();
        }
        else
        {
            Damage = (from lvl in m_heroRunner.Level
                      select GetDamage(lvl)).CombineLatest(Singleton <PerkMilestoneRunner> .Instance.CompanionDamageMult[HeroIndex], (BigDouble dmg, BigDouble compdmg) => dmg * compdmg).CombineLatest(Singleton <CumulativeBonusRunner> .Instance.BonusMult[0], (BigDouble damage, BigDouble mult) => damage * mult).CombineLatest(Singleton <CumulativeBonusRunner> .Instance.BonusMult[24], (BigDouble damage, BigDouble mult) => damage * mult)
                     .CombineLatest(Singleton <CumulativeBonusRunner> .Instance.BonusMult[(int)GetBonusTypeForHeroCategory(m_heroConfig.Category)], (BigDouble damage, BigDouble mult) => damage * mult)
                     .CombineLatest(PlayerData.Instance.BoostersEffect[0], (BigDouble damage, float mult) => damage * mult)
                     .CombineLatest(Singleton <TeamBoostRunner> .Instance.DamageMult, (BigDouble damage, float mult) => damage * mult)
                     .CombineLatest(TierDamageMult, (BigDouble damage, BigDouble mult) => damage * mult)
                     .CombineLatest(Singleton <TournamentRunner> .Instance.TrophyCompanionDamageMultiplier, (BigDouble damage, BigDouble mult) => damage * mult)
                     .CombineLatest(Singleton <TournamentRunner> .Instance.TrophyAllDamageMultiplier, (BigDouble damage, BigDouble mult) => damage * mult)
                     .TakeUntilDestroy(instance)
                     .ToReactiveProperty();
        }
        DPS = (from damage in Damage
               select(HeroIndex != 0) ? damage : (damage * 75L)).TakeUntilDestroy(instance).ToReactiveProperty();
    }
Пример #10
0
    private void UnlockHeroes(int chunkIndex)
    {
        for (int i = 0; i < Singleton <EconomyHelpers> .Instance.GetNumHeroes(); i++)
        {
            HeroRunner orCreateHeroRunner = Singleton <HeroTeamRunner> .Instance.GetOrCreateHeroRunner(i);

            if (chunkIndex >= orCreateHeroRunner.ChunkIndex.Value)
            {
                orCreateHeroRunner.Level.Value = Mathf.Max(orCreateHeroRunner.Level.Value, 1);
                orCreateHeroRunner.Tier.Value  = Mathf.Max(orCreateHeroRunner.Tier.Value, 1);
                Singleton <CreatureCollectionRunner> .Instance.GetOrCreateCreature(orCreateHeroRunner.HeroIndex);
            }
            else
            {
                orCreateHeroRunner.Level.Value = 0;
            }
        }
    }
Пример #11
0
    public bool CollidesAnyAliveExcept(Vector3 pos, int heroIndex)
    {
        for (int i = 0; i < Singleton <EconomyHelpers> .Instance.GetNumHeroes(); i++)
        {
            if (i != heroIndex)
            {
                HeroRunner orCreateHeroRunner = Singleton <HeroTeamRunner> .Instance.GetOrCreateHeroRunner(i);

                if (!orCreateHeroRunner.Found.Value)
                {
                    return(false);
                }
                AbstractCreatureController orCreateCreature = GetOrCreateCreature(i);
                if (orCreateCreature.Collides(pos))
                {
                    return(true);
                }
            }
        }
        return(false);
    }
Пример #12
0
    public void OnShowInfoPopup()
    {
        HeroRunner heroRunner = (HeroRunner)Singleton <PropertyManager> .Instance.GetContext("HeroRunner", base.transform);

        BindingManager.Instance.PerkInfoManager.ShowInfo(heroRunner.HeroIndex, m_perkIndex);
    }
Пример #13
0
    private string GetPrefabPath()
    {
        HeroRunner heroRunner = (HeroRunner)Singleton <PropertyManager> .Instance.GetContext("HeroRunner", base.transform);

        return("UI/HeroInfoPanelProfiles/HeroInfoPanel." + heroRunner.HeroIndex);
    }