262 幻境阁系统-客户端 如果解锁和穿上按钮不需要物品且没有时效时居中显示,没有卸下的功能的物品穿上后按钮显示已穿戴
4个文件已修改
127 ■■■■■ 已修改文件
Main/System/PhantasmPavilion/PhantasmPavilionFaceWin.cs 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PhantasmPavilion/PhantasmPavilionManager.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PhantasmPavilion/PhantasmPavilionModelWin.cs 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PhantasmPavilion/PhantasmPavilionTilteWin.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PhantasmPavilion/PhantasmPavilionFaceWin.cs
@@ -53,8 +53,10 @@
    [Header("按钮")]
    [SerializeField] PhantasmPavilionUnlockButton btnUnlock;
    [SerializeField] PhantasmPavilionUnlockButton btnUnlock1;
    [SerializeField] PhantasmPavilionPutOnButton btnPutOn1;
    [SerializeField] PhantasmPavilionPutOnButton btnPutOn2;
    [SerializeField] PhantasmPavilionPutOnButton btnPutOn3;
    [SerializeField] PhantasmPavilionAddStarButton btnAddStar;
    [SerializeField] TextEx txtRemainingTime1;
@@ -324,17 +326,24 @@
    {
        PhantasmPavilionState state = manager.GetUnLockState(type, id);
        bool isCanStarAdd = manager.HasStarAddAttr(type, id);
        bool hasLimitTimeShow = manager.TryGetLimitTimeShow(type, id, out int remainingSeconds);
        int unlockWay = manager.GetUnlockWay(type, id);
        btnUnlock.SetActive(state != PhantasmPavilionState.Activated);
        btnUnlock.SetActive(state != PhantasmPavilionState.Activated && unlockWay == 2);
        btnUnlock1.SetActive(state != PhantasmPavilionState.Activated && unlockWay != 2);
        btnAddStar.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd);
        btnPutOn1.SetActive(state == PhantasmPavilionState.Activated && !isCanStarAdd);
        btnPutOn2.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd);
        btnPutOn1.SetActive(state == PhantasmPavilionState.Activated && !isCanStarAdd && hasLimitTimeShow);
        btnPutOn3.SetActive(state == PhantasmPavilionState.Activated && !isCanStarAdd && !hasLimitTimeShow);
        btnUnlock1.Display(id);
        btnUnlock.Display(id);
        btnAddStar.Display(id);
        btnPutOn1.Display(id);
        btnPutOn2.Display(id);
        btnPutOn3.Display(id);
        UpdateTimer(type, id);
    }
@@ -419,30 +428,22 @@
    public void UpdateTimer(PhantasmPavilionType type, int id)
    {
        bool isUnlock = manager.IsUnlock(type, id);
        bool isLimitTime = manager.IsLimitTime(type, id);
        if (!isUnlock || !isLimitTime || !manager.TryGetInfo(type, id, out var info) || info.EndTime <= 0)
        bool hasLimitTimeShow = manager.TryGetLimitTimeShow(type, id, out int remainingSeconds);
        if (!hasLimitTimeShow)
        {
            txtRemainingTime1.SetActive(false);
            txtRemainingTime2.SetActive(false);
            return;
        }
        PhantasmPavilionState state = manager.GetUnLockState(type, id);
        bool isCanStarAdd = manager.HasStarAddAttr(type, id);
        DateTime endDateTime = TimeUtility.OriginalTime.AddSeconds(info.EndTime);
        TimeSpan remainingTime = endDateTime - TimeUtility.ServerNow;
        int remainingSeconds = (int)remainingTime.TotalSeconds;
        txtRemainingTime1.SetActive(state == PhantasmPavilionState.Activated && !isCanStarAdd && remainingSeconds > 0);
        txtRemainingTime2.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd && remainingSeconds > 0);
        txtRemainingTime1.SetActive(hasLimitTimeShow && !isCanStarAdd);
        txtRemainingTime2.SetActive(hasLimitTimeShow && isCanStarAdd);
        if (remainingSeconds > 0)
        {
            string countdownText = TimeUtility.SecondsToShortDHMS(remainingSeconds);
            txtRemainingTime1.text = Language.Get("PhantasmPavilion10", UIHelper.AppendColor(TextColType.DarkGreen, countdownText));
            txtRemainingTime2.text = Language.Get("PhantasmPavilion10", UIHelper.AppendColor(TextColType.DarkGreen, countdownText));
        }
    }
}
Main/System/PhantasmPavilion/PhantasmPavilionManager.cs
@@ -382,6 +382,23 @@
        return a.CompareTo(b);
    }
    public bool TryGetLimitTimeShow(PhantasmPavilionType type, int id, out int remainingSeconds)
    {
        remainingSeconds = 0;
        if (!Has(type, id))
            return false;
        if (!IsLimitTime(type, id))
            return false;
        if (!IsUnlock(type, id))
            return false;
        if (!TryGetInfo(type, id, out var info))
            return false;
        DateTime endDateTime = TimeUtility.GetTime(info.EndTime);
        TimeSpan remainingTime = endDateTime - TimeUtility.ServerNow;
        remainingSeconds = (int)remainingTime.TotalSeconds;
        return remainingSeconds > 0;
    }
    // 除道具解锁外,其他方式暂默认永久
    // 是否有时效 true 有时间限制 false 永久(无时间限制)
    public bool IsLimitTime(PhantasmPavilionType type, int id)
