少年修仙传客户端代码仓库
lcy
2024-12-16 a39c35fc6449430cd02bccb681c4a0a880e46cd9
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
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, October 18, 2017
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using System;
 
 
namespace vnxbqy.UI
{
 
    public class TeamMissionGroup : MonoBehaviour
    {
 
        [SerializeField] Pattern m_Pattern;
        public Pattern pattern { get { return m_Pattern; } }
 
        [SerializeField] ScrollRect m_ScrollRect;
 
        [SerializeField] ToggleButtonGroup m_ToggleButtonGroup;
        public ToggleButtonGroup toggleButtonGroup
        {
            get { return m_ToggleButtonGroup; }
        }
 
        Action<int, int> missionSelectCallBack;
        List<TeamMissionBehaviour> missionBehaviours = new List<TeamMissionBehaviour>();
 
        TeamModel model { get { return ModelCenter.Instance.GetModel<TeamModel>(); } }
        DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
 
        public void Init()
        {
            m_ToggleButtonGroup = this.AddMissingComponent<ToggleButtonGroup>();
            CreateMissionBehaviours(m_ScrollRect.content, model.teammissions.Count);
 
            var teammissionKeys = new List<int>(model.teammissions.Keys);
            for (int i = 0; i < missionBehaviours.Count; i++)
            {
                var behaviour = missionBehaviours[i];
                if (i < teammissionKeys.Count)
                {
                    behaviour.group = this;
                    var teammissionGroup = model.teammissions[teammissionKeys[i]];
                    var isUnLock = model.IsMissionUnLock(teammissionKeys[i], teammissionGroup[0]);
                    var isDuringEvent = IsDuringTheEvent(teammissionKeys[i]);
                    var show = isDuringEvent && isUnLock && (pattern == Pattern.Pattern2 || teammissionKeys[i] != TeamModel.NONE_MISSION);
                    behaviour.SetActive(show);
 
                    if (teammissionGroup.Count > 1)
                    {
                        behaviour.SetMission(teammissionKeys[i], teammissionGroup);
                    }
                    else if (teammissionGroup.Count == 1)
                    {
                        behaviour.SetMission(teammissionKeys[i], teammissionGroup[0]);
                    }
                    else
                    {
                        behaviour.SetMission(teammissionKeys[i], 0);
                    }
                }
                else
                {
                    behaviour.SetActive(false);
                }
            }
 
        }
 
        public void OnMissionSelected(Action<int, int> _missionSelectCallBack)
        {
            missionSelectCallBack = _missionSelectCallBack;
        }
 
        public void NotifySelectMission(int _mapId)
        {
            if (missionSelectCallBack != null)
            {
                missionSelectCallBack(_mapId, -1);
            }
        }
 
        public void NotifySelectMission(int _mapId, int _mapEx)
        {
            if (missionSelectCallBack != null)
            {
                missionSelectCallBack(_mapId, _mapEx);
            }
        }
 
        private void CreateMissionBehaviours(Transform _container, int _needCount)
        {
            var needCount = _needCount;
            var nowCount = missionBehaviours.Count;
 
            if (needCount > nowCount)
            {
                var dif = needCount - nowCount;
                var prefab = UILoader.LoadPrefab(StringUtility.Contact("TeamMissionBehaviour_", pattern));
                for (int i = 0; i < dif; i++)
                {
                    var instance = Instantiate<GameObject>(prefab);
                    var behaviour = instance.AddMissingComponent<TeamMissionBehaviour>();
                    behaviour.missionButton.group = toggleButtonGroup;
                    behaviour.missionButton.isOn = false;
                    missionBehaviours.Add(behaviour);
                    instance.name = "TeamMissionBehaviour";
                    instance.transform.SetParentEx(_container, Vector3.zero, Quaternion.identity, Vector3.one);
                }
            }
        }
 
        private bool IsDuringTheEvent(int _dataMapId)
        {
            var dailyQuestId = dailyQuestModel.GetDailyQuestIdByDataMapId(_dataMapId);
            DailyQuestOpenTime openTime;
            if (dailyQuestModel.TryGetOpenTime(dailyQuestId, out openTime))
            {
                return openTime.InOpenTime();
            }
            else
            {
                return true;
            }
        }
 
        public enum Pattern
        {
            Pattern1,
            Pattern2,
        }
 
    }
 
}