Example #1
0
    /// <summary>
    /// 升色方法
    /// </summary>
    /// <param name="v1">兵种</param>
    /// <param name="v2">颜色值</param>
    /// <returns></returns>
    private List <string> UpColor(string v1, string v2)
    {
        List <string> str_list = new List <string>();
        //随机拿到符合要求的武将数据,给品阶和战斗周目数为1
        List <int> heroids = new List <int>();

        for (int i = 0; i < LoadJsonFile.RoleTableDatas.Count; i++) //遍历所有武将
        {
            //判断兵种和稀有度(颜色)
            if (LoadJsonFile.RoleTableDatas[i][3] == v1 && LoadJsonFile.RoleTableDatas[i][4] == v2)
            {
                heroids.Add(i + 1);   //存储符合的英雄id
            }
        }
        int num = heroids.Count;    //符合的英雄总数

        if (num <= 0)
        {
            Debug.Log("///没有符合的升色英雄///");
            return(null);
        }
        str_list = LoadJsonFile.DeepClone <string>(LoadJsonFile.RoleTableDatas[heroids[Random.Range(0, num)] - 1]);
        str_list.Add("1");  //品阶
        str_list.Add("1");  //战斗周目数
        return(str_list);
    }
Example #2
0
    /// <summary>
    /// 保持英雄数据
    /// </summary>
    /// <param name="arrHeroData"></param>
    /// <param name="i"></param>
    private void HoldHeroData(List <string>[] arrHeroData, int i)
    {
        List <string> newHeroData = new List <string>();

        newHeroData  = LoadJsonFile.DeepClone <string>(LoadJsonFile.RoleTableDatas[int.Parse(arrHeroData[i][0]) - 1]); //记录该英雄所有数据
        array_str[i] = newHeroData;
        array_str[i].Add(arrHeroData[i][1]);                                                                           //记录他的品阶
        array_str[i].Add((int.Parse(arrHeroData[i][2]) + 1).ToString());                                               //记录他的参与战斗周目数+1
    }
Example #3
0
    /// <summary>
    /// 放置卡牌
    /// </summary>
    /// <param name="card_parant">父亲位置</param>
    private void PutCardToPos(Transform card_parant, int grade)
    {
        //实例化武将卡牌到备战位,并传递数据过去
        GameObject newheroCard = Instantiate(hero_Card, card_parant);

        newheroCard.transform.position = card_parant.position;
        List <string> newData = LoadJsonFile.DeepClone <string>(LoadJsonFile.RoleTableDatas[heroId - 1]);    //list深拷贝

        newheroCard.GetComponent <HeroDataControll>().HeroData = newData;
        //设置品阶颜色表现和属性
        newheroCard.transform.GetChild(4).GetChild(0).GetComponent <Text>().text = grade.ToString();
        newheroCard.GetComponent <HeroDataControll>().Grade_hero = grade;
        newheroCard.GetComponent <HeroDataControll>().BattleNums = 0;
        if (grade == 1)
        {
            newheroCard.GetComponent <HeroDataControll>().Price_hero = price;
        }
        else
        {
            if (grade == 2)
            {
                newheroCard.GetComponent <HeroDataControll>().Price_hero = price * 2;
            }
            else
            {
                newheroCard.GetComponent <HeroDataControll>().Price_hero = price * 6;
            }
        }
        //设置文字颜色,体现卡牌稀有度
        switch (int.Parse(newheroCard.GetComponent <HeroDataControll>().HeroData[4]))
        {
        case 1:
            //newheroCard.transform.GetChild(0).GetComponent<Text>().color = ColorData.green_Color;  //绿色
            newheroCard.transform.GetChild(0).GetChild(0).GetComponent <Image>().color = ColorData.green_Color;     //绿色
            break;

        case 2:
            //newheroCard.transform.GetChild(0).GetComponent<Text>().color = ColorData.blue_Color_hero; //蓝色
            newheroCard.transform.GetChild(0).GetChild(0).GetComponent <Image>().color = ColorData.blue_Color_hero;    //蓝色
            break;

        case 3:
            //newheroCard.transform.GetChild(0).GetComponent<Text>().color = ColorData.purple_Color; //紫色
            newheroCard.transform.GetChild(0).GetChild(0).GetComponent <Image>().color = ColorData.purple_Color;    //紫色
            break;

        case 4:
            //newheroCard.transform.GetChild(0).GetComponent<Text>().color = ColorData.red_Color_hero;  //红色
            newheroCard.transform.GetChild(0).GetChild(0).GetComponent <Image>().color = ColorData.red_Color_hero;     //红色
            break;
        }
        newheroCard.GetComponent <HeroDataControll>().HeroData[6] = (Mathf.Pow(2, grade - 1) * int.Parse(newheroCard.GetComponent <HeroDataControll>().HeroData[6])).ToString();
        newheroCard.GetComponent <HeroDataControll>().HeroData[8] = (Mathf.Pow(2, grade - 1) * int.Parse(newheroCard.GetComponent <HeroDataControll>().HeroData[8])).ToString();

        newheroCard.GetComponent <HeroDataControll>().ShowThisHeroData();
    }
