private void CheckTarget()
 {
     if (target == null)
     {
         KPrefabID instance = KPrefabIDTracker.Get().GetInstance(target_instance_id);
         if ((Object)instance != (Object)null)
         {
             target = instance.GetComponent <IAssignableIdentity>();
             if (target != null)
             {
                 MinionIdentity minionIdentity = target as MinionIdentity;
                 if ((bool)minionIdentity)
                 {
                     minionIdentity.ValidateProxy();
                 }
                 else
                 {
                     StoredMinionIdentity storedMinionIdentity = target as StoredMinionIdentity;
                     if ((bool)storedMinionIdentity)
                     {
                         storedMinionIdentity.ValidateProxy();
                     }
                 }
             }
         }
     }
 }
Example #2
0
 private void RefreshHat()
 {
     if (currentlySelectedMinion != null && !currentlySelectedMinion.IsNull())
     {
         List <IListableOption> list   = new List <IListableOption>();
         string         empty          = string.Empty;
         MinionIdentity minionIdentity = currentlySelectedMinion as MinionIdentity;
         if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null)
         {
             MinionResume component = minionIdentity.GetComponent <MinionResume>();
             empty = ((!string.IsNullOrEmpty(component.TargetHat)) ? component.TargetHat : component.CurrentHat);
             foreach (KeyValuePair <string, bool> item in component.MasteryBySkillID)
             {
                 if (item.Value)
                 {
                     list.Add(new SkillListable(item.Key));
                 }
             }
             hatDropDown.Initialize(list, OnHatDropEntryClick, hatDropDownSort, hatDropEntryRefreshAction, false, currentlySelectedMinion);
         }
         else
         {
             StoredMinionIdentity storedMinionIdentity = currentlySelectedMinion as StoredMinionIdentity;
             empty = ((!string.IsNullOrEmpty(storedMinionIdentity.targetHat)) ? storedMinionIdentity.targetHat : storedMinionIdentity.currentHat);
         }
         hatDropDown.openButton.enabled = ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null);
         selectedHat.transform.Find("Arrow").gameObject.SetActive((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null);
         selectedHat.sprite = Assets.GetSprite((!string.IsNullOrEmpty(empty)) ? empty : "hat_role_none");
     }
 }
 protected override void OnSpawn()
 {
     base.OnSpawn();
     UpdateTint();
     UpdateStatusString();
     base.OnAssign += OnNewAssignment;
     if (assignee == null)
     {
         MinionStorage component = GetComponent <MinionStorage>();
         if ((bool)component)
         {
             List <MinionStorage.Info> storedMinionInfo = component.GetStoredMinionInfo();
             if (storedMinionInfo.Count > 0)
             {
                 MinionStorage.Info info             = storedMinionInfo[0];
                 Ref <KPrefabID>    serializedMinion = info.serializedMinion;
                 if (serializedMinion != null && serializedMinion.GetId() != -1)
                 {
                     KPrefabID            kPrefabID  = serializedMinion.Get();
                     StoredMinionIdentity component2 = kPrefabID.GetComponent <StoredMinionIdentity>();
                     component2.ValidateProxy();
                     Assign(component2);
                 }
             }
         }
     }
 }
Example #4
0
 private void BuildMinions()
 {
     for (int num = minionWidgets.Count - 1; num >= 0; num--)
     {
         minionWidgets[num].DeleteObject();
     }
     minionWidgets.Clear();
     foreach (MinionIdentity item in Components.LiveMinionIdentities.Items)
     {
         GameObject gameObject = Util.KInstantiateUI(Prefab_minion, Prefab_minionLayout, true);
         gameObject.GetComponent <SkillMinionWidget>().SetMinon(item);
         minionWidgets.Add(gameObject.GetComponent <SkillMinionWidget>());
     }
     foreach (MinionStorage item2 in Components.MinionStorages.Items)
     {
         foreach (MinionStorage.Info item3 in item2.GetStoredMinionInfo())
         {
             MinionStorage.Info current3 = item3;
             if (current3.serializedMinion != null)
             {
                 StoredMinionIdentity minon       = current3.serializedMinion.Get <StoredMinionIdentity>();
                 GameObject           gameObject2 = Util.KInstantiateUI(Prefab_minion, Prefab_minionLayout, true);
                 gameObject2.GetComponent <SkillMinionWidget>().SetMinon(minon);
                 minionWidgets.Add(gameObject2.GetComponent <SkillMinionWidget>());
             }
         }
     }
     if (CurrentlySelectedMinion == null && Components.LiveMinionIdentities.Count > 0)
     {
         CurrentlySelectedMinion = Components.LiveMinionIdentities.Items[0];
     }
 }
    private void StoredMinionTooltip(IAssignableIdentity minion, ToolTip tooltip)
    {
        StoredMinionIdentity storedMinionIdentity = minion as StoredMinionIdentity;

        if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null)
        {
            tooltip.AddMultiStringTooltip(string.Format(UI.TABLESCREENS.INFORMATION_NOT_AVAILABLE_TOOLTIP, storedMinionIdentity.GetStorageReason(), storedMinionIdentity.GetProperName()), null);
        }
    }
    public string SearchForArtifact(StoredMinionIdentity minionID, SpaceDestination destination)
    {
        ArtifactTier artifactDropTier = GetArtifactDropTier(minionID, destination);

        if (artifactDropTier == DECOR.SPACEARTIFACT.TIER_NONE)
        {
            return(null);
        }
        List <string> artifactsOfTier = GetArtifactsOfTier(artifactDropTier);

        return(artifactsOfTier[Random.Range(0, artifactsOfTier.Count - 1)]);
    }
Example #7
0
    public static GameObject DeserializeMinion(GameObject sourceMinion, Vector3 pos)
    {
        GameObject           prefab     = SaveLoader.Instance.saveManager.GetPrefab(MinionConfig.ID);
        GameObject           gameObject = Util.KInstantiate(prefab, pos);
        StoredMinionIdentity component  = sourceMinion.GetComponent <StoredMinionIdentity>();
        MinionIdentity       component2 = gameObject.GetComponent <MinionIdentity>();

        RedirectInstanceTracker(sourceMinion, gameObject);
        gameObject.SetActive(true);
        CopyMinion(component, component2);
        component.assignableProxy.Get().SetTarget(component2, gameObject);
        Util.KDestroyGameObject(sourceMinion);
        return(gameObject);
    }
