Browse Source

竞技场战力计算

zhaoyang 2 years ago
parent
commit
6f4fa06df9

+ 6 - 4
GameClient/Assets/Game/HotUpdate/Data/ArenaDataManager.cs

@@ -344,15 +344,17 @@ namespace GFGGame
             {
             {
                 if (fightDatas[i].type == FightTargetType.PLAYER)
                 if (fightDatas[i].type == FightTargetType.PLAYER)
                 {
                 {
-                    itemSum += GetItemScoreSum(fightDatas[i].itemScoreList);
+                    long itemsScore = GetItemScoreSum(fightDatas[i].itemScoreList);
+                    itemSum += itemsScore;
                     clickScore += GetPerfectClickScore(fightDatas[i]) / (long)ConstScoreSystem.PART_SCORE;
                     clickScore += GetPerfectClickScore(fightDatas[i]) / (long)ConstScoreSystem.PART_SCORE;
-                    skillScore += FightDataManager.Instance.GetSkillFightScore(itemSum, fightDatas[i].baseScore, fightDatas[i].cardId, fightDatas[i].cardScore, fightDatas[i].skillLvs);
+                    skillScore += FightDataManager.Instance.GetSkillFightScore(itemsScore, fightDatas[i].baseScore, fightDatas[i].cardId, fightDatas[i].cardScore, fightDatas[i].skillLvs);
                 }
                 }
                 else
                 else
                 {
                 {
-                    itemSum += GetItemScoreSum(fightDatas[i].itemScoreList);
+                    long itemsScore = GetItemScoreSum(fightDatas[i].itemScoreList);
+                    itemSum += itemsScore;
                     clickScore += GetRobotPerfectClickScore(fightDatas[i]) / (long)ConstScoreSystem.PART_SCORE;
                     clickScore += GetRobotPerfectClickScore(fightDatas[i]) / (long)ConstScoreSystem.PART_SCORE;
-                    skillScore += FightDataManager.Instance.GetSkillFightScore(itemSum, fightDatas[i].baseScore, fightDatas[i].cardId, fightDatas[i].cardScore, fightDatas[i].skillLvs);
+                    skillScore += FightDataManager.Instance.GetSkillFightScore(itemsScore, fightDatas[i].baseScore, fightDatas[i].cardId, fightDatas[i].cardScore, fightDatas[i].skillLvs);
                 }
                 }
             }
             }
             fightScoreDatas.Add(itemSum);
             fightScoreDatas.Add(itemSum);

+ 19 - 4
GameClient/Assets/Game/HotUpdate/Data/FightDataManager.cs

@@ -27,13 +27,25 @@ namespace GFGGame
 
 
         public int GetScore(FightData roleData)
         public int GetScore(FightData roleData)
         {
         {
-            int score = 0;
+            float score = 0;
 
 
             for (int i = 0; i < roleData.itemList.Count; i++)
             for (int i = 0; i < roleData.itemList.Count; i++)
             {
             {
                 score += ItemDataManager.GetItemAdditionScore(roleData.itemList[i], roleData.scoreType, roleData.tags);
                 score += ItemDataManager.GetItemAdditionScore(roleData.itemList[i], roleData.scoreType, roleData.tags);
             }
             }
-            return score;
+            if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
+            {
+                int tagCount = ArenaDataManager.Instance.GetTagsCount(roleData.itemList, roleData.tags); ;
+                tagCount = Math.Min(ArenaTagCfgArray.Instance.dataArray.Length, tagCount);
+                float addition = 0;
+                if (tagCount > 0)
+                {
+                    int additionCfg = ArenaTagCfgArray.Instance.GetCfg(tagCount).addition;
+                    addition = additionCfg / 10000f;
+                }
+                score = score * (1 + addition);
+            }
+            return (int)Math.Ceiling(score);
         }
         }
 
 
         //最终得分
         //最终得分
