Inheritance: MonoBehaviour
示例#1
0
        private void BuyUpgradeViewModel_Investors(UpgradeData vm)
        {
            var id = vm.GeneratorId;

            switch (vm.UpgradeType)
            {
            case UpgradeType.Profit:
                BuyProfitUpgradeVM(vm, false, id, true);
                break;

            case UpgradeType.Time:
                BuyTimeUpgradeVM(vm, false, id, true);
                break;

            case UpgradeType.FreeGenerators:
                BuyFreeGenerators(vm, id);
                break;

            case UpgradeType.InvestorEffectiveness:
                BuyInvestorEffectiveness(vm, id);
                break;

            default:
                break;
            }
            GlobalRefs.LevelManager.AddXP(XPSources.BuyUpgrade);
        }
示例#2
0
        public bool IsAllowBuy(UpgradeData data)
        {
            if (data.CurrencyType == CurrencyType.CompanyCash && IsBoughtCashUpgrade(data.Id))
            {
                return(false);
            }
            if (data.CurrencyType == CurrencyType.Securities && IsBoughtSecurityUpgrade(data.Id))
            {
                return(false);
            }
            Currency priceCurrency = Currency.Create(data.CurrencyType, data.Price(() => {
                return(BosUtils.GetUpgradePriceMult(Planets.CurrentPlanet.Data, data));
            }));

            if (data.GeneratorId >= 0)
            {
                if (Services.PlayerService.IsEnough(priceCurrency) &&
                    Services.TransportService.HasUnits(data.GeneratorId))
                {
                    return(true);
                }
            }
            else
            {
                return(Services.PlayerService.IsEnough(priceCurrency));
            }
            return(false);
        }
示例#3
0
    //rescales the effect when an upgrade is hovered over the tower with this effect.  If upgrade is null, that means the player changed their mind and moved away from a previous upgrade
    private void towerUpgrading(TowerScript hoveredTower, UpgradeData upgrade)
    {
        if (hoveredTower == effectSource)
        {
            if (upgrade == null)
            {
                scaleInnerEffect(); //an upgrade was cancelled.  revert to normal strength
                upgrading = false;  //and remove the 'upgrading' flag that changes name color
            }
            else
            {
                innerEffect.strength = effectBaseStrength.Value * (effectSource.attackPower * upgrade.attackMultiplier + upgrade.attackModifier); //scale as if the upgrade had already been applied

                //if the upgrade actually changes the attack, then set the 'upgrading' flag that changes name color
                if (upgrade.attackMultiplier != 1.0f || upgrade.attackModifier != 0.0f)
                {
                    upgrading = true;
                }
            }

            hoveredTower.UpdateTooltipText(); //make the tower update its tooltip
        }
        else
        {
            Debug.LogWarning("EffectScaleEffectWithTowerAttack should not be registered to hear about upgrades from that tower, as it is not the source of the effect");
        }
    }
示例#4
0
    private void Awake()
    {
        GameObject[] normalUpgrades = GameObject.FindGameObjectsWithTag("NormalUpgrades");

        upgradeDataJSON = SaveSystem.LoadUpgradeData();

        if (upgradeDataJSON != null)
        {
            //INTERPRET EXISTING JSON FILE
            upgradeData["N1"] = upgradeDataJSON.N1;
            upgradeData["N2"] = upgradeDataJSON.N2;

            //upgrade file integrity check

            //GOTTA ADD THE OTHER MODULES TOO ACHENCY AIDJCIADJOICWNDACNWDNCPAWDNCWPAL:UBDCPAWBPB DUAWBNCVPWUABDPIBACWPUDADUGWAUYDVOADVYWPVDA
            if ((ONE.profitModifier != 1 && upgradeDataJSON.N1 == false) || (ONE.profitModifier == 1 && upgradeDataJSON.N1 == true))
            {
                GenerateFile(normalUpgrades);
            }
        }
        else
        {
            GenerateFile(normalUpgrades);
        }
    }