Example #8
0
    private KPrefabID CreateSerializedMinion(GameObject src_minion)
    {
        GameObject prefab     = SaveLoader.Instance.saveManager.GetPrefab(StoredMinionConfig.ID);
        GameObject gameObject = Util.KInstantiate(prefab, Vector3.zero);

        gameObject.SetActive(true);
        MinionIdentity       component  = src_minion.GetComponent <MinionIdentity>();
        StoredMinionIdentity component2 = gameObject.GetComponent <StoredMinionIdentity>();

        CopyMinion(component, component2);
        RedirectInstanceTracker(src_minion, gameObject);
        component.assignableProxy.Get().SetTarget(component2, gameObject);
        Util.KDestroyGameObject(src_minion);
        return(gameObject.GetComponent <KPrefabID>());
    }
Example #9
0
    private void CopyMinion(MinionIdentity src_id, StoredMinionIdentity dest_id)
    {
        dest_id.storedName      = src_id.name;
        dest_id.nameStringKey   = src_id.nameStringKey;
        dest_id.gender          = src_id.gender;
        dest_id.genderStringKey = src_id.genderStringKey;
        dest_id.arrivalTime     = src_id.arrivalTime;
        dest_id.voiceIdx        = src_id.voiceIdx;
        dest_id.bodyData        = src_id.bodyData;
        Traits component = src_id.GetComponent <Traits>();

        dest_id.traitIDs = new List <string>(component.GetTraitIds());
        dest_id.assignableProxy.Set(src_id.assignableProxy.Get());
        dest_id.assignableProxy.Get().SetTarget(dest_id, dest_id.gameObject);
        Accessorizer component2 = src_id.GetComponent <Accessorizer>();

        dest_id.accessories = component2.GetAccessories();
        ConsumableConsumer component3 = src_id.GetComponent <ConsumableConsumer>();

        if (component3.forbiddenTags != null)
        {
            dest_id.forbiddenTags = new List <Tag>(component3.forbiddenTags);
        }
        MinionResume component4 = src_id.GetComponent <MinionResume>();

        dest_id.MasteryBySkillID      = component4.MasteryBySkillID;
        dest_id.AptitudeBySkillGroup  = component4.AptitudeBySkillGroup;
        dest_id.TotalExperienceGained = component4.TotalExperienceGained;
        dest_id.currentHat            = component4.CurrentHat;
        dest_id.targetHat             = component4.TargetHat;
        ChoreConsumer component5 = src_id.GetComponent <ChoreConsumer>();

        dest_id.choreGroupPriorities = component5.GetChoreGroupPriorities();
        AttributeLevels component6 = src_id.GetComponent <AttributeLevels>();

        component6.OnSerializing();
        dest_id.attributeLevels = new List <AttributeLevels.LevelSaveLoad>(component6.SaveLoadLevels);
        StoreModifiers(src_id, dest_id);
        Schedulable component7 = src_id.GetComponent <Schedulable>();
        Schedule    schedule   = component7.GetSchedule();

        if (schedule != null)
        {
            schedule.Unassign(component7);
            Schedulable component8 = dest_id.GetComponent <Schedulable>();
            schedule.Assign(component8);
        }
    }
Example #10
0
    private static void StoreModifiers(MinionIdentity src_id, StoredMinionIdentity dest_id)
    {
        MinionModifiers component = src_id.GetComponent <MinionModifiers>();

        foreach (AttributeInstance attribute in component.attributes)
        {
            if (dest_id.minionModifiers.attributes.Get(attribute.Attribute.Id) == null)
            {
                dest_id.minionModifiers.attributes.Add(attribute.Attribute);
            }
            for (int i = 0; i < attribute.Modifiers.Count; i++)
            {
                dest_id.minionModifiers.attributes.Get(attribute.Id).Add(attribute.Modifiers[i]);
            }
        }
    }
    public void OnLand(object data)
    {
        SpaceDestination spacecraftDestination = SpacecraftManager.instance.GetSpacecraftDestination(SpacecraftManager.instance.GetSpacecraftID(GetComponent <RocketModule>().conditionManager.GetComponent <LaunchableRocket>()));

        foreach (MinionStorage.Info item in minionStorage.GetStoredMinionInfo())
        {
            MinionStorage.Info   current  = item;
            StoredMinionIdentity minionID = current.serializedMinion.Get <StoredMinionIdentity>();
            string text = SearchForArtifact(minionID, spacecraftDestination);
            if (text != null)
            {
                GameObject prefab     = Assets.GetPrefab(text.ToTag());
                GameObject gameObject = GameUtil.KInstantiate(prefab, base.gameObject.transform.GetPosition(), Grid.SceneLayer.Ore, null, 0);
                gameObject.SetActive(true);
            }
        }
    }
