コード例 #1
0
ファイル: HeroView.cs プロジェクト: mengtest/laughing-memory
    private IEnumerator ShowWorker(EWORKER worker)
    {
        List <HeroInfo> show = ListPool <HeroInfo> .Get();

        HeroInfo[] showList = Content_obj.GetComponentsInChildren <HeroInfo>();
        for (int i = 0, count = showList.Length; i < count; ++i)
        {
            showList[i].transform.SetParent(workerGo[(EWORKER)showList[i].Type].transform, false);
        }
        if (workerGo.ContainsKey(worker))
        {
            HeroInfo[] showList2 = workerGo[worker].GetComponentsInChildren <HeroInfo>();
            for (int i = 0, count = showList2.Length; i < count; ++i)
            {
                if (showList2[i].Type == (int)worker)
                {
                    show.Add(showList2[i]);
                }
            }
        }
        else
        {
            foreach (var item in workerGo)
            {
                show.AddRange(item.Value.GetComponentsInChildren <HeroInfo>());
            }
        }
        _sortHero(show);
        int minus = 0;

        for (int i = 0, length = show.Count; i < length; ++i)
        {
            if (!show[i].heroData.UnLock)
            {
                if (!lockobj.gameObject.activeInHierarchy)
                {
                    lockobj.gameObject.SetActive(true);
                }
                lockobj.SetParent(Content_obj.transform, false);
                minus = 1;
            }
            show[i].transform.SetParent(Content_obj.transform, false);
            if (i == length - 1 && lockobj.gameObject.activeInHierarchy && lockobj.parent != Content_obj.transform)
            {
                lockobj.gameObject.SetActive(false);
                minus = 0;
            }
            Show(show[i]);
        }
        ListPool <HeroInfo> .Release(show);

        yield return(new WaitForEndOfFrame());

        int   plus      = lockobj.gameObject.activeInHierarchy ? 1 : 0;
        float maxHeight = (Mathf.CeilToInt((Content_obj.transform.childCount - minus) * 0.5f)) * (gle.spacing.y + gle.cellSize.y) + gle.ignorerSize.y * plus;
        float maxWidth  = (gle.spacing.x + gle.cellSize.x) * 2;

        rt.sizeDelta = new Vector2(maxWidth, maxHeight);
        gle.Execute();
    }
コード例 #2
0
ファイル: HeroView.cs プロジェクト: mengtest/laughing-memory
    private void Listenr(GameObject go)
    {
        if (!imageWorker.ContainsKey(go))
        {
            return;
        }
        EWORKER worker = imageWorker[go];

        ProcessCtrl.Instance.GoCoroutine("ShowWorker", ShowWorker(worker));
    }
コード例 #3
0
ファイル: HeroView.cs プロジェクト: mengtest/laughing-memory
    public override void Awake()
    {
        base.Awake();
        workerGo = new Dictionary <EWORKER, GameObject>
        {
            { EWORKER.Worker_fangyu, Fangyu_obj },
            { EWORKER.Worker_fuzhu, Fuzhu_obj },
            { EWORKER.Worker_gongshou, Gongshou_obj },
            { EWORKER.Worker_shuchu, Shuchu_obj },
            { EWORKER.Worker__moushi, Moushi_obj }
        };

        gle = Content_obj.GetComponent <GridLayerExpand>();

        sr      = ScrollView_obj.GetComponent <ScrollRect>();
        rt      = Content_obj.GetComponent <RectTransform>();
        lockobj = Instantiate(Lock, transform, false).transform;

        HeroData[] allHero = HeroMgr.GetSingleton().Heros;
        //英雄分类
        heroGo = new Dictionary <HeroInfo, Transform>();
        for (int i = allHero.Length - 1; i >= 0; --i)
        {
            EWORKER    worker   = (EWORKER)allHero[i].JsonData.type;
            GameObject info     = Instantiate(HeadInfo, workerGo[worker].transform, false);
            HeroInfo   heroInfo = info.GetComponent <HeroInfo>();
            heroInfo.SetData(allHero[i]);
            EventListener.Get(info).OnClick = e =>
            {
                if (isDrag)
                {
                    return;
                }
                UIFace.GetSingleton().Open(UIID.HeroDetail, heroInfo.heroData.HeroId);
            };
            EventListener.Get(info).BegineDragEvent = e =>
            {
                isDrag = true;
                sr.OnBeginDrag(e);
            };
            EventListener.Get(info).DragEvent = e =>
            {
                sr.OnDrag(e);
            };
            EventListener.Get(info).EndDragEvent = e =>
            {
                isDrag = false;
                sr.OnEndDrag(e);
            };
            heroGo.Add(heroInfo, info.transform);
        }
        foreach (var item in workerGo)
        {
            item.Value.SetActive(false);
        }
        //图片分类
        imageWorker = new Dictionary <GameObject, EWORKER>
        {
            { all_img.gameObject, EWORKER.ALL },
            { shuchu_img.gameObject, EWORKER.Worker_shuchu },
            { fangyu_img.gameObject, EWORKER.Worker_fangyu },
            { gongshou_img.gameObject, EWORKER.Worker_gongshou },
            { fuzhu_img.gameObject, EWORKER.Worker_fuzhu },
            { moushi_img.gameObject, EWORKER.Worker__moushi }
        };

        TriggerListenr();
    }