예제 #1
0
        public void HandleEarnedShardReward(string equipmentId, int count)
        {
            CurrentPlayer            currentPlayer = Service.CurrentPlayer;
            Dictionary <string, int> shards        = currentPlayer.Shards;
            EquipmentVO equipmentDataByID          = ArmoryUtils.GetEquipmentDataByID(equipmentId, 1);

            if (equipmentDataByID == null)
            {
                return;
            }
            int num = count;

            if (shards.ContainsKey(equipmentId))
            {
                num += shards[equipmentId];
            }
            currentPlayer.ModifyShardAmount(equipmentId, num);
            EquipmentVO nextEquipmentVOUpgrade = this.GetNextEquipmentVOUpgrade(equipmentId);

            if (nextEquipmentVOUpgrade != null && shards[equipmentId] - count < nextEquipmentVOUpgrade.UpgradeShards && nextEquipmentVOUpgrade.UpgradeShards < shards[equipmentId])
            {
                this.AllowShowEquipmentTabBadge = true;
                Service.EventManager.SendEvent(EventId.EquipmentNowUpgradable, equipmentId);
            }
            Service.EventManager.SendEvent(EventId.ShardsEarned, null);
            if (!ArmoryUtils.IsEquipmentOwned(currentPlayer, equipmentDataByID))
            {
                this.TryToUnlockPlayerEquipment(equipmentDataByID);
            }
        }
예제 #2
0
        public bool IsEquipmentUpgradeable(EquipmentVO equipmentVO, EquipmentVO nextEquipmentVO)
        {
            CurrentPlayer currentPlayer = Service.CurrentPlayer;
            bool          flag          = ArmoryUtils.IsEquipmentOwned(currentPlayer, equipmentVO);
            bool          flag2         = this.IsEquipmentUnlockableOrUpgradeable(nextEquipmentVO);

            return(flag && flag2);
        }
예제 #3
0
        private void SetUpArmoryScreenInfo(CurrentPlayer player)
        {
            this.SetTitleText(base.GetElement <UXLabel>("DialogBldgUpgradeTitle"), "BUILDING_INFO", this.selectedEquipment.EquipmentName, this.selectedEquipment.Lvl);
            UXLabel element = base.GetElement <UXLabel>("LabelRequirement");

            element.Visible = true;
            UXLabel  element2 = base.GetElement <UXLabel>("LabelNormalIntro");
            UXButton element3 = base.GetElement <UXButton>("BtnNormal");

            element3.Visible   = true;
            element3.OnClicked = new UXButtonClickedDelegate(this.OnMainButtonClicked);
            if (!ArmoryUtils.IsEquipmentOwned(player, this.selectedEquipment))
            {
                element3.Enabled = false;
                element2.Text    = this.lang.Get("ARMORY_ACTIVATE", new object[0]);
                element.Text     = this.lang.Get("EQUIPMENT_LOCKED", new object[]
                {
                    this.CalculateFragmentsNeededForUnlock(this.selectedEquipment.UpgradeShards, this.selectedEquipment.EquipmentID)
                });
                return;
            }
            if (ArmoryUtils.IsEquipmentActive(player, this.selectedEquipment))
            {
                element2.Text    = this.lang.Get("ARMORY_DEACTIVATE", new object[0]);
                element3.Enabled = true;
            }
            else
            {
                bool flag  = ArmoryUtils.HasEnoughCapacityToActivateEquipment(player.ActiveArmory, this.selectedEquipment);
                bool flag2 = ArmoryUtils.IsEquipmentValidForPlanet(this.selectedEquipment, player.PlanetId);
                element3.Enabled = (flag && flag2);
                element2.Text    = this.lang.Get("ARMORY_ACTIVATE", new object[0]);
                if (!flag2)
                {
                    string planetDisplayName = LangUtils.GetPlanetDisplayName(player.PlanetId);
                    element.Text = this.lang.Get("ARMORY_INVALID_EQUIPMENT_PLANET", new object[]
                    {
                        planetDisplayName
                    });
                    return;
                }
                if (!flag)
                {
                    element.Text = this.lang.Get("ARMORY_NOT_ENOUGH_CAPACITY", new object[0]);
                    return;
                }
            }
            element.Text = string.Empty;
        }