Example #12
0
 public void Refresh()
 {
     if (minion != null)
     {
         portrait.SetIdentityObject(minion, true);
         string         empty          = string.Empty;
         MinionIdentity minionIdentity = minion as MinionIdentity;
         hatDropDown.gameObject.SetActive(true);
         if ((Object)minionIdentity != (Object)null)
         {
             MinionResume component              = minionIdentity.GetComponent <MinionResume>();
             int          availableSkillpoints   = component.AvailableSkillpoints;
             int          totalSkillPointsGained = component.TotalSkillPointsGained;
             masteryPoints.text = ((availableSkillpoints <= 0) ? "0" : GameUtil.ApplyBoldString(GameUtil.ColourizeString(new Color(0.5f, 1f, 0.5f, 1f), availableSkillpoints.ToString())));
             AttributeInstance attributeInstance  = Db.Get().Attributes.QualityOfLife.Lookup(component);
             AttributeInstance attributeInstance2 = Db.Get().Attributes.QualityOfLifeExpectation.Lookup(component);
             morale.text = $"{attributeInstance.GetTotalValue()}/{attributeInstance2.GetTotalValue()}";
             RefreshToolTip(component);
             List <IListableOption> list = new List <IListableOption>();
             foreach (KeyValuePair <string, bool> item in component.MasteryBySkillID)
             {
                 if (item.Value)
                 {
                     list.Add(new SkillListable(item.Key));
                 }
             }
             hatDropDown.Initialize(list, OnHatDropEntryClick, hatDropDownSort, hatDropEntryRefreshAction, false, minion);
             empty = ((!string.IsNullOrEmpty(component.TargetHat)) ? component.TargetHat : component.CurrentHat);
         }
         else
         {
             StoredMinionIdentity storedMinionIdentity = minion as StoredMinionIdentity;
             ToolTip component2 = GetComponent <ToolTip>();
             component2.ClearMultiStringTooltip();
             component2.AddMultiStringTooltip(string.Format(UI.TABLESCREENS.INFORMATION_NOT_AVAILABLE_TOOLTIP, storedMinionIdentity.GetStorageReason(), minion.GetProperName()), null);
             empty = ((!string.IsNullOrEmpty(storedMinionIdentity.targetHat)) ? storedMinionIdentity.targetHat : storedMinionIdentity.currentHat);
             masteryPoints.text = UI.TABLESCREENS.NA;
             morale.text        = UI.TABLESCREENS.NA;
         }
         SetColor((skillsScreen.CurrentlySelectedMinion != minion) ? unselected_color : selected_color);
         HierarchyReferences component3 = GetComponent <HierarchyReferences>();
         RefreshHat(empty);
         component3.GetReference("openButton").gameObject.SetActive((Object)minionIdentity != (Object)null);
     }
 }
