public AutomationsService(PlayerData playerData, AutomationsData automationsData)
        {
            _playerData      = playerData;
            _automationsData = automationsData;

            _automationsData.Attach(this);
            _playerData.Attach(this);
            for (int i = 0; i < _automationsData.Automations.Count; i++)
            {
                _automationsData.Automations[i].Attach(this);
            }

            /*foreach (Transform automation in transform)
             * {
             *  AutomationLogic automationLogic = automation.GetComponent<AutomationLogic>();
             *  automationLogic.Init(_playerData, _automationsData, _automationsData.Automations[automationLogic.AutomationId]);
             * }*/

            //_upgradeLevelsAmount.Init(_automationsData);

            //_upgradeAvailableChecker.Init(_automationsData);

            TryUnlockNewAutomation(_playerData.Gold);
            CheckIfCanUpgradeSomething();
        }
Exemple #2
0
        public void Upgrade(Automation automationData, AutomationsData automationsData)
        {
            if (automationData.Level != 1)
            {
                automationsData.ClickPower -= automationData.CurrentDamage;
            }

            for (int i = 0; i < automationsData.LevelsToUpgrade; i++)
            {
                long newDamage = 0;
                if (automationData.Level == 20)
                {
                    automationsData.CriticalPowerIncreasePercentage += .1f;
                    automationsData.ClickPowerCriticalHitChance     += .1f;
                }
                automationData.Level += 1;
                newDamage            += Mathf.RoundToInt(automationData.StartingDamage * UpgradeFactor * automationData.Level);

                foreach (var item in automationData.UpgradeComponents)
                {
                    if (item.IsUpgradeComponentPurchased)
                    {
                        newDamage += Mathf.RoundToInt(newDamage * item.Percentage / 100);
                    }
                }
                automationData.CurrentDamage = newDamage;
            }
            automationsData.ClickPower += automationData.CurrentDamage;
            automationsData.ClickPower += Mathf.RoundToInt(automationsData.ClickPower * automationsData.ClickPowerPercentageIncrease);
            RecalculateCost(automationsData.LevelsToUpgrade, automationData);
        }
 public AutomationBuilder(PlayerData playerData, AutomationsData automationsData, AutomationPresentation automationPrefab)
 {
     _playerData      = playerData;
     _automationsData = automationsData;
     _automationPresentationPrefab = automationPrefab;
     Reset();
 }
Exemple #4
0
        public void Execute(UpgradeComponent upgradeComponent, float percentageToUpgrade)
        {
            AutomationsData automationsData = upgradeComponent.AutomationsData;

            automationsData.ClickPowerPercentageIncrease += percentageToUpgrade;
            automationsData.ClickPower +=
                Mathf.RoundToInt(automationsData.AutomationsPower * percentageToUpgrade * .01f);
        }
 public AutomationBusinessRules(IAutomationBusinessOutput automationBusinessOutput,
                                PlayerData playerData,
                                Automation automation,
                                AutomationsData automationsData)
 {
     _automation       = automation;
     _playerData       = playerData;
     _automationOutput = automationBusinessOutput;
     _automationsData  = automationsData;
 }
Exemple #6
0
        public void Init(AutomationsData automationsData)
        {
            foreach (Transform child in transform)
            {
                if (child.gameObject.GetComponent <AutomationLogic>() != null)
                {
                    _automationObjects.Add(child.gameObject);
                }
            }

            _automationsData = automationsData;
        }
Exemple #7
0
        public UpgradeComponent(PlayerData playerData, AutomationsData automationsData, Automation automationData,
                                UpgradeComponentData upgradeComponentData, IAutomationCommand automationCommand,
                                AutomationUpgradeComponentPresenter skillPresenter)
        {
            _upgradeComponentData = upgradeComponentData;
            _playerData           = playerData;
            AutomationsData       = automationsData;
            AutomationData        = automationData;
            _skillCommand         = automationCommand;
            _skillPresenter       = skillPresenter;

            Subscribe();
        }
Exemple #8
0
        public AutomationLogic(PlayerData playerData, AutomationsData automationsData,
                               AutomationPresentation automationPresentation, Automation automationData)
        {
            _playerData             = playerData;
            _automationsData        = automationsData;
            _automationPresentation = automationPresentation;
            _automationData         = automationData;

            _automationPresentation.UpgradeButtonPressed += TryUpgradeAutomation;
            _playerData.Attach(this);
            _automationData.Attach(this);
            OnGoldAmountUpdated(_playerData.Gold);
            _automationPresentation.gameObject.SetActive(_automationData.IsUnlocked);
        }
Exemple #9
0
        public void Upgrade(Automation automationData, AutomationsData automationsData)
        {
            long newDamage = 0;

            if (automationData.Level != 0)
            {
                automationsData.AutomationsPower -= automationData.CurrentDamage;
            }

            for (int i = 0; i < automationsData.LevelsToUpgrade; i++)
            {
                automationData.Level += 1;
                newDamage            += Mathf.RoundToInt(automationData.StartingDamage * UpgradeFactor * automationData.Level);
                if (automationData.Level >= 200 && automationData.Level % 25 == 0 && automationData.Level < 4000)
                {
                    newDamage *= 4;
                }
                if (automationData.Level >= 1000 && automationData.Level % 1000 == 0 && automationData.Level < 4000)
                {
                    newDamage *= 10;
                }

                foreach (var item in automationData.UpgradeComponents)
                {
                    if (item.IsUpgradeComponentPurchased)
                    {
                        newDamage += Mathf.RoundToInt(newDamage * item.Percentage / 100);
                    }
                }
                automationData.CurrentDamage = newDamage;
            }

            automationsData.AutomationsPower += automationData.CurrentDamage;
            automationsData.AutomationsPower += Mathf.RoundToInt(automationsData.AutomationsPower * automationsData.AutomationsPowerPercentageIncrease);
            RecalculateCost(automationsData.LevelsToUpgrade, automationData);
        }
Exemple #10
0
 public void Init(AutomationsData automationsData)
 {
     _automationsData = automationsData;
 }