コード例 #1
0
 private CustomizerGestureModel processGesture(ITouch touch, CustomizerGestureModel gestureModel)
 {
     gestureModel.TouchDownStartPos = touch.position;
     if (isOverUI(touch))
     {
         if (EventSystem.current.currentSelectedGameObject != null)
         {
             EquipmentIcon component = EventSystem.current.currentSelectedGameObject.GetComponent <EquipmentIcon>();
             if (component != null)
             {
                 gestureModel.TouchDownStartArea = AreaTouchedEnum.INVENTORY_BUTTON;
                 gestureModel.DragIconTexture    = (component.GetIcon() as Texture2D);
                 gestureModel.ItemId             = component.EquipmentId;
                 gestureModel.IsEquippable       = component.IsEquippable;
             }
         }
     }
     else if (isTouchBlockedByUIControls(touch))
     {
         gestureModel.TouchDownStartArea = AreaTouchedEnum.CLICK_BLOCKING_UI;
     }
     else
     {
         gestureModel.TouchDownStartArea = AreaTouchedEnum.PENGUIN_PREVIEW_ROTATION_AREA;
     }
     return(gestureModel);
 }
コード例 #2
0
 private void setActionState()
 {
     if (actionSpriteSelector == null)
     {
         actionSpriteSelector = ActionButton.GetComponentInChildren <SpriteSelector>();
     }
     if (iconItem == null)
     {
         iconItem = GetComponentInChildren <EquipmentIcon>();
     }
     if (Action == ActionType.Hide)
     {
         iconItem.ItemIcon.color = HIDDEN_ITEM_COLOR;
         actionSpriteSelector.SelectSprite(2);
     }
     else if (Action == ActionType.Show)
     {
         actionSpriteSelector.SelectSprite(1);
         iconItem.ItemIcon.color = SHOWN_ITEM_COLOR;
     }
     else
     {
         actionSpriteSelector.SelectSprite(0);
         iconItem.ItemIcon.color = SHOWN_ITEM_COLOR;
     }
 }
コード例 #3
0
    private void setItemView(EquipmentIcon iconItem, InventoryIconModel <DCustomEquipment> dataModel)
    {
        bool isPlayerMember = Service.Get <CPDataEntityCollection>().IsLocalPlayerMember() || !model.InventoryData.IsEquipmentMemberOnly(dataModel.Data);

        iconItem.SetupView(dataModel, isPlayerMember);
        itemImageBuilder.RequestImage(dataModel.Data, iconItem.SetIcon);
    }
コード例 #4
0
 public void Update()
 {
     foreach (var hud in HUD.readOnlyInstanceList)
     {
         if (hud == null && hud.itemInventoryDisplay == null)
         {
             continue;
         }
         List <ItemIcon> itemIcons = hud.itemInventoryDisplay.GetFieldValue <List <ItemIcon> >("itemIcons");
         foreach (var icon in itemIcons)
         {
             if (icon.GetComponent <ItemDropper>() == null)
             {
                 ItemDropper dropper = icon.gameObject.AddComponent <ItemDropper>();
                 dropper.master = master;
             }
         }
         if (hud.equipmentIcons.Length > 0)
         {
             EquipmentIcon equipmentIcon = hud.equipmentIcons[0];
             if (equipmentIcon.targetInventory == inventory && equipmentIcon.GetComponent <EquipmentDropper>() == null)
             {
                 EquipmentDropper dropper = equipmentIcon.gameObject.AddComponent <EquipmentDropper>();
                 dropper.master = master;
             }
         }
     }
 }