示例#5
0
    /// <summary>Initializes the panel for a given upgrade.</summary>
    /// <param name="upgradeIndex">The upgrade (as an index).</param>
    public void Initialize(int upgradeIndex)
    {
        Assert.IsFalse(PlayerManager.instance.HasBoughtUpgrade(upgradeIndex));

        //get a reference to the upgrade's data
        UpgradeData data = GameData.instance.GetDataForUpgrade(upgradeIndex);

        //and upgrade the UI
        image.sprite        = data.image;
        nameText.text       = data.name;
        descripionText.text = data.description;
        costText.text       = NumberFormatter.ToString(number: data.cost, showDecimalPlaces: false);
        bool canAffordManager = PlayerManager.instance.cash >= data.cost;

        buyButton.SetInteractableAndColor(canAffordManager);
        if (canAffordManager)
        {
            //if the player can afford the upgrade, then add a callback
            buyButton.onClick.AddListener(() => {
                //firstly disable the button
                buyButton.interactable = false;
                //next process the purchase
                PlayerManager.instance.BoughtUpgrade(upgradeIndex);
                PlayerManager.instance.DecrementCashBy(data.cost);
                int businessIndex = (int)data.business; PlayerManager.instance.GetBusiness(businessIndex).UpdateUpgradeProfitMultiplier(data.profitMultiplier);
                //finally destroy the panel
                Destroy(gameObject);
            });
        }
    }
示例#6
0
    }                                                                            //name used to refer to this effect in XML

    public override void trigger()
    {
        //fetch the upgrade in question
        PlayerCardData card    = CardTypeManagerScript.instance.getCardByName(argument);
        UpgradeData    upgrade = card.upgradeData;
        EffectData     effects = card.effectData;

        if (upgrade == null)
        {
            Debug.LogWarning("Could not find upgrade: " + argument);
            return;
        }

        //apply it to all towers
        GameObject[] towers = GameObject.FindGameObjectsWithTag("Tower");
        foreach (GameObject t in towers)
        {
            if (parentData.propertyEffects.noUpgradeCost)
            {
                t.SendMessage("FreeUpgrade", upgrade);
            }
            else
            {
                t.SendMessage("Upgrade", upgrade);
            }

            if (effects != null)
            {
                t.SendMessage("AddEffects", effects);
            }
        }
    }
示例#7
0
    public ItemUpgradeData(WOApiWebPage in_form)
    {
        for (int i = 0; i < MAX_CATEGORIES; i++)
        {
            categories_[i] = new CategoryUpgrades();
        }

        // get all upgrade items
        SqlCommand sqcmd = new SqlCommand();

        sqcmd.CommandType = CommandType.StoredProcedure;
        sqcmd.CommandText = "WO_ItemUpgradeGetUpgrades";
        if (!in_form.CallWOApi(sqcmd))
        {
            throw new ApiExitException("UpgradeGetUpgrades failed");
        }

        SqlDataReader reader = in_form.reader;

        while (reader.Read())
        {
            UpgradeData ud = new UpgradeData(Convert.ToInt32(reader["ItemID"]));
            ud.Value    = Convert.ToDouble(reader["Value"]);
            ud.GPPrice  = Convert.ToInt32(reader["PriceP"]);
            ud.GPChance = Convert.ToDouble(reader["GPChance"]) / 100.0;
            ud.GDPrice  = Convert.ToInt32(reader["GPriceP"]);
            ud.GDChance = Convert.ToDouble(reader["GDChance"]) / 100.0;

            // decode and put it
            categories_[ud.uid.Category].types[ud.uid.Type].levels[ud.uid.Level] = ud;
            items_.Add(ud.uid.ItemID, ud);
        }
        reader = null;
    }
示例#8
0
    private void LoadUI()
    {
        TextMeshProUGUI[] texts = this.GetComponentsInChildren <TextMeshProUGUI>();
        for (int i = 0; i < texts.Length; i++)
        {     // For each TextMeshProUGUI Element
            for (int ii = 0; ii < uiNames.Count; ii++)
            { // check if it matches each of the uinames we have
                if (texts[i].name == uiNames[ii])
                {
                    UIDic.Add(uiNames[ii], texts[i]);
                }
            }
        }

        if (upgradeName == "Player")
        {
            upgrade = GameData.sessionData.playerUpgrade;
        }
        else
        {
            upgrade = GameData.sessionData.heroUpgrades[heroUnlockOrder - 1];
        }

        UIDic[uiNames[0]].text = upgradeName;                                   // Set name
        panelName = this.transform.parent.parent.parent.parent.name;            // Name of the panel this upgrade resides in (heroupgrades,playerupgrades ect)
        this.GetComponentInChildren <Button>().onClick.AddListener(BuyUpgrade); // Buy Upgrade Button
        syncStart = true;
    }
示例#9
0
    public void CreateBubble()
    {
        UpgradeData lostUpgrade = Globals.DropUpgrade();
        GameObject  bubble      = GameObject.Instantiate(Resources.Load("Prefabs/Upgrade/UpgradeBubble") as GameObject, transform.position, Quaternion.identity);

        bubble.GetComponent <UpgradeBubble>().DataObject = lostUpgrade;
    }
