lcy
14 小时以前 c70f5a26bebf874828342ef69987848cbc352719
533 开服冲榜-客户端 新增3个榜单
7个文件已修改
50个文件已添加
1177 ■■■■■ 已修改文件
Main/System/BillboardRank/RankModel.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/GeneralConfig/DayRemind.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/HomeWin.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSActivityBaseWin.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSActivityBaseWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSActivityManager.cs 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSBeautyMMBaseWin.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSBeautyMMBaseWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSHeroTrainBaseWin.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSHeroTrainBaseWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSMinggeBaseWin.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSMinggeBaseWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankAwardBaseCell.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankAwardBaseCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankAwardBaseWin.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankAwardBaseWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankBaseWin.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankBaseWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankBeautyMMAwardCell.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankBeautyMMAwardCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankBeautyMMAwardWin.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankBeautyMMAwardWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankBeautyMMGiftCell.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankBeautyMMGiftCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankBeautyMMGiftWin.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankBeautyMMGiftWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankBeautyMMWin.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankBeautyMMWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankGiftBaseCell.cs 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankGiftBaseCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankGiftBaseWin.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankGiftBaseWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankHeroTrainAwardCell.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankHeroTrainAwardCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankHeroTrainAwardWin.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankHeroTrainAwardWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankHeroTrainGiftCell.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankHeroTrainGiftCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankHeroTrainGiftWin.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankHeroTrainGiftWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankHeroTrainWin.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankHeroTrainWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankMinggeAwardCell.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankMinggeAwardCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankMinggeAwardWin.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankMinggeAwardWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankMinggeGiftCell.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankMinggeGiftCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankMinggeGiftWin.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankMinggeGiftWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankMinggeWin.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankMinggeWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankTipWin.cs 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OSActivity/OSRankTipWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Redpoint/MainRedDot.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Store/StoreModel.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/EnumHelper.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/BillboardRank/RankModel.cs
@@ -356,6 +356,11 @@
                return Language.Get("Arena15", config.ChapterID, config.LevelNum);
            case 4:
                return cmpValue.ToString();
            case 7:
            case 9:
                return Language.Get("OSActivity19", cmpValue.ToString());
            case 8:
                return Language.Get("L1113", cmpValue.ToString());
        }
        return string.Empty;
    }
@@ -370,6 +375,12 @@
                return Language.Get("RankTypeName_1");
            case 4:
                return Language.Get("OSActivity5");
            case 7:
                return Language.Get("OSActivity16");
            case 8:
                return Language.Get("OSActivity15");
            case 9:
                return Language.Get("OSActivity17");
        }
        return string.Empty;
    }
Main/System/GeneralConfig/DayRemind.cs
@@ -37,6 +37,11 @@
    public const string OSMainLevel = "OSMainLevel"; // 开服主线关卡活动提示红点
    public const string OSGalaChange = "OSGalaChange"; // 开服庆典兑换提示红点
    public const string OSHeroTrain = "OSHeroTrain";
    public const string OSBeautyMM = "OSBeautyMM";
    public const string OSMingge = "OSMingge";
    public Dictionary<string, int[]> dayRemindDic = new Dictionary<string, int[]>();
    public bool GetDayRemind(string _remindKey)
@@ -79,6 +84,9 @@
        SetDayRemind(DJQTip);
        SetDayRemind(OSMainLevel);
        SetDayRemind(OSGalaChange);
        SetDayRemind(OSHeroTrain);
        SetDayRemind(OSBeautyMM);
        SetDayRemind(OSMingge);
    }
    public void SetDayRemind(string _key)
Main/System/Main/HomeWin.cs
@@ -67,7 +67,10 @@
    [SerializeField] Button osMainLevelBtn;
    [SerializeField] Button osHeroCallBtn;
    [SerializeField] Button osGalaBtn;
    [SerializeField] Button osHeroTrainBtn;
    [SerializeField] Button osBeautyMMBtn;
    [SerializeField] TimingGiftCell timingGiftCell;
    [SerializeField] Button osMinggeBtn;
    [SerializeField] TimeRushCell timeRushCell;
    [SerializeField] HeroDebutCell heroDebutCell;