예제 #4
0
        private UXElement CreateCommonEquipmentCard(UXGrid grid, EquipmentVO equipment, string labelName, string labelLevel, string icon, string cardName, bool shouldAnimate, bool closeup)
        {
            CurrentPlayer currentPlayer = Service.CurrentPlayer;
            string        uid           = equipment.Uid;
            UXElement     uXElement     = grid.CloneTemplateItem(uid);

            uXElement.Tag = new SortableEquipment(equipment);
            UXLabel subElement = grid.GetSubElement <UXLabel>(uid, labelName);

            subElement.Text = LangUtils.GetEquipmentDisplayName(equipment);
            UXLabel subElement2 = grid.GetSubElement <UXLabel>(uid, labelLevel);

            if (ArmoryUtils.IsEquipmentOwned(currentPlayer, equipment))
            {
                subElement2.Text = LangUtils.GetLevelText(equipment.Lvl);
            }
            else
            {
                subElement2.Visible = false;
            }
            UXSprite        subElement3     = grid.GetSubElement <UXSprite>(uid, icon);
            ProjectorConfig projectorConfig = ProjectorUtils.GenerateEquipmentConfig(equipment, subElement3, closeup);

            if (shouldAnimate)
            {
                projectorConfig.AnimPreference = AnimationPreference.AnimationPreferred;
            }
            ProjectorUtils.GenerateProjector(projectorConfig);
            UXElement uXElement2 = UXUtils.SetCardQuality(this, grid, uid, (int)equipment.Quality, cardName);

            if (uXElement2 != null)
            {
                uXElement2.SkipBoundsCalculations(true);
            }
            return(uXElement);
        }
예제 #5
0
        private void SetUpResearchLabScreenInfo(StaticDataController sdc, CurrentPlayer player)
        {
            UXLabel  element  = base.GetElement <UXLabel>("DialogBldgUpgradeTitle");
            UXButton element2 = base.GetElement <UXButton>("BtnNormal");

            element2.OnClicked = new UXButtonClickedDelegate(this.OnMainButtonClicked);
            UXButton element3 = base.GetElement <UXButton>("BtnFinish");

            element3.OnClicked = new UXButtonClickedDelegate(this.OnFinishClicked);
            UXLabel element4 = base.GetElement <UXLabel>("LabelRequirement");

            element4.Visible = true;
            element4.Text    = string.Empty;
            if (this.nextEquipmentVoUpgrade != null)
            {
                ArmoryController armoryController = Service.ArmoryController;
                this.SetTitleText(element, "BUILDING_UPGRADE", this.selectedEquipment.EquipmentName, this.nextEquipmentVoUpgrade.Lvl);
                element2.Visible = true;
                base.GetElement <UXLabel>("LabelNormalIntro").Text = this.lang.Get("LABEL_REWARD_UPGRADE", new object[0]);
                if (this.activeContract != null)
                {
                    if (this.activeContract.ProductUid == this.nextEquipmentVoUpgrade.Uid)
                    {
                        element3.Visible = true;
                        element2.Visible = false;
                        element4.Visible = false;
                        base.GetElement <UXLabel>("LabelUpgradeTimeStatic").Text    = this.lang.Get("s_TimeRemaining", new object[0]);
                        base.GetElement <UXElement>("ContainerUpgradeTime").Visible = true;
                        this.UpdateContractTimers();
                    }
                    else
                    {
                        element2.VisuallyDisableButton();
                    }
                }
                else if (armoryController.IsEquipmentUpgradeable(this.selectedEquipment, this.nextEquipmentVoUpgrade))
                {
                    element2.VisuallyEnableButton();
                    element2.Enabled = true;
                    this.SetUpUpgradeElements(true);
                }
                else
                {
                    this.SetTitleText(element, "BUILDING_INFO", this.selectedEquipment.EquipmentName, this.selectedEquipment.Lvl);
                    element2.Enabled = false;
                    BuildingTypeVO buildingTypeVO = (this.nextEquipmentVoUpgrade.BuildingRequirement != null) ? sdc.Get <BuildingTypeVO>(this.nextEquipmentVoUpgrade.BuildingRequirement) : null;
                    if (buildingTypeVO != null && !ArmoryUtils.IsBuildingRequirementMet(this.nextEquipmentVoUpgrade))
                    {
                        element4.Text = this.lang.Get("EQUIPMENT_REQUIRES_BUILDING", new object[]
                        {
                            LangUtils.GetBuildingDisplayName(buildingTypeVO),
                            buildingTypeVO.Lvl
                        });
                    }
                    else if (!ArmoryUtils.IsEquipmentOwned(player, this.selectedEquipment))
                    {
                        element4.Text = this.lang.Get("EQUIPMENT_LOCKED", new object[]
                        {
                            this.CalculateFragmentsNeededForUnlock(this.selectedEquipment.UpgradeShards, this.selectedEquipment.EquipmentID)
                        });
                    }
                    else if (!ArmoryUtils.CanAffordEquipment(player, this.nextEquipmentVoUpgrade))
                    {
                        element4.Text = this.lang.Get("EQUIPMENT_UPGRADE_LOCKED", new object[]
                        {
                            this.CalculateFragmentsNeededForUnlock(this.nextEquipmentVoUpgrade.UpgradeShards, this.selectedEquipment.EquipmentID)
                        });
                    }
                }
            }
            else
            {
                element2.Visible = false;
                EquipmentVO maxLevel = Service.EquipmentUpgradeCatalog.GetMaxLevel(this.selectedEquipment);
                if (maxLevel == this.selectedEquipment)
                {
                    this.SetTitleText(element, "BUILDING_INFO", this.selectedEquipment.EquipmentName, this.selectedEquipment.Lvl);
                    element4.Text = this.lang.Get("MAX_LEVEL", new object[0]);
                }
            }
        }
