Beispiel #1
0
    private void onNewLabel(DefaultLabelController labelController, EncounterTrackable encounter,
                            PickupObject item)
    {
        if (ITEM_BLACKLIST.Contains(item.PickupObjectId))
        {
            return;
        }

        // add padding fix behaviour that only updates position and not the padding
        labelController.gameObject.AddComponent <PositionUpdater>();

        // Text change
        var newText = labelController.label.Text;

        newText += SEPARATOR_TEXT;
        newText += getTextForPage(labelController, encounter, item);
        labelController.label.Text = newText;

        // Layouting
        labelController.enabled          = false;
        labelController.label.TextScale  = 2f;
        labelController.label.AutoHeight = true;
        labelController.label.WordWrap   = true;
        labelController.label.Width      = Screen.width / 3f;
        labelController.label.Padding    = new RectOffset(6, 6, 0, 0);
        labelController.label.Invalidate();
        labelController.panel.FitToContents();
        labelController.panel.Invalidate();
        labelController.Trigger();
    }
Beispiel #2
0
    private void onUpdateLabel(DefaultLabelController labelController, EncounterTrackable encounter,
                               PickupObject item)
    {
        NoBrainJsonItem noBrainJsonItem;
        var             success = NoBrain.jsonItemDict.TryGetValue(item.PickupObjectId, out noBrainJsonItem);

        if (!success)
        {
            return;
        }

        // Text change
        var newText = labelController.label.Text;
        var indexOf = newText.IndexOf(SEPARATOR_TEXT) + SEPARATOR_TEXT.Length;

        if (indexOf == -1)
        {
            newText = "ERROR FINDING SEPARATOR";
        }
        else
        {
            newText  = newText.Substring(0, indexOf);
            newText += getTextForPage(labelController, encounter, item);
        }
        labelController.label.Text = newText;
//        NoBrain.LogFine("NoBrainBehaviour updating text to: " + newText);

        // Layouting
        labelController.label.AutoHeight = true;
        labelController.label.Invalidate();
        labelController.panel.FitToContents();
        labelController.panel.Invalidate();
        labelController.Trigger();
    }
Beispiel #3
0
    private void withItem(DefaultLabelController labelController, UseLabelAndItem action)
    {
        var shopItemController = labelController.targetObject.gameObject.GetComponent <ShopItemController>();

        if (shopItemController == null)
        {
//            NoBrain.LogFine("Not containing ShopItemController " + labelController.label.Text);
            return;
        }

        var encounterTrackable = shopItemController.item.GetComponent <EncounterTrackable>();

        if (encounterTrackable == null)
        {
//            NoBrain.LogFine("Not containing EncounterTrackable " + labelController.label.Text);
            return;
        }

        var item = shopItemController.item;

        if (item is ItemBlueprintItem)
        {
            var newItem = PickupObjectDatabase.GetByEncounterName(
                encounterTrackable.journalData.GetPrimaryDisplayName());
            if (newItem != null)
            {
                item = newItem;
            }
            else
            {
                NoBrain.Log("Couldn't find the real item behind the ItemBlueprintItem.");
            }
        }

        action.Invoke(labelController, encounterTrackable, item);
    }
Beispiel #4
0
    private string getTextForPage(DefaultLabelController labelController, EncounterTrackable encounter,
                                  PickupObject item)
    {
        string pageDescription;
        string text = "";

        var itemDictSuccess = NoBrain.jsonItemDict.TryGetValue(item.PickupObjectId, out var noBrainJsonItem);

        var passiveActiveString = item is PassiveItem ? "Passive" : "Active";

        text = "[color #7d7d7d]";
        if (NoBrain.SHOW_ITEM_IDS)
        {
            text += " " + item.PickupObjectId;
        }
        text += " " + item.quality.getUISpriteString()
                + " " + passiveActiveString
                + "[/color]";

        if (currentPage == PAGE_AMMO || !itemDictSuccess)
        {
            pageDescription = "Ammonomicon";
            var ammonomiconFullEntry = encounter.journalData.GetAmmonomiconFullEntry(false, false);
            if (ammonomiconFullEntry.Length > 0)
            {
                text += "\n[color #a0a0a0]" + ammonomiconFullEntry.TrimEnd()
                        + "[/color]";
            }
        }
        else if (currentPage == PAGE_DESC)
        {
            pageDescription = "Description";
            text           += "\n[color #a0a0a0]" + noBrainJsonItem.desc + "[/color]";
        }
        else if (currentPage == PAGE_STATS)
        {
            pageDescription = "Stats";
            text           += "\n[color #a0a0a0]" + noBrainJsonItem.stats + "[/color]";
        }
        else if (currentPage == PAGE_SYNERGIES)
        {
            pageDescription = "Synergies";
            var synergySuccess = NoBrain.synergyDict.TryGetValue(item.PickupObjectId, out var synergyList);
            if (synergySuccess)
            {
                foreach (var advancedSynergyEntry in synergyList)
                {
                    var mandatoryItemString = advancedSynergyEntry.getMandatoryString();
                    var optionalItemString  = advancedSynergyEntry.getOptionalString();
                    text += "\n[color #98FAFF]" + advancedSynergyEntry.getName()
                            + "[/color] " + advancedSynergyEntry.NumberObjectsRequired
                            + " of (" + mandatoryItemString + ") [" + optionalItemString + "]";
                }
                text += "";
            }
            else
            {
                text = "\nNo Synergies found.";
            }
        }
        else
        {
            pageDescription = "ERROR";
            text            = "INVALID PAGE";
        }

        if (!itemDictSuccess)
        {
            // skip footer, only one page available
            return(text);
        }

        return(text + "\n[color #3f704d]" + pageDescription + "(" + (currentPage + 1) + "/"
               + PAGE_LENGTH + ") Press " + reloadSpriteTag + "[/color]");
    }
Beispiel #5
0
 private void Start()
 {
     labelController = gameObject.GetComponent <DefaultLabelController>();
 }