602 坐骑优化-客户端 战马列表实现缓存,避免每次重新排序
| | |
| | | public static List<int> itemsList = new List<int>(); //皮肤道具解锁/升星 |
| | | //坐骑ID,皮肤ID |
| | | public static Dictionary<int, int> horseIDTohorseSkinIDDict = new(); |
| | | //皮肤ID,坐骑ID (反向映射) |
| | | public static Dictionary<int, int> skinIDToHorseIDDict = new(); |
| | | |
| | | protected override void OnConfigParseCompleted() |
| | | { |
| | | |
| | |
| | | if (UnlockWay == 3) |
| | | { |
| | | horseIDTohorseSkinIDDict[UnlockValue] = SkinID; |
| | | skinIDToHorseIDDict[SkinID] = UnlockValue; |
| | | } |
| | | } |
| | | |
| | |
| | | HorseItem item = go.GetComponent<HorseItem>(); |
| | | items.Add(item); |
| | | } |
| | | // 动态获取所有坐骑配置 |
| | | horseConfigs = HorseIDConfig.GetValues(); |
| | | // 按HorseSkinConfig的sortOrder和SkinID排序 |
| | | horseConfigs = horseConfigs.OrderBy(c => |
| | | { |
| | | int skinID = HorseSkinConfig.horseIDTohorseSkinIDDict.TryGetValue(c.HorseID, out var id) ? id : int.MaxValue; |
| | | var skinConfig = HorseSkinConfig.Get(skinID); |
| | | return skinConfig?.sortOrder ?? int.MaxValue; |
| | | }).ThenBy(c => |
| | | { |
| | | return HorseSkinConfig.horseIDTohorseSkinIDDict.TryGetValue(c.HorseID, out var skinID) ? skinID : int.MaxValue; |
| | | }).ToList(); |
| | | // 使用排序缓存 |
| | | horseConfigs = HorseManager.GetSortedHorseConfigs(); |
| | | |
| | | // 获取当前骑乘坐骑的索引 |
| | | int currentHorseID = HorseManager.Instance.horseID; |
| | |
| | | public int quickRankLV;
|
| | | public int defaultSkinID;
|
| | |
|
| | | // 排序后的坐骑配置缓存
|
| | | private static List<HorseIDConfig> sortedHorseConfigs;
|
| | | |
| | | /// <summary>
|
| | | /// 获取排序后的坐骑配置列表(带缓存)
|
| | | /// </summary>
|
| | | public static List<HorseIDConfig> GetSortedHorseConfigs()
|
| | | {
|
| | | if (sortedHorseConfigs == null)
|
| | | {
|
| | | sortedHorseConfigs = HorseIDConfig.GetValues().OrderBy(c =>
|
| | | {
|
| | | int skinID = HorseSkinConfig.horseIDTohorseSkinIDDict.TryGetValue(c.HorseID, out var id) ? id : int.MaxValue;
|
| | | var skinConfig = HorseSkinConfig.Get(skinID);
|
| | | return skinConfig?.sortOrder ?? int.MaxValue;
|
| | | }).ThenBy(c =>
|
| | | {
|
| | | return HorseSkinConfig.horseIDTohorseSkinIDDict.TryGetValue(c.HorseID, out var skinID) ? skinID : int.MaxValue;
|
| | | }).ToList();
|
| | | }
|
| | | return sortedHorseConfigs;
|
| | | }
|
| | |
|
| | |
|
| | | public override void Init()
|
| | | {
|
| | |
| | | if (carouselView != null) |
| | | { |
| | | int currentHorseID = HorseManager.Instance.horseID; |
| | | // 动态获取所有坐骑配置 |
| | | var horseConfigs = HorseIDConfig.GetValues(); |
| | | // 按HorseSkinConfig的sortOrder和SkinID排序 |
| | | horseConfigs = horseConfigs.OrderBy(c => |
| | | { |
| | | int skinID = HorseSkinConfig.horseIDTohorseSkinIDDict.TryGetValue(c.HorseID, out var id) ? id : int.MaxValue; |
| | | var skinConfig = HorseSkinConfig.Get(skinID); |
| | | return skinConfig?.sortOrder ?? int.MaxValue; |
| | | }).ThenBy(c => |
| | | { |
| | | return HorseSkinConfig.horseIDTohorseSkinIDDict.TryGetValue(c.HorseID, out var skinID) ? skinID : int.MaxValue; |
| | | }).ToList(); |
| | | // 使用排序缓存 |
| | | var horseConfigs = HorseManager.GetSortedHorseConfigs(); |
| | | |
| | | int index = horseConfigs.FindIndex(c => c.HorseID == currentHorseID); |
| | | carouselView.InitWithHorse(index >= 0 ? index : 0); |