예제 #6
0
        private void DisplayBarsForEquipmentBuffs(StaticDataController sdc)
        {
            int num  = 1;
            int num2 = this.selectedEquipment.EffectUids.Length;
            int i    = 0;
            int num3 = num2;

            while (i < num3)
            {
                EquipmentEffectVO equipmentEffectVO  = sdc.Get <EquipmentEffectVO>(this.selectedEquipment.EffectUids[i]);
                EquipmentEffectVO equipmentEffectVO2 = null;
                if (this.nextEquipmentVoUpgrade != null && this.nextEquipmentVoUpgrade.EffectUids.Length > 0 && this.nextEquipmentVoUpgrade.EffectUids.Length > i)
                {
                    equipmentEffectVO2 = sdc.Get <EquipmentEffectVO>(this.nextEquipmentVoUpgrade.EffectUids[i]);
                }
                ArmorType armorType = ArmorType.Invalid;
                if (equipmentEffectVO.AffectedBuildingIds != null && equipmentEffectVO.AffectedBuildingIds.Length > 0)
                {
                    BuildingTypeVO minLevel = Service.BuildingUpgradeCatalog.GetMinLevel(equipmentEffectVO.AffectedBuildingIds[0]);
                    if (minLevel != null)
                    {
                        armorType = minLevel.ArmorType;
                    }
                }
                else if (equipmentEffectVO.AffectedTroopIds != null && equipmentEffectVO.AffectedTroopIds.Length > 0)
                {
                    TroopTypeVO minLevel2 = Service.TroopUpgradeCatalog.GetMinLevel(equipmentEffectVO.AffectedTroopIds[0]);
                    if (minLevel2 != null)
                    {
                        armorType = minLevel2.ArmorType;
                    }
                }
                int j    = 0;
                int num4 = equipmentEffectVO.BuffUids.Length;
                while (j < num4)
                {
                    BuffTypeVO buffTypeVO  = sdc.Get <BuffTypeVO>(equipmentEffectVO.BuffUids[j]);
                    BuffTypeVO buffTypeVO2 = null;
                    if (equipmentEffectVO2 != null && equipmentEffectVO2.BuffUids.Length > 0 && equipmentEffectVO2.BuffUids.Length > j)
                    {
                        buffTypeVO2 = sdc.Get <BuffTypeVO>(equipmentEffectVO2.BuffUids[j]);
                    }
                    int num5      = buffTypeVO.Values[(int)armorType];
                    int nextValue = num5;
                    if (ArmoryUtils.IsEquipmentOwned(Service.CurrentPlayer, this.selectedEquipment))
                    {
                        nextValue = ((buffTypeVO2 != null) ? buffTypeVO2.Values[(int)armorType] : num5);
                    }
                    string buffString = this.GetBuffString(buffTypeVO.Modify);
                    this.SetupBar(num, buffString, num5, nextValue, 1, false);
                    num++;
                    if (num >= 3)
                    {
                        break;
                    }
                    j++;
                }
                if (num >= 3)
                {
                    break;
                }
                i++;
            }
            for (int k = num; k <= 3; k++)
            {
                base.GetElement <UXElement>(string.Format("pBar{0}", num)).Visible = false;
                num++;
            }
        }