@@ -212,7 +215,18 @@
        {
            UIManager.Instance.OpenWindow<OSGalaBaseWin>();
        });
        osBeautyMMBtn.AddListener(() =>
        {
            UIManager.Instance.OpenWindow<OSBeautyMMBaseWin>();
        });
        osHeroTrainBtn.AddListener(() =>
        {
            UIManager.Instance.OpenWindow<OSHeroTrainBaseWin>();
        });
        osMinggeBtn.AddListener(() =>
        {
            UIManager.Instance.OpenWindow<OSMinggeBaseWin>();
        });
        DailySpecialsBtns.AddListener(() =>
        {
            UIManager.Instance.OpenWindow<DailySpecialsBaseWin>();
@@ -874,6 +888,9 @@
    {
        osMainLevelBtn.SetActive(OSActivityManager.Instance.IsOpened(3));
        osHeroCallBtn.SetActive(OSActivityManager.Instance.IsOpened(4));
        osHeroTrainBtn.SetActive(OSActivityManager.Instance.IsOpened(7));
        osBeautyMMBtn.SetActive(OSActivityManager.Instance.IsOpened(8));
        osMinggeBtn.SetActive(OSActivityManager.Instance.IsOpened(9));
        osGalaBtn.SetActive(OSActivityManager.Instance.IsOpenedOSGala());
    }
Main/System/OSActivity/OSActivityBaseWin.cs
New file
@@ -0,0 +1,43 @@
using UnityEngine;
using UnityEngine.UI;
public abstract class OSActivityBaseWin : FunctionsBaseWin
{
    [SerializeField] protected Button closBtn;
    protected override void InitComponent()
    {
        base.InitComponent();
        if (closBtn != null)
        {
            closBtn.AddListener(CloseWindow);
        }
    }
    // 由子类实现:当前活动的 RankType
    protected abstract int GetRankType();
    // 由子类实现:实例化对应的三个子窗口
    protected abstract UIBase GetRankWin();
    protected abstract UIBase GetAwardWin();
    protected abstract UIBase GetGiftWin();
    protected override void OpenSubUIByTabIndex()
    {
        switch (functionOrder)
        {
            case 0:
                RankModel.Instance.ResetQueryParam();
                RankModel.Instance.QueryRankByPage(GetRankType(), watchID: (int)PlayerDatas.Instance.baseData.PlayerID);
                currentSubUI = GetRankWin();
                break;
            case 1:
                currentSubUI = GetAwardWin();
                break;
            case 2:
                // 如果后续有活动没有礼包页签,只需在子类里返回 null 或不调用即可
                currentSubUI = GetGiftWin();
                break;
        }
    }
}
Main/System/OSActivity/OSActivityBaseWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 39e79ce497558694689712020f566c86
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSActivityManager.cs
@@ -10,14 +10,23 @@
    Dictionary<int, int[]> rankOpenDays = new Dictionary<int, int[]>();  //排行榜类型:【开始开服天, 结束开服天】
    public Dictionary<int, int[][]> mainLevelRankAwards = new Dictionary<int, int[][]>();  //主线关卡名次:奖励
    public Dictionary<int, int[][]> heroCallRankAwards = new Dictionary<int, int[][]>();  //武将招募名次:奖励
    public Dictionary<int, int[][]> beautyMMRankAwards = new Dictionary<int, int[][]>();  //红颜冲榜名次:奖励
    public Dictionary<int, int[][]> heroTrainRankAwards = new Dictionary<int, int[][]>();  //武将冲榜名次:奖励
    public Dictionary<int, int[][]> minggeRankAwards = new Dictionary<int, int[][]>();  //命格冲榜:奖励
    public List<int> osHeroCallGiftSortList = new List<int>();    //开服招募礼包 充值ID + 100000000
    public List<int> osBeautyMMGiftSortList = new List<int>();    //红颜冲榜礼包 充值ID + 100000000
    public List<int> osHeroTrainGiftSortList = new List<int>();    //武将冲榜礼包 充值ID + 100000000
    public List<int> osMinggeGiftSortList = new List<int>();    //命格冲榜礼包 充值ID + 100000000
    //开服榜对应的功能ID
    Dictionary<int, int> rankTypeToFuncID = new Dictionary<int, int>()
    {
        {3, 45},
        {4, 46},
        {7, 59},
        {8, 60},
        {9, 61},
    };
@@ -51,6 +60,11 @@
        rankOpenDays = ConfigParse.ParseIntArrayDict(config.Numerical1);
        mainLevelRankAwards = ConfigParse.ParseIntArray2Dict(config.Numerical2);
        heroCallRankAwards = ConfigParse.ParseIntArray2Dict(config.Numerical3);
        beautyMMRankAwards = ConfigParse.ParseIntArray2Dict(config.Numerical4);
        config = FuncConfigConfig.Get("OSABillboardTrain");
        heroTrainRankAwards = ConfigParse.ParseIntArray2Dict(config.Numerical3);
        minggeRankAwards = ConfigParse.ParseIntArray2Dict(config.Numerical5);
        var list = StoreModel.Instance.storeTypeDict[(int)StoreFunc.OSHeroCall];
        var _list = RechargeManager.Instance.GetCTGIDListByType(18);
@@ -63,6 +77,45 @@
        for (int i = 0; i < _list.Count; i++)
        {
            osHeroCallGiftSortList.Add(_list[i] + 100000000);
        }
        list = StoreModel.Instance.storeTypeDict[(int)StoreFunc.OSBeautyMM];
        _list = RechargeManager.Instance.GetCTGIDListByType(22);
        for (int i = 0; i < list.Count; i++)
        {
            var item = list[i];
            osBeautyMMGiftSortList.Add(item.shopId);
        }
        for (int i = 0; i < _list.Count; i++)
        {
            osBeautyMMGiftSortList.Add(_list[i] + 100000000);
        }
        list = StoreModel.Instance.storeTypeDict[(int)StoreFunc.OSHeroTrain];
        _list = RechargeManager.Instance.GetCTGIDListByType(23);
        for (int i = 0; i < list.Count; i++)
        {
            var item = list[i];
            osHeroTrainGiftSortList.Add(item.shopId);
        }
        for (int i = 0; i < _list.Count; i++)
        {
            osHeroTrainGiftSortList.Add(_list[i] + 100000000);
        }
        list = StoreModel.Instance.storeTypeDict[(int)StoreFunc.OSMingge];
        _list = RechargeManager.Instance.GetCTGIDListByType(24);
        for (int i = 0; i < list.Count; i++)
        {
            var item = list[i];
            osMinggeGiftSortList.Add(item.shopId);
        }
        for (int i = 0; i < _list.Count; i++)
        {
            osMinggeGiftSortList.Add(_list[i] + 100000000);
        }
        ParseOSGalaConfig();
@@ -159,6 +212,9 @@
    public void RefreshGiftSortList()
    {
        osHeroCallGiftSortList.Sort(CmpGift);
        osBeautyMMGiftSortList.Sort(CmpGift);
        osHeroTrainGiftSortList.Sort(CmpGift);
        osMinggeGiftSortList.Sort(CmpGift);
    }
    void RefreshStore()
@@ -169,14 +225,23 @@
    Redpoint osMainLevelRedpoint = new Redpoint(MainRedDot.RedPoint_OSMainLevel);
    Redpoint osHeroCallRedpoint = new Redpoint(MainRedDot.RedPoint_OSHeroCard);
    Redpoint osHeroTrainRedpoint = new Redpoint(MainRedDot.RedPoint_OSHeroTrain);
    Redpoint osBeautyMMRedpoint = new Redpoint(MainRedDot.RedPoint_OSBeautyMM);
    Redpoint osMinggeRedpoint = new Redpoint(MainRedDot.RedPoint_OSMingge);
    public void UpdateRedpoint()
    {
        osMainLevelRedpoint.state = !DayRemind.Instance.GetDayRemind(DayRemind.OSMainLevel) ? RedPointState.Simple : RedPointState.None;
        osGalaRedpoint2.state = !DayRemind.Instance.GetDayRemind(DayRemind.OSGalaChange) ? RedPointState.Simple : RedPointState.None;
        osHeroTrainRedpoint.state = !DayRemind.Instance.GetDayRemind(DayRemind.OSMainLevel) ? RedPointState.Simple : RedPointState.None;
        osBeautyMMRedpoint.state = !DayRemind.Instance.GetDayRemind(DayRemind.OSMainLevel) ? RedPointState.Simple : RedPointState.None;
        osMinggeRedpoint.state = !DayRemind.Instance.GetDayRemind(DayRemind.OSMainLevel) ? RedPointState.Simple : RedPointState.None;
        osHeroCallRedpoint.state = RedPointState.None;
        osGalaRedpoint3.state = RedPointState.None;
        osHeroTrainRedpoint.state = RedPointState.None;
        osBeautyMMRedpoint.state = RedPointState.None;
        osMinggeRedpoint.state = RedPointState.None;
        if (StoreModel.Instance.freeShopDict.Count == 0) return;
@@ -211,6 +276,52 @@
                }
            }
        }
        if (StoreModel.Instance.freeShopDict.ContainsKey((int)StoreFunc.OSHeroTrain) && IsOpened(7, false))
        {
            var shopList = StoreModel.Instance.freeShopDict[(int)StoreFunc.OSHeroTrain];
            for (int i = 0; i < shopList.Count; i++)
            {
                var shopID = shopList[i];
                var config = StoreConfig.Get(shopID);
                if (StoreModel.Instance.GetShopLimitBuyCount(shopID) < config.LimitCnt)
                {
                    osHeroTrainRedpoint.state = RedPointState.Simple;
                    break;
                }
            }
        }
        if (StoreModel.Instance.freeShopDict.ContainsKey((int)StoreFunc.OSBeautyMM) && IsOpened(8, false))
        {
            var shopList = StoreModel.Instance.freeShopDict[(int)StoreFunc.OSBeautyMM];
            for (int i = 0; i < shopList.Count; i++)
            {
                var shopID = shopList[i];
                var config = StoreConfig.Get(shopID);
                if (StoreModel.Instance.GetShopLimitBuyCount(shopID) < config.LimitCnt)
                {
                    osBeautyMMRedpoint.state = RedPointState.Simple;
                    break;
                }
            }
        }
        if (StoreModel.Instance.freeShopDict.ContainsKey((int)StoreFunc.OSMingge) && IsOpened(9, false))
        {
            var shopList = StoreModel.Instance.freeShopDict[(int)StoreFunc.OSMingge];
            for (int i = 0; i < shopList.Count; i++)
            {
                var shopID = shopList[i];
                var config = StoreConfig.Get(shopID);
                if (StoreModel.Instance.GetShopLimitBuyCount(shopID) < config.LimitCnt)
                {
                    osMinggeRedpoint.state = RedPointState.Simple;
                    break;
                }
            }
        }
    }
    private void FuncStateChange(int funcId)