コード例 #5
0
        private void UpdateScoreboard(HUD hud, FieldInfo fieldInfo)
        {
            ScoreboardController scoreboardController = hud.scoreboardPanel.GetComponent <ScoreboardController>();

            if (scoreboardController != null)
            {
                UIElementAllocator <ScoreboardStrip> elements = (UIElementAllocator <ScoreboardStrip>) typeof(ScoreboardController)
                                                                .GetField("stripAllocator", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(scoreboardController);

                if (elements != null)
                {
                    List <ScoreboardStrip> scoreboardStrips = (List <ScoreboardStrip>) typeof(UIElementAllocator <ScoreboardStrip>)
                                                              .GetField("elementControllerComponentsList", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(elements);

                    foreach (ScoreboardStrip scoreboardStrip in scoreboardStrips)
                    {
                        if (scoreboardStrip == null)
                        {
                            continue;
                        }

                        if (fieldInfo != null)
                        {
                            List <ItemIcon> itemIcons = (List <ItemIcon>)fieldInfo.GetValue(scoreboardStrip.itemInventoryDisplay);

                            foreach (ItemIcon itemIcon in itemIcons)
                            {
                                if (itemIcon != null && itemIcon.GetComponent <DropItemController>() == null)
                                {
                                    DropItemController dropItemController = itemIcon.gameObject.AddComponent <DropItemController>();
                                    Inventory          inventory          = (Inventory)typeof(ItemInventoryDisplay).GetField("inventory", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(scoreboardStrip.itemInventoryDisplay);
                                    dropItemController.Inventory            = inventory;
                                    dropItemController.ItemIcon             = itemIcon;
                                    dropItemController.SendDropItemToServer = SendDropItemRequest;
                                }
                            }
                        }

                        EquipmentIcon equipmentIcon = scoreboardStrip.equipmentIcon;

                        if (equipmentIcon != null && equipmentIcon.GetComponent <DropItemController>() == null)
                        {
                            if (equipmentIcon.targetInventory == null)
                            {
                                continue;
                            }
                            EquipmentIndex equipmentIndex = (equipmentIcon.displayAlternateEquipment) ? equipmentIcon.targetInventory.alternateEquipmentIndex : equipmentIcon.targetInventory.currentEquipmentIndex;

                            if (equipmentIndex != EquipmentIndex.None)
                            {
                                DropItemController dropItemController = equipmentIcon.gameObject.AddComponent <DropItemController>();
                                dropItemController.Inventory                 = equipmentIcon.targetInventory;
                                dropItemController.EquipmentIcon             = equipmentIcon;
                                dropItemController.SendDropEquipmentToServer = SendDropEquipmentRequest;
                            }
                        }
                    }
                }
            }
        }
コード例 #6
0
        public void UpdatePickupTooltip(EquipmentIcon icon, EquipmentIndex equipIdx)
        {
            PickupIndex pickupIdx = PickupCatalog.FindPickupIndex(equipIdx);

            if (pickupIdx != PickupIndex.none)
            {
                UpdatePickupTooltip(icon.tooltipProvider, pickupIdx);
            }
        }
コード例 #7
0
        //Removes a piece of equipment from a team when the equipment is clicked on
        //the Team panel.
        public void RemoveTeamEquipment(object sender, RoutedEventArgs e)
        {
            EquipmentIcon equip            = (EquipmentIcon)sender;
            Team          relatedTeam      = equip.getTeam();
            Equipment     relatedEquipment = equip.getEquip();

            relatedEquipment.setAssigned(false);

            relatedTeam.RemoveEquipment(relatedEquipment);
        }
コード例 #8
0
 /// <summary>
 /// 属性加成计算
 /// </summary>
 /// <param name="icon">子物体脚本</param>
 private void Property(EquipmentIcon icon)
 {
     if (icon != null)
     {
         ObjectInfo info = ObjectsInfo.instance.GetObjectInfoById(icon.id);
         this.addAttack += info.Attack;
         this.addDef    += info.Def;
         this.addSpeed  += info.Speed;
     }
 }
コード例 #9
0
    private void showRemoveItemPrompt(PromptLoaderCMD promptLoader, EquipmentIcon iconItem)
    {
        Texture2D texture2D = (Texture2D)iconItem.GetIcon();
        Sprite    sprite    = Sprite.Create(texture2D, new Rect(0f, 0f, texture2D.width, texture2D.height), new Vector2(0.5f, 0.5f));

        promptLoader.PromptData.SetImage(DPrompt.PROMPT_IMAGE_DEFAULT, sprite);
        Service.Get <PromptManager>().ShowPrompt(promptLoader.PromptData, delegate(DPrompt.ButtonFlags pressed)
        {
            deleteConfirmationButton(pressed, iconItem.EquipmentId);
        }, promptLoader.Prefab);
    }
コード例 #10
0
        private static void AttachZetDropHandler(EquipmentIcon icon)
        {
            if (icon.GetComponent <ZetDropHandler>() != null)
            {
                return;
            }
            var dropItemHandler = icon.transform.gameObject.AddComponent <ZetDropHandler>();

            dropItemHandler.GetInventory  = () => icon.targetInventory;
            dropItemHandler.EquipmentIcon = true;
        }
コード例 #11
0
        private static void AttachZetAspectsConvertHandler(EquipmentIcon icon)
        {
            if (icon.GetComponent <ZetAspectsConvertHandler>() != null)
            {
                return;
            }

            ZetAspectsConvertHandler handler = icon.transform.gameObject.AddComponent <ZetAspectsConvertHandler>();

            handler.GetInventory = () => icon.targetInventory;
            handler.GetPCMC      = () => icon.playerCharacterMasterController;
        }
コード例 #12
0
    private void removeItem(EditableItem editableItem)
    {
        EquipmentIcon iconItem = editableItem.GetComponentInChildren <EquipmentIcon>();

        indexToRemove = editableItem.GetCurrentIndex();
        PromptDefinition promptDefinition = Service.Get <PromptManager>().GetPromptDefinition("DeleteEquipmentPrompt");
        PromptLoaderCMD  promptLoaderCMD  = new PromptLoaderCMD(this, promptDefinition, delegate(PromptLoaderCMD loader)
        {
            showRemoveItemPrompt(loader, iconItem);
        });

        promptLoaderCMD.Execute();
    }
コード例 #13
0
 private void EquipmentIcon_Update(On.RoR2.UI.EquipmentIcon.orig_Update orig, EquipmentIcon self)
 {
     orig(self);
     if (self.targetEquipmentSlot && self.targetEquipmentSlot.equipmentIndex == equipmentDef.equipmentIndex)
     {
         var component = self.targetEquipmentSlot.GetComponent <MysticsItemsOmarHackToolBehaviour>();
         if (component && component.usesLeft <= 0)
         {
             if (self.iconImage)
             {
                 self.iconImage.color = Color.gray;
             }
         }
     }
 }
コード例 #14
0
    private bool onItemReady(EditableItemEvents.ItemReady evt)
    {
        int           index = evt.Index;
        EditableItem  item  = evt.Item;
        EquipmentIcon componentInChildren = item.GetComponentInChildren <EquipmentIcon>();

        switch (index)
        {
        case 0:
            item.ShowActionButton = false;
            componentInChildren.SetupCreateButton();
            break;

        case 1:
            item.ShowActionButton = false;
            componentInChildren.SetupCatalogButton();
            break;

        default:
        {
            componentInChildren.SetupEquipmentButton();
            long key = model.DisplayedInventory[index - 2];
            InventoryIconModel <DCustomEquipment> inventoryIconModel = model.InventoryData.Inventory[key];
            item.ShowActionButton = true;
            item.Action           = EditableItem.ActionType.Delete;
            if (templateDefinitions.TryGetValue(inventoryIconModel.Data.DefinitionId, out TemplateDefinition value) && !value.IsEditable)
            {
                if (inventoryIconModel.IsHidden)
                {
                    item.Action = EditableItem.ActionType.Hide;
                }
                else
                {
                    item.Action = EditableItem.ActionType.Show;
                }
            }
            AccessibilitySettings component = componentInChildren.GetComponent <AccessibilitySettings>();
            if (component != null)
            {
                component.CustomToken = value.Name;
            }
            setItemView(componentInChildren, inventoryIconModel);
            break;
        }
        }
        return(false);
    }
コード例 #15
0
        //Filling up the page with the information on the team
        private void PopulateInfo()
        {
            equipmentStackPanel.Children.RemoveRange(1, equipmentStackPanel.Children.Count - 1);

            teamName.Name = team.getName();
            if (team.getName().Length == 1)
            {
                teamName.Text = TechnicalServices.getPhoneticLetter(team.getName());
            }
            else
            {
                teamName.Text = team.getName();
            }

            ImageBrush img = new ImageBrush();

            img.ImageSource   = TechnicalServices.getImage(team.getHighestLevelOfTraining());
            teamTraining.Fill = img;

            List <Equipment> equipmentList = team.getEquipmentList();

            foreach (Equipment eq in equipmentList)
            {
                EquipmentIcon equip = new EquipmentIcon(team, this, 27, eq);
                equip.setImage(TechnicalServices.getImage(eq.getEquipmentType()));
                equipmentStackPanel.Children.Add(equip);
            }

            TeamMember member   = null;
            int        position = 0;

            while ((member = team.getMember(position++)) != null)
            {
                Grid memberLine = (Grid)informations.Children[position];
                memberLine.Visibility = System.Windows.Visibility.Visible;
                member.setNameGrid(memberLine);

                Label memberName = (Label)memberLine.Children[0];
                memberName.Content = member.getName();
                memberName.ToolTip = DepartureTimeToString(member);

                Rectangle  memberTraining = (Rectangle)memberLine.Children[1];
                ImageBrush img2           = new ImageBrush();
                img2.ImageSource    = TechnicalServices.getImage(member.getTrainingLevel());
                memberTraining.Fill = img2;
            }
        }
コード例 #16
0
    private bool onEditableItemActionButtonClicked(EditableItemEvents.ActionButtonClicked evt)
    {
        EditableItem item = evt.Item;

        if (evt.Action == EditableItem.ActionType.Delete)
        {
            removeItem(item);
        }
        else if (evt.Action == EditableItem.ActionType.Hide)
        {
            EquipmentIcon componentInChildren = item.GetComponentInChildren <EquipmentIcon>();
            model.HideItem(componentInChildren.EquipmentId);
        }
        else if (evt.Action == EditableItem.ActionType.Show)
        {
            EquipmentIcon componentInChildren = item.GetComponentInChildren <EquipmentIcon>();
            model.ShowItem(componentInChildren.EquipmentId);
        }
        return(false);
    }
コード例 #17
0
 public void OnPointerClick(PointerEventData eventData)
 {
     if (master != null && master.playerCharacterMasterController != null)
     {
         EquipmentIcon equipmentIcon = GetComponent <EquipmentIcon>();
         if (!equipmentIcon.hasEquipment)
         {
             return;
         }
         EquipmentIndex equipmentIndex = equipmentIcon.targetEquipmentSlot.equipmentIndex;
         if (NetworkServer.active)
         {
             ServerStuffDropper.DropEquipment(master, equipmentIndex);
         }
         else
         {
             if (ClientScene.readyConnection == null)
             {
                 Debug.LogError("Connection is not ready.");
             }
             ClientScene.readyConnection.Send(ConversionArtifactMod.msgEquipmentDropType, new EquipmentDropMessage(equipmentIndex));
         }
     }
 }
コード例 #18
0
        private void EquipmentIconOnUpdate(On.RoR2.UI.EquipmentIcon.orig_Update orig, EquipmentIcon self)
        {
            orig(self);

            var feedback = self.GetComponent <DurabilityFeedback>();

            if (feedback == null)
            {
                feedback = self.gameObject.AddComponent <DurabilityFeedback>();
            }

            var master = self.playerCharacterMasterController?.master;

            if (master != null)
            {
                var tracker = master.GetComponent <DurabilityTracker>();
                if (tracker == null)
                {
                    tracker               = master.gameObject.AddComponent <DurabilityTracker>();
                    tracker.durability    = FullDurability;
                    tracker.durabilityAlt = FullDurability;
                }

                bool useAlt = self.targetEquipmentSlot.activeEquipmentSlot == 0
                    ? self.displayAlternateEquipment
                    : !self.displayAlternateEquipment;
                feedback.percentDurability = useAlt ? tracker.durabilityAlt : tracker.durability;
                feedback.showBar           = self.hasEquipment;
            }
        }
コード例 #19
0
    /// <summary>
    /// 穿戴装备
    /// </summary>
    /// <param name="id">穿戴的装备</param>
    /// <returns>穿上与否</returns>
    public bool Dress(int id)
    {
        ObjectInfo info = ObjectsInfo.instance.GetObjectInfoById(id);

        if (PlayerStatus.Instance.heroType == HeroType.Magician)
        {
            if (info.ApplicationType == ApplicationType.Swordman)
            {
                return(false);
            }
        }
        if (PlayerStatus.Instance.heroType == HeroType.Swordman)
        {
            if (info.ApplicationType == ApplicationType.Magician)
            {
                return(false);
            }
        }
        GameObject parent = null;

        switch (info.DressType)
        {
        case DressType.Headgear:
            parent = HeadgearItem;
            break;

        case DressType.Armor:
            parent = ArmorItem;
            break;

        case DressType.LeftHand:
            parent = LeftHandItem;
            break;

        case DressType.RightHand:
            parent = RightHandItem;
            break;

        case DressType.Shoe:
            parent = ShoeItem;
            break;

        case DressType.Accessory:
            parent = AccessoryItem;
            break;
        }
        //获取对应格子的子物体上的脚本,如果为空说明没有子物体
        EquipmentIcon icon = parent.GetComponentInChildren <EquipmentIcon>();

        if (icon != null)
        {
            Inventory.instance.GetID(icon.id);
            icon.UpdateShow(info);
        }
        else
        {
            GameObject go = Instantiate(EquipmentIcon, parent.GetComponent <RectTransform>());
            go.GetComponent <EquipmentIcon>().UpdateShow(info);
        }
        UpdateProperty();
        Debug.Log("数值变化:" + addAttack + "+" + addDef + "+" + addSpeed);
        return(true);
    }
コード例 #20
0
ファイル: AdvancedIcons.cs プロジェクト: ethall/BetterUI
        internal void EquipmentIcon_Update(On.RoR2.UI.EquipmentIcon.orig_Update orig, EquipmentIcon self)
        {
            orig(self);

            if (!this.EquipmentIconDirty.ContainsKey(self))
            {
                this.EquipmentIconDirty.Add(self, true);
                this.lastEquipment.Add(self, null);
            }
            if ((mod.config.AdvancedIconsEquipementAdvancedDescriptions.Value ||
                 mod.config.AdvancedIconsEquipementShowBaseCooldown.Value ||
                 mod.config.AdvancedIconsEquipementShowCalculatedCooldown.Value) &&
                (self.currentDisplayData.equipmentDef != this.lastEquipment[self] || this.EquipmentIconDirty[self]) &&
                self.currentDisplayData.hasEquipment && self.tooltipProvider)
            {
                this.lastEquipment[self]      = self.currentDisplayData.equipmentDef;
                this.EquipmentIconDirty[self] = false;
                BetterUI.sharedStringBuilder.Clear();
                BetterUI.sharedStringBuilder.Append(Language.GetString(mod.config.AdvancedIconsEquipementAdvancedDescriptions.Value ? self.currentDisplayData.equipmentDef.descriptionToken : self.currentDisplayData.equipmentDef.pickupToken));
                if (mod.config.AdvancedIconsEquipementShowBaseCooldown.Value || mod.config.AdvancedIconsEquipementShowCalculatedCooldown.Value)
                {
                    BetterUI.sharedStringBuilder.Append("\n");
                }
                if (mod.config.AdvancedIconsEquipementShowBaseCooldown.Value)
                {
                    BetterUI.sharedStringBuilder.Append("\nBase Cooldown: <style=cIsDamage>");
                    BetterUI.sharedStringBuilder.Append(self.currentDisplayData.equipmentDef.cooldown);
                    BetterUI.sharedStringBuilder.Append("</style> second");
                    if (self.currentDisplayData.equipmentDef.cooldown != 1)
                    {
                        BetterUI.sharedStringBuilder.Append("s");
                    }
                }
                if (mod.config.AdvancedIconsEquipementShowCalculatedCooldown.Value)
                {
                    inventory = self.targetInventory;
                    if (!inventory && mod.HUD.targetBodyObject)
                    {
                        targetbody = mod.HUD.targetBodyObject.GetComponent <CharacterBody>();
                        if (targetbody)
                        {
                            inventory = targetbody.inventory;
                        }
                    }
                    if (inventory)
                    {
                        float reduction = (float)Math.Pow(0.85, inventory.itemStacks[(int)ItemCatalog.FindItemIndex("EquipmentMagazine")]);
                        if (inventory.itemStacks[(int)ItemCatalog.FindItemIndex("AutoCastEquipment")] > 0)
                        {
                            reduction *= 0.5f * (float)Math.Pow(0.85, inventory.itemStacks[(int)ItemCatalog.FindItemIndex("AutoCastEquipment")] - 1);
                        }
                        if (reduction < 1)
                        {
                            BetterUI.sharedStringBuilder.Append("\nEffective Cooldown: <style=cIsHealing>");
                            BetterUI.sharedStringBuilder.Append((self.currentDisplayData.equipmentDef.cooldown * reduction).ToString("0.###"));
                            BetterUI.sharedStringBuilder.Append("</style> second");
                            if (self.currentDisplayData.equipmentDef.cooldown != 1)
                            {
                                BetterUI.sharedStringBuilder.Append("s");
                            }
                        }
                    }
                }


                self.tooltipProvider.overrideBodyText = BetterUI.sharedStringBuilder.ToString();
            }

            if (mod.config.AdvancedIconsEquipementShowCooldownStacks.Value && self.cooldownText && self.currentDisplayData.cooldownValue > 0)
            {
                self.cooldownText.gameObject.SetActive(true);
            }
        }