// 보상 셋팅
    public void SetReward(DataPackage package, DataPackageShop shop)
    {
        if (package == null || shop == null)
        {
            return;
        }

        _itemList.ClearItems();
        int start = (int)EPackageRewardType.Main;
        int end   = (int)EPackageRewardType.Bonus;

        for (int i = start; i <= end; i++)
        {
            List <RewardInfo>  infos      = new List <RewardInfo>();
            EPackageRewardType rewardType = (EPackageRewardType)i;
            infos.AddRange(GetPackageInfos(package.GetID(), rewardType, shop));

            if (infos.Count > 0)
            {
                GameObject            slot = _itemList.AddItem(rewardType.ToString());
                UIBaseRewardGroupItem item = slot.GetComponent <UIBaseRewardGroupItem>();
                if (item != null)
                {
                    item.SetRewardGroupItem(infos, rewardType, shop);
                }
            }
        }
        _itemList.OnRepositionDelay();
    }
 // 외부에서 값 받기
 public void SetInfo(DataPackage package, DataPackageShop shop, UIEventMainSlotItemDetail mainSlot, Action <int, GameObject> callBack)
 {
     _labelTitle.text = Localization.Get("UI_LABEL_TITLE_BUY_PACKAGE");
     _labelDesc.text  = shop.GetNAME() + Localization.Get("UI_LABEL_QUESTION_AT_BUY_TYPE1");
     slotDetail.SetData(shop, mainSlot.EndDay, mainSlot.SpanRebuyTime, mainSlot.DateRebuyTime, mainSlot.ImageName, mainSlot.LimitType, mainSlot.BuyCount);
     slotDetail.OnClickCallback = callBack;
     SetReward(package, shop);
 }
    // Get RewardList
    List <RewardInfo> GetPackageInfos(uint id, EPackageRewardType selectType = EPackageRewardType.None, DataPackageShop shop = null)
    {
        List <RewardInfo> infos   = new List <RewardInfo>();
        DataPackage       package = DataPackage.GetByID(id);

        for (int i = 0; i < package.GetREWARD_TYPECount(); i++)
        {
            if (selectType != EPackageRewardType.None && selectType != (EPackageRewardType)package.GetPRICE_TYPE(i))
            {
                continue;
            }

            RewardInfo info = new RewardInfo();
            info.type  = (EGoodsType)package.GetREWARD_TYPE(i);
            info.value = package.GetREWARD_VALUE(i);

            infos.Add(info);
        }

        if (shop != null && selectType == EPackageRewardType.Bonus)
        {
            RewardInfo bonus = ShopHelper.GetMonthlyBonus(shop);
            if (bonus != null)
            {
                RewardInfo searchInfo = infos.Find(x => x.type == bonus.type);
                if (searchInfo != null) // 같은 타입이면 갯수증가
                {
                    searchInfo.AddCount(bonus.GetCount());
                }
                else // 다른 타입이면 리스트 추가
                {
                    infos.Add(bonus);
                }
            }
        }

        return(infos);
    }