Пример #1
0
        private static void Postfix(Piece piece, Text ___m_buildSelection)
        {
            if (piece != null && !string.IsNullOrEmpty(ImprovedBuildHudConfig.CanBuildAmountFormat.Value))
            {
                var displayName = Localization.instance.Localize(piece.m_name);
                if (piece.m_resources.Length == 0)
                {
                    return;
                }

                var fewestPossible = int.MaxValue;
                foreach (var requirement in piece.m_resources)
                {
                    var currentAmount = ImprovedBuildHud.GetAvailableItems(requirement.m_resItem.m_itemData.m_shared.m_name);
                    var canMake       = currentAmount / requirement.m_amount;
                    if (canMake < fewestPossible)
                    {
                        fewestPossible = canMake;
                    }
                }

                var canBuildDisplay = string.Format(ImprovedBuildHudConfig.CanBuildAmountFormat.Value, fewestPossible);
                if (!string.IsNullOrEmpty(ImprovedBuildHudConfig.CanBuildAmountColor.Value))
                {
                    canBuildDisplay = $"<color={ImprovedBuildHudConfig.CanBuildAmountColor.Value}>{canBuildDisplay}</color>";
                }
                ___m_buildSelection.text = $"{displayName} {canBuildDisplay}";
            }
        }
Пример #2
0
        static bool Prefix(ref bool __result, Transform elementRoot, Piece.Requirement req, Player player, bool craft, int quality)
        {
            Image     icon       = elementRoot.transform.Find("res_icon").GetComponent <Image>();
            Text      nameText   = elementRoot.transform.Find("res_name").GetComponent <Text>();
            Text      amountText = elementRoot.transform.Find("res_amount").GetComponent <Text>();
            UITooltip tooltip    = elementRoot.GetComponent <UITooltip>();

            if (req.m_resItem != null)
            {
                icon.gameObject.SetActive(true);
                nameText.gameObject.SetActive(true);
                amountText.gameObject.SetActive(true);
                icon.sprite    = req.m_resItem.m_itemData.GetIcon();
                icon.color     = Color.white;
                tooltip.m_text = Localization.instance.Localize(req.m_resItem.m_itemData.m_shared.m_name);
                nameText.text  = Localization.instance.Localize(req.m_resItem.m_itemData.m_shared.m_name);
                int num    = ImprovedBuildHud.GetAvailableItems(req.m_resItem.m_itemData.m_shared.m_name);
                int amount = req.GetAmount(quality);
                if (amount <= 0)
                {
                    InventoryGui.HideRequirement(elementRoot);
                    __result = false;
                    return(false);
                }

                amountText.supportRichText    = true;
                amountText.horizontalOverflow = HorizontalWrapMode.Overflow;
                var inventoryAmount = string.Format(ImprovedBuildHudConfig.InventoryAmountFormat.Value, num);
                if (!string.IsNullOrEmpty(ImprovedBuildHudConfig.InventoryAmountColor.Value))
                {
                    inventoryAmount = $"<color={ImprovedBuildHudConfig.InventoryAmountColor.Value}>{inventoryAmount}</color>";
                }
                amountText.text = $"{amount} {inventoryAmount}";

                if (num < amount)
                {
                    amountText.color = (double)Mathf.Sin(Time.time * 10f) > 0.0 ? Color.red : Color.white;
                }
                else
                {
                    amountText.color = Color.white;
                }
            }
            __result = true;
            return(false);
        }