예제 #1
0
        /// <summary>
        /// Creates a resource category row for critters.
        /// </summary>
        /// <param name="species">The critter species to create.</param>
        /// <returns>The row for that critter species.</returns>
        private CritterResourceRow Create(AllResourcesScreen allResources, Tag species)
        {
            var spawn = Util.KInstantiateUI(allResources.resourceLinePrefab, refs.
                                            GetComponent <FoldOutPanel>().container, true);

#if DEBUG
            PUtil.LogDebug("Creating resource row for {0}".F(species.ProperNameStripLink()));
#endif
            var image   = Def.GetUISprite(species, "ui", false);
            var newRefs = spawn.GetComponent <HierarchyReferences>();
            // Tint icon the correct color
            if (image != null)
            {
                var icon = newRefs.GetReference <Image>("Icon");
                icon.sprite = image.first;
                icon.color  = image.second;
            }
            // Set up chart
            var graphBase = newRefs.GetReference <SparkLayer>("Chart").GetComponent <GraphBase>();
            graphBase.axis_x.min_value       = 0f;
            graphBase.axis_x.max_value       = 600f;
            graphBase.axis_x.guide_frequency = 120f;
            graphBase.RefreshGuides();
            // Component which actually handles updating
            var cr = spawn.AddComponent <CritterResourceRow>();
            cr.CritterType = CritterType;
            cr.References  = newRefs;
            cr.Species     = species;
            newRefs.GetReference <LocText>("NameLabel").SetText(cr.Title);
            // Checkmark to pin to resource list
            newRefs.GetReference <MultiToggle>("PinToggle").onClick += cr.OnPinToggle;
            spawn.GetComponent <MultiToggle>().onClick += cr.OnPinToggle;
            return(cr);
        }
    private void BuildDisplay()
    {
        foreach (DisplayedMod displayedMod in displayedMods)
        {
            DisplayedMod current = displayedMod;
            if ((UnityEngine.Object)current.rect_transform != (UnityEngine.Object)null)
            {
                UnityEngine.Object.Destroy(current.rect_transform.gameObject);
            }
        }
        displayedMods.Clear();
        ModOrderingDragListener listener = new ModOrderingDragListener(this, displayedMods);

        for (int i = 0; i != Global.Instance.modManager.mods.Count; i++)
        {
            Mod mod = Global.Instance.modManager.mods[i];
            if (mod.status != 0 && mod.status != Mod.Status.UninstallPending && mod.HasAnyContent(Content.LayerableFiles | Content.Strings | Content.DLL | Content.Animation))
            {
                HierarchyReferences hierarchyReferences = Util.KInstantiateUI <HierarchyReferences>(entryPrefab, entryParent.gameObject, false);
                displayedMods.Add(new DisplayedMod
                {
                    rect_transform = hierarchyReferences.gameObject.GetComponent <RectTransform>(),
                    mod_index      = i
                });
                DragMe component = hierarchyReferences.GetComponent <DragMe>();
                component.listener = listener;
                LocText reference = hierarchyReferences.GetReference <LocText>("Title");
                reference.text = mod.title;
                ToolTip reference2 = hierarchyReferences.GetReference <ToolTip>("Description");
                reference2.toolTip = mod.description;
                if (mod.crash_count != 0)
                {
                    reference.color = Color.Lerp(Color.white, Color.red, (float)mod.crash_count / 3f);
                }
                KButton reference3 = hierarchyReferences.GetReference <KButton>("ManageButton");
                reference3.isInteractable = mod.is_managed;
                if (reference3.isInteractable)
                {
                    reference3.GetComponent <ToolTip>().toolTip = mod.manage_tooltip;
                    reference3.onClick += mod.on_managed;
                }
                MultiToggle toggle = hierarchyReferences.GetReference <MultiToggle>("EnabledToggle");
                toggle.ChangeState(mod.enabled ? 1 : 0);
                MultiToggle multiToggle = toggle;
                multiToggle.onClick = (System.Action)Delegate.Combine(multiToggle.onClick, (System.Action) delegate
                {
                    OnToggleClicked(toggle, mod.label);
                });
                toggle.GetComponent <ToolTip>().OnToolTip = (() => (!mod.enabled) ? UI.FRONTEND.MODS.TOOLTIPS.DISABLED : UI.FRONTEND.MODS.TOOLTIPS.ENABLED);
                hierarchyReferences.gameObject.SetActive(true);
            }
        }
        foreach (DisplayedMod displayedMod2 in displayedMods)
        {
            DisplayedMod current2 = displayedMod2;
            current2.rect_transform.gameObject.SetActive(true);
        }
        if (displayedMods.Count != 0)
        {
            return;
        }
    }