Main/System/PhantasmPavilion/PhantasmPavilionModelWin.cs
@@ -31,8 +31,10 @@
    [Header("按钮")]
    [SerializeField] PhantasmPavilionUnlockButton btnUnlock;
    [SerializeField] PhantasmPavilionUnlockButton btnUnlock1;
    [SerializeField] PhantasmPavilionPutOnButton btnPutOn1;
    [SerializeField] PhantasmPavilionPutOnButton btnPutOn2;
    [SerializeField] PhantasmPavilionPutOnButton btnPutOn3;
    [SerializeField] PhantasmPavilionAddStarButton btnAddStar;
    [SerializeField] TextEx txtRemainingTime1;
    [SerializeField] TextEx txtRemainingTime2;
@@ -210,16 +212,24 @@
    {
        PhantasmPavilionState state = manager.GetUnLockState(type, id);
        bool isCanStarAdd = manager.HasStarAddAttr(type, id);
        bool isUsing = manager.IsUsing(type, id);
        btnUnlock.SetActive(state != PhantasmPavilionState.Activated);
        bool hasLimitTimeShow = manager.TryGetLimitTimeShow(type, id, out int remainingSeconds);
        int unlockWay = manager.GetUnlockWay(type, id);
        btnUnlock.SetActive(state != PhantasmPavilionState.Activated && unlockWay == 2);
        btnUnlock1.SetActive(state != PhantasmPavilionState.Activated && unlockWay != 2);
        btnAddStar.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd);
        btnPutOn1.SetActive(state == PhantasmPavilionState.Activated && !isCanStarAdd && !isUsing);
        btnPutOn2.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd && !isUsing);
        btnPutOn2.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd);
        btnPutOn1.SetActive(state == PhantasmPavilionState.Activated && !isCanStarAdd && hasLimitTimeShow);
        btnPutOn3.SetActive(state == PhantasmPavilionState.Activated && !isCanStarAdd && !hasLimitTimeShow);
        btnUnlock1.Display(id);
        btnUnlock.Display(id);
        btnAddStar.Display(id);
        btnPutOn1.Display(id);
        btnPutOn2.Display(id);
        btnPutOn3.Display(id);
        UpdateTimer(type, id);
    }
@@ -279,31 +289,21 @@
    public void UpdateTimer(PhantasmPavilionType type, int id)
    {
        bool isUnlock = manager.IsUnlock(type, id);
        bool isLimitTime = manager.IsLimitTime(type, id);
        if (!isUnlock || !isLimitTime || !manager.TryGetInfo(type, id, out var info) || info.EndTime <= 0)
        bool hasLimitTimeShow = manager.TryGetLimitTimeShow(type, id, out int remainingSeconds);
        if (!hasLimitTimeShow)
        {
            txtRemainingTime1.SetActive(false);
            txtRemainingTime2.SetActive(false);
            return;
        }
        PhantasmPavilionState state = manager.GetUnLockState(type, id);
        bool isCanStarAdd = manager.HasStarAddAttr(type, id);
        DateTime endDateTime = TimeUtility.OriginalTime.AddSeconds(info.EndTime);
        TimeSpan remainingTime = endDateTime - TimeUtility.ServerNow;
        int remainingSeconds = (int)remainingTime.TotalSeconds;
        txtRemainingTime1.SetActive(state == PhantasmPavilionState.Activated && !isCanStarAdd && remainingSeconds > 0);
        txtRemainingTime2.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd && remainingSeconds > 0);
        txtRemainingTime1.SetActive(hasLimitTimeShow && !isCanStarAdd);
        txtRemainingTime2.SetActive(hasLimitTimeShow && isCanStarAdd);
        if (remainingSeconds > 0)
        {
            string countdownText = TimeUtility.SecondsToShortDHMS(remainingSeconds);
            txtRemainingTime1.text = Language.Get("PhantasmPavilion10", UIHelper.AppendColor(TextColType.DarkGreen, countdownText));
            txtRemainingTime2.text = Language.Get("PhantasmPavilion10", UIHelper.AppendColor(TextColType.DarkGreen, countdownText));
        }
    }
}
Main/System/PhantasmPavilion/PhantasmPavilionTilteWin.cs
@@ -30,11 +30,14 @@
    [Header("按钮")]
    [SerializeField] PhantasmPavilionUnlockButton btnUnlock;
    [SerializeField] PhantasmPavilionUnlockButton btnUnlock1;
    [SerializeField] PhantasmPavilionPutOnButton btnPutOn1;
    [SerializeField] PhantasmPavilionPutOnButton btnPutOn2;
    [SerializeField] PhantasmPavilionPutOnButton btnPutOn3;
    [SerializeField] PhantasmPavilionAddStarButton btnAddStar;
    [SerializeField] ButtonEx btnTakeOff1;
    [SerializeField] ButtonEx btnTakeOff2;
    [SerializeField] ButtonEx btnTakeOff3;
    [SerializeField] TextEx txtRemainingTime1;
    [SerializeField] TextEx txtRemainingTime2;
