Esempio n. 1
0
    //英雄选择栏目-更新
    public void UpdateHeroList(short districtID)
    {
        List <HeroObject> heroObjects = new List <HeroObject>();

        foreach (KeyValuePair <int, HeroObject> kvp in gc.heroDic)
        {
            if (kvp.Value.inDistrict == districtID && kvp.Value.adventureInTeam == -1 && kvp.Value.force == 0)
            {
                heroObjects.Add(kvp.Value);
            }
        }

        GameObject go;

        for (int i = 0; i < heroObjects.Count; i++)
        {
            if (i < heroGoPool.Count)
            {
                go = heroGoPool[i];
                heroGoPool[i].transform.GetComponent <RectTransform>().localScale = Vector2.one;
            }
            else
            {
                go = Instantiate(Resources.Load("Prefab/UILabel/Label_HeroInAdventureSend")) as GameObject;
                go.transform.SetParent(list_heroGo.transform);
                heroGoPool.Add(go);
            }
            go.name = "Hero_" + heroObjects[i].id;

            int row = i == 0 ? 0 : (i % 4);
            int col = i == 0 ? 0 : (i / 4);
            go.GetComponent <RectTransform>().anchoredPosition     = new Vector2(4f + row * 154f, -4 + col * -52f);
            go.transform.GetChild(0).GetComponent <Image>().sprite = Resources.Load <Sprite>("Image/RolePic/" + heroObjects[i].pic + "/Pic");
            go.transform.GetChild(1).GetComponent <Text>().text    = heroObjects[i].name;
            bool   canSelect = true;
            string str       = "Lv." + heroObjects[i].level + "<color=#" + DataManager.mHeroDict[heroObjects[i].prototypeID].Color + ">" + DataManager.mHeroDict[heroObjects[i].prototypeID].Name + "</color>\n";
            if (heroObjects[i].workerInBuilding != -1)
            {
                canSelect = false;
                str      += "[" + gc.buildingDic[heroObjects[i].workerInBuilding].name + "工作中]";
            }

            if (heroObjects[i].adventureInTeam != -1)
            {
                if (gc.adventureTeamList[heroObjects[i].adventureInTeam].state != AdventureState.Doing)
                {
                    canSelect = false;
                    str      += "[探险中]";
                }
            }
            go.transform.GetChild(2).GetComponent <Text>().text = str;

            if (canSelect)
            {
                go.transform.GetChild(3).GetComponent <RectTransform>().localScale = Vector2.one;
                if (selectedHeroID.Contains(heroObjects[i].id))
                {
                    go.transform.GetChild(4).GetComponent <RectTransform>().localScale = Vector2.one;
                    int index = selectedHeroID.IndexOf(heroObjects[i].id);
                    switch (index)
                    {
                    case 0:
                        go.transform.GetChild(4).GetComponent <Image>().color           = new Color(51 / 255f, 70 / 255f, 212 / 255f, 1f);
                        go.transform.GetChild(4).GetChild(0).GetComponent <Text>().text = "1";
                        break;

                    case 1:
                        go.transform.GetChild(4).GetComponent <Image>().color           = new Color(212 / 255f, 70 / 255f, 51 / 255f, 1f);
                        go.transform.GetChild(4).GetChild(0).GetComponent <Text>().text = "2";
                        break;

                    case 2:
                        go.transform.GetChild(4).GetComponent <Image>().color           = new Color(51 / 255f, 212 / 255f, 70 / 255f, 1f);
                        go.transform.GetChild(4).GetChild(0).GetComponent <Text>().text = "3";
                        break;
                    }
                }
                else
                {
                    go.transform.GetChild(4).GetComponent <RectTransform>().localScale = Vector2.zero;
                }

                go.GetComponent <Button>().interactable = true;
                go.GetComponent <Button>().onClick.RemoveAllListeners();
                int heroID = heroObjects[i].id;
                go.GetComponent <Button>().onClick.AddListener(delegate() {
                    gc.AdventureTeamSetHero(heroID);
                });
            }
            else
            {
                go.transform.GetChild(3).GetComponent <RectTransform>().localScale = Vector2.zero;
                go.GetComponent <Button>().interactable = false;
            }
        }

        for (int i = heroObjects.Count; i < heroGoPool.Count; i++)
        {
            heroGoPool[i].transform.GetComponent <RectTransform>().localScale = Vector2.zero;
        }
        list_heroGo.transform.GetComponent <RectTransform>().sizeDelta = new Vector2(681f, Mathf.Max(245f, 4 + (heroObjects.Count / 4) * 52f));
    }