private FollowerListItem InsertFollowerIntoListView(JamGarrisonFollower follower)
    {
        GarrFollowerRec record = StaticDB.garrFollowerDB.GetRecord(follower.GarrFollowerID);

        if (record == null)
        {
            return(null);
        }
        if (record.GarrFollowerTypeID != 4u)
        {
            return(null);
        }
        if (this.m_isCombatAllyList)
        {
            bool           flag           = (follower.Flags & 8) != 0;
            FollowerStatus followerStatus = GeneralHelpers.GetFollowerStatus(follower);
            if (flag || follower.ZoneSupportSpellID <= 0 || followerStatus == FollowerStatus.inactive || followerStatus == FollowerStatus.fatigued || followerStatus == FollowerStatus.inBuilding)
            {
                return(null);
            }
        }
        GameObject gameObject = Object.Instantiate <GameObject>(this.m_followerListItemPrefab);

        gameObject.get_transform().SetParent(this.m_followerListViewContents.get_transform());
        gameObject.get_transform().set_localScale(Vector3.get_one());
        gameObject.get_transform().set_localPosition(Vector3.get_zero());
        FollowerListItem component = gameObject.GetComponent <FollowerListItem>();

        component.SetFollower(follower);
        AutoHide autoHide = gameObject.AddComponent <AutoHide>();

        autoHide.m_clipRT = base.get_gameObject().GetComponent <RectTransform>();
        return(component);
    }
    private FollowerListItem InsertFollowerIntoListView(JamGarrisonFollower follower)
    {
        GarrFollowerRec record = StaticDB.garrFollowerDB.GetRecord(follower.GarrFollowerID);

        if (record == null)
        {
            return(null);
        }
        if (record.GarrFollowerTypeID != 4u)
        {
            return(null);
        }
        if (this.m_isCombatAllyList)
        {
            bool           flag           = (follower.Flags & 8) != 0;
            FollowerStatus followerStatus = GeneralHelpers.GetFollowerStatus(follower);
            if (flag || follower.ZoneSupportSpellID <= 0 || followerStatus == FollowerStatus.inactive || followerStatus == FollowerStatus.fatigued || followerStatus == FollowerStatus.inBuilding)
            {
                return(null);
            }
        }
        GameObject gameObject = Object.Instantiate <GameObject>(this.m_followerListItemPrefab);

        gameObject.get_transform().SetParent(this.m_followerListViewContents.get_transform(), false);
        FollowerListItem component = gameObject.GetComponent <FollowerListItem>();

        component.SetFollower(follower);
        return(component);
    }
 private void InitFollowerList()
 {
     FollowerListItem[] componentsInChildren = this.m_followerListViewContents.GetComponentsInChildren <FollowerListItem>(true);
     FollowerListItem[] array = componentsInChildren;
     for (int i = 0; i < array.Length; i++)
     {
         FollowerListItem followerListItem = array[i];
         if (!PersistentFollowerData.followerDictionary.ContainsKey(followerListItem.m_followerID))
         {
             followerListItem.get_gameObject().SetActive(false);
             followerListItem.get_transform().SetParent(Main.instance.get_transform());
         }
         else
         {
             JamGarrisonFollower jamGarrisonFollower = PersistentFollowerData.followerDictionary.get_Item(followerListItem.m_followerID);
             bool flag = (jamGarrisonFollower.Flags & 8) != 0;
             if (flag && jamGarrisonFollower.Durability <= 0)
             {
                 followerListItem.get_gameObject().SetActive(false);
                 followerListItem.get_transform().SetParent(Main.instance.get_transform());
             }
             else
             {
                 followerListItem.SetFollower(jamGarrisonFollower);
             }
         }
     }
     this.m_followerListViewContents.get_transform().set_localPosition(new Vector3(this.m_followerListViewContents.get_transform().get_localPosition().x, 0f, this.m_followerListViewContents.get_transform().get_localPosition().z));
     this.SortFollowerListData();
     componentsInChildren = this.m_followerListViewContents.GetComponentsInChildren <FollowerListItem>(true);
     using (List <KeyValuePair <int, JamGarrisonFollower> > .Enumerator enumerator = this.m_sortedFollowerList.GetEnumerator())
     {
         while (enumerator.MoveNext())
         {
             KeyValuePair <int, JamGarrisonFollower> current = enumerator.get_Current();
             bool flag2 = false;
             FollowerListItem[] array2 = componentsInChildren;
             for (int j = 0; j < array2.Length; j++)
             {
                 FollowerListItem followerListItem2 = array2[j];
                 if (followerListItem2.m_followerID == current.get_Value().GarrFollowerID)
                 {
                     flag2 = true;
                     break;
                 }
             }
             if (!flag2)
             {
                 bool flag3 = (current.get_Value().Flags & 8) != 0;
                 if (!flag3 || current.get_Value().Durability > 0)
                 {
                     this.InsertFollowerIntoListView(current.get_Value());
                 }
             }
         }
     }
 }
    private void InsertFollowerIntoListView(JamGarrisonFollower follower, FollowerCategory followerCategory)
    {
        GarrFollowerRec record = StaticDB.garrFollowerDB.GetRecord(follower.GarrFollowerID);

        if (record == null)
        {
            return;
        }
        if (record.GarrFollowerTypeID != 4u)
        {
            return;
        }
        bool           flag           = (follower.Flags & 8) != 0;
        bool           flag2          = !flag;
        FollowerStatus followerStatus = GeneralHelpers.GetFollowerStatus(follower);

        switch (followerCategory)
        {
        case FollowerCategory.ActiveChampion:
            if (!flag2 || followerStatus == FollowerStatus.inactive)
            {
                return;
            }
            break;

        case FollowerCategory.InactiveChampion:
            if (!flag2 || followerStatus != FollowerStatus.inactive)
            {
                return;
            }
            break;

        case FollowerCategory.Troop:
            if (!flag || follower.Durability <= 0)
            {
                return;
            }
            break;

        default:
            return;
        }
        FollowerListItem followerListItem = Object.Instantiate <FollowerListItem>(this.m_followerDetailListItemPrefab);

        followerListItem.get_transform().SetParent(this.m_followerDetailListContent.get_transform(), false);
        followerListItem.SetFollower(follower);
        AutoHide autoHide = followerListItem.m_followerDetailView.get_gameObject().AddComponent <AutoHide>();

        autoHide.m_clipRT = this.m_panelViewRT;
        AutoHide autoHide2 = followerListItem.m_listItemArea.get_gameObject().AddComponent <AutoHide>();

        autoHide2.m_clipRT = this.m_panelViewRT;
    }
    private void InsertFollowerIntoListView(JamGarrisonFollower follower, FollowerCategory followerCategory)
    {
        GarrFollowerRec record = StaticDB.garrFollowerDB.GetRecord(follower.GarrFollowerID);

        if (record == null)
        {
            return;
        }
        if (record.GarrFollowerTypeID != 4u)
        {
            return;
        }
        bool           flag           = (follower.Flags & 8) != 0;
        bool           flag2          = !flag;
        FollowerStatus followerStatus = GeneralHelpers.GetFollowerStatus(follower);

        switch (followerCategory)
        {
        case FollowerCategory.ActiveChampion:
            if (!flag2 || followerStatus == FollowerStatus.inactive)
            {
                return;
            }
            break;

        case FollowerCategory.InactiveChampion:
            if (!flag2 || followerStatus != FollowerStatus.inactive)
            {
                return;
            }
            break;

        case FollowerCategory.Troop:
            if (!flag || follower.Durability <= 0)
            {
                return;
            }
            break;

        default:
            return;
        }
        FollowerListItem followerListItem = Object.Instantiate <FollowerListItem>(this.m_followerDetailListItemPrefab);

        followerListItem.transform.SetParent(this.m_followerDetailListContent.transform, false);
        followerListItem.SetFollower(follower);
    }
 private void SyncVisibleListOrderToSortedFollowerList()
 {
     FollowerListItem[] componentsInChildren = this.m_followerListViewContents.GetComponentsInChildren <FollowerListItem>(true);
     for (int i = 0; i < this.m_sortedFollowerList.get_Count(); i++)
     {
         FollowerListItem[] array = componentsInChildren;
         for (int j = 0; j < array.Length; j++)
         {
             FollowerListItem followerListItem = array[j];
             if (followerListItem.m_followerID == this.m_sortedFollowerList.get_Item(i).get_Value().GarrFollowerID)
             {
                 followerListItem.get_transform().SetSiblingIndex(i);
                 break;
             }
         }
     }
 }
    private void InitFollowerList()
    {
        FollowerListItem[] componentsInChildren = this.m_followerDetailListContent.GetComponentsInChildren <FollowerListItem>(true);
        FollowerListItem[] array = componentsInChildren;
        for (int i = 0; i < array.Length; i++)
        {
            FollowerListItem followerListItem = array[i];
            if (!PersistentFollowerData.followerDictionary.ContainsKey(followerListItem.m_followerID))
            {
                followerListItem.get_gameObject().SetActive(false);
                followerListItem.get_transform().SetParent(Main.instance.get_transform());
            }
            else
            {
                JamGarrisonFollower jamGarrisonFollower = PersistentFollowerData.followerDictionary.get_Item(followerListItem.m_followerID);
                bool flag = (jamGarrisonFollower.Flags & 8) != 0;
                if (flag && jamGarrisonFollower.Durability <= 0)
                {
                    followerListItem.get_gameObject().SetActive(false);
                    followerListItem.get_transform().SetParent(Main.instance.get_transform());
                }
                else
                {
                    followerListItem.SetFollower(jamGarrisonFollower);
                }
            }
        }
        this.SortFollowerListData();
        if (this.m_championsHeader == null)
        {
            this.m_championsHeader = Object.Instantiate <FollowerListHeader>(this.m_followerListHeaderPrefab);
        }
        this.m_championsHeader.get_transform().SetParent(this.m_followerDetailListContent.get_transform(), false);
        this.m_championsHeader.m_title.set_font(GeneralHelpers.LoadStandardFont());
        this.m_championsHeader.m_title.set_text(StaticDB.GetString("CHAMPIONS", null) + ": ");
        int numActiveChampions = GeneralHelpers.GetNumActiveChampions();
        int maxActiveChampions = GeneralHelpers.GetMaxActiveChampions();

        if (numActiveChampions <= maxActiveChampions)
        {
            this.m_championsHeader.m_count.set_text(string.Concat(new object[]
            {
                string.Empty,
                numActiveChampions,
                "/",
                maxActiveChampions
            }));
        }
        else
        {
            this.m_championsHeader.m_count.set_text(string.Concat(new object[]
            {
                "<color=#ff0000ff>",
                numActiveChampions,
                "/",
                maxActiveChampions,
                "</color>"
            }));
        }
        using (List <KeyValuePair <int, JamGarrisonFollower> > .Enumerator enumerator = this.m_sortedFollowerList.GetEnumerator())
        {
            while (enumerator.MoveNext())
            {
                KeyValuePair <int, JamGarrisonFollower> current = enumerator.get_Current();
                bool flag2 = false;
                FollowerListItem[] array2 = componentsInChildren;
                for (int j = 0; j < array2.Length; j++)
                {
                    FollowerListItem followerListItem2 = array2[j];
                    if (followerListItem2.m_followerID == current.get_Value().GarrFollowerID)
                    {
                        flag2 = true;
                        break;
                    }
                }
                if (!flag2)
                {
                    this.InsertFollowerIntoListView(current.get_Value(), FollowerCategory.ActiveChampion);
                }
            }
        }
        int numTroops = GeneralHelpers.GetNumTroops();

        if (this.m_troopsHeader == null)
        {
            this.m_troopsHeader = Object.Instantiate <FollowerListHeader>(this.m_followerListHeaderPrefab);
        }
        this.m_troopsHeader.get_transform().SetParent(this.m_followerDetailListContent.get_transform(), false);
        this.m_troopsHeader.m_title.set_font(GeneralHelpers.LoadStandardFont());
        this.m_troopsHeader.m_title.set_text(StaticDB.GetString("TROOPS", null) + ": ");
        this.m_troopsHeader.m_count.set_font(GeneralHelpers.LoadStandardFont());
        this.m_troopsHeader.m_count.set_text(string.Empty + numTroops);
        using (List <KeyValuePair <int, JamGarrisonFollower> > .Enumerator enumerator2 = this.m_sortedFollowerList.GetEnumerator())
        {
            while (enumerator2.MoveNext())
            {
                KeyValuePair <int, JamGarrisonFollower> current2 = enumerator2.get_Current();
                bool flag3 = false;
                FollowerListItem[] array3 = componentsInChildren;
                for (int k = 0; k < array3.Length; k++)
                {
                    FollowerListItem followerListItem3 = array3[k];
                    if (followerListItem3.m_followerID == current2.get_Value().GarrFollowerID)
                    {
                        flag3 = true;
                        break;
                    }
                }
                if (!flag3)
                {
                    this.InsertFollowerIntoListView(current2.get_Value(), FollowerCategory.Troop);
                }
            }
        }
        int numInactiveChampions = GeneralHelpers.GetNumInactiveChampions();

        if (this.m_inactiveHeader == null)
        {
            this.m_inactiveHeader = Object.Instantiate <FollowerListHeader>(this.m_followerListHeaderPrefab);
        }
        this.m_inactiveHeader.get_transform().SetParent(this.m_followerDetailListContent.get_transform(), false);
        this.m_inactiveHeader.m_title.set_font(GeneralHelpers.LoadStandardFont());
        this.m_inactiveHeader.m_title.set_text(StaticDB.GetString("INACTIVE", null) + ": ");
        this.m_inactiveHeader.m_count.set_font(GeneralHelpers.LoadStandardFont());
        this.m_inactiveHeader.m_count.set_text(string.Empty + numInactiveChampions);
        using (List <KeyValuePair <int, JamGarrisonFollower> > .Enumerator enumerator3 = this.m_sortedFollowerList.GetEnumerator())
        {
            while (enumerator3.MoveNext())
            {
                KeyValuePair <int, JamGarrisonFollower> current3 = enumerator3.get_Current();
                bool flag4 = false;
                FollowerListItem[] array4 = componentsInChildren;
                for (int l = 0; l < array4.Length; l++)
                {
                    FollowerListItem followerListItem4 = array4[l];
                    if (followerListItem4.m_followerID == current3.get_Value().GarrFollowerID)
                    {
                        flag4 = true;
                        break;
                    }
                }
                if (!flag4)
                {
                    this.InsertFollowerIntoListView(current3.get_Value(), FollowerCategory.InactiveChampion);
                }
            }
        }
        this.SyncVisibleListOrderToSortedFollowerList();
        this.m_championsHeader.get_gameObject().SetActive(numActiveChampions > 0);
        this.m_troopsHeader.get_gameObject().SetActive(numTroops > 0);
        this.m_inactiveHeader.get_gameObject().SetActive(numInactiveChampions > 0);
        this.m_championsHeader.get_transform().SetSiblingIndex(0);
        this.m_troopsHeader.get_transform().SetSiblingIndex(numActiveChampions + 1);
        this.m_inactiveHeader.get_transform().SetSiblingIndex(numActiveChampions + numTroops + 2);
    }
    private void DetailFollowerListItem_ManageFollowerDetailViewSize(int garrFollowerID)
    {
        bool flag = garrFollowerID == this.m_followerID && this.m_followerDetailViewLayoutElement.get_minHeight() == 0f;

        if (flag)
        {
            if (this.m_followerDetailView.GetCurrentFollower() != this.m_followerID)
            {
                this.m_followerDetailView.SetFollower(this.m_followerID);
            }
            iTween.StopByName(base.get_gameObject(), "FollowerDetailExpand");
            iTween.StopByName(base.get_gameObject(), "FollowerDetailExpandArrow");
            iTween.StopByName(base.get_gameObject(), "FollowerDetailContract");
            iTween.StopByName(base.get_gameObject(), "FollowerDetailContractArrow");
            this.SelectMe();
            bool  flag2 = false;
            float num   = 0f;
            FollowerListItem[] componentsInChildren = OrderHallFollowersPanel.instance.m_followerDetailListContent.GetComponentsInChildren <FollowerListItem>(true);
            FollowerListItem[] array = componentsInChildren;
            for (int i = 0; i < array.Length; i++)
            {
                FollowerListItem followerListItem = array[i];
                if (followerListItem == this)
                {
                    break;
                }
                if (followerListItem.m_followerDetailViewLayoutElement.get_minHeight() > 0f)
                {
                    num   = followerListItem.m_followerDetailViewLayoutElement.get_minHeight();
                    flag2 = true;
                    break;
                }
            }
            RectTransform component = this.m_followerDetailView.traitsAndAbilitiesRootObject.GetComponent <RectTransform>();
            OrderHallFollowersPanel.instance.ScrollListTo(-base.get_transform().get_localPosition().y - ((!flag2) ? 0f : num) - 56f);
            bool active = true;
            JamGarrisonFollower jamGarrisonFollower = PersistentFollowerData.followerDictionary.get_Item(this.m_followerID);
            int             num2   = (jamGarrisonFollower.ItemLevelWeapon + jamGarrisonFollower.ItemLevelArmor) / 2;
            bool            flag3  = (jamGarrisonFollower.Flags & 8) != 0;
            GarrFollowerRec record = StaticDB.garrFollowerDB.GetRecord(jamGarrisonFollower.GarrFollowerID);
            if (flag3 || jamGarrisonFollower.FollowerLevel < MissionDetailView.GarrisonFollower_GetMaxFollowerLevel((int)record.GarrFollowerTypeID))
            {
                active = false;
            }
            this.m_useArmamentsButton.SetActive(active);
            iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[]
            {
                "name",
                "FollowerDetailExpand",
                "from",
                this.m_followerDetailViewLayoutElement.get_minHeight(),
                "to",
                component.get_rect().get_height() + (float)this.m_followerDetailViewExtraHeight,
                "time",
                0.25f,
                "easetype",
                iTween.EaseType.easeOutCubic,
                "onupdate",
                "SetDetailViewHeight",
                "oncomplete",
                "ExpandDetailViewComplete"
            }));
            iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[]
            {
                "name",
                "FollowerDetailExpandArrow",
                "from",
                0,
                "to",
                -90f,
                "time",
                0.25f,
                "easetype",
                iTween.EaseType.easeOutCubic,
                "onupdate",
                "SetExpandArrowRotation",
                "oncomplete",
                "ExpandArrowRotationComplete"
            }));
            this.m_followerDetailViewCanvasGroup.set_alpha(1f);
        }
        else if (this.m_followerDetailViewLayoutElement.get_minHeight() > 0f)
        {
            iTween.StopByName(base.get_gameObject(), "FollowerDetailExpand");
            iTween.StopByName(base.get_gameObject(), "FollowerDetailExpandArrow");
            iTween.StopByName(base.get_gameObject(), "FollowerDetailContract");
            iTween.StopByName(base.get_gameObject(), "FollowerDetailContractArrow");
            this.DeselectMe();
            iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[]
            {
                "name",
                "FollowerDetailContract",
                "from",
                this.m_followerDetailViewLayoutElement.get_minHeight(),
                "to",
                0f,
                "time",
                0.25f,
                "easetype",
                iTween.EaseType.easeOutCubic,
                "onupdate",
                "SetDetailViewHeight",
                "oncomplete",
                "ContractDetailViewComplete"
            }));
            iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[]
            {
                "name",
                "FollowerDetailContractArrow",
                "from",
                this.m_expandArrow.get_transform().get_localEulerAngles().z,
                "to",
                360f,
                "time",
                0.25f,
                "easetype",
                iTween.EaseType.easeOutCubic,
                "onupdate",
                "SetExpandArrowRotation",
                "oncomplete",
                "ContractArrowRotationComplete"
            }));
        }
    }