Exemplo n.º 1
0
        public GeneratorInfo(GeneratorInfoSave save, GeneratorData data, GeneratorLocalData localData)
        {
            save.Guard();
            this.Data                = data;
            this.LocalData           = localData;
            this.GeneratorId         = save.generatorId;
            this.IsResearched        = save.isResearched;
            this.IsEnhanced          = save.isEnhanced;
            this.GenerateTimer       = save.generateTimer;
            this.isGenerationStarted = save.isGenerationStarted;
            this.IsAutomatic         = save.isAutomatic;
            this.State               = (GeneratorState)save.state;
            this.BuyCountButtonState = save.buyCountButtonState;
            this.ProfitBoosts.Load(save.profitBoosts);
            this.TimeBoosts.Load(save.timeBoosts);

            if (GeneratorId.IsRickshawOrTaxi())
            {
                IsResearched = true;
            }
            if (IsEnhanced)
            {
                AddTimeBoost(BoostInfo.CreateTemp(kEnhanceBoostName, 10));
            }
        }
Exemplo n.º 2
0
        private void RewardAchievment(int generatorId, Level level)
        {
            switch (level.RewardType)
            {
            case RewardType.SpeedUpgrade:
                GenerationService.Generators.AddTimeBoost(
                    generatorId: generatorId,
                    boost: BoostInfo.CreateTemp($"reward_speed_{generatorId}_".GuidSuffix(5), level.RewardValue));
                break;

            case RewardType.ProfitUpgrade: {
                GenerationService.Generators.AddProfitBoost(
                    generatorId: generatorId,
                    boost: BoostInfo.CreateTemp(
                        id: $"reward_profit_{generatorId}_{level.Id}_".GuidSuffix(5),
                        value: level.RewardValue));
            }
            break;

            case RewardType.None:
                break;

            default:
                break;
            }
        }
Exemplo n.º 3
0
 private void ApplyProfitUpgrade(StoreProductData product)
 {
     services.GenerationService.Generators.AddProfitBoost(
         boost: BoostInfo.CreateTemp(
             id: $"iap_{product.StoreId}_".GuidSuffix(5),
             value: product.BonusValue));
 }
Exemplo n.º 4
0
 private void BuyTimeUpgradeVM(UpgradeData vm, bool free, int id, bool isInvestor)
 {
     if (id == -1)
     {
         GenerationService.Generators.AddTimeBoost(BoostInfo.CreateTemp(id: $"time_upgrade_{vm.Id}_".GuidSuffix(5), value: vm.Value));
     }
     else
     {
         GenerationService.Generators.AddTimeBoost(
             generatorId: id,
             boost: BoostInfo.CreateTemp(
                 id: $"time_upgrade_{vm.Id}_".GuidSuffix(5),
                 value: vm.Value));
     }
     if (!free)
     {
         if (isInvestor)
         {
         }
         else
         {
             Player.RemoveCompanyCash(vm.Price(() => {
                 return(BosUtils.GetUpgradePriceMult(ResourceService.Planets.GetPlanet(Planets.CurrentPlanet.Id), vm));
             }));
         }
     }
 }
Exemplo n.º 5
0
 private void BuyTimeUpgrade(Upgrade up, bool free, int id)
 {
     if (Services.GenerationService.Generators.Contains(id))
     {
         int count = GetSpeedUpgradeLevel(id);
         //Services.GenerationService.Generators.ApplyTime(id, up.TimeMultiplier);
         Services.GenerationService.Generators.AddTimeBoost(
             generatorId: id,
             boost: BoostInfo.CreateTemp(
                 id: $"upgrade_time_{up.GeneratorIdToUpgrade}_".GuidSuffix(5),
                 value: up.TimeMultiplier));
         AddSpeedUpgradeLevel(id, 1);
         if (!free)
         {
             RemoveCost(Services, up.CostType, up.CalculateCost(count));
         }
     }
     else
     {
         //Services.GenerationService.Generators.ApplyTime(id, up.TimeMultiplier);
         Services.GenerationService.Generators.AddTimeBoost(
             generatorId: id,
             boost: BoostInfo.CreateTemp(
                 id: $"upgrade_time_{up.GeneratorIdToUpgrade}_".GuidSuffix(5),
                 value: up.TimeMultiplier));
         AddSpeedUpgradeLevel(id, 1);
         if (!free)
         {
             RemoveCost(Services, up.CostType, up.CalculateCost(0));
         }
     }
 }
Exemplo n.º 6
0
 public void Enhance()
 {
     if (!IsEnhanced)
     {
         IsEnhanced = true;
         AddTimeBoost(BoostInfo.CreateTemp(kEnhanceBoostName, 10));
         GameEvents.OnGeneratorEnhanced(this);
     }
 }