示例#10
0
 public void Initialize(UpgradeData data)
 {
     upgradeChoiceIndex       = data.choiceIndex;
     upgradeIndex             = data.index;
     nameTextMesh.text        = data.name;
     descriptionTextMesh.text = data.description;
 }
示例#11
0
 public void SetUpgradeData(UpgradeData upgradeData)
 {
     for (int i = 0; i < unitNum; i++)
     {
         upgrade[i] = upgradeData.upgrade[i];
     }
 }
示例#12
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));
             }));
         }
     }
 }
示例#13
0
    public void SetTotals()
    {
        if (File.Exists(totalUpgradeRevertFileName))
        {
            string jsonSave = File.ReadAllText(totalUpgradeRevertFileName);
            totalUpgradeData               = JsonUtility.FromJson <UpgradeData>(jsonSave);
            upgradeData.isRepelPurchased   = totalUpgradeData.isRepelPurchased;
            upgradeData.isRevealPurchased  = totalUpgradeData.isRevealPurchased;
            upgradeData.isConvertPurchased = totalUpgradeData.isConvertPurchased;
        }
        else if (File.Exists(totalUpgradeFileName))
        {
            string jsonSave = File.ReadAllText(totalUpgradeFileName);
            totalUpgradeData               = JsonUtility.FromJson <UpgradeData>(jsonSave);
            upgradeData.isRepelPurchased   = totalUpgradeData.isRepelPurchased;
            upgradeData.isRevealPurchased  = totalUpgradeData.isRevealPurchased;
            upgradeData.isConvertPurchased = totalUpgradeData.isConvertPurchased;
        }
        else
        {
            totalUpgradeData = new UpgradeData();
        }

        string json = JsonUtility.ToJson(totalUpgradeData);

        File.WriteAllText(totalUpgradeRevertFileName, json);
    }
示例#14
0
 private void OnUpgradeAdded(UpgradeData data)
 {
     if (data.CurrencyType == currencyType)
     {
         itemList.UpdateViews(DataSource);
     }
 }
示例#15
0
    // Intercambia los items: objetoArrastrado -> objetoSobreElQueSeArrastra, y viceversa.
    public void OnDrop(PointerEventData eventData)
    {
        if (DragAndDropEquipMenu.currentInstance.draggedIconReference == this || DragAndDropEquipMenu.currentInstance.draggedIconReference == null)
        {
            return;
        }

        // Para facilidad de lectura lo separamos en variables auxiliares.
        bool otherIsWpn = DragAndDropEquipMenu.currentInstance.draggedIconReference.IsWeaponSlot();
        bool thisIsWpn  = isWeaponSlot;
        int  otherIndex = DragAndDropEquipMenu.currentInstance.draggedIconReference.GetIndexReferenced();
        int  thisIndex  = indexReferenced;
        List <UpgradeData> otherList = DragAndDropEquipMenu.currentInstance.draggedIconReference.GetListReferenced();
        List <UpgradeData> thisList  = listReferenced;
        UpgradeData        otherVar  = DragAndDropEquipMenu.currentInstance.draggedIconReference.GetUpgradeReferenced();
        UpgradeData        thisVar   = listReferenced[indexReferenced];

        otherList[otherIndex] = thisVar;
        thisList[thisIndex]   = otherVar;

        UpdateIcon();
        DragAndDropEquipMenu.currentInstance.draggedIconReference.UpdateIcon();

        if (thisIsWpn || otherIsWpn)
        {
            DragAndDropEquipMenu.currentInstance.UpdateWeaponReaded();
        }
    }
示例#16
0
        private void BuyUpgradeViewModel_Cash(UpgradeData data, bool free)
        {
            IPlayerService playerService = GameServices.Instance.PlayerService;

            var id = data.GeneratorId;

            switch (data.UpgradeType)
            {
            case UpgradeType.Profit:
                BuyProfitUpgradeVM(data, free, id, false);
                break;

            case UpgradeType.Time:
                BuyTimeUpgradeVM(data, free, id, false);
                break;

            default:
                break;
            }

            if (!free)
            {
                playerService.CheckNonNegativeCompanyCash();
            }
            GlobalRefs.LevelManager.AddXP(XPSources.BuyUpgrade);
        }
示例#17
0
    void Start()
    {
        gameData = GameLogic.Instance.gameData;
        upgradeData = GameLogic.Instance.upgradeData;

        connectShopItemInfos();
    }
