private UniRx.IObservable <float> CreateGearSetBonusMultiplier(BonusTypeEnum bonusType, int setIndex, float mult) { GearSetRunner orCreateGearSetRunner = GetOrCreateGearSetRunner(setIndex); return(from level in orCreateGearSetRunner.MaxAllLevel select(level < 1) ? BonusTypeHelper.GetOrigin(bonusType) : mult); }
public CumulativeBonusRunner() { for (int i = 0; i < 25; i++) { BonusMult[i] = new ReactiveProperty <BigDouble>(BonusTypeHelper.GetOrigin((BonusTypeEnum)i)); } }
private void CalculateTrophiesMultiplier(int tier) { BigDouble bigDouble = new BigDouble(1.0); BigDouble bigDouble2 = new BigDouble(1.0); BigDouble bigDouble3 = new BigDouble(1.0); for (int i = 1; i <= tier; i++) { TournamentTierConfig tournamentTierConfig = Singleton <EconomyHelpers> .Instance.GetTournamentTierConfig(i); Func <BigDouble, float, BigDouble> func = BonusTypeHelper.CreateBigDoubleFunction(tournamentTierConfig.Bonus.BonusType); switch (tournamentTierConfig.Bonus.BonusType) { case BonusTypeEnum.TapDamage: bigDouble = func(bigDouble, tournamentTierConfig.Bonus.Amount); break; case BonusTypeEnum.AllCompanionDamage: bigDouble2 = func(bigDouble2, tournamentTierConfig.Bonus.Amount); break; case BonusTypeEnum.AllDamage: bigDouble3 = func(bigDouble3, tournamentTierConfig.Bonus.Amount); break; } } TrophyHeroDamageMultiplier.Value = bigDouble; TrophyCompanionDamageMultiplier.Value = bigDouble2; TrophyAllDamageMultiplier.Value = bigDouble3; }
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); }
private UniRx.IObservable <BigDouble> CreateCombinedObservable(int typeIndex) { Func <BigDouble, float, BigDouble> func = BonusTypeHelper.CreateBigDoubleFunction((BonusTypeEnum)typeIndex); return(from bonus in Singleton <PerkMilestoneRunner> .Instance.BonusMult[typeIndex].CombineLatest(Singleton <GearBoostRunner> .Instance.BonusMult[typeIndex], (BigDouble bonus, float mult) => func(bonus, mult)).CombineLatest(Singleton <GearSetCollectionRunner> .Instance.BonusMult[typeIndex], (BigDouble bonus, float mult) => func(bonus, mult)) select(!(bonus >= BigDouble.ZERO)) ? BigDouble.ZERO : bonus); }
private UniRx.IObservable <float> CreateObservableForAll(BonusTypeEnum bonusType) { List <UniRx.IObservable <float> > multipliers = (from config in PersistentSingleton <Economies> .Instance.GearSets where config.Bonus.BonusType == bonusType select CreateGearSetBonusMultiplier(bonusType, config.SetIndex, config.Bonus.Amount)).ToList(); return(BonusTypeHelper.CreateCombine(bonusType, multipliers)); }
private UniRx.IObservable <BigDouble> CreateObservableForAll(BonusTypeEnum bonusType) { List <UniRx.IObservable <float> > multipliers = PersistentSingleton <Economies> .Instance.PerkMilestoneConfigs.SelectMany((PerkMilestoneConfig config) => from i in Enumerable.Range(0, config.Items.Count) where config.Items[i].BonusType == bonusType select CreateHeroBonusMultiplier(bonusType, config.Hero, config.Items[i].Amount, PersistentSingleton <Economies> .Instance.PerkMilestones[i])).ToList(); return(from mult in BonusTypeHelper.CreateCombine(bonusType, multipliers) select new BigDouble(mult)); }
private UniRx.IObservable <float> CreateObservableForAll(BonusTypeEnum bonusType) { List <UniRx.IObservable <float> > mult = (from config in PersistentSingleton <Economies> .Instance.Gears where config.Boost1.Mult.BonusType == bonusType select Singleton <GearCollectionRunner> .Instance.GetOrCreateGearRunner(config.GearIndex).Boost1Amount.AsObservable()).ToList(); List <UniRx.IObservable <float> > mult2 = (from config in PersistentSingleton <Economies> .Instance.Gears where config.Boost2.Mult.BonusType == bonusType select Singleton <GearCollectionRunner> .Instance.GetOrCreateGearRunner(config.GearIndex).Boost2Amount.AsObservable()).ToList(); return(BonusTypeHelper.CreateCombineStacking(bonusType, mult, mult2)); }
private float GetBonusAmount(GearBoostStruct boost, int boostAmount, bool initial) { if (initial) { return(boost.Mult.Amount + boost.LevelUpAmount * (float)(boostAmount - 1)); } if (BonusTypeHelper.IsTimeType(boost.Mult.BonusType)) { return(boost.LevelUpAmount * (float)boostAmount); } return(boost.LevelUpAmount * (float)boostAmount + 1f); }
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)); }
private void ShowPerkUnlock(int hero, int perk) { if (PlayerData.Instance.HeroStates[hero].Level.Value >= PlayerData.Instance.HeroStates[hero].LifetimeLevel.Value) { base.gameObject.SetActive(value: true); BonusMultConfig bonusMultConfig = PersistentSingleton <Economies> .Instance.PerkMilestoneConfigs[hero].Items[perk]; m_perkParent.transform.DestroyChildrenImmediate(); GameObject gameObject = GameObjectExtensions.InstantiateFromResources(GetPrefabPath(bonusMultConfig)); gameObject.transform.SetParent(m_perkParent.transform, worldPositionStays: false); m_perkName.text = PersistentSingleton <LocalizationService> .Instance.Text("Perk." + bonusMultConfig.BonusType + ".Title"); m_perkAttribute.text = BonusTypeHelper.GetAttributeText(bonusMultConfig.BonusType, bonusMultConfig.Amount); } }
private void OnEnable() { Text component = base.gameObject.GetComponent <Text>(); TournamentTier tier = m_tier; if (m_tier == TournamentTier.Invalid) { tier = (TournamentTier)PlayerData.Instance.Trophies.Value; } if (m_placement == Placement.Title) { component.text = PersistentSingleton <LocalizationService> .Instance.Text("UI.Tournament.Trophies." + tier.ToString()); return; } TournamentTierConfig tournamentTierConfig = Singleton <EconomyHelpers> .Instance.GetTournamentTierConfig((int)tier); component.text = BonusTypeHelper.GetAttributeText(tournamentTierConfig.Bonus.BonusType, tournamentTierConfig.Bonus.Amount); }
public GearViewRunner(int gearIndex) { SceneLoader instance = SceneLoader.Instance; GearConfig config = PersistentSingleton <Economies> .Instance.Gears[gearIndex]; LocalizedName = new ReactiveProperty <string>(PersistentSingleton <LocalizationService> .Instance.Text("Gear.Name." + gearIndex)); LocalizedDesc = new ReactiveProperty <string>(PersistentSingleton <LocalizationService> .Instance.Text("Gear.Name.Desc." + gearIndex)); GearRunner gearRunner = Singleton <GearCollectionRunner> .Instance.GetOrCreateGearRunner(gearIndex); int chunkUnlockLevel = PersistentSingleton <Economies> .Instance.GearSets[gearRunner.SetIndex].ChunkUnlockLevel; LocalizedChunkLevelRequirement = new ReactiveProperty <string>(PersistentSingleton <LocalizationService> .Instance.Text("Prestige.ChunkLevelRequirement", chunkUnlockLevel)); Boost1Text = (from amount in gearRunner.Boost1Amount select(gearRunner.Level.Value <= 0) ? config.Boost1.Mult.Amount : amount into amount select BonusTypeHelper.GetAttributeText(config.Boost1.Mult.BonusType, amount)).TakeUntilDestroy(instance).ToReactiveProperty(); Boost2Text = (from amount in gearRunner.Boost2Amount select(gearRunner.Level.Value <= 0) ? config.Boost2.Mult.Amount : amount into amount select BonusTypeHelper.GetAttributeText(config.Boost2.Mult.BonusType, amount)).TakeUntilDestroy(instance).ToReactiveProperty(); Show = (from show in Singleton <GearSetCollectionRunner> .Instance.MaxSetsToShow select show > gearRunner.SetIndex).TakeUntilDestroy(instance).ToReactiveProperty(); ShowPrestige = Show.CombineLatest(gearRunner.UpgradeAfterPrestigeAvailable, (bool show, bool avail) => show && avail).TakeUntilDestroy(instance).ToReadOnlyReactiveProperty(); Boost1Step = new ReactiveProperty <string>(BonusTypeHelper.GetStepText(config.Boost1.Mult.BonusType, config.Boost1.LevelUpAmount)); Boost2Step = new ReactiveProperty <string>(BonusTypeHelper.GetStepText(config.Boost2.Mult.BonusType, config.Boost2.LevelUpAmount)); BundleBoost1 = (from comb in BundleBuyAmount.CombineLatest(gearRunner.Level, (int amount, int lvl) => new { amount, lvl }) select(comb.lvl != 0) ? GetBonusAmount(config.Boost1, comb.amount, initial: false) : GetBonusAmount(config.Boost1, comb.amount, initial: true) into amount select BonusTypeHelper.GetAttributeText(config.Boost1.Mult.BonusType, amount)).TakeUntilDestroy(instance).ToReactiveProperty(); BundleBoost2 = (from comb in BundleBuyAmount.CombineLatest(gearRunner.Level, (int amount, int lvl) => new { amount, lvl }) select(comb.lvl != 0) ? GetBonusAmount(config.Boost2, comb.amount, initial: false) : GetBonusAmount(config.Boost2, comb.amount, initial: true) into amount select BonusTypeHelper.GetAttributeText(config.Boost2.Mult.BonusType, amount)).TakeUntilDestroy(instance).ToReactiveProperty(); }
public GearSetRunner(int setIndex) { SceneLoader instance = SceneLoader.Instance; GearRunners = (from gear in Singleton <GearCollectionRunner> .Instance.Gears() where gear.SetIndex == setIndex select gear).ToList(); UniRx.IObservable <int> observable = Observable.Return(int.MaxValue); foreach (GearRunner gearRunner in GearRunners) { observable = observable.CombineLatest(gearRunner.Level, Mathf.Min); } UniRx.IObservable <int> observable2 = Observable.Return(0); foreach (GearRunner gearRunner2 in GearRunners) { observable2 = observable2.CombineLatest(gearRunner2.Level, Mathf.Max); } MaxAllLevel = observable.TakeUntilDestroy(instance).ToReactiveProperty(); MaxAnyLevel = observable2.TakeUntilDestroy(instance).ToReactiveProperty(); GearSet gearSet = PersistentSingleton <Economies> .Instance.GearSets[setIndex]; SetBoostText = new ReactiveProperty <string>(BonusTypeHelper.GetAttributeText(gearSet.Bonus.BonusType, gearSet.Bonus.Amount)); }
private UniRx.IObservable <Func <float, float> > CreateGearBonusObservable(BonusTypeEnum bonusType, float levelUpAmount) { return(from lvl in Level select(lvl > 0) ? CreateGearBonusOperator(lvl - 1, levelUpAmount) : BonusTypeHelper.CreateIdentityFunc(bonusType)); }
private string GetMilestoneString(BonusTypeEnum bonusType, float amount) { return(BonusTypeHelper.GetAttributeText(bonusType, amount)); }