@@ -219,6 +330,9 @@
        {
            case FuncOpenEnum.OSMainLevl:
            case FuncOpenEnum.OSHeroCall:
            case FuncOpenEnum.OSHeroTrain:
            case FuncOpenEnum.OSBeautyMM:
            case FuncOpenEnum.OSMingge:
                UpdateRedpoint();
                break;
        }
Main/System/OSActivity/OSBeautyMMBaseWin.cs
New file
@@ -0,0 +1,15 @@
using UnityEngine;
using UnityEngine.UI;
// 开服活动-红颜冲刺活动
public class OSBeautyMMBaseWin : OSActivityBaseWin
{
    // 红颜冲榜对应的 RankType 为 8
    protected override int GetRankType() => 8;
    protected override UIBase GetRankWin() => UIManager.Instance.OpenWindow<OSRankBeautyMMWin>(8);
    protected override UIBase GetAwardWin() => UIManager.Instance.OpenWindow<OSRankBeautyMMAwardWin>();
    protected override UIBase GetGiftWin() => UIManager.Instance.OpenWindow<OSRankBeautyMMGiftWin>();
}
Main/System/OSActivity/OSBeautyMMBaseWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5a76a8ddc6f4ac048970693981c9e681
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSHeroTrainBaseWin.cs
New file
@@ -0,0 +1,14 @@
using UnityEngine;
using UnityEngine.UI;
// 开服活动-武将冲榜主界面
public class OSHeroTrainBaseWin : OSActivityBaseWin
{
    protected override int GetRankType() => 7;
    protected override UIBase GetRankWin() => UIManager.Instance.OpenWindow<OSRankHeroTrainWin>(7);
    protected override UIBase GetAwardWin() => UIManager.Instance.OpenWindow<OSRankHeroTrainAwardWin>();
    protected override UIBase GetGiftWin() => UIManager.Instance.OpenWindow<OSRankHeroTrainGiftWin>();
}
Main/System/OSActivity/OSHeroTrainBaseWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 62c2161f6d4221e48aa134a1916f92e4
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSMinggeBaseWin.cs
New file
@@ -0,0 +1,14 @@
using UnityEngine;
using UnityEngine.UI;
// 开服活动-命格冲榜主界面
public class OSMinggeBaseWin : OSActivityBaseWin
{
    protected override int GetRankType() => 9;
    protected override UIBase GetRankWin() => UIManager.Instance.OpenWindow<OSRankMinggeWin>(9);
    protected override UIBase GetAwardWin() => UIManager.Instance.OpenWindow<OSRankMinggeAwardWin>();
    protected override UIBase GetGiftWin() => UIManager.Instance.OpenWindow<OSRankMinggeGiftWin>();
}
Main/System/OSActivity/OSMinggeBaseWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d9768976d78a97e41b67c00ea082085c
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankAwardBaseCell.cs
New file
@@ -0,0 +1,63 @@
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
public abstract class OSRankAwardBaseCell : CellView
{
    [SerializeField] protected Text rankText;
    [SerializeField] protected Image rankImg;
    [SerializeField] protected ItemCell[] itemCells;
    // 由子类提供当前界面对应的奖励字典数据
    protected abstract Dictionary<int, int[][]> GetRankAwards();
    public void Display(int index)
    {
        var rankAwards = GetRankAwards();
        var rank = index + 1;
        if (index < 3)
        {
            rankImg.SetActive(true);
            rankText.SetActive(false);
            rankImg.SetSprite($"Rank{index + 1}");
        }
        else
        {
            rankImg.SetActive(false);
            rankText.SetActive(true);
            var keys = rankAwards.Keys.ToList();
            keys.Sort();
            var startRank = keys[index - 1] + 1;
            var endRank = keys[index];
            rank = endRank;
            if (startRank == endRank)
            {
                rankText.text = startRank.ToString();
            }
            else
            {
                rankText.text = startRank + "-" + endRank;
            }
        }
        var award = rankAwards[rank];
        for (int i = 0; i < itemCells.Length; i++)
        {
            var itemCell = itemCells[i];
            if (i < award.Length)
            {
                itemCell.SetActive(true);
                int itemID = award[i][0];
                itemCell.Init(new ItemCellModel(itemID, true, award[i][1]));
                itemCell.button.SetListener(() => ItemTipUtility.Show(itemID));
            }
            else
            {
                itemCell.SetActive(false);
            }
        }
    }
}
Main/System/OSActivity/OSRankAwardBaseCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5c40df973d5ace349ade9c111bb96722
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankAwardBaseWin.cs
New file
@@ -0,0 +1,56 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public abstract class OSRankAwardBaseWin : UIBase
{
    [SerializeField] protected ScrollerController scrollerController;
    [SerializeField] protected Text myRankText;
    [SerializeField] protected Text myRankValueText;
    protected override void OnPreOpen()
    {
        scrollerController.OnRefreshCell += OnRefreshCell;
        CreateScroller();
        DisplayMyRank(GetRankType());
    }
    protected override void OnPreClose()
    {
        scrollerController.OnRefreshCell -= OnRefreshCell;
    }
    // 由子类实现:当前界面的排名类型 (例如 4 是招募榜, 8 是红颜榜)
    protected abstract int GetRankType();
    // 由子类实现:当前界面的奖励 Keys 集合
    protected abstract ICollection<int> GetAwardKeys();
    // 由子类实现:绑定对应的 Cell
    protected abstract void OnRefreshCell(ScrollerDataType type, CellView cell);
    protected void CreateScroller()
    {
        var keys = GetAwardKeys();
        scrollerController.Refresh();
        int count = keys == null ? 0 : keys.Count;
        for (int i = 0; i < count; i++)
        {
            scrollerController.AddCell(ScrollerDataType.Header, i);
        }
        scrollerController.Restart();
    }
    public void DisplayMyRank(int rankType)
    {
        RankData rankData = RankModel.Instance.GetMyRank(rankType);
        if (rankData == null)
        {
            myRankText.text = Language.Get("L1045");
            myRankValueText.text = "";
            return;
        }
        int rank = rankData.rank;
        myRankValueText.text = RankModel.Instance.GetCmpValueStr(rankType, rankData.cmpValue);
        myRankText.text = Language.Get("L1126") + Language.Get("L1096") + rank.ToString();
    }
}
Main/System/OSActivity/OSRankAwardBaseWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 01d872416a4fa8b45a660c56ed4c759f
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankBaseWin.cs
New file
@@ -0,0 +1,42 @@
using UnityEngine;
using UnityEngine.UI;
public abstract class OSRankBaseWin : PlayerRankWin
{
    [SerializeField] protected Text timeText;
    [SerializeField] protected Text overTimeText;
    protected override void OnPreOpen()
    {
        base.OnPreOpen();
        GlobalTimeEvent.Instance.secondEvent += OnSecond;
        ShowTime();
    }
    protected void ShowTime()
    {
        var seconds = OSActivityManager.Instance.GetEndTime(rankType);
        if (seconds > 0)
        {
            timeText.SetActive(true);
            overTimeText.SetActive(false);
            timeText.text = TimeUtility.SecondsToShortDHMS(seconds);
        }
        else
        {
            timeText.SetActive(false);
            overTimeText.SetActive(true);
        }
    }
    protected override void OnPreClose()
    {
        base.OnPreClose();
        GlobalTimeEvent.Instance.secondEvent -= OnSecond;
    }
    protected void OnSecond()
    {
        ShowTime();
    }
}
Main/System/OSActivity/OSRankBaseWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3c869a53bb8b01141823913926a5b2b9
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankBeautyMMAwardCell.cs
New file
@@ -0,0 +1,12 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class OSRankBeautyMMAwardCell : OSRankAwardBaseCell
{
    // 返回红颜冲榜专属的奖励字典,供基类渲染
    protected override Dictionary<int, int[][]> GetRankAwards()
    {
        return OSActivityManager.Instance.beautyMMRankAwards;
    }
}
Main/System/OSActivity/OSRankBeautyMMAwardCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 647885ec6817f1342867bca550f5f5dc
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankBeautyMMAwardWin.cs
New file
@@ -0,0 +1,18 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
// 开服活动-红颜冲榜排行奖励
public class OSRankBeautyMMAwardWin : OSRankAwardBaseWin
{
    protected override int GetRankType() => 8; // 8对应红颜冲榜
    // 提供红颜榜的奖励字典 Key
    protected override ICollection<int> GetAwardKeys() => OSActivityManager.Instance.beautyMMRankAwards.Keys;
    protected override void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell.GetComponent<OSRankBeautyMMAwardCell>();
        _cell.Display(cell.index);
    }
}
Main/System/OSActivity/OSRankBeautyMMAwardWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e232ad2734808eb408390dd9059e49c9
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankBeautyMMGiftCell.cs
New file
@@ -0,0 +1,11 @@
using UnityEngine;
using UnityEngine.UI;
public class OSRankBeautyMMGiftCell : OSRankGiftBaseCell
{
    // 从 Manager 获取当前 Index 对应的红颜礼包 ID
    protected override int GetGiftId(int index) => OSActivityManager.Instance.osBeautyMMGiftSortList[index];
    // 供基类验证活动是否过期时使用,红颜冲榜对应的 RankType 为 8
    protected override int GetActivityFuncId() => 8;
}
Main/System/OSActivity/OSRankBeautyMMGiftCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f90bbd7114f1139429d631eed6cab562
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankBeautyMMGiftWin.cs
New file
@@ -0,0 +1,19 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
// 开服活动-红颜冲刺礼包
public class OSRankBeautyMMGiftWin : OSRankGiftBaseWin
{
    // 调用 Manager 刷新礼包排序
    protected override void RefreshManagerSortList() => OSActivityManager.Instance.RefreshGiftSortList();
    // 提供红颜冲刺专用的礼包列表
    protected override IList<int> GetGiftSortList() => OSActivityManager.Instance.osBeautyMMGiftSortList;
    protected override void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell as OSRankBeautyMMGiftCell;
        _cell.Display(cell.index);
    }
}
Main/System/OSActivity/OSRankBeautyMMGiftWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d22a6513bbd196d41bffe0cfce5efd6c
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankBeautyMMWin.cs
New file
@@ -0,0 +1,8 @@
using UnityEngine;
using UnityEngine.UI;
// 开服活动-红颜冲刺排行榜
public class OSRankBeautyMMWin : OSRankBaseWin
{
}
Main/System/OSActivity/OSRankBeautyMMWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 482be961781f5cc44959db7fa28e59cf
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankGiftBaseCell.cs
New file
@@ -0,0 +1,138 @@
using UnityEngine;
using UnityEngine.UI;
public abstract class OSRankGiftBaseCell : CellView
{
    [SerializeField] protected Text nameText;
    [SerializeField] protected ItemCell[] itemCells;
    [SerializeField] protected Button buyBtn;
    [SerializeField] protected Text moneyText;
    [SerializeField] protected Image moneyIcon;
    [SerializeField] protected Transform saleOutRect;
    [SerializeField] protected Image redImg;
    [SerializeField] protected Text buyLimitText;
    [SerializeField] protected Image maskImg;
    // 由子类实现:获取礼包ID
    protected abstract int GetGiftId(int index);
    // 由子类实现:获取验证活动是否结束所需的活动FuncID
    protected abstract int GetActivityFuncId();
    public void Display(int index)
    {
        var id = GetGiftId(index);
        if (id > 100000000)
        {
            // 充值礼包
            id -= 100000000;
            var ctgConfig = CTGConfig.Get(id);
            nameText.text = ctgConfig.Title;
            for (int i = 0; i < itemCells.Length; i++)
            {
                var itemCell = itemCells[i];
                if (i < ctgConfig.GainItemList.Length)
                {
                    itemCell.SetActive(true);
                    int itemID = ctgConfig.GainItemList[i][0];
                    itemCell.Init(new ItemCellModel(itemID, true, ctgConfig.GainItemList[i][1]));
                    itemCell.button.SetListener(() => ItemTipUtility.Show(itemID));
                }
                else
                {
                    itemCell.SetActive(false);
                }
            }
            RechargeManager.Instance.TryGetRechargeCount(id, out var rechargeCount);
            var limitCnt = ctgConfig.DailyBuyCount;
            if (rechargeCount.todayCount < limitCnt)
            {
                saleOutRect.SetActive(false);
                maskImg.SetActive(false);
                buyBtn.SetActive(true);
                buyBtn.SetListener(() =>
                {
                    if (!OSActivityManager.Instance.IsOpened(GetActivityFuncId(), false))
                    {
                        SysNotifyMgr.Instance.ShowTip("ActivityOver");
                        return;
                    }
                    RechargeManager.Instance.CTG(id);
                });
                RechargeManager.Instance.TryGetOrderInfo(id, out var orderInfo);
                moneyText.text = Language.Get("PayMoneyNum", UIHelper.GetMoneyFormat(orderInfo.PayRMBNumOnSale));
                moneyIcon.SetActive(false);
            }
            else
            {
                saleOutRect.SetActive(true);
                maskImg.SetActive(true);
                buyBtn.SetActive(false);
            }
            buyLimitText.text = Language.Get("storename6", limitCnt - rechargeCount.todayCount, limitCnt);
            redImg.SetActive(false);
        }
        else
        {
            // 商店物品
            var storeConfig = StoreConfig.Get(id);
            nameText.text = storeConfig.Name;
            var awards = StoreModel.Instance.GetShopItemlistEx(storeConfig);
            for (int i = 0; i < itemCells.Length; i++)
            {
                var itemCell = itemCells[i];
                if (i < awards.Count)
                {
                    itemCell.SetActive(true);
                    int itemID = awards[i][0];
                    itemCell.Init(new ItemCellModel(itemID, true, awards[i][1]));
                    itemCell.button.SetListener(() => ItemTipUtility.Show(itemID));
                }
                else
                {
                    itemCell.SetActive(false);
                }
            }
            var state = StoreModel.Instance.GetShopIDState(id);
            if (state == 1)
            {
                saleOutRect.SetActive(true);
                maskImg.SetActive(true);
                buyBtn.SetActive(false);
                redImg.SetActive(false);
            }
            else
            {
                saleOutRect.SetActive(false);
                maskImg.SetActive(false);
                buyBtn.SetActive(true);
                buyBtn.SetListener(() =>
                {
                    if (!OSActivityManager.Instance.IsOpened(GetActivityFuncId(), false))
                    {
                        SysNotifyMgr.Instance.ShowTip("ActivityOver");
                        return;
                    }
                    StoreModel.Instance.SendBuyShopItemWithPopCheck(storeConfig, 1);
                });
                moneyText.text = storeConfig.MoneyNum == 0 ? Language.Get("L1127") : storeConfig.MoneyNum.ToString();
                moneyIcon.SetActive(storeConfig.MoneyNum != 0);
                if (storeConfig.MoneyType <= 0)
                {
                    moneyIcon.SetItemSprite(storeConfig.CostItemID);
                }
                else
                {
                    moneyIcon.SetIconWithMoneyType(storeConfig.MoneyType);
                }
                redImg.SetActive(storeConfig.MoneyNum == 0);
            }
            var buyCnt = StoreModel.Instance.GetShopLimitBuyCount(id);
            buyLimitText.text = Language.Get("storename6", storeConfig.LimitCnt - buyCnt, storeConfig.LimitCnt);
        }
    }
}
Main/System/OSActivity/OSRankGiftBaseCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8fbb7021663b5294594aac0a985165da
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankGiftBaseWin.cs
New file
@@ -0,0 +1,48 @@
using System.Collections.Generic;
using UnityEngine;
public abstract class OSRankGiftBaseWin : UIBase
{
    [SerializeField] protected ScrollerController scrollerController;
    protected override void OnPreOpen()
    {
        scrollerController.OnRefreshCell += OnRefreshCell;
        StoreModel.Instance.RefreshBuyShopLimitEvent += RefreshStore;
        RechargeManager.Instance.rechargeCountEvent += OnRechargeCountEvent;
        RefreshManagerSortList();
        Display();
    }
    protected override void OnPreClose()
    {
        scrollerController.OnRefreshCell -= OnRefreshCell;
        StoreModel.Instance.RefreshBuyShopLimitEvent -= RefreshStore;
        RechargeManager.Instance.rechargeCountEvent -= OnRechargeCountEvent;
    }
    protected abstract void RefreshManagerSortList();
    protected abstract IList<int> GetGiftSortList();
    protected abstract void OnRefreshCell(ScrollerDataType type, CellView cell);
    protected void Display()
    {
        scrollerController.Refresh();
        var list = GetGiftSortList();
        for (int i = 0; i < list.Count; i++)
        {
            scrollerController.AddCell(ScrollerDataType.Header, i);
        }
        scrollerController.Restart();
    }
    protected void RefreshStore()
    {
        scrollerController.m_Scorller.RefreshActiveCellViews();
    }
    protected void OnRechargeCountEvent(int id)
    {
        scrollerController.m_Scorller.RefreshActiveCellViews();
    }
}
Main/System/OSActivity/OSRankGiftBaseWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 86879ba6d3ff65a41b612365b69eae6e
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankHeroTrainAwardCell.cs
New file
@@ -0,0 +1,10 @@
using System.Collections.Generic;
using UnityEngine;
public class OSRankHeroTrainAwardCell : OSRankAwardBaseCell
{
    protected override Dictionary<int, int[][]> GetRankAwards()
    {
        return OSActivityManager.Instance.heroTrainRankAwards;
    }
}
Main/System/OSActivity/OSRankHeroTrainAwardCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5cc407297dbf0a049bc7572140a7fc37
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankHeroTrainAwardWin.cs
New file
@@ -0,0 +1,16 @@
using System.Collections.Generic;
using UnityEngine;
// 开服活动-武将冲榜 排行奖励
public class OSRankHeroTrainAwardWin : OSRankAwardBaseWin
{
    protected override int GetRankType() => 7;
    protected override ICollection<int> GetAwardKeys() => OSActivityManager.Instance.heroTrainRankAwards.Keys;
    protected override void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell.GetComponent<OSRankHeroTrainAwardCell>();
        _cell.Display(cell.index);
    }
}
Main/System/OSActivity/OSRankHeroTrainAwardWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5d0f7383e172ba1479bd29fa004f952f
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankHeroTrainGiftCell.cs
New file
@@ -0,0 +1,8 @@
using UnityEngine;
public class OSRankHeroTrainGiftCell : OSRankGiftBaseCell
{
    protected override int GetGiftId(int index) => OSActivityManager.Instance.osHeroTrainGiftSortList[index];
    protected override int GetActivityFuncId() => 7;
}
Main/System/OSActivity/OSRankHeroTrainGiftCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 38e95d017835dd648afc115072b85c31
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankHeroTrainGiftWin.cs
New file
@@ -0,0 +1,16 @@
using System.Collections.Generic;
using UnityEngine;
// 开服活动-武将冲榜 礼包界面
public class OSRankHeroTrainGiftWin : OSRankGiftBaseWin
{
    protected override void RefreshManagerSortList() => OSActivityManager.Instance.RefreshGiftSortList();
    protected override IList<int> GetGiftSortList() => OSActivityManager.Instance.osHeroTrainGiftSortList;
    protected override void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell as OSRankHeroTrainGiftCell;
        _cell.Display(cell.index);
    }
}
Main/System/OSActivity/OSRankHeroTrainGiftWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 21d442383c4ea6846bca35096f7d38b5
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankHeroTrainWin.cs
New file
@@ -0,0 +1,20 @@
using UnityEngine;
// 开服活动-武将冲榜 排行榜界面
public class OSRankHeroTrainWin : OSRankBaseWin
{
    [SerializeField] ButtonEx rule;
    [SerializeField] TextEx title;
    protected override void InitComponent()
    {
        base.InitComponent();
        rule.AddListener(() =>
        {
            OSRankTipWin.infoTextKey = "OSActivityHeroTrainRankTip";
            OSRankTipWin.isDownShow = true;
            OSRankTipWin.worldPos = title.transform.position;
            UIManager.Instance.OpenWindow<OSRankTipWin>();
        });
    }
}
Main/System/OSActivity/OSRankHeroTrainWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f45bd7a3a06d7984db7e8be475988387
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankMinggeAwardCell.cs
New file
@@ -0,0 +1,10 @@
using System.Collections.Generic;
using UnityEngine;
public class OSRankMinggeAwardCell : OSRankAwardBaseCell
{
    protected override Dictionary<int, int[][]> GetRankAwards()
    {
        return OSActivityManager.Instance.minggeRankAwards;
    }
}
Main/System/OSActivity/OSRankMinggeAwardCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 71ff4f534dbed074f8cb364e370af500
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankMinggeAwardWin.cs
New file
@@ -0,0 +1,16 @@
using System.Collections.Generic;
using UnityEngine;
// 开服活动-命格冲榜 排行奖励
public class OSRankMinggeAwardWin : OSRankAwardBaseWin
{
    protected override int GetRankType() => 9;
    protected override ICollection<int> GetAwardKeys() => OSActivityManager.Instance.minggeRankAwards.Keys;
    protected override void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell.GetComponent<OSRankMinggeAwardCell>();
        _cell.Display(cell.index);
    }
}
Main/System/OSActivity/OSRankMinggeAwardWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a231c309850cec941ae052a5b63759aa
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankMinggeGiftCell.cs
New file
@@ -0,0 +1,8 @@
using UnityEngine;
public class OSRankMinggeGiftCell : OSRankGiftBaseCell
{
    protected override int GetGiftId(int index) => OSActivityManager.Instance.osMinggeGiftSortList[index];
    protected override int GetActivityFuncId() => 9;
}
Main/System/OSActivity/OSRankMinggeGiftCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b76c8d10a8833af4283ec5019d7eb1a8
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankMinggeGiftWin.cs
New file
@@ -0,0 +1,16 @@
using System.Collections.Generic;
using UnityEngine;
// 开服活动-命格冲榜 礼包界面
public class OSRankMinggeGiftWin : OSRankGiftBaseWin
{
    protected override void RefreshManagerSortList() => OSActivityManager.Instance.RefreshGiftSortList();
    protected override IList<int> GetGiftSortList() => OSActivityManager.Instance.osMinggeGiftSortList;
    protected override void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell as OSRankMinggeGiftCell;
        _cell.Display(cell.index);
    }
}
Main/System/OSActivity/OSRankMinggeGiftWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fef31dcb5d0ae29429d43002f1fc9127
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankMinggeWin.cs
New file
@@ -0,0 +1,20 @@
using UnityEngine;
// 开服活动-命格冲榜 排行榜界面
public class OSRankMinggeWin : OSRankBaseWin
{
    [SerializeField] ButtonEx rule;
    [SerializeField] TextEx title;
    protected override void InitComponent()
    {
        base.InitComponent();
        rule.AddListener(() =>
        {
            OSRankTipWin.infoTextKey = "OSActivityMinggeRankTip";
            OSRankTipWin.isDownShow = true;
            OSRankTipWin.worldPos = title.transform.position;
            UIManager.Instance.OpenWindow<OSRankTipWin>();
        });
    }
}
Main/System/OSActivity/OSRankMinggeWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: aff3625b0c94913478e9bfffcedf3e86
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/OSActivity/OSRankTipWin.cs
New file
@@ -0,0 +1,98 @@
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using UnityEngine;
public class OSRankTipWin : UIBase
{
    [SerializeField] RectTransform rectTransform;
    [SerializeField] RectTransform arrowImage;
    [SerializeField] RectTransform arrowUpImage;
    [SerializeField] RichText txtInfo;
    public static Vector3 worldPos; //世界坐标系位置
    public static bool isDownShow = false;  // 是否向下显示
    public static string infoTextKey;
    public const int rowCountMax = 4;
    protected override void OnPreOpen()
    {
        rectTransform.position = new Vector3(100, 100, 100);   //初始化时,屏幕范围外
        arrowImage.SetActive(!isDownShow);
        arrowUpImage.SetActive(isDownShow);
        txtInfo.text = Language.Get(infoTextKey);
    }
    protected override void OnPreClose()
    {
        isDownShow = false;
    }
    protected override void OnOpen()
    {
        UpdatePos().Forget();
    }
    async UniTask UpdatePos()
    {
        await UniTask.DelayFrame(3);
        // 限制在屏幕范围内
        Vector3[] corners = new Vector3[4];
        rectTransform.GetWorldCorners(corners);
        float minY = corners[0].y;
        float maxY = corners[0].y;
        for (int i = 1; i < corners.Length; i++)
        {
            if (corners[i].y < minY) minY = corners[i].y;
            if (corners[i].y > maxY) maxY = corners[i].y;
        }
        float screenHeight = maxY - minY;
        Vector2 adjustedPos = new Vector2(worldPos.x, worldPos.y + (!isDownShow ? screenHeight * 0.5f : -screenHeight * 0.5f));
        Vector2 screenAdjustedPos = CameraManager.uiCamera.WorldToScreenPoint(adjustedPos);
        var rectWidth = rectTransform.rect.width * Screen.width / canvasScaler.referenceResolution.x;
        screenAdjustedPos.x = Mathf.Clamp(screenAdjustedPos.x, rectWidth * 0.5f, Screen.width - rectWidth * 0.5f);
        screenAdjustedPos.y = Mathf.Clamp(screenAdjustedPos.y, rectTransform.rect.height * 0.5f, Screen.height - rectTransform.rect.height * 0.5f - 15);
        adjustedPos = CameraManager.uiCamera.ScreenToWorldPoint(screenAdjustedPos);
        rectTransform.position = adjustedPos;
        if (!isDownShow)
        {
            rectTransform.localPosition = new Vector3(rectTransform.localPosition.x, rectTransform.localPosition.y + 15, rectTransform.localPosition.z);
        }
        else
        {
            rectTransform.localPosition = new Vector3(rectTransform.localPosition.x, rectTransform.localPosition.y - 15, rectTransform.localPosition.z);
        }
        rectTransform.GetWorldCorners(corners);
        float minX = corners[0].x;
        float maxX = corners[0].x;
        for (int i = 1; i < corners.Length; i++)
        {
            if (corners[i].x < minX) minX = corners[i].x;
            if (corners[i].x > maxX) maxX = corners[i].x;
        }
        //显示arrowImage 的x轴上的位置,和worldPos同步,但不超过minX 和 maxX范围
        if (!isDownShow)
        {
            Vector3 arrowImagePosition = arrowImage.position;
            arrowImagePosition.x = Mathf.Clamp(worldPos.x, minX, maxX);
            arrowImage.position = arrowImagePosition;
        }
        else
        {
            Vector3 arrowUpImagePosition = arrowUpImage.position;
            arrowUpImagePosition.x = Mathf.Clamp(worldPos.x, minX, maxX);
            arrowUpImage.position = arrowUpImagePosition;
        }
    }
}
Main/System/OSActivity/OSRankTipWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d1b835694fcab6a4d886be2ee0b640d2
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/Redpoint/MainRedDot.cs
@@ -152,6 +152,9 @@
    public const int TimeRushRepoint = 478; //轮回殿
    public const int HeroDebutRepoint = 479; //武将登场
    public const int Qunying = 480; //群英榜
    public const int RedPoint_OSHeroTrain = 481;
    public const int RedPoint_OSBeautyMM = 482;
    public const int RedPoint_OSMingge = 483;
    public void Register()
    {
Main/System/Store/StoreModel.cs
@@ -597,6 +597,9 @@
    DailySpecialsFree = 8, //8: 每日特惠-每日特惠免费
    DailyGiftFree = 9, //9: 每日特惠-每日礼包免费
    WeeklyGiftFree = 10, //10: 每日特惠-每周礼包免费
    OSBeautyMM = 17, //17: 红颜冲榜礼包
    OSHeroTrain = 18, //18: 武将冲榜礼包
    OSMingge = 19, //19: 命格冲榜礼包
}
Main/Utility/EnumHelper.cs
@@ -855,6 +855,9 @@
    TimeRush = 58, //限时冲刺
    Qunying = 62, //群英榜
    HeroDebut = 63,//武将登场
    OSHeroTrain = 64, //开服武将培养榜活动
    OSBeautyMM = 65, //开服红颜榜活动
    OSMingge = 66, //开服命格培养榜活动
}