@@ -164,10 +176,12 @@ namespace GFGGame
         public void SetItemScoreList(FightData _roleData)
         public void SetItemScoreList(FightData _roleData)
         {
         {
             _roleData.itemScoreList.Clear();
             _roleData.itemScoreList.Clear();
+            _roleData.itemScoreDic.Clear();
             for (int i = 0; i < _roleData.itemList.Count; i++)
             for (int i = 0; i < _roleData.itemList.Count; i++)
             {
             {
                 int score = ItemDataManager.GetItemAdditionScore(_roleData.itemList[i], _roleData.scoreType);
                 int score = ItemDataManager.GetItemAdditionScore(_roleData.itemList[i], _roleData.scoreType);
                 _roleData.itemScoreList.Add(score);
                 _roleData.itemScoreList.Add(score);
+                _roleData.itemScoreDic[_roleData.itemList[i]] = score;
             }
             }
         }
         }
 
 
@@ -253,14 +267,15 @@ namespace GFGGame
         {
         {
             // double itemSum = itemScoreSum;
             // double itemSum = itemScoreSum;
             long skillScore = 0;
             long skillScore = 0;
-            long skillBaseScore = (long)itemScoreSum + cardScore + baseScore;
+            float skillBaseScore = (long)itemScoreSum + cardScore + baseScore;
             List<PassivitySkillCfg> skillCfgs = PassivitySkillCfgArray.Instance.GetCfgsBycardId(cardId);
             List<PassivitySkillCfg> skillCfgs = PassivitySkillCfgArray.Instance.GetCfgsBycardId(cardId);
             for (int j = 0; j < skillCfgs.Count; j++)
             for (int j = 0; j < skillCfgs.Count; j++)
             {
             {
                 if (skillLvs.Count == 0) continue;
                 if (skillLvs.Count == 0) continue;
                 PassivitySkillLvlCfg skillLvlCfg = PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLvs[j], skillCfgs[j].skillId);
                 PassivitySkillLvlCfg skillLvlCfg = PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLvs[j], skillCfgs[j].skillId);
                 if (skillLvlCfg == null) continue;
                 if (skillLvlCfg == null) continue;
-                skillScore += skillBaseScore * skillLvlCfg.fightPowerParam / 10000;
+                float _skillScore = skillBaseScore * ((float)skillLvlCfg.fightPowerParam / 10000f);
+                skillScore += (long)Math.Ceiling(_skillScore);
             }
             }
             return skillScore;
             return skillScore;
         }
         }

+ 5 - 4
GameClient/Assets/Game/HotUpdate/Data/ScoreSystemData.cs

@@ -171,15 +171,16 @@ namespace GFGGame
             {
             {
                 partScore += roleData.pardScoreListDic[partId][i];
                 partScore += roleData.pardScoreListDic[partId][i];
                 tagScore += ItemDataManager.GetItemTagScore(partList[i], roleData.tags);
                 tagScore += ItemDataManager.GetItemTagScore(partList[i], roleData.tags);
-                if (ItemDataManager.CheckItemTagsRight(partList[i], roleData.tags)) tagCount++;
+                // if (ItemDataManager.CheckItemTagsRight(partList[i], roleData.tags)) tagCount++;
             }
             }
             if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
             if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
             {
             {
+                tagCount = ArenaDataManager.Instance.GetTagsCount(roleData.itemList, roleData.tags);
                 tagCount = Math.Min(ArenaTagCfgArray.Instance.dataArray.Length, tagCount);
                 tagCount = Math.Min(ArenaTagCfgArray.Instance.dataArray.Length, tagCount);
-                double addition = 0;
+                float addition = 0;
                 if (tagCount > 0)
                 if (tagCount > 0)
                 {
                 {
-                    addition = ArenaTagCfgArray.Instance.GetCfg(tagCount).addition / 10000;
+                    addition = ArenaTagCfgArray.Instance.GetCfg(tagCount).addition / 10000f;
                 }
                 }
                 return (partScore + tagScore) * (1 + addition);
                 return (partScore + tagScore) * (1 + addition);
             }
             }
