BattleMenu.GetItemMenuList C# (CSharp) Method

GetItemMenuList() public method

public GetItemMenuList ( int type, Character, character ) : BattleMenuItem[],
type int
character Character,
return BattleMenuItem[],
    public BattleMenuItem[] GetItemMenuList(int type, Character character)
    {
        BattleMenuItem[] list = new BattleMenuItem[0];
        if(this.addBack && this.backFirst)
        {
            list = ArrayHelper.Add(this.GetBackItem(), list);
        }

        ArrayList items = new ArrayList();
        foreach(int key in GameHandler.Items().Keys)
        {
            if(DataHolder.Item(key).useInBattle &&
                    (this.combineItems || DataHolder.Item(key).itemType == type))
            {
                items.Add(key);
            }
        }
        items.Sort(new ItemNameSorter());
        for(int i=0; i<items.Count; i++)
        {
            int itemID = (int)items[i];
            if(DataHolder.Item(itemID).TargetSelf())
            {
                list = ArrayHelper.Add(new BattleMenuItem(DataHolder.Items().GetContent(itemID), itemID, 0,
                        BattleMenu.ITEM, true, GameHandler.GetItemCount(itemID).ToString(),
                        new BattleAction(AttackSelection.ITEM, character, character.battleID, itemID, 0)), list);
            }
            else if(DataHolder.Item(itemID).TargetNone())
            {
                list = ArrayHelper.Add(new BattleMenuItem(DataHolder.Items().GetContent(itemID), itemID, 0,
                        BattleMenu.ITEM, true, GameHandler.GetItemCount(itemID).ToString(),
                        new BattleAction(AttackSelection.ITEM, character, BattleAction.NONE, itemID, 0)), list);
                list[list.Length-1].action.targetRaycast = DataHolder.Item(itemID).targetRaycast;
            }
            else if(DataHolder.Item(itemID).TargetSingleEnemy() &&
                DataHolder.BattleControl().IsAutoUseOnTarget() &&
                DataHolder.Item(itemID).useRange.InRange(character, DataHolder.BattleControl().partyTarget))
            {
                list = ArrayHelper.Add(new BattleMenuItem(DataHolder.Items().GetContent(itemID), itemID, 0,
                        BattleMenu.ITEM, true, GameHandler.GetItemCount(itemID).ToString(),
                        new BattleAction(AttackSelection.ITEM, character, BattleAction.PARTY_TARGET, itemID, 0)), list);
            }
            else
            {
                list = ArrayHelper.Add(new BattleMenuItem(DataHolder.Items().GetContent(itemID), itemID,
                        BattleMenu.ITEM, true, GameHandler.GetItemCount(itemID).ToString()), list);
            }

        }
        if(this.addBack && !this.backFirst)
        {
            list = ArrayHelper.Add(this.GetBackItem(), list);
        }
        return list;
    }