예제 #7
0
        private void SetDimmerBasedOnRequirements(CurrentPlayer player, EquipmentVO equipment)
        {
            UXSprite  subElement  = this.inactiveGrid.GetSubElement <UXSprite>(equipment.Uid, "SpriteDim");
            UXSprite  subElement2 = this.inactiveGrid.GetSubElement <UXSprite>(equipment.Uid, "SpriteDimFull");
            UXLabel   subElement3 = this.inactiveGrid.GetSubElement <UXLabel>(equipment.Uid, "LabelEquipmentRequirement");
            UXSprite  subElement4 = this.inactiveGrid.GetSubElement <UXSprite>(equipment.Uid, "SpriteLockIcon");
            UXElement subElement5 = this.inactiveGrid.GetSubElement <UXElement>(equipment.Uid, "PlanetLocked");

            subElement2.Visible = false;
            subElement4.Visible = false;
            subElement5.Visible = false;
            bool flag = ArmoryUtils.IsEquipmentOwned(player, equipment);

            if (ArmoryUtils.IsBuildingRequirementMet(equipment) && flag && ArmoryUtils.IsEquipmentValidForPlanet(equipment, player.PlanetId))
            {
                subElement3.Text = string.Empty;
                if (ArmoryUtils.HasEnoughCapacityToActivateEquipment(player.ActiveArmory, equipment))
                {
                    this.UpdateMinimumInactiveSize(equipment.Size);
                    subElement.Visible = false;
                    return;
                }
                subElement3.Text   = this.lang.Get("ARMORY_INACTIVE_CAPACITY_REACHED", new object[0]);
                subElement.Visible = true;
                return;
            }
            else
            {
                if (!ArmoryUtils.IsBuildingRequirementMet(equipment))
                {
                    StaticDataController staticDataController = Service.StaticDataController;
                    BuildingTypeVO       buildingTypeVO       = staticDataController.Get <BuildingTypeVO>(equipment.BuildingRequirement);
                    subElement3.Text = this.lang.Get("BUILDING_REQUIREMENT", new object[]
                    {
                        buildingTypeVO.Lvl,
                        LangUtils.GetBuildingDisplayName(buildingTypeVO)
                    });
                    subElement2.Visible = true;
                    subElement.Visible  = false;
                    return;
                }
                UXButton subElement6 = this.inactiveGrid.GetSubElement <UXButton>(equipment.Uid, "BtnEquipmentItemCard");
                subElement6.Enabled = false;
                if (!ArmoryUtils.IsEquipmentOnValidPlanet(player, equipment) && flag)
                {
                    subElement.Visible  = false;
                    subElement2.Visible = true;
                    string planetDisplayName = LangUtils.GetPlanetDisplayName(player.PlanetId);
                    subElement3.Text = this.lang.Get("BASE_ON_INCORRECT_PLANET", new object[]
                    {
                        planetDisplayName
                    });
                    subElement5.Visible = true;
                    return;
                }
                subElement.Visible  = false;
                subElement2.Visible = true;
                subElement4.Visible = true;
                if (player.Shards.ContainsKey(equipment.EquipmentID))
                {
                    subElement3.Text = this.lang.Get("EQUIPMENT_LOCKED", new object[]
                    {
                        equipment.UpgradeShards - player.Shards[equipment.EquipmentID]
                    });
                }
                else
                {
                    subElement3.Text = this.lang.Get("EQUIPMENT_LOCKED", new object[]
                    {
                        equipment.UpgradeShards
                    });
                }
                return;
            }
        }