@@ -193,7 +194,7 @@ namespace GFGGame
             double partBaseScore = robotData.itemScoreList[partId - 1];
             double partBaseScore = robotData.itemScoreList[partId - 1];
             if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
             if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
             {
             {
-                partBaseScore = partBaseScore * (1 + robotData.tagAddition);
+                partBaseScore = partBaseScore * (1 + robotData.tagAddition / 10000f);
             }
             }
             return partBaseScore;
             return partBaseScore;
         }
         }

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Data/VO/FightData.cs

@@ -13,6 +13,7 @@ namespace GFGGame
         public string[] tags = { };////本次战斗要求的标签
         public string[] tags = { };////本次战斗要求的标签
         public List<int> skillLvs = new List<int>();
         public List<int> skillLvs = new List<int>();
         public List<int> itemScoreList = new List<int>();//对应服装当前主题的实际分数
         public List<int> itemScoreList = new List<int>();//对应服装当前主题的实际分数
+        public Dictionary<int, int> itemScoreDic = new Dictionary<int, int>();//对应服装当前主题的实际分数
         public int type = 0;
         public int type = 0;
         /**********************************************玩家独立数据*****************************************/
         /**********************************************玩家独立数据*****************************************/
 
 

+ 2 - 2
GameClient/Assets/Game/HotUpdate/ServerProxy/ArenaSproxy.cs

@@ -425,12 +425,12 @@ namespace GFGGame
             fightData.itemScoreList.Clear();
             fightData.itemScoreList.Clear();
             for (int i = 0; i < robotCfg.partsScoreArr.Length; i++)
             for (int i = 0; i < robotCfg.partsScoreArr.Length; i++)
             {
             {
-                double score = (double)robotCfg.partsScoreArr[i] * (double)robotProto.Randoms[index] / 10000;
+                double score = (double)robotCfg.partsScoreArr[i] * (double)robotProto.Randoms[index] / 10000d;
                 fightData.itemScoreList.Add((int)Math.Ceiling(score));
                 fightData.itemScoreList.Add((int)Math.Ceiling(score));
             }
             }
             fightData.type = FightTargetType.ROBOT;
             fightData.type = FightTargetType.ROBOT;
             fightData.res = robotCfg.targetRes;
             fightData.res = robotCfg.targetRes;
-            double cardScore = (double)robotCfg.cardScore * (double)robotProto.Randoms[index] / 10000;
+            double cardScore = (double)robotCfg.cardScore * (double)robotProto.Randoms[index] / 10000d;
             fightData.cardScore = (int)Math.Ceiling(cardScore);
             fightData.cardScore = (int)Math.Ceiling(cardScore);
             fightData.skillLvs.Add(robotCfg.skillLvs);
             fightData.skillLvs.Add(robotCfg.skillLvs);
             fightData.showSuitId = robotProto.SuitList.Count <= index ? 0 : robotProto.SuitList[index];//上赛季没有穿戴数据
             fightData.showSuitId = robotProto.SuitList.Count <= index ? 0 : robotProto.SuitList[index];//上赛季没有穿戴数据

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/Arena/ArenaDressInfoView.cs

@@ -199,7 +199,7 @@ namespace GFGGame
             item.m_txtTitle.text = itemCfg.name;
             item.m_txtTitle.text = itemCfg.name;
             item.m_ScoreType.url = ResPathUtil.GetScorePath(ArenaDataManager.Instance.ThemeList[_themeIndex]);
             item.m_ScoreType.url = ResPathUtil.GetScorePath(ArenaDataManager.Instance.ThemeList[_themeIndex]);
             item.m_icon.url = ResPathUtil.GetIconPath(itemCfg.res, "png");
             item.m_icon.url = ResPathUtil.GetIconPath(itemCfg.res, "png");
-            item.m_txtScore.text = _roleDatas[_themeIndex].itemScoreList[index].ToString();
+            item.m_txtScore.text = _roleDatas[_themeIndex].itemScoreDic[_itemList[index]].ToString();
             RarityIconController.UpdateRarityIcon(item.m_rarity, _itemList[index], false);
             RarityIconController.UpdateRarityIcon(item.m_rarity, _itemList[index], false);
 
 
             if (item.target.data == null)
             if (item.target.data == null)