示例#18
0
    public WeaponData(WeaponPresets preset, float weaponScalingFactor = 1)
    {
        SetRandomWeaponType();
        switch (preset)
        {
        case WeaponPresets.randomScaledPlayer:
        {
            UpgradesInstalled = new List <UpgradeData>()
            {
                new UpgradeData(UpgradeData.ModType.trajectoryMod, UpgradeData.ModStatus.locked)
            };

            float tempWeaponWeight = 0;
            if (weaponScalingFactor > 3)
            {
                if (Random.Range(0, 3) == 1)
                {
                    UpgradesInstalled.Add(new UpgradeData(UpgradeData.ModType.splitMod, UpgradeData.ModStatus.normal));
                    tempWeaponWeight += 1.25f;
                }
            }
            while (tempWeaponWeight < weaponScalingFactor)
            {
                UpgradesInstalled.Add(new UpgradeData(UpgradeData.GetRandomEffectModifier(), UpgradeData.ModStatus.normal));
                tempWeaponWeight += Random.Range(0.35f, 0.65f);
            }
            weapon_bounces    = 0;
            weapon_speedScale = 2;
            break;
        }

        case WeaponPresets.randomScaledEnemy:
        {
            UpgradesInstalled = new List <UpgradeData>()
            {
                new UpgradeData(UpgradeData.ModType.trajectoryMod, UpgradeData.ModStatus.normal)
            };
            float tempWeaponWeight = 0;
            while (tempWeaponWeight < weaponScalingFactor)
            {
                UpgradesInstalled.Add(new UpgradeData(UpgradeData.GetRandomEffectModifier(), UpgradeData.ModStatus.normal));
                tempWeaponWeight += Random.Range(0.45f, 0.55f);
            }

            weapon_bounces    = 0;
            weapon_speedScale = 0.75f + weaponScalingFactor * 0.2f;

            break;
        }

        case WeaponPresets.droneMinigun:
        {
            weapon_bounces    = 0;
            weapon_speedScale = 3;
            break;
        }
        }
        UpdateWeaponModReading();
    }
示例#19
0
 public UnitTypeData GetRequiredBuilding(UpgradeData upgrade)
 {
     if (Research_To_RequiredBuildings.TryGetValue(upgrade.UpgradeId, out var id))
     {
         return(unitTypeRepository.Get(id));
     }
     return(null);
 }
示例#20
0
    void OnReceivedUpgradeData(byte[] msg)
    {
        UpgradeDataPacket upgradeDataPacket = new UpgradeDataPacket(msg);
        UpgradeData       upgradeData       = upgradeDataPacket.GetData();

        dataManager.SetUpgradeData(upgradeData);
        loadingManager.dataCheck[(int)ServerPacketId.UpgradeData - 4] = true;
    }
示例#21
0
 public UnitTypeData GetProducer(UpgradeData upgrade)
 {
     if (Research_To_Researcher.TryGetValue(upgrade.UpgradeId, out var id))
     {
         return(unitTypeRepository.Get(id));
     }
     throw new System.NotImplementedException();
 }
示例#22
0
 public void UpdateRates(UpgradeData data)
 {
     _followersPerDay          += data.FollowerEffect;
     _followerRateLabel.Text    = $"({_followersPerDay.ToString("+0;-#")}/day)";
     _dailyCultFeesPerFollower += data.FeeEffect;
     _otherMoneyPerDay         += data.MoneyEffect;
     _moneyPerDayLabel.Text     = $"{(Math.Round(_dailyCultFeesPerFollower*_followerCount+_otherMoneyPerDay, 2)).ToString("+0.00;-#.00")}/day";
 }
示例#23
0
    /// <summary>
    ///
    /// Creates an upgrade card on a canvas
    ///
    /// </summary>
    public GameObject CreateUpgrade(UpgradeData upgrade, Transform parent, DeckData currentDeck = null, float scaling = defaultUpgradeScaling)
    {
        var createdUpgrade = Instantiate(upgradeObject, parent);

        createdUpgrade.transform.localScale = new Vector3(scaling, scaling, 1.0f);
        createdUpgrade.GetComponent <UpgradeDisplay>().InitDisplay(upgrade, currentDeck);
        return(createdUpgrade);
    }
示例#24
0
 public UpgradeData GetRequiredResearch(UpgradeData upgrade)
 {
     if (Research_To_RequiredResearch.TryGetValue(upgrade.UpgradeId, out var id))
     {
         return(upgradeRepository.Get(id));
     }
     return(null);
 }
示例#25
0
        private void BuyInvestorEffectiveness(UpgradeData vm, int id)
        {
            var perc = vm.Value / 100.0f;
            IInvestorService investorService = GameServices.Instance.InvestorService;

            investorService.AddEffectiveness((float)perc);
            GlobalRefs.LevelManager.AddXP(XPSources.BuyUpgrade);
        }
