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 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); }
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)); }
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); }
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); } }
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; }
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)); }
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(); }
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(); }
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; } } }
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); }
public void OnShowInfoPopup() { HeroRunner heroRunner = (HeroRunner)Singleton <PropertyManager> .Instance.GetContext("HeroRunner", base.transform); BindingManager.Instance.PerkInfoManager.ShowInfo(heroRunner.HeroIndex, m_perkIndex); }
private string GetPrefabPath() { HeroRunner heroRunner = (HeroRunner)Singleton <PropertyManager> .Instance.GetContext("HeroRunner", base.transform); return("UI/HeroInfoPanelProfiles/HeroInfoPanel." + heroRunner.HeroIndex); }