示例#1
0
    public void RefreshUI()
    {
        trdLst.Clear();

        List <TaskRewardData> finishedLst = new List <TaskRewardData>();
        List <TaskRewardData> todoLst     = new List <TaskRewardData>();
        List <TaskRewardData> doneLst     = new List <TaskRewardData>();

        //1|0|0
        for (int i = 0; i < pd.taskArr.Length; i++)
        {
            string[]       taskInfo = pd.taskArr[i].Trim().Split('|');
            TaskRewardData trd      = new TaskRewardData {
                ID    = int.Parse(taskInfo[0]),
                prgs  = int.Parse(taskInfo[1]),
                taked = taskInfo[2].Equals("1"),
            };
            TaskRewardCfg trc = resSvc.GetTaskRewardCfg(trd.ID);

            if (trd.prgs == trc.count && !trd.taked)
            {
                finishedLst.Add(trd);
            }
            else if (trd.taked)
            {
                doneLst.Add(trd);
            }
            else
            {
                todoLst.Add(trd);
            }
        }
        trdLst.AddRange(finishedLst);
        trdLst.AddRange(todoLst);
        trdLst.AddRange(doneLst);

        //Item push into pool
        while (ScrollTrans.childCount > 0)
        {
            GameObject go = ScrollTrans.GetChild(ScrollTrans.childCount - 1).gameObject;
            go.SetActive(false);
            go.transform.SetParent(PoolParent);
            StackPool.Add(go);
        }

        //fill the task list
        for (int i = 0; i < trdLst.Count; i++)
        {
            //GameObject go = resSvc.LoadPrefab(PathDefine.TaskItemPrefab);
            GameObject go = StackPool.Get();
            go.transform.SetParent(ScrollTrans);
            go.transform.localPosition = Vector3.zero;
            go.transform.localScale    = Vector3.one;
            go.name = "taskItem_" + i;

            TaskRewardData trd = trdLst[i];
            TaskRewardCfg  trf = resSvc.GetTaskRewardCfg(trd.ID);
            SetText(GetTrans(go.transform, "txtName"), trf.taskName);
            SetText(GetTrans(go.transform, "txtPrg"), trd.prgs + "/" + trf.count);
            SetText(GetTrans(go.transform, "txtExp"), "奖励:    经验" + trf.exp);
            SetText(GetTrans(go.transform, "txtCoin"), "金币" + trf.coin);
            Image imgPrg = GetTrans(go.transform, "prgBar/prgVal").GetComponent <Image>();
            float prgVal = trd.prgs * 1.0f / trf.count;
            imgPrg.fillAmount = prgVal;

            Button btnTake = GetTrans(go.transform, "btnTake").GetComponent <Button>();

            btnTake.onClick.RemoveAllListeners();
            btnTake.onClick.AddListener(() =>
            {
                ClickTakeBtn(go.name);
            });

            Transform transComp = GetTrans(go.transform, "imgComp");
            if (trd.taked)
            {
                btnTake.interactable = false;
                SetActive(transComp);
            }
            else
            {
                SetActive(transComp, false);
                if (trd.prgs == trf.count)
                {
                    btnTake.interactable = true;
                }
                else
                {
                    btnTake.interactable = false;
                }
            }


            go.SetActive(true);
        }
    }