少年修仙传客户端代码仓库
hch
2025-06-12 204ef05a831c9484e2abc561d27ecbff7c797453
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Friday, March 08, 2019
//--------------------------------------------------------
 
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
namespace vnxbqy.UI
{
    
    public class AllianceBossEntranceWin : Window
    {
        [SerializeField] AllianceBossBehaviour[] m_AllianceBosses;
        [SerializeField] Text m_OpenTime;
 
        float timer = 0f;
 
        AllianceBossModel allianceBossModel { get { return ModelCenter.Instance.GetModel<AllianceBossModel>(); } }
        DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
        
        #region Built-in
        protected override void BindController()
        {
        }
        
        protected override void AddListeners()
        {
        }
        
        protected override void OnPreOpen()
        {
            for (int i = 0; i < m_AllianceBosses.Length; i++)
            {
                m_AllianceBosses[i].Display(i);
            }
            DisplayTime();
 
            mapModel.RequestQueryMapLineState(AllianceBossModel.DATAMAPID);
 
            GlobalTimeEvent.Instance.secondEvent += PerSecond;
        }
        
        protected override void OnAfterOpen()
        {
        }
        
        protected override void OnPreClose()
        {
            for (int i = 0; i < m_AllianceBosses.Length; i++)
            {
                m_AllianceBosses[i].Dispose();
            }
            GlobalTimeEvent.Instance.secondEvent -= PerSecond;
        }
 
        protected override void OnAfterClose()
        {
        }
 
        protected override void LateUpdate()
        {
            timer += Time.deltaTime;
            if (timer >= 5f)
            {
                timer = 0f;
                mapModel.RequestQueryMapLineState(AllianceBossModel.DATAMAPID);
            }
        }
        #endregion
 
        private void PerSecond()
        {
            DisplayTime();
        }
 
        void DisplayTime()
        {
            DailyQuestOpenTime dailyQuestOpenTime;
            if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.AllianceBoss, out dailyQuestOpenTime))
            {
                if (dailyQuestOpenTime.InOpenTime())
                {
                    var seconds = 0;
                    HourMinute hourMinute;
                    if (dailyQuestOpenTime.TryGetTodayNearestOpenTime(out hourMinute))
                    {
                        var endTime = new DateTime(TimeUtility.Year, TimeUtility.Month, TimeUtility.Day,
                            hourMinute.hourEnd, hourMinute.minuteEnd, 0);
                        seconds = Mathf.CeilToInt((float)(endTime - TimeUtility.ServerNow).TotalSeconds);
                        seconds = Mathf.Max(0, seconds);
                    }
                    var timeSpan = new TimeSpan(TimeSpan.TicksPerSecond * seconds);
                    m_OpenTime.text = Language.Get("RidingPetQuestRemainTime", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds);
                    m_OpenTime.color = UIHelper.GetUIColor(TextColType.Green, true);
                    //m_OpenTime.text = Language.Get("AllianceBoss_3", TimeUtility.SecondsToHMS(seconds));
                }
                else
                {
                    var seconds = dailyQuestOpenTime.GetNextSessionSurplusTime();
                    var timeSpan = new TimeSpan(TimeSpan.TicksPerSecond * seconds);
                   // m_OpenTime.text = Language.Get("AllianceBoss_2", TimeUtility.SecondsToHMS(seconds));
                    m_OpenTime.text = Language.Get("RidingPetQuestStartCountDown", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds);
                    m_OpenTime.color = UIHelper.GetUIColor(TextColType.Red, true);
                }
            }
        }
    }
}