Exemplo n.º 7
0
 public void Setup(object data = null)
 {
     Observable.Interval(TimeSpan.FromSeconds(1)).Subscribe(value => {
         if (IsLoaded && GameMode.GameModeName == GameModeName.Game && Services.GenerationService.IsLoaded)
         {
             Services.GenerationService.Generators.AddProfitBoost(BoostInfo.CreateTemp(
                                                                      "x2_profit_service",
                                                                      ProfitMult));
             //UnityEngine.Debug.Log($"update x2 profit service boost to: {ProfitMult}");
         }
     }).AddTo(gameObject);
 }
Exemplo n.º 8
0
        private System.Collections.IEnumerator UpdateManagerProfitMult(ManagerInfo manager)
        {
            yield return(new WaitUntil(() => IsLoaded));

            if (manager.IsHired)
            {
                Generators.AddProfitBoost(
                    generatorId: manager.Id,
                    boost: BoostInfo.CreateTemp(manager.ManagerProfitMultId, manager.Efficiency(Services)));

                double boostValue = Generators.GetGeneratorInfo(manager.Id).GetProfitBoostValue(manager.ManagerProfitMultId);
                UDebug.Log($"Update generator {manager.Id} efficiency mult to => {boostValue}".Attrib(bold: true, italic: true, color: "y"));
            }
        }
Exemplo n.º 9
0
 private void UpgradeTime(BosCoinUpgradeData data)
 {
     if (data.GeneratorId < 0)
     {
         if (data.IsPermanent)
         {
             //Generators.ApplyPermanent(GeneratorBonusMult.CreateTimeMult(data.TimeMultiplier));
             Generators.AddTimeBoost(
                 boost: BoostInfo.CreatePersist(
                     id: BoostIds.GetPersistCoinUpId(data.Id),
                     value: data.TimeMultiplier,
                     sourceType: (int)BoostSourceType.CoinUpgrade));
         }
         else
         {
             //Generators.ApplyGlobal(GeneratorBonusMult.CreateTimeMult(data.TimeMultiplier));
             Generators.AddTimeBoost(
                 boost: BoostInfo.CreateTemp(
                     id: BoostIds.GetTempCoinUpId(data.Id),
                     value: data.TimeMultiplier,
                     sourceType: (int)BoostSourceType.CoinUpgrade));
         }
     }
     else
     {
         if (data.IsPermanent)
         {
             //Generators.ApplyPermanent(data.GeneratorId, GeneratorBonusMult.CreateTimeMult(data.TimeMultiplier));
             Generators.AddTimeBoost(
                 generatorId: data.GeneratorId,
                 boost: BoostInfo.CreatePersist(
                     id: BoostIds.GetPersistCoinUpId(data.Id),
                     value: data.TimeMultiplier,
                     sourceType: (int)BoostSourceType.CoinUpgrade));
         }
         else
         {
             //Generators.ApplyTime(data.GeneratorId, data.TimeMultiplier);
             Generators.AddTimeBoost(
                 generatorId: data.GeneratorId,
                 boost: BoostInfo.CreateTemp(
                     id: BoostIds.GetTempCoinUpId(data.Id),
                     value: data.TimeMultiplier,
                     sourceType: (int)BoostSourceType.CoinUpgrade));
         }
     }
     //Services.GetService<IPlayerDataUpgrader>().Upgrade(new UpgradeItem(data.GeneratorId, data.TimeMultiplier, data.IsPermanent, data.UpgradeType));
 }
 public void ApplyBoost()
 {
     if (State == BoostState.Active)
     {
         if (!isTempBoostRunning)
         {
             isTempBoostRunning = true;
             tempProfitBoostId  = Guid.NewGuid().ToString();
             profitMultTimer    = kProfitBoostInterval;
             //Services.GenerationService.Generators.AddTempProfitMult(new GeneratorMult(tempProfitBoostId, 20));
             Services.GenerationService.Generators.AddProfitBoost(
                 boost: BoostInfo.CreateTemp(
                     id: "x20boost",
                     value: 20));
             GameEvents.OnX20BoostMultStarted(true);
         }
     }
 }