@@ -45,6 +48,7 @@
        base.InitComponent();
        btnTakeOff1.AddListener(() => { manager.SendOPPack(PhantasmPavilionType.Title, PhantasmPavilionOperation.Remove, (uint)manager.selectId); });
        btnTakeOff2.AddListener(() => { manager.SendOPPack(PhantasmPavilionType.Title, PhantasmPavilionOperation.Remove, (uint)manager.selectId); });
        btnTakeOff3.AddListener(() => { manager.SendOPPack(PhantasmPavilionType.Title, PhantasmPavilionOperation.Remove, (uint)manager.selectId); });
        btnTabType1.AddListener(() => { SelectTeamFunc(PhantasmPavilionType.Title, 0); });
        btnTabType2.AddListener(() => { SelectTeamFunc(PhantasmPavilionType.Title, 1); });
        btnAllAdd.AddListener(() => { AttributeManager.Instance.OpenTotalAttributeWin(manager.GetTotalAttr()); });
@@ -195,17 +199,26 @@
        PhantasmPavilionState state = manager.GetUnLockState(type, id);
        bool isCanStarAdd = manager.HasStarAddAttr(type, id);
        bool isUsing = manager.IsUsing(type, id);
        btnUnlock.SetActive(state != PhantasmPavilionState.Activated);
        btnAddStar.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd);
        btnPutOn1.SetActive(state == PhantasmPavilionState.Activated && !isCanStarAdd && !isUsing);
        btnPutOn2.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd && !isUsing);
        btnTakeOff1.SetActive(state == PhantasmPavilionState.Activated && !isCanStarAdd && isUsing);
        btnTakeOff2.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd && isUsing);
        bool hasLimitTimeShow = manager.TryGetLimitTimeShow(type, id, out int remainingSeconds);
        int unlockWay = manager.GetUnlockWay(type, id);
        btnUnlock.SetActive(state != PhantasmPavilionState.Activated && unlockWay == 2);
        btnUnlock1.SetActive(state != PhantasmPavilionState.Activated && unlockWay != 2);
        btnAddStar.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd);
        btnPutOn2.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd && !isUsing);
        btnPutOn1.SetActive(state == PhantasmPavilionState.Activated && !isCanStarAdd && !isUsing && hasLimitTimeShow);
        btnPutOn3.SetActive(state == PhantasmPavilionState.Activated && !isCanStarAdd && !isUsing && !hasLimitTimeShow);
        btnTakeOff2.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd && isUsing);
        btnTakeOff1.SetActive(state == PhantasmPavilionState.Activated && !isCanStarAdd && isUsing && hasLimitTimeShow);
        btnTakeOff3.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd && isUsing && !hasLimitTimeShow);
        btnUnlock.Display(id);
        btnUnlock1.Display(id);
        btnAddStar.Display(id);
        btnPutOn1.Display(id);
        btnPutOn2.Display(id);
        btnPutOn3.Display(id);
        UpdateTimer(type, id);
    }
@@ -270,30 +283,22 @@
    public void UpdateTimer(PhantasmPavilionType type, int id)
    {
        bool isUnlock = manager.IsUnlock(type, id);
        bool isLimitTime = manager.IsLimitTime(type, id);
        if (!isUnlock || !isLimitTime || !manager.TryGetInfo(type, id, out var info) || info.EndTime <= 0)
        bool hasLimitTimeShow = manager.TryGetLimitTimeShow(type, id, out int remainingSeconds);
        if (!hasLimitTimeShow)
        {
            txtRemainingTime1.SetActive(false);
            txtRemainingTime2.SetActive(false);
            return;
        }
        PhantasmPavilionState state = manager.GetUnLockState(type, id);
        bool isCanStarAdd = manager.HasStarAddAttr(type, id);
        DateTime endDateTime = TimeUtility.OriginalTime.AddSeconds(info.EndTime);
        TimeSpan remainingTime = endDateTime - TimeUtility.ServerNow;
        int remainingSeconds = (int)remainingTime.TotalSeconds;
        txtRemainingTime1.SetActive(state == PhantasmPavilionState.Activated && !isCanStarAdd && remainingSeconds > 0);
        txtRemainingTime2.SetActive(state == PhantasmPavilionState.Activated && isCanStarAdd && remainingSeconds > 0);
        txtRemainingTime1.SetActive(hasLimitTimeShow && !isCanStarAdd);
        txtRemainingTime2.SetActive(hasLimitTimeShow && isCanStarAdd);
        if (remainingSeconds > 0)
        {
            string countdownText = TimeUtility.SecondsToShortDHMS(remainingSeconds);
            txtRemainingTime1.text = Language.Get("PhantasmPavilion10", UIHelper.AppendColor(TextColType.DarkGreen, countdownText));
            txtRemainingTime2.text = Language.Get("PhantasmPavilion10", UIHelper.AppendColor(TextColType.DarkGreen, countdownText));
        }
    }
}