Example #4
0
    /// <summary>
    /// 升阶方法
    /// </summary>
    /// <param name="v1">所升阶数</param>
    /// <param name="v2">英雄id</param>
    /// <returns></returns>
    private List <string> UpGrade(int v1, int v2)
    {
        //传递武将数据链表尾部依次添加品阶和战斗周目数
        List <string> str_list = new List <string>();

        str_list = LoadJsonFile.DeepClone <string>(LoadJsonFile.RoleTableDatas[v2 - 1]);
        str_list.Add(v1.ToString());
        str_list.Add("1");
        return(str_list);
    }
Example #5
0
    //获取表中英雄的所有数据(暂时弃用)
    private void GetHeroDateFromId(int id)
    {
        heroData.Clear();   //清空上一次所购买的英雄数据
        int heroNums = LoadJsonFile.RoleTableDatas.Count;

        for (int i = 0; i < heroNums; i++)
        {
            if (int.Parse(LoadJsonFile.RoleTableDatas[i][0]) == id)    //通过Id获取当前单元格在第几行
            {
                heroData = LoadJsonFile.DeepClone <string>(LoadJsonFile.RoleTableDatas[i]);
            }
        }
    }
Example #6
0
    //获取羁绊英雄名
    List <string> GetFetterInformationFromId(int id)
    {
        List <string> arr = new List <string>();

        for (int i = 0; i < 46; i++)
        {
            if (int.Parse(LoadJsonFile.FetterTableDates[i][0]) == id)
            {
                arr = LoadJsonFile.DeepClone <string>(LoadJsonFile.FetterTableDates[i]);
            }
        }
        return(arr);
    }
Example #7
0
    //展示武将信息
    public void ShowHeroInformation(GameObject btn)
    {
        GameObject topBar = GameObject.Find("TopInformationBar");

        btnNum = btn.GetComponentInChildren <Text>().text;
        btnTag = int.Parse(btn.name);
        heroId = int.Parse(LoadJsonFile.RandowTableDates[btnTag - 1][0]);   //武将id获取
        GetSpecificValue(heroId);
        List <string>         HeroDate          = LoadJsonFile.DeepClone <string>(LoadJsonFile.RoleTableDatas[heroId - 1]);
        List <List <string> > fetterInformation = new List <List <string> >();
        List <string>         heroIdDate        = new List <string>();
        string heroKindName = GetHeroTypeName(HeroDate[3]);  //获取兵种名

        topBar.GetComponentInChildren <Text>().text = "";
        int heroId_ = heroId;

        heroIdDate.Add(heroId_.ToString());
        fetterInformation = GameObject.Find("FettrrControl").GetComponent <FetterContronl>().init_One(heroIdDate);
        //显示点击英雄的名字  及  阶数(阶数尚未得到)
        topBar.GetComponentsInChildren <Text>()[1].fontSize = HeroDate[1].Length > 2 ? 50 : 70;
        topBar.GetComponentsInChildren <Text>()[1].text     = HeroDate[1] + "\u1500";

        //显示兵种及英雄相关属性
        topBar.GetComponentsInChildren <Text>()[2].text = heroKindName + "\u2000" + "攻击" + HeroDate[6] + "\u2000" + "防御" + HeroDate[7] + "\u2000" + "士兵" + HeroDate[8];
        topBar.GetComponentsInChildren <Text>()[3].text = HeroDate[20];
        //显示羁绊内容
        //if (fetterInformation.Count > 0)
        //{
        //    for (int j = 0; j < fetterInformation.Count; j++)
        //    {
        //        for (int i = 0; i < fetterInformation[j].Count; i++)
        //        {
        //            topBar.GetComponentsInChildren<Text>()[0].text += "[" + fetterInformation[j][1] + "]" + fetterInformation[j][9] + "同时上阵时," + "攻击+" + fetterInformation[j][3] + "%" + "," + "防御+" + fetterInformation[j][4] + "%" + "," + "士兵+" + fetterInformation[j][5] + "%" + "\t";
        //            break;
        //        }
        //    }
        //}
        //else
        //{
        //    topBar.GetComponentInChildren<Text>().text = "\u3000" + "此英雄无羁绊";
        //}
        heroIdDate.Clear();
        fetterInformation.Clear();
        HeroDate.Clear();
    }