Exemplo n.º 11
0
 private void UpgradeProfit(BosCoinUpgradeData data)
 {
     if (data.GeneratorId < 0)
     {
         if (data.IsPermanent)
         {
             //Generators.ApplyPermanent(GeneratorBonusMult.CreateProfitMult(data.ProfitMutlitplier));
             Generators.AddProfitBoost(
                 boost: BoostInfo.CreatePersist(BoostIds.GetPersistCoinUpgradeId(data.Id), data.ProfitMutlitplier, (int)BoostSourceType.CoinUpgrade));
         }
         else
         {
             //Generators.ApplyGlobal(GeneratorBonusMult.CreateProfitMult(data.ProfitMutlitplier));
             Generators.AddProfitBoost(
                 boost: BoostInfo.CreateTemp(BoostIds.GetTempCoinUpgradeId(data.Id), data.ProfitMutlitplier, (int)BoostSourceType.CoinUpgrade));
         }
     }
     else
     {
         if (data.IsPermanent)
         {
             //Generators.ApplyPermanent(data.GeneratorId, GeneratorBonusMult.CreateProfitMult(data.ProfitMutlitplier));
             Generators.AddProfitBoost(
                 generatorId: data.GeneratorId,
                 boost: BoostInfo.CreatePersist(BoostIds.GetPersistLocalCoinUpId(data.Id), data.ProfitMutlitplier, (int)BoostSourceType.CoinUpgrade));
         }
         else
         {
             //Generators.ApplyProfit(data.GeneratorId, ProfitMultInfo.Create(data.ProfitMutlitplier));
             Generators.AddProfitBoost(
                 generatorId: data.GeneratorId,
                 boost: BoostInfo.CreateTemp(BoostIds.GetTempLocalCoinUpId(data.Id), data.ProfitMutlitplier, (int)BoostSourceType.CoinUpgrade));
         }
     }
     //Services.GetService<IPlayerDataUpgrader>().Upgrade(new UpgradeItem(data.GeneratorId, data.ProfitMutlitplier, data.IsPermanent, data.UpgradeType));
 }
Exemplo n.º 12
0
        private IEnumerator CorrectOldSavesImpl(Update1Data data, int coins)
        {
            yield return(new WaitUntil(() => Services.PlayerService.IsLoaded));

            Services.PlayerService.SetCompanyCash(data.StoredBalance);
            Services.PlayerService.SetSecurities(data.Investors);
            Services.PlayerService.SetCoins(coins);


            yield return(new WaitUntil(() => Services.GenerationService.IsLoaded));

            Services.GenerationService.Generators.AddProfitBoost(
                boost: BoostInfo.CreatePersist(
                    id: "legacy_profit",
                    value: data.PermanentProfitMultiplier));
            Services.GenerationService.Generators.AddTimeBoost(
                boost: BoostInfo.CreatePersist(
                    id: "legacy_time",
                    value: data.PermanentSpeedMultiplier));

            //Services.GenerationService.Generators.SetPermanentProfit(data.PermanentProfitMultiplier);
            //Services.GenerationService.Generators.SetPermanentTime(data.PermanentSpeedMultiplier);
            if (data.PermanentProfitMultipliers != null)
            {
                foreach (var kvp in data.PermanentProfitMultipliers)
                {
                    //Services.GenerationService.Generators.SetPermanentProfit(kvp.Key, kvp.Value);
                    Services.GenerationService.Generators.AddProfitBoost(
                        generatorId: kvp.Key,
                        boost: BoostInfo.CreatePersist(
                            id: "legacy_profit",
                            value: kvp.Value));
                }
            }
            if (data.PermanentTimeMultipliers != null)
            {
                foreach (var kvp in data.PermanentTimeMultipliers)
                {
                    //Services.GenerationService.Generators.SetPermanentTime(kvp.Key, kvp.Value);
                    Services.GenerationService.Generators.AddTimeBoost(
                        generatorId: kvp.Key,
                        boost: BoostInfo.CreatePersist(
                            id: "legacy_time",
                            value: kvp.Value));
                }
            }

            if (data.EnhancedGenerators != null)
            {
                foreach (var generator in data.EnhancedGenerators)
                {
                    Services.GenerationService.Enhance(generator);
                }
            }

            if (data.HasMicromanager && !Services.PlayerService.IsHasMicromanager)
            {
                Services.PlayerService.SetHasMicromanager(true);
            }

            if (data.IsQuickBuyResearched && !Services.UpgradeService.IsQuickBuyResearched)
            {
                Services.UpgradeService.SetQuickBuyResearched(true);
            }

            Services.RewardsService.AddAvailableRewards(data.AvailableRewards);

            if (data.EarnedBadges != null)
            {
                foreach (var badgeId in data.EarnedBadges)
                {
                    var badge = Services.BadgeService.GetUniqueData(badgeId);
                    if (badge != null && !Services.BadgeService.IsBadgeEarned(badge))
                    {
                        Services.BadgeService.EarnBadge(badge);
                    }
                }
            }

            var globalProfit = data.GlobalProfitMultiplier < 1 ? 1 : data.GlobalProfitMultiplier;
            var globalTime   = data.GlobalTimeMultiplier < 1 ? 1 : data.GlobalTimeMultiplier;

            Services.GenerationService.Generators.AddProfitBoost(
                boost: BoostInfo.CreateTemp("global_legacy_profit", globalProfit));
            Services.GenerationService.Generators.AddTimeBoost(
                boost: BoostInfo.CreateTemp("global_legacy_time", globalTime));
            //var generatorBonusMult = new GeneratorBonusMult(globalProfit, globalTime);
            //Services.GenerationService.Generators.ApplyGlobal(generatorBonusMult);

            UnityEngine.Debug.Log("Update1 complete");
        }