Example #13
0
    private string HoverChangeRowPriorityButton(object widget_go_obj, int delta)
    {
        GameObject widget_go  = widget_go_obj as GameObject;
        LocString  locString  = null;
        LocString  locString2 = null;
        string     text       = null;
        TableRow   widgetRow  = GetWidgetRow(widget_go);

        switch (widgetRow.rowType)
        {
        case TableRow.RowType.Header:
            Debug.Assert(false);
            return(null);

        case TableRow.RowType.Default:
            locString  = UI.JOBSSCREEN.INCREASE_ROW_PRIORITY_NEW_MINION_TOOLTIP;
            locString2 = UI.JOBSSCREEN.DECREASE_ROW_PRIORITY_NEW_MINION_TOOLTIP;
            break;

        case TableRow.RowType.Minion:
            locString  = UI.JOBSSCREEN.INCREASE_ROW_PRIORITY_MINION_TOOLTIP;
            locString2 = UI.JOBSSCREEN.DECREASE_ROW_PRIORITY_MINION_TOOLTIP;
            text       = widgetRow.GetIdentity().GetProperName();
            break;

        case TableRow.RowType.StoredMinon:
        {
            StoredMinionIdentity storedMinionIdentity = widgetRow.GetIdentity() as StoredMinionIdentity;
            if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null)
            {
                return(string.Format(UI.JOBSSCREEN.CANNOT_ADJUST_PRIORITY, storedMinionIdentity.GetProperName(), storedMinionIdentity.GetStorageReason()));
            }
            break;
        }
        }
        LocString locString3 = (delta <= 0) ? locString2 : locString;
        string    text2      = locString3.ToString();

        if (text != null)
        {
            text2 = text2.Replace("{Name}", text);
        }
        return(text2);
    }
 public bool CheckStoredMinionIsAssignee()
 {
     foreach (MinionStorage.Info item in GetComponent <MinionStorage>().GetStoredMinionInfo())
     {
         MinionStorage.Info current = item;
         if (current.serializedMinion != null)
         {
             KPrefabID kPrefabID = current.serializedMinion.Get();
             if (!((Object)kPrefabID == (Object)null))
             {
                 StoredMinionIdentity component  = kPrefabID.GetComponent <StoredMinionIdentity>();
                 Assignable           component2 = GetComponent <Assignable>();
                 if (component2.assignee == component.assignableProxy.Get())
                 {
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
    public ArtifactTier GetArtifactDropTier(StoredMinionIdentity minionID, SpaceDestination destination)
    {
        ArtifactDropRate artifactDropTable = destination.GetDestinationType().artifactDropTable;
        bool             flag = minionID.traitIDs.Contains("Archaeologist");

        if (artifactDropTable != null)
        {
            float num = artifactDropTable.totalWeight;
            if (flag)
            {
                num -= artifactDropTable.GetTierWeight(DECOR.SPACEARTIFACT.TIER_NONE);
            }
            float num2 = Random.value * num;
            foreach (Tuple <ArtifactTier, float> rate in artifactDropTable.rates)
            {
                switch (flag)
                {
                default:
                    if (rate.first == DECOR.SPACEARTIFACT.TIER_NONE)
                    {
                        break;
                    }
                    goto case false;

                case false:
                    num2 -= rate.second;
                    break;
                }
                if (num2 <= 0f)
                {
                    return(rate.first);
                }
            }
        }
        return(DECOR.SPACEARTIFACT.TIER0);
    }
Example #16
0
 private void SetPortraitAnimator(IAssignableIdentity identity)
 {
     if (identity != null && !identity.IsNull())
     {
         if ((UnityEngine.Object)animController == (UnityEngine.Object)null)
         {
             animController = Util.KInstantiateUI(Assets.GetPrefab(new Tag("FullMinionUIPortrait")), duplicantAnimAnchor.gameObject, false).GetComponent <KBatchedAnimController>();
             animController.gameObject.SetActive(true);
             KCanvasScaler kCanvasScaler = UnityEngine.Object.FindObjectOfType <KCanvasScaler>();
             animController.animScale = baseCharacterScale * (1f / kCanvasScaler.GetCanvasScale());
             ScreenResize instance = ScreenResize.Instance;
             instance.OnResize = (System.Action)Delegate.Combine(instance.OnResize, new System.Action(OnResize));
         }
         string       value     = string.Empty;
         Accessorizer component = animController.GetComponent <Accessorizer>();
         for (int num = component.GetAccessories().Count - 1; num >= 0; num--)
         {
             component.RemoveAccessory(component.GetAccessories()[num].Get());
         }
         MinionIdentity       minionIdentity       = identity as MinionIdentity;
         StoredMinionIdentity storedMinionIdentity = identity as StoredMinionIdentity;
         Accessorizer         accessorizer         = null;
         if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null)
         {
             accessorizer = minionIdentity.GetComponent <Accessorizer>();
             foreach (ResourceRef <Accessory> accessory in accessorizer.GetAccessories())
             {
                 component.AddAccessory(accessory.Get());
             }
             value = minionIdentity.GetComponent <MinionResume>().CurrentHat;
         }
         else if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null)
         {
             foreach (ResourceRef <Accessory> accessory2 in storedMinionIdentity.accessories)
             {
                 component.AddAccessory(accessory2.Get());
             }
             value = storedMinionIdentity.currentHat;
         }
         HashedString name = "anim_idle_healthy_kanim";
         idle_anim = Assets.GetAnim(name);
         if ((UnityEngine.Object)idle_anim != (UnityEngine.Object)null)
         {
             animController.AddAnimOverrides(idle_anim, 0f);
         }
         animController.Queue("idle_default", KAnim.PlayMode.Loop, 1f, 0f);
         AccessorySlot hat = Db.Get().AccessorySlots.Hat;
         animController.SetSymbolVisiblity(hat.targetSymbolId, (!string.IsNullOrEmpty(value)) ? true : false);
         animController.SetSymbolVisiblity(Db.Get().AccessorySlots.Hair.targetSymbolId, string.IsNullOrEmpty(value) ? true : false);
         animController.SetSymbolVisiblity(Db.Get().AccessorySlots.HatHair.targetSymbolId, (!string.IsNullOrEmpty(value)) ? true : false);
         KAnim.Build.Symbol source_symbol  = null;
         KAnim.Build.Symbol source_symbol2 = null;
         if ((bool)accessorizer)
         {
             source_symbol  = accessorizer.GetAccessory(Db.Get().AccessorySlots.Hair).symbol;
             source_symbol2 = Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(accessorizer.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol;
         }
         else if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null)
         {
             source_symbol  = storedMinionIdentity.GetAccessory(Db.Get().AccessorySlots.Hair).symbol;
             source_symbol2 = Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(storedMinionIdentity.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol;
         }
         animController.GetComponent <SymbolOverrideController>().AddSymbolOverride(Db.Get().AccessorySlots.HairAlways.targetSymbolId, source_symbol, 1);
         animController.GetComponent <SymbolOverrideController>().AddSymbolOverride(Db.Get().AccessorySlots.HatHair.targetSymbolId, source_symbol2, 1);
     }
 }
 public static void SetPortraitData(IAssignableIdentity identityObject, KBatchedAnimController controller, bool useDefaultExpression = true)
 {
     if (identityObject == null)
     {
         controller.gameObject.SetActive(false);
     }
     else
     {
         MinionIdentity minionIdentity = identityObject as MinionIdentity;
         if ((UnityEngine.Object)minionIdentity == (UnityEngine.Object)null)
         {
             MinionAssignablesProxy minionAssignablesProxy = identityObject as MinionAssignablesProxy;
             if ((UnityEngine.Object)minionAssignablesProxy != (UnityEngine.Object)null && minionAssignablesProxy.target != null)
             {
                 minionIdentity = (minionAssignablesProxy.target as MinionIdentity);
             }
         }
         controller.gameObject.SetActive(true);
         controller.Play("ui_idle", KAnim.PlayMode.Once, 1f, 0f);
         SymbolOverrideController component = controller.GetComponent <SymbolOverrideController>();
         component.RemoveAllSymbolOverrides(0);
         if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null)
         {
             Accessorizer component2 = minionIdentity.GetComponent <Accessorizer>();
             foreach (AccessorySlot resource in Db.Get().AccessorySlots.resources)
             {
                 Accessory accessory = component2.GetAccessory(resource);
                 if (accessory != null)
                 {
                     component.AddSymbolOverride(resource.targetSymbolId, accessory.symbol, 0);
                     controller.SetSymbolVisiblity(resource.targetSymbolId, true);
                 }
             }
             component.AddSymbolOverride(Db.Get().AccessorySlots.HatHair.targetSymbolId, Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(component2.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol, 1);
             RefreshHat(minionIdentity, controller);
         }
         else
         {
             StoredMinionIdentity storedMinionIdentity = identityObject as StoredMinionIdentity;
             if ((UnityEngine.Object)storedMinionIdentity == (UnityEngine.Object)null)
             {
                 MinionAssignablesProxy minionAssignablesProxy2 = identityObject as MinionAssignablesProxy;
                 if ((UnityEngine.Object)minionAssignablesProxy2 != (UnityEngine.Object)null && minionAssignablesProxy2.target != null)
                 {
                     storedMinionIdentity = (minionAssignablesProxy2.target as StoredMinionIdentity);
                 }
             }
             if (!((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null))
             {
                 controller.gameObject.SetActive(false);
                 return;
             }
             foreach (AccessorySlot resource2 in Db.Get().AccessorySlots.resources)
             {
                 Accessory accessory2 = storedMinionIdentity.GetAccessory(resource2);
                 if (accessory2 != null)
                 {
                     component.AddSymbolOverride(resource2.targetSymbolId, accessory2.symbol, 0);
                     controller.SetSymbolVisiblity(resource2.targetSymbolId, true);
                 }
             }
             component.AddSymbolOverride(Db.Get().AccessorySlots.HatHair.targetSymbolId, Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(storedMinionIdentity.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol, 1);
             RefreshHat(storedMinionIdentity, controller);
         }
         float animScale = 1f;
         if ((UnityEngine.Object)GameScreenManager.Instance != (UnityEngine.Object)null && (UnityEngine.Object)GameScreenManager.Instance.ssOverlayCanvas != (UnityEngine.Object)null)
         {
             animScale = 0.2f * (1f / GameScreenManager.Instance.ssOverlayCanvas.GetComponent <KCanvasScaler>().GetUserScale());
         }
         controller.animScale = animScale;
         string s = "ui";
         controller.Play(s, KAnim.PlayMode.Loop, 1f, 0f);
         controller.SetSymbolVisiblity("snapTo_neck", false);
         controller.SetSymbolVisiblity("snapTo_goggles", false);
     }
 }
 public RetiredColonyData(string colonyName, int cycleCount, string date, string[] achievements, MinionAssignablesProxy[] minions, BuildingComplete[] buildingCompletes)
 {
     this.colonyName   = colonyName;
     this.cycleCount   = cycleCount;
     this.achievements = achievements;
     this.date         = date;
     Duplicants        = new RetiredDuplicantData[(minions != null) ? minions.Length : 0];
     for (int i = 0; i < Duplicants.Length; i++)
     {
         Duplicants[i]      = new RetiredDuplicantData();
         Duplicants[i].name = minions[i].GetProperName();
         Duplicants[i].age  = (int)Mathf.Floor((float)GameClock.Instance.GetCycle() - minions[i].GetArrivalTime());
         Duplicants[i].skillPointsGained = minions[i].GetTotalSkillpoints();
         Duplicants[i].accessories       = new Dictionary <string, string>();
         if ((Object)minions[i].GetTargetGameObject().GetComponent <Accessorizer>() != (Object)null)
         {
             foreach (ResourceRef <Accessory> accessory in minions[i].GetTargetGameObject().GetComponent <Accessorizer>().GetAccessories())
             {
                 if (accessory.Get() != null)
                 {
                     Duplicants[i].accessories.Add(accessory.Get().slot.Id, accessory.Get().Id);
                 }
             }
         }
         else
         {
             StoredMinionIdentity component = minions[i].GetTargetGameObject().GetComponent <StoredMinionIdentity>();
             Duplicants[i].accessories.Add(Db.Get().AccessorySlots.Eyes.Id, Db.Get().Accessories.Get(component.bodyData.eyes).Id);
             Duplicants[i].accessories.Add(Db.Get().AccessorySlots.Arm.Id, Db.Get().Accessories.Get(component.bodyData.arms).Id);
             Duplicants[i].accessories.Add(Db.Get().AccessorySlots.Body.Id, Db.Get().Accessories.Get(component.bodyData.body).Id);
             Duplicants[i].accessories.Add(Db.Get().AccessorySlots.Hair.Id, Db.Get().Accessories.Get(component.bodyData.hair).Id);
             if (component.bodyData.hat != HashedString.Invalid)
             {
                 Duplicants[i].accessories.Add(Db.Get().AccessorySlots.Hat.Id, Db.Get().Accessories.Get(component.bodyData.hat).Id);
             }
             Duplicants[i].accessories.Add(Db.Get().AccessorySlots.HeadShape.Id, Db.Get().Accessories.Get(component.bodyData.headShape).Id);
             Duplicants[i].accessories.Add(Db.Get().AccessorySlots.Mouth.Id, Db.Get().Accessories.Get(component.bodyData.mouth).Id);
         }
     }
     buildings = new List <Tuple <string, int> >();
     if (buildingCompletes != null)
     {
         foreach (BuildingComplete b in buildingCompletes)
         {
             int num = buildings.FindIndex((Tuple <string, int> match) => (Tag)match.first == b.PrefabID());
             if (num == -1)
             {
                 buildings.Add(new Tuple <string, int>(b.PrefabID().ToString(), 0));
                 num = buildings.Count - 1;
             }
             buildings[num].second++;
         }
     }
     Stats = null;
     Tuple <float, float>[] array   = null;
     Tuple <float, float>[] array2  = null;
     Tuple <float, float>[] array3  = null;
     Tuple <float, float>[] array4  = null;
     Tuple <float, float>[] array5  = null;
     Tuple <float, float>[] array6  = null;
     Tuple <float, float>[] array7  = null;
     Tuple <float, float>[] array8  = null;
     Tuple <float, float>[] array9  = null;
     Tuple <float, float>[] array10 = null;
     Tuple <float, float>[] array11 = null;
     Tuple <float, float>[] array12 = null;
     Tuple <float, float>[] array13 = null;
     Tuple <float, float>[] array14 = null;
     Tuple <float, float>[] array15 = null;
     Tuple <float, float>[] array16 = null;
     if ((Object)ReportManager.Instance != (Object)null)
     {
         array = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int k = 0; k < array.Length; k++)
         {
             array[k] = new Tuple <float, float>((float)ReportManager.Instance.reports[k].day, ReportManager.Instance.reports[k].GetEntry(ReportManager.ReportType.OxygenCreated).accPositive);
         }
         array2 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int l = 0; l < array2.Length; l++)
         {
             array2[l] = new Tuple <float, float>((float)ReportManager.Instance.reports[l].day, ReportManager.Instance.reports[l].GetEntry(ReportManager.ReportType.OxygenCreated).accNegative * -1f);
         }
         array3 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int m = 0; m < array3.Length; m++)
         {
             array3[m] = new Tuple <float, float>((float)ReportManager.Instance.reports[m].day, ReportManager.Instance.reports[m].GetEntry(ReportManager.ReportType.CaloriesCreated).accPositive * 0.001f);
         }
         array4 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int n = 0; n < array4.Length; n++)
         {
             array4[n] = new Tuple <float, float>((float)ReportManager.Instance.reports[n].day, ReportManager.Instance.reports[n].GetEntry(ReportManager.ReportType.CaloriesCreated).accNegative * 0.001f * -1f);
         }
         array5 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int num2 = 0; num2 < array5.Length; num2++)
         {
             array5[num2] = new Tuple <float, float>((float)ReportManager.Instance.reports[num2].day, ReportManager.Instance.reports[num2].GetEntry(ReportManager.ReportType.EnergyCreated).accPositive * 0.001f);
         }
         array6 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int num3 = 0; num3 < array6.Length; num3++)
         {
             array6[num3] = new Tuple <float, float>((float)ReportManager.Instance.reports[num3].day, ReportManager.Instance.reports[num3].GetEntry(ReportManager.ReportType.EnergyWasted).accNegative * -1f * 0.001f);
         }
         array7 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int num4 = 0; num4 < array7.Length; num4++)
         {
             array7[num4] = new Tuple <float, float>((float)ReportManager.Instance.reports[num4].day, ReportManager.Instance.reports[num4].GetEntry(ReportManager.ReportType.WorkTime).accPositive);
         }
         array9 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int num5 = 0; num5 < array7.Length; num5++)
         {
             int   num6 = 0;
             float num7 = 0f;
             ReportManager.ReportEntry entry = ReportManager.Instance.reports[num5].GetEntry(ReportManager.ReportType.WorkTime);
             for (int num8 = 0; num8 < entry.contextEntries.Count; num8++)
             {
                 num6++;
                 num7 += entry.contextEntries[num8].accPositive;
             }
             num7        /= (float)num6;
             num7        /= 600f;
             num7        *= 100f;
             array9[num5] = new Tuple <float, float>((float)ReportManager.Instance.reports[num5].day, num7);
         }
         array8 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int num9 = 0; num9 < array8.Length; num9++)
         {
             array8[num9] = new Tuple <float, float>((float)ReportManager.Instance.reports[num9].day, ReportManager.Instance.reports[num9].GetEntry(ReportManager.ReportType.TravelTime).accPositive);
         }
         array10 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int num10 = 0; num10 < array8.Length; num10++)
         {
             int   num11 = 0;
             float num12 = 0f;
             ReportManager.ReportEntry entry2 = ReportManager.Instance.reports[num10].GetEntry(ReportManager.ReportType.TravelTime);
             for (int num13 = 0; num13 < entry2.contextEntries.Count; num13++)
             {
                 num11++;
                 num12 += entry2.contextEntries[num13].accPositive;
             }
             num12         /= (float)num11;
             num12         /= 600f;
             num12         *= 100f;
             array10[num10] = new Tuple <float, float>((float)ReportManager.Instance.reports[num10].day, num12);
         }
         array11 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int num14 = 0; num14 < array7.Length; num14++)
         {
             array11[num14] = new Tuple <float, float>((float)ReportManager.Instance.reports[num14].day, (float)ReportManager.Instance.reports[num14].GetEntry(ReportManager.ReportType.WorkTime).contextEntries.Count);
         }
         array12 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int num15 = 0; num15 < array12.Length; num15++)
         {
             int   num16 = 0;
             float num17 = 0f;
             ReportManager.ReportEntry entry3 = ReportManager.Instance.reports[num15].GetEntry(ReportManager.ReportType.StressDelta);
             for (int num18 = 0; num18 < entry3.contextEntries.Count; num18++)
             {
                 num16++;
                 num17 += entry3.contextEntries[num18].accPositive;
             }
             array12[num15] = new Tuple <float, float>((float)ReportManager.Instance.reports[num15].day, num17 / (float)num16);
         }
         array13 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int num19 = 0; num19 < array13.Length; num19++)
         {
             int   num20 = 0;
             float num21 = 0f;
             ReportManager.ReportEntry entry4 = ReportManager.Instance.reports[num19].GetEntry(ReportManager.ReportType.StressDelta);
             for (int num22 = 0; num22 < entry4.contextEntries.Count; num22++)
             {
                 num20++;
                 num21 += entry4.contextEntries[num22].accNegative;
             }
             num21         *= -1f;
             array13[num19] = new Tuple <float, float>((float)ReportManager.Instance.reports[num19].day, num21 / (float)num20);
         }
         array14 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int num23 = 0; num23 < array14.Length; num23++)
         {
             array14[num23] = new Tuple <float, float>((float)ReportManager.Instance.reports[num23].day, ReportManager.Instance.reports[num23].GetEntry(ReportManager.ReportType.DomesticatedCritters).accPositive);
         }
         array15 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int num24 = 0; num24 < array15.Length; num24++)
         {
             array15[num24] = new Tuple <float, float>((float)ReportManager.Instance.reports[num24].day, ReportManager.Instance.reports[num24].GetEntry(ReportManager.ReportType.WildCritters).accPositive);
         }
         array16 = new Tuple <float, float> [ReportManager.Instance.reports.Count];
         for (int num25 = 0; num25 < array16.Length; num25++)
         {
             array16[num25] = new Tuple <float, float>((float)ReportManager.Instance.reports[num25].day, ReportManager.Instance.reports[num25].GetEntry(ReportManager.ReportType.RocketsInFlight).accPositive);
         }
         Stats = new RetiredColonyStatistic[16]
         {
             new RetiredColonyStatistic(DataIDs.OxygenProduced, array, UI.RETIRED_COLONY_INFO_SCREEN.STATS.OXYGEN_CREATED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.MASS.KILOGRAM),
             new RetiredColonyStatistic(DataIDs.OxygenConsumed, array2, UI.RETIRED_COLONY_INFO_SCREEN.STATS.OXYGEN_CONSUMED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.MASS.KILOGRAM),
             new RetiredColonyStatistic(DataIDs.CaloriesProduced, array3, UI.RETIRED_COLONY_INFO_SCREEN.STATS.CALORIES_CREATED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.CALORIES.KILOCALORIE),
             new RetiredColonyStatistic(DataIDs.CaloriesRemoved, array4, UI.RETIRED_COLONY_INFO_SCREEN.STATS.CALORIES_CONSUMED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.CALORIES.KILOCALORIE),
             new RetiredColonyStatistic(DataIDs.PowerProduced, array5, UI.RETIRED_COLONY_INFO_SCREEN.STATS.POWER_CREATED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.ELECTRICAL.KILOJOULE),
             new RetiredColonyStatistic(DataIDs.PowerWasted, array6, UI.RETIRED_COLONY_INFO_SCREEN.STATS.POWER_WASTED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.ELECTRICAL.KILOJOULE),
             new RetiredColonyStatistic(DataIDs.WorkTime, array7, UI.RETIRED_COLONY_INFO_SCREEN.STATS.WORK_TIME, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.SECONDS),
             new RetiredColonyStatistic(DataIDs.AverageWorkTime, array9, UI.RETIRED_COLONY_INFO_SCREEN.STATS.AVERAGE_WORK_TIME, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.PERCENT),
             new RetiredColonyStatistic(DataIDs.TravelTime, array8, UI.RETIRED_COLONY_INFO_SCREEN.STATS.TRAVEL_TIME, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.SECONDS),
             new RetiredColonyStatistic(DataIDs.AverageTravelTime, array10, UI.RETIRED_COLONY_INFO_SCREEN.STATS.AVERAGE_TRAVEL_TIME, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.PERCENT),
             new RetiredColonyStatistic(DataIDs.LiveDuplicants, array11, UI.RETIRED_COLONY_INFO_SCREEN.STATS.LIVE_DUPLICANTS, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.DUPLICANTS),
             new RetiredColonyStatistic(DataIDs.RocketsInFlight, array16, UI.RETIRED_COLONY_INFO_SCREEN.STATS.ROCKET_MISSIONS, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.ROCKET_MISSIONS),
             new RetiredColonyStatistic(DataIDs.AverageStressCreated, array12, UI.RETIRED_COLONY_INFO_SCREEN.STATS.AVERAGE_STRESS_CREATED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.PERCENT),
             new RetiredColonyStatistic(DataIDs.AverageStressRemoved, array13, UI.RETIRED_COLONY_INFO_SCREEN.STATS.AVERAGE_STRESS_REMOVED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.PERCENT),
             new RetiredColonyStatistic(DataIDs.DomesticatedCritters, array14, UI.RETIRED_COLONY_INFO_SCREEN.STATS.NUMBER_DOMESTICATED_CRITTERS, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.CRITTERS),
             new RetiredColonyStatistic(DataIDs.WildCritters, array15, UI.RETIRED_COLONY_INFO_SCREEN.STATS.NUMBER_WILD_CRITTERS, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.CRITTERS)
         };
     }
 }
    private void on_click_consumable_info(GameObject widget_go)
    {
        ConsumableConsumer        consumableConsumer        = null;
        IConsumableUIItem         consumableUIItem          = null;
        TableRow                  widgetRow                 = GetWidgetRow(widget_go);
        IAssignableIdentity       identity                  = widgetRow.GetIdentity();
        ConsumableInfoTableColumn consumableInfoTableColumn = GetWidgetColumn(widget_go) as ConsumableInfoTableColumn;

        switch (widgetRow.rowType)
        {
        case TableRow.RowType.Header:
            switch (get_value_consumable_info(null, widget_go))
            {
            case ResultValues.True:
                consumableInfoTableColumn.on_set_action(widget_go, ResultValues.False);
                break;

            case ResultValues.False:
            case ResultValues.Partial:
            case ResultValues.ConditionalGroup:
                consumableInfoTableColumn.on_set_action(widget_go, ResultValues.True);
                break;
            }
            consumableInfoTableColumn.on_load_action(null, widget_go);
            break;

        case TableRow.RowType.Default:
        {
            consumableUIItem = consumableInfoTableColumn.consumable_info;
            bool flag3 = !ConsumerManager.instance.DefaultForbiddenTagsList.Contains(consumableUIItem.ConsumableId.ToTag());
            consumableInfoTableColumn.on_set_action(widget_go, (!flag3) ? ResultValues.True : ResultValues.False);
            break;
        }

        case TableRow.RowType.Minion:
        {
            MinionIdentity minionIdentity = identity as MinionIdentity;
            if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null)
            {
                consumableUIItem   = consumableInfoTableColumn.consumable_info;
                consumableConsumer = minionIdentity.GetComponent <ConsumableConsumer>();
                if ((UnityEngine.Object)consumableConsumer == (UnityEngine.Object)null)
                {
                    Debug.LogError("Could not find minion identity / row associated with the widget");
                }
                else
                {
                    bool flag2 = consumableConsumer.IsPermitted(consumableUIItem.ConsumableId);
                    consumableInfoTableColumn.on_set_action(widget_go, (!flag2) ? ResultValues.True : ResultValues.False);
                }
            }
            break;
        }

        case TableRow.RowType.StoredMinon:
        {
            StoredMinionIdentity storedMinionIdentity = identity as StoredMinionIdentity;
            if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null)
            {
                consumableUIItem = consumableInfoTableColumn.consumable_info;
                bool flag = storedMinionIdentity.IsPermittedToConsume(consumableUIItem.ConsumableId);
                consumableInfoTableColumn.on_set_action(widget_go, (!flag) ? ResultValues.True : ResultValues.False);
            }
            break;
        }
        }
    }