Example #8
0
    private void Awake()
    {
        if (instance == null)
        {
            DontDestroyOnLoad(gameObject);//跳转场景等不销毁

            instance = this;
        }
        else
        {
            Destroy(this.gameObject);
        }

        string[] arrStr = tableNameStrs.Split(';');
        if (arrStr.Length > 0)
        {
            JsonDataToSheets(arrStr);   //传递Json文件名进行加载
        }
        else
        {
            Debug.Log("////请检查Json表名");
        }
    }
Example #9
0
    /// <summary>
    /// 接收敌方武将现有的上阵卡牌,进行卡牌变化和传递
    /// </summary>
    /// <param name="arrHeroData">武将数据</param>
    /// <param name="enemyUnits">阵容兵种定位[前排,中排,后排]</param>
    /// <param name="battles">总周目数 - 1</param>
    /// <param name="npcForceIndex">npc势力索引</param>
    /// <returns></returns>
    public List <string>[] SendHeroData(List <string>[] arrHeroData, int[] enemyUnits, int battles, int npcForceIndex)
    {
        if (battles == -1)  //游戏开始第一年
        {
            string[] heroArrs = LoadJsonFile.forcesTableDatas[UIControl.enemy_forces[npcForceIndex] - 1][8].Split(',');
            int      num      = 0;
            //添加新英雄到总英雄数据中
            for (int i = 0; i < 9; i++)
            {
                if (num >= heroArrs.Length)
                {
                    break;
                }
                if (array_str[i] == null)
                {
                    int heroId = (int)float.Parse(heroArrs[i]);  //初始武将id获取
                    //添加新英雄的数据
                    array_str[i] = LoadJsonFile.DeepClone <string>(LoadJsonFile.RoleTableDatas[heroId - 1]);
                    array_str[i].Add("1");  //品阶
                    array_str[i].Add("1");  //战斗周目数
                    num++;
                }
            }
        }
        else
        {
            int heroCount = 0;                           //记录英雄数
            for (int i = 0; i < arrHeroData.Length; i++) //依次处理传过来的九个位置
            {
                if (arrHeroData[i] != null)              //若该位置有英雄
                {
                    heroCount++;
                    switch (arrHeroData[i][1])  //判断英雄的品阶
                    {
                    case "1":
                        switch (LoadJsonFile.RoleTableDatas[int.Parse(arrHeroData[i][0]) - 1][4])                                  //判断稀有度
                        {
                        case "1":                                                                                                  //绿1
                            if (int.Parse(arrHeroData[i][2]) >= int.Parse(LoadJsonFile.difficultyChooseDatas[hardNum - 1][7]))     //判断此卡牌参与的战斗周目
                            {
                                if (GradeOrColor())                                                                                //升阶
                                {
                                    array_str[i] = UpGrade(2, int.Parse(arrHeroData[i][0]));                                       //执行升阶方法传递所需阶值和英雄id
                                }
                                else                                                                                               //升色
                                {
                                    array_str[i] = UpColor(LoadJsonFile.RoleTableDatas[int.Parse(arrHeroData[i][0]) - 1][3], "2"); //执行升色方法传递所需兵种和升色值(稀有度1234)
                                    if (array_str[i] == null)
                                    {
                                        HoldHeroData(arrHeroData, i);                                 //保持英雄数据
                                    }
                                }
                            }
                            else
                            {
                                HoldHeroData(arrHeroData, i);           //保持英雄数据
                            }
                            break;

                        case "2":           //蓝1
                            if (int.Parse(arrHeroData[i][2]) >= int.Parse(LoadJsonFile.difficultyChooseDatas[hardNum - 1][8]))
                            {
                                if (GradeOrColor())                                                                                //升阶
                                {
                                    array_str[i] = UpGrade(2, int.Parse(arrHeroData[i][0]));                                       //执行升阶方法传递所需阶值和英雄id
                                }
                                else                                                                                               //升色
                                {
                                    array_str[i] = UpColor(LoadJsonFile.RoleTableDatas[int.Parse(arrHeroData[i][0]) - 1][3], "3"); //执行升色方法传递所需兵种和升色值(稀有度1234)
                                    if (array_str[i] == null)
                                    {
                                        HoldHeroData(arrHeroData, i);                                 //保持英雄数据
                                    }
                                }
                            }
                            else
                            {
                                HoldHeroData(arrHeroData, i);           //保持英雄数据
                            }
                            break;

                        case "3":           //紫1
                            if (int.Parse(arrHeroData[i][2]) >= int.Parse(LoadJsonFile.difficultyChooseDatas[hardNum - 1][9]))
                            {
                                if (GradeOrColor())                                                                                //升阶
                                {
                                    array_str[i] = UpGrade(2, int.Parse(arrHeroData[i][0]));                                       //执行升阶方法传递所需阶值和英雄id
                                }
                                else                                                                                               //升色
                                {
                                    array_str[i] = UpColor(LoadJsonFile.RoleTableDatas[int.Parse(arrHeroData[i][0]) - 1][3], "4"); //执行升色方法传递所需兵种和升色值(稀有度1234)
                                    if (array_str[i] == null)
                                    {
                                        HoldHeroData(arrHeroData, i);                                 //保持英雄数据
                                    }
                                }
                            }
                            else
                            {
                                HoldHeroData(arrHeroData, i);           //保持英雄数据
                            }
                            break;

                        case "4":           //橙1
                            if (int.Parse(arrHeroData[i][2]) >= int.Parse(LoadJsonFile.difficultyChooseDatas[hardNum - 1][10]))
                            {
                                if (GradeOrColor())                                          //升阶
                                {
                                    array_str[i] = UpGrade(2, int.Parse(arrHeroData[i][0])); //执行升阶方法传递所需阶值和英雄id
                                }
                                else
                                {
                                    HoldHeroData(arrHeroData, i);           //保持英雄数据
                                }
                            }
                            else
                            {
                                HoldHeroData(arrHeroData, i);           //保持英雄数据
                            }
                            break;
                        }
                        break;

                    case "2":
                        switch (LoadJsonFile.RoleTableDatas[int.Parse(arrHeroData[i][0]) - 1][4])                                                 //判断稀有度
                        {
                        case "1":                                                                                                                 //绿2
                            if (int.Parse(arrHeroData[i][2]) >= int.Parse(LoadJsonFile.difficultyChooseDatas[hardNum - 1][11]) && GradeOrColor()) //判断此卡牌参与的战斗周目
                            {
                                //二阶英雄升阶,失败后不用升色
                                {
                                    array_str[i] = UpGrade(3, int.Parse(arrHeroData[i][0]));          //执行升阶方法传递所需阶值和英雄id
                                }
                            }
                            else
                            {
                                HoldHeroData(arrHeroData, i);           //保持英雄数据
                            }
                            break;

                        case "2":           //蓝2
                            if (int.Parse(arrHeroData[i][2]) >= int.Parse(LoadJsonFile.difficultyChooseDatas[hardNum - 1][12]) && GradeOrColor())
                            {
                                //升阶
                                {
                                    array_str[i] = UpGrade(3, int.Parse(arrHeroData[i][0]));          //执行升阶方法传递所需阶值和英雄id
                                }
                            }
                            else
                            {
                                HoldHeroData(arrHeroData, i);           //保持英雄数据
                            }
                            break;

                        case "3":           //紫2
                            if (int.Parse(arrHeroData[i][2]) >= int.Parse(LoadJsonFile.difficultyChooseDatas[hardNum - 1][13]) && GradeOrColor())
                            {
                                //升阶
                                {
                                    array_str[i] = UpGrade(3, int.Parse(arrHeroData[i][0]));          //执行升阶方法传递所需阶值和英雄id
                                }
                            }
                            else
                            {
                                HoldHeroData(arrHeroData, i);           //保持英雄数据
                            }
                            break;

                        case "4":           //橙2
                            if (int.Parse(arrHeroData[i][2]) >= int.Parse(LoadJsonFile.difficultyChooseDatas[hardNum - 1][14]) && GradeOrColor())
                            {
                                //升阶
                                {
                                    array_str[i] = UpGrade(3, int.Parse(arrHeroData[i][0]));          //执行升阶方法传递所需阶值和英雄id
                                }
                            }
                            else
                            {
                                HoldHeroData(arrHeroData, i);           //保持英雄数据
                            }
                            break;
                        }
                        break;

                    case "3":                         //三阶英雄保持数据
                        HoldHeroData(arrHeroData, i); //保持英雄数据
                        break;
                    }
                }
            }

            //更新英雄上阵位置和个数
            if (battles < int.Parse(LoadJsonFile.DifficultyTableDates[1][hardNum + 1]) - 1)
            {
                if (heroCount < arrayBattles[0])
                {
                    //添加英雄
                    AddHeros(enemyUnits, arrayBattles[0] - heroCount);
                }
            }
            else
            {
                if (battles < int.Parse(LoadJsonFile.DifficultyTableDates[2][hardNum + 1]) - 1)
                {
                    if (heroCount < arrayBattles[1])
                    {
                        AddHeros(enemyUnits, arrayBattles[1] - heroCount);
                    }
                }
                else
                {
                    if (battles < int.Parse(LoadJsonFile.DifficultyTableDates[3][hardNum + 1]) - 1)
                    {
                        if (heroCount < arrayBattles[2])
                        {
                            AddHeros(enemyUnits, arrayBattles[2] - heroCount);
                        }
                    }
                    else
                    {
                        if (battles < int.Parse(LoadJsonFile.DifficultyTableDates[4][hardNum + 1]) - 1)
                        {
                            if (heroCount < arrayBattles[3])
                            {
                                AddHeros(enemyUnits, arrayBattles[3] - heroCount);
                            }
                        }
                        else
                        {
                            if (battles < int.Parse(LoadJsonFile.DifficultyTableDates[5][hardNum + 1]) - 1)
                            {
                                if (heroCount < arrayBattles[4])
                                {
                                    AddHeros(enemyUnits, arrayBattles[4] - heroCount);
                                }
                            }
                            else
                            {
                                if (battles < int.Parse(LoadJsonFile.DifficultyTableDates[6][hardNum + 1]) - 1)
                                {
                                    if (heroCount < arrayBattles[5])
                                    {
                                        AddHeros(enemyUnits, arrayBattles[5] - heroCount);
                                    }
                                }
                                else
                                {
                                    if (battles < int.Parse(LoadJsonFile.DifficultyTableDates[7][hardNum + 1]) - 1)
                                    {
                                        if (heroCount < arrayBattles[6])
                                        {
                                            AddHeros(enemyUnits, arrayBattles[6] - heroCount);
                                        }
                                    }
                                    else
                                    {
                                        if (battles < int.Parse(LoadJsonFile.DifficultyTableDates[8][hardNum + 1]) - 1)
                                        {
                                            if (heroCount < arrayBattles[7])
                                            {
                                                AddHeros(enemyUnits, arrayBattles[7] - heroCount);
                                            }
                                        }
                                        else
                                        {
                                            if (battles < int.Parse(LoadJsonFile.DifficultyTableDates[9][hardNum + 1]) - 1)
                                            {
                                                if (heroCount < arrayBattles[8])
                                                {
                                                    AddHeros(enemyUnits, arrayBattles[8] - heroCount);
                                                }
                                            }
                                            else
                                            {
                                                if (heroCount < arrayBattles[9])
                                                {
                                                    AddHeros(enemyUnits, arrayBattles[9] - heroCount);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        return(array_str);
    }
Example #10
0
    //array_str   [0]heroid [3]kind兵种 [4]稀有度
    /// <summary>
    /// 添加敌方英雄卡牌
    /// </summary>
    /// <param name="enemyUnits">兵种类型</param>
    /// <param name="v">添加个数</param>
    private void AddHeros(int[] enemyUnits, int v)
    {
        //记录现有英雄的种类个数
        int[] hero_kindNum = new int[3] {
            0, 0, 0
        };
        //记录所有绿色稀有度英雄id
        List <int> heroIds = new List <int>();
        //记录所有新加英雄的id
        List <int> newheroIds = new List <int>();

        for (int i = 0; i < 9; i++)
        {
            if (array_str[i] != null)
            {
                if (array_str[i][4] == "1")   //判断稀有度是否为1
                {
                    heroIds.Add(int.Parse(array_str[i][0]));
                }
                int bingzhong = int.Parse(array_str[i][3]);
                if (bingzhong == enemyUnits[0])
                {
                    hero_kindNum[0]++;
                }
                else
                {
                    if (bingzhong == enemyUnits[1])
                    {
                        hero_kindNum[1]++;
                    }
                    else
                    {
                        if (bingzhong == enemyUnits[2])
                        {
                            hero_kindNum[2]++;
                        }
                    }
                }
            }
        }
        //添加v个英雄
        for (int i = 0; i < v; i++)
        {
            int id_newHero = 0;
            if (hero_kindNum[0] < 3)
            {
                int index = 0;
                while (true)
                {
                    if (LoadJsonFile.RoleTableDatas[index++][3] == enemyUnits[0].ToString() && LoadJsonFile.RoleTableDatas[index - 1][4] == "1")
                    {
                        break;
                    }
                }
                int id = index;
                do
                {
                    id_newHero = Random.Range(0, 3) + id;
                } while (IsHadThisHero(heroIds, id_newHero));
                newheroIds.Add(id_newHero);
                hero_kindNum[0]++;
                continue;
            }
            if (hero_kindNum[1] < 3)
            {
                int index = 0;
                while (true)
                {
                    if (LoadJsonFile.RoleTableDatas[index++][3] == enemyUnits[1].ToString() && LoadJsonFile.RoleTableDatas[index - 1][4] == "1")
                    {
                        break;
                    }
                }
                int id = index;
                do
                {
                    id_newHero = Random.Range(0, 3) + id;
                } while (IsHadThisHero(heroIds, id_newHero));
                newheroIds.Add(id_newHero);
                hero_kindNum[1]++;
                continue;
            }
            if (hero_kindNum[2] < 3)
            {
                int index = 0;
                while (true)
                {
                    if (LoadJsonFile.RoleTableDatas[index++][3] == enemyUnits[2].ToString() && LoadJsonFile.RoleTableDatas[index - 1][4] == "1")
                    {
                        break;
                    }
                }
                int id = index;
                do
                {
                    id_newHero = Random.Range(0, 3) + id;
                } while (IsHadThisHero(heroIds, id_newHero));
                newheroIds.Add(id_newHero);
                hero_kindNum[2]++;
                continue;
            }
        }
        int num = 0;

        //添加新英雄到总英雄数据中
        for (int i = 0; i < 9; i++)
        {
            if (num >= v)
            {
                break;
            }
            if (array_str[i] == null)
            {
                //添加新英雄的数据
                array_str[i] = LoadJsonFile.DeepClone <string>(LoadJsonFile.RoleTableDatas[newheroIds[num] - 1]);
                array_str[i].Add("1");  //品阶
                array_str[i].Add("1");  //战斗周目数
                num++;
            }
        }
    }