示例#26
0
 public void Init()
 {
     upgradeData = shopWindow.upgradeData[upgrade];
     buyButton.buttonSignal.AddListener(OnBuyPressed);
     backButton.buttonSignal.AddListener(OnBackPressed);
     headerText.text  = "SHOP > " + upgradeData.name;
     description.text = upgradeData.description;
     priceText.text   = "<c=money>$</c>" + DisplayUtil.InsertCommas(upgradeData.price);
 }
示例#27
0
 public void AddSecurityUpgrade(UpgradeData upgradeData)
 {
     if (!boughtSecuritiesUpgrades.Contains(upgradeData.Id))
     {
         boughtSecuritiesUpgrades.Add(upgradeData.Id);
         AddUpgradedGenerator(upgradeData);
         GameEvents.OnUpgradeAdded(upgradeData);
     }
 }
示例#28
0
 private void OnUpgradeAdded(UpgradeData upgradeData)
 {
     if (IsLoaded)
     {
         IsAnyUpgradePurchased = true;
         SendEventToNonCompleted(new TutorialEventData(TutorialEventName.UpgradePurchased, upgradeData));
         SkipState(TutorialStateName.BuyUpgrade);
     }
 }
示例#29
0
    public Sprite GetSpriteIconForUpgrade(UpgradeData upg)
    {
        Sprite spr;

        switch (upg.m_currentType)
        {
        case UpgradeData.ModType.trajectoryMod:
        {
            spr = MenuIcons[6];
            break;
        }

        case UpgradeData.ModType.splitMod:
        {
            spr = MenuIcons[5];
            break;
        }

        case UpgradeData.ModType.effectBouncing:
        {
            spr = MenuIcons[4];
            break;
        }

        case UpgradeData.ModType.effectPhoton:
        {
            spr = MenuIcons[0];
            break;
        }

        case UpgradeData.ModType.effectNuclear:
        {
            spr = MenuIcons[1];
            break;
        }

        case UpgradeData.ModType.effectExplosive:
        {
            spr = MenuIcons[2];
            break;
        }

        case UpgradeData.ModType.effectEnergySteal:
        {
            spr = MenuIcons[3];
            break;
        }

        default:
        {
            spr = blankSprite;
            break;
        }
        }
        return(spr);
    }
示例#30
0
    /// <summary>
    ///
    /// Initialise the object. Refreshes the text properties of the upgrade
    ///
    /// </summary>
    public void InitUpgradeObject(UpgradeData _upgradeData, int?_deckId = null)
    {
        upgradeId   = _upgradeData.Id.Value;
        upgradeData = _upgradeData;
        //Needs to pass in the deck list UI to this object in order to know which deck is being edited
        deckId = _deckId;

        nameText.text         = upgradeData.Name;
        honourPointsText.text = $"Honour: {upgradeData.HonourPoints}";
    }
示例#31
0
        /// <summary>
        ///     Checks if there is enough minerals and gas to research an upgrade.
        /// </summary>
        /// <param name="upgradeId">the unit type of the desired upgrade</param>
        /// <returns>true if resources are available, false otherwise</returns>
        public static bool CanAffordUpgrade(int upgradeId)
        {
            UpgradeData unitData = VBot.Bot.Data.Upgrades[upgradeId];

            if (VBot.Bot.Minerals() >= unitData.MineralCost && VBot.Bot.Gas() >= unitData.VespeneCost)
            {
                return(true);
            }
            return(false);
        }
示例#32
0
    public override void OnSetPage()
    {
        CoinsCounter.Instance.AnimateIn();

        selected = null;

        foreach(UpgradeData upgrade in upgrades)
        {
            upgrade.UnSelect();
            upgrade.UpdateVisual();
        }

        Message.enabled = true;

        ClickToBuyText.enabled = false;
        NotEnoughCoinsText.enabled = false;
        OwnedText.enabled = false;
        BuyRainbowText.enabled = false;
    }
示例#33
0
    void Start()
    {
        gameData = GameLogic.Instance.gameData;
        upgradeData = GameLogic.Instance.upgradeData;
          player = GameLogic.Instance.player;

        setInGameGUIDelegates();
        setPauseMenuDelegates();
        setEndGameMenuDelegates();
        setShopMenuDelegates();
        setMainMenuDelegates();
    }
示例#34
0
 void OnEnable()
 {
     data = target as UpgradeData;
     data.ensureDataConsistency();
 }
示例#35
0
    public void Select(UpgradeData _upgrade)
    {
        if(selected)
        {
            selected.UnSelect();
        }
        selected = _upgrade;
        selected.Select();

        Message.enabled = false;

        UpdateMessage();
    }