Example #20
0
    private static void CopyMinion(StoredMinionIdentity src_id, MinionIdentity dest_id)
    {
        dest_id.SetName(src_id.storedName);
        dest_id.nameStringKey   = src_id.nameStringKey;
        dest_id.gender          = src_id.gender;
        dest_id.genderStringKey = src_id.genderStringKey;
        dest_id.arrivalTime     = src_id.arrivalTime;
        dest_id.voiceIdx        = src_id.voiceIdx;
        dest_id.bodyData        = src_id.bodyData;
        if (src_id.traitIDs != null)
        {
            Traits component = dest_id.GetComponent <Traits>();
            component.SetTraitIds(src_id.traitIDs);
        }
        if (src_id.accessories != null)
        {
            Accessorizer component2 = dest_id.GetComponent <Accessorizer>();
            component2.SetAccessories(src_id.accessories);
        }
        ConsumableConsumer component3 = dest_id.GetComponent <ConsumableConsumer>();

        if (src_id.forbiddenTags != null)
        {
            component3.forbiddenTags = src_id.forbiddenTags.ToArray();
        }
        if (src_id.MasteryBySkillID != null)
        {
            MinionResume component4 = dest_id.GetComponent <MinionResume>();
            component4.RestoreResume(src_id.MasteryBySkillID, src_id.AptitudeBySkillGroup, src_id.TotalExperienceGained);
            component4.SetHats(src_id.currentHat, src_id.targetHat);
        }
        if (src_id.choreGroupPriorities != null)
        {
            ChoreConsumer component5 = dest_id.GetComponent <ChoreConsumer>();
            component5.SetChoreGroupPriorities(src_id.choreGroupPriorities);
        }
        AttributeLevels component6 = dest_id.GetComponent <AttributeLevels>();

        if (src_id.attributeLevels != null)
        {
            component6.SaveLoadLevels = src_id.attributeLevels.ToArray();
            component6.OnDeserialized();
        }
        dest_id.GetComponent <Accessorizer>().ApplyAccessories();
        dest_id.assignableProxy = new Ref <MinionAssignablesProxy>();
        dest_id.assignableProxy.Set(src_id.assignableProxy.Get());
        dest_id.assignableProxy.Get().SetTarget(dest_id, dest_id.gameObject);
        Equipment equipment = dest_id.GetEquipment();

        foreach (AssignableSlotInstance slot in equipment.Slots)
        {
            Equippable equippable = slot.assignable as Equippable;
            if ((UnityEngine.Object)equippable != (UnityEngine.Object)null)
            {
                equipment.Equip(equippable);
            }
        }
        Schedulable component7 = src_id.GetComponent <Schedulable>();
        Schedule    schedule   = component7.GetSchedule();

        if (schedule != null)
        {
            schedule.Unassign(component7);
            Schedulable component8 = dest_id.GetComponent <Schedulable>();
            schedule.Assign(component8);
        }
    }
