少年修仙传客户端代码仓库
client_linchunjie
2019-03-26 e005994d32105faa2cccdedfa2de4eaa8223fe0a
System/Equip/EquipModel.cs
@@ -258,12 +258,86 @@
            }
        }
        public void SelectCandidateEquip(string equipGuid)
        public bool HasSamePlaceCandidateEquip(Int2 equipPosition)
        {
            for (int i = 0; i < candidateEquips.Count; i++)
            {
                var candidateEquip = candidateEquips[i];
                candidateEquip.selected.value = candidateEquip.guid == equipGuid;
                var item = packModel.GetItemByGuid(candidateEquips[i].guid);
                if (item != null && item.config.LV == equipPosition.x && item.config.EquipPlace == equipPosition.y)
                {
                    return true;
                }
            }
            return false;
        }
        public void RecommendCandidateEquip(Int2 equipPosition)
        {
            var highestScore = 0;
            var highestScoreEquip = string.Empty;
            for (int i = 0; i < candidateEquips.Count; i++)
            {
                var candidate = candidateEquips[i];
                var item = packModel.GetItemByGuid(candidate.guid);
                if (equipPosition.x == item.config.LV && item.config.EquipPlace == equipPosition.y)
                {
                    if (item.score > highestScore)
                    {
                        highestScore = item.score;
                        highestScoreEquip = candidate.guid;
                    }
                }
            }
            if (!string.IsNullOrEmpty(highestScoreEquip))
            {
                candidateEquips.Sort((CandidateEquip x, CandidateEquip y) =>
                {
                    if (x.guid == highestScoreEquip && y.guid != highestScoreEquip)
                    {
                        return -1;
                    }
                    else if (x.guid != highestScoreEquip && y.guid == highestScoreEquip)
                    {
                        return 1;
                    }
                    else
                    {
                        var betterX = CompareToCurrent(x.guid);
                        var betterY = CompareToCurrent(y.guid);
                        if (betterX > 0 && betterY < 0)
                        {
                            return -1;
                        }
                        else if (betterX < 0 && betterY > 0)
                        {
                            return 1;
                        }
                        else
                        {
                            var a = packModel.GetItemByGuid(x.guid);
                            var b = packModel.GetItemByGuid(y.guid);
                            return -a.score.CompareTo(b.score);
                        }
                    }
                });
            }
            for (int i = 0; i < candidateEquips.Count; i++)
            {
                candidateEquips[i].selected.value = candidateEquips[i].guid == highestScoreEquip;
            }
        }
        public void ClearRecommendCandidateEquip()
        {
            for (int i = 0; i < candidateEquips.Count; i++)
            {
                candidateEquips[i].selected.value = false;
            }
        }