少年修仙传客户端代码仓库
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
using System.Linq;
using UnityEngine;
 
namespace vnxbqy.UI
{
    //福地-管理
    public class BlessedLandManageMouseWin : Window
    {
        [SerializeField] ScrollerController scroller;
        [SerializeField] ButtonEx btnClose;
        [SerializeField] ButtonEx btnFree;
        [SerializeField] TextEx txtHireDayCnt;
 
        [SerializeField] BlessedLandManageMouseButton btnBuy1;
        [SerializeField] BlessedLandManageMouseButton btnBuy2;
        [SerializeField] ButtonEx btnAuto;
        [SerializeField] ButtonEx btnStop;
        [SerializeField] ButtonEx btnRenewal;
        [SerializeField] TextEx txtNextSeekTime;
        [SerializeField] TextEx txtHireTime;
        [SerializeField] TextEx txtHireTime1;
        [SerializeField] TextEx txtNoHire;
        int ctgId1;
        int ctgId2;
        BlessedLandModel blessedLandModel { get { return ModelCenter.Instance.GetModel<BlessedLandModel>(); } }
        VipModel vipModel { get { return ModelCenter.Instance.GetModelEx<VipModel>(); } }
        BlessedLandManageMouseModel model { get { return ModelCenter.Instance.GetModel<BlessedLandManageMouseModel>(); } }
 
        protected override void BindController()
        {
        }
 
        protected override void AddListeners()
        {
            btnClose.SetListener(CloseClick);
 
            btnFree.SetListener(() =>
            {
                ConfirmCancel.ShowPopConfirm(
                        Language.Get("L1003"),
                        Language.Get("BlessedLand070"),
                        (bool _ok) =>
                        {
                            if (_ok)
                            {
                                model.SendFreeUse();
                            }
                        });
                return;
            });
 
            btnAuto.SetListener(() =>
            {
                // 工人体力耗尽
                int energyUsed = blessedLandModel.EnergyUsed;
                int totalEnergy = blessedLandModel.GetTotalEnergy();
                if (energyUsed >= totalEnergy)
                {
                    SysNotifyMgr.Instance.ShowTip("BlessedLand01");
                    return;
                }
 
                model.Start();
                DisplayTime();
            });
 
            btnStop.SetListener(() =>
            {
                model.Stop();
            });
 
            btnRenewal.SetListener(() =>
            {
                WindowCenter.Instance.Open<BlessedLandManageMouseRenewalPopWin>();
            });
        }
 
        protected override void OnPreOpen()
        {
            scroller.OnRefreshCell += OnRefreshCell;
            blessedLandModel.UpdateMineAreaData += OnUpdateMineAreaData;
            GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
            model.StartStateChangeEvent += OnStartStateChangeEvent;
            Display();
        }
 
        private void Display()
        {
            //0 未雇佣-未使用免费次数 1 未雇佣-已使用免费次数 2 雇佣中-未开始自动采集 3 雇佣中-自动采集中
            int state = model.GetState();
            txtNoHire.SetActive(state == 0);
            btnFree.SetActive(state == 0);
            btnBuy1.SetActive(state == 1);
            btnBuy2.SetActive(state == 1);
            txtHireTime1.SetActive(state == 2);
            btnAuto.SetActive(state == 2);
            txtHireTime.SetActive(state == 3);
            txtNextSeekTime.SetActive(state == 3);
            btnStop.SetActive(state == 3);
            btnRenewal.SetActive(state == 2 || state == 3);
            //type 1折的表现用图片还是下划线 1下划线 2 图片
            //index 管家档位购买对应充值ID列表中的1维索引
            btnBuy1.Display(1, 0);
            btnBuy2.Display(1, 1);
            txtHireDayCnt.text = Language.Get("BlessedLand060", model.butlerLevelDurationArr[0]);
            DisplayTime();
        }
 
        protected override void OnAfterOpen()
        {
            CreateScroller();
        }
 
        protected override void OnAfterClose()
        {
        }
 
        protected override void OnPreClose()
        {
            scroller.OnRefreshCell -= OnRefreshCell;
            blessedLandModel.UpdateMineAreaData -= OnUpdateMineAreaData;
            GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
            model.StartStateChangeEvent -= OnStartStateChangeEvent;
        }
 
        private void OnStartStateChangeEvent()
        {
            Display();
            DisplayTime();
        }
 
        private void OnSecondEvent()
        {
            Display();
        }
 
        public void DisplayTime()
        {
            string hireTime = TimeUtility.SecondsToDHMS((int)blessedLandModel.HousekeeperEndTime - TimeUtility.AllSeconds);
            string hireTimeText = Language.Get("BlessedLand068", hireTime);
            txtHireTime.text = hireTimeText;
            txtHireTime1.text = hireTimeText;
 
            string resTime = TimeUtility.SecondsToDHMS(model.timeS - model.timer);
            txtNextSeekTime.text = Language.Get("BlessedLand066", resTime);
        }
 
        private void OnUpdateMineAreaData()
        {
            Display();
        }
 
        private int SortItemID(int itemIdA, int itemIdB)
        {
            var itemIDToLimitLVDict = MineAreaItemConfig.GetItemIDToLimitLVDict();
            var itemIDToSortDict = MineAreaItemConfig.GetItemIDToSortDict();
 
            int limitLV1 = itemIDToLimitLVDict[itemIdA];
            int limitLV2 = itemIDToLimitLVDict[itemIdB];
 
            int sortNum1 = itemIDToSortDict[itemIdA];
            int sortNum2 = itemIDToSortDict[itemIdB];
 
            //  LimitLV 越小越靠前
            int compareResult = limitLV1.CompareTo(limitLV2);
            if (compareResult == 0)
            {
                // LimitLV相同,sortNum1越小越靠前
                compareResult = sortNum1.CompareTo(sortNum2);
            }
 
            return compareResult;
        }
 
        private void CreateScroller()
        {
            scroller.Refresh();
            var dict = MineAreaItemConfig.GetItemIDToLimitLVDict();
            var list = dict.Keys.ToList();
            list.Sort(SortItemID);
            for (int i = 0; i < list.Count; i++)
            {
                scroller.AddCell(ScrollerDataType.Header, list[i]);
            }
            scroller.Restart();
        }
 
        private void OnRefreshCell(ScrollerDataType type, CellView cell)
        {
            var _cell = cell as BlessedLandManageMouseCell;
            _cell.Display(_cell.index);
        }
    }
}