Example #21
0
    public void Refresh(string skillID)
    {
        Skill skill = Db.Get().Skills.Get(skillID);

        if (skill == null)
        {
            Debug.LogWarning("DbSkills is missing skillId " + skillID);
        }
        else
        {
            Name.text = skill.Name;
            LocText name = Name;
            name.text    = name.text + "\n(" + Db.Get().SkillGroups.Get(skill.skillGroup).Name + ")";
            this.skillID = skillID;
            tooltip.SetSimpleTooltip(SkillTooltip(skill));
            MinionIdentity       minionIdentity       = skillsScreen.CurrentlySelectedMinion as MinionIdentity;
            StoredMinionIdentity storedMinionIdentity = skillsScreen.CurrentlySelectedMinion as StoredMinionIdentity;
            MinionResume         minionResume         = null;
            if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null)
            {
                minionResume = minionIdentity.GetComponent <MinionResume>();
                MinionResume.SkillMasteryConditions[] skillMasteryConditions = minionResume.GetSkillMasteryConditions(skillID);
                bool flag = minionResume.CanMasterSkill(skillMasteryConditions);
                if (!((UnityEngine.Object)minionResume == (UnityEngine.Object)null) && (minionResume.HasMasteredSkill(skillID) || flag))
                {
                    TitleBarBG.color  = ((!minionResume.HasMasteredSkill(skillID)) ? header_color_can_assign : header_color_has_skill);
                    hatImage.material = defaultMaterial;
                }
                else
                {
                    TitleBarBG.color  = header_color_disabled;
                    hatImage.material = desaturatedMaterial;
                }
            }
            else if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null)
            {
                if (storedMinionIdentity.HasMasteredSkill(skillID))
                {
                    TitleBarBG.color  = header_color_has_skill;
                    hatImage.material = defaultMaterial;
                }
                else
                {
                    TitleBarBG.color  = header_color_disabled;
                    hatImage.material = desaturatedMaterial;
                }
            }
            hatImage.sprite = Assets.GetSprite(skill.badge);
            bool active = false;
            if ((UnityEngine.Object)minionResume != (UnityEngine.Object)null)
            {
                minionResume.AptitudeBySkillGroup.TryGetValue(skill.skillGroup, out float value);
                active = (value > 0f);
            }
            aptitudeBox.SetActive(active);
            traitDisabledIcon.SetActive((UnityEngine.Object)minionResume != (UnityEngine.Object)null && !minionResume.IsAbleToLearnSkill(skill.Id));
            string        text = string.Empty;
            List <string> list = new List <string>();
            foreach (MinionIdentity item in Components.LiveMinionIdentities.Items)
            {
                MinionResume component = item.GetComponent <MinionResume>();
                if ((UnityEngine.Object)component != (UnityEngine.Object)null && component.HasMasteredSkill(skillID))
                {
                    list.Add(component.GetProperName());
                }
            }
            foreach (MinionStorage item2 in Components.MinionStorages.Items)
            {
                foreach (MinionStorage.Info item3 in item2.GetStoredMinionInfo())
                {
                    MinionStorage.Info current3 = item3;
                    if (current3.serializedMinion != null)
                    {
                        StoredMinionIdentity storedMinionIdentity2 = current3.serializedMinion.Get <StoredMinionIdentity>();
                        if ((UnityEngine.Object)storedMinionIdentity2 != (UnityEngine.Object)null && storedMinionIdentity2.HasMasteredSkill(skillID))
                        {
                            list.Add(storedMinionIdentity2.GetProperName());
                        }
                    }
                }
            }
            masteryCount.gameObject.SetActive(list.Count > 0);
            foreach (string item4 in list)
            {
                text = text + "\n    • " + item4;
            }
            masteryCount.SetSimpleTooltip((list.Count <= 0) ? UI.ROLES_SCREEN.WIDGET.NO_MASTERS_TOOLTIP.text : string.Format(UI.ROLES_SCREEN.WIDGET.NUMBER_OF_MASTERS_TOOLTIP, text));
            masteryCount.GetComponentInChildren <LocText>().text = list.Count.ToString();
        }
    }