少年修仙传客户端代码仓库
client_Wu Xijin
2019-06-13 033958214c0b16d7e7b93cc821b018c295251867
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
119
120
121
122
123
124
125
126
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
namespace Snxxz.UI
{
    public class HazyRegionEntrancePanel : MonoBehaviour
    {
        [SerializeField] Transform m_ContainerTimes;
        [SerializeField] Text m_Times;
        [SerializeField] Button m_GetPath;
 
        [SerializeField] Button m_Goto;
        [SerializeField] Text m_GotoLabel;
 
        HazyRegionModel model { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } }
        DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
 
        private void Awake()
        {
            m_GetPath.AddListener(GetPath);
            m_Goto.AddListener(Goto);
        }
 
        public void Display()
        {
            dailyQuestModel.usableActivePointUpdateEvent += UsableActivePointUpdateEvent;
            model.onHazyRegionIncidentRefresh += OnHazyRegionIncidentRefresh;
 
            DisplayActivePoint();
            DisplayButtonState();
        }
 
        void DisplayActivePoint()
        {
            m_ContainerTimes.gameObject.SetActive(true);
 
            var label = UIHelper.AppendColor(dailyQuestModel.usableActivePoint >= model.openActviePoint ?
                TextColType.Green : TextColType.Red,
                dailyQuestModel.usableActivePoint.ToString());
            m_Times.text = StringUtility.Contact(label, "/", model.openActviePoint);
        }
 
        void DisplayButtonState()
        {
            m_Goto.SetColorful(m_GotoLabel, true);
        }
 
        private void Goto()
        {
            var error = 0;
            if (TryOpenHazyReion(out error))
            {
                model.SendOpenHazyRegion();
            }
            else
            {
                HandleErrorMessage(error);
            }
        }
 
        private void GetPath()
        {
            WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.DailyQuestFunc1);
        }
 
        bool TryOpenHazyReion(out int error)
        {
            error = 0;
            if (dailyQuestModel.usableActivePoint < model.openActviePoint)
            {
                error = 2;
                return false;
            }
            return true;
        }
 
        void HandleErrorMessage(int error)
        {
            switch (error)
            {
                case 1:
                    DailyQuestOpenTime dailyQuestOpenTime;
                    if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.HazyRegion, out dailyQuestOpenTime))
                    {
                        HourMinute hourMinute;
                        if (dailyQuestOpenTime.TryGetTodayNearestOpenTime(out hourMinute))
                        {
                            SysNotifyMgr.Instance.ShowTip("OpenHazyRegionError_1",
                                hourMinute.hourBegin.ToString("D2"),
                                hourMinute.hourEnd.ToString("D2"));
                        }
                    }
                    break;
                case 2:
                    SysNotifyMgr.Instance.ShowTip("OpenHazyRegionError_2");
                    break;
                case 3:
                    SysNotifyMgr.Instance.ShowTip("OpenHazyRegionError_3");
                    break;
                case 4:
                    SysNotifyMgr.Instance.ShowTip("OpenHazyRegionError_4");
                    break;
            }
        }
 
        public void Dispose()
        {
            dailyQuestModel.usableActivePointUpdateEvent -= UsableActivePointUpdateEvent;
            model.onHazyRegionIncidentRefresh -= OnHazyRegionIncidentRefresh;
        }
 
        private void OnHazyRegionIncidentRefresh()
        {
            DisplayActivePoint();
            DisplayButtonState();
        }
 
        private void UsableActivePointUpdateEvent()
        {
            DisplayActivePoint();
        }
    }
}