예제 #8
0
        private UXElement CreateInactiveCard(UXGrid grid, EquipmentVO equipment, CurrentPlayer currentPlayer)
        {
            UXElement uXElement = this.CreateCommonEquipmentCard(grid, equipment, "LabelEquipmentName", "LabelEquipmentLevel", "SpriteEquipmentItemImage", "EquipmentItemCardQ{0}", false, true);

            (uXElement.Tag as SortableEquipment).Player = currentPlayer;
            UXButton subElement = this.inactiveGrid.GetSubElement <UXButton>(equipment.Uid, "BtnEquipmentInfo");

            subElement.OnClicked = new UXButtonClickedDelegate(this.OnInfoButtonClicked);
            subElement.Tag       = equipment;
            UXButton subElement2 = this.inactiveGrid.GetSubElement <UXButton>(equipment.Uid, "BtnEquipmentItemCard");

            subElement2.OnClicked = new UXButtonClickedDelegate(this.OnCardButtonClicked);
            subElement2.Tag       = uXElement;
            EquipmentUpgradeCatalog equipmentUpgradeCatalog = Service.EquipmentUpgradeCatalog;
            UXSlider  subElement3 = this.inactiveGrid.GetSubElement <UXSlider>(equipment.Uid, "pBarEquipmentItemFrag");
            UXSprite  subElement4 = this.inactiveGrid.GetSubElement <UXSprite>(equipment.Uid, "SpriteEquipmentItempBarFrag");
            UXLabel   subElement5 = grid.GetSubElement <UXLabel>(equipment.Uid, "LabelFragProgress");
            UXElement subElement6 = this.inactiveGrid.GetSubElement <UXElement>(equipment.Uid, "IconUpgrade");
            UXSprite  subElement7 = grid.GetSubElement <UXSprite>(equipment.Uid, "SpriteEquipmentImageBkgStroke");
            UXSprite  subElement8 = grid.GetSubElement <UXSprite>(equipment.Uid, "SpriteEquipmentItemBarOutline");
            UXSprite  subElement9 = grid.GetSubElement <UXSprite>(equipment.Uid, "SpriteEquipmentImageBkgGlow");

            subElement7.Color = ArmoryScreen.qualityColor[equipment.Quality];
            subElement8.Color = ArmoryScreen.qualityColor[equipment.Quality];
            subElement9.Color = ArmoryScreen.qualityColor[equipment.Quality];
            subElement9.Alpha = 0.4f;
            float    sliderProgressValue = this.GetSliderProgressValue(equipment, currentPlayer.GetShards(equipment.EquipmentID));
            UXSprite subElement10        = this.inactiveGrid.GetSubElement <UXSprite>(equipment.Uid, "SpriteIconFragment");

            UXUtils.SetupFragmentIconSprite(subElement10, (int)equipment.Quality);
            UXUtils.SetShardProgressBarValue(subElement3, subElement4, sliderProgressValue);
            subElement6.Visible = false;
            if (ArmoryUtils.IsAtMaxLevel(equipmentUpgradeCatalog, equipment))
            {
                subElement5.Text = this.lang.Get("MAX_LEVEL", new object[0]);
            }
            else
            {
                int shards = currentPlayer.GetShards(equipment.EquipmentID);
                int shardsRequiredForNextUpgrade = ArmoryUtils.GetShardsRequiredForNextUpgrade(currentPlayer, equipmentUpgradeCatalog, equipment);
                if (shards >= shardsRequiredForNextUpgrade)
                {
                    subElement5.Text = this.lang.Get("ARMORY_UPGRADE_NOW", new object[0]);
                }
                else
                {
                    subElement5.Text = this.lang.Get("OBJECTIVE_PROGRESS", new object[]
                    {
                        shards,
                        shardsRequiredForNextUpgrade
                    });
                }
            }
            if (ArmoryUtils.IsEquipmentOwned(currentPlayer, equipment))
            {
                EquipmentVO nextLevel = equipmentUpgradeCatalog.GetNextLevel(equipment);
                if (nextLevel != null)
                {
                    if (Service.ISupportController.FindFirstContractWithProductUid(nextLevel.Uid) != null)
                    {
                        subElement5.Visible = false;
                        subElement3.Visible = false;
                    }
                    else if (currentPlayer.GetShards(equipment.EquipmentID) >= nextLevel.UpgradeShards)
                    {
                        subElement6.Visible = true;
                    }
                }
            }
            this.SetDimmerBasedOnRequirements(currentPlayer, equipment);
            return(uXElement);
        }