summaryrefslogtreecommitdiff
path: root/Client/Assets/Scripts/XMainClient/UI/SpriteSelectHandler.cs
blob: 034fc5b9ed37c30b2111c6b5e93ce2e8e2fd111e (plain)
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
using System;
using System.Collections.Generic;
using KKSG;
using UILib;
using UnityEngine;
using XMainClient.UI.UICommon;
using XUtliPoolLib;

namespace XMainClient.UI
{
	internal class SpriteSelectHandler : DlgHandlerBase
	{
		protected override string FileName
		{
			get
			{
				return "GameSystem/SpriteSystem/SpriteSelectHandler";
			}
		}

		private XSpriteSystemDocument _doc;

		public IXUIScrollView m_ScrollView;

		public IXUIWrapContent m_WrapContent;

		private List<SpriteInfo> _list;

		protected override void Init()
		{
			base.Init();
			this._doc = XDocuments.GetSpecificDocument<XSpriteSystemDocument>(XSpriteSystemDocument.uuID);
			Transform transform = base.PanelObject.transform.Find("ScrollView/WrapContent/Tpl");
			this.m_ScrollView = (base.PanelObject.transform.Find("ScrollView").GetComponent("XUIScrollView") as IXUIScrollView);
			this.m_WrapContent = (this.m_ScrollView.gameObject.transform.Find("WrapContent").GetComponent("XUIWrapContent") as IXUIWrapContent);
		}

		public override void RegisterEvent()
		{
			base.RegisterEvent();
			this.m_WrapContent.RegisterItemUpdateEventHandler(new WrapItemUpdateEventHandler(this.DesWrapListUpdated));
		}

		protected override void OnShow()
		{
			base.OnShow();
			bool flag = DlgBase<SpriteSystemDlg, TabDlgBehaviour>.singleton._SpriteMainFrame != null && DlgBase<SpriteSystemDlg, TabDlgBehaviour>.singleton._SpriteMainFrame.IsVisible();
			if (flag)
			{
				this.SetSpriteList(this._doc.SpriteList, true);
			}
			bool flag2 = DlgBase<SpriteSystemDlg, TabDlgBehaviour>.singleton._SpriteResolveFrame != null && DlgBase<SpriteSystemDlg, TabDlgBehaviour>.singleton._SpriteResolveFrame.IsVisible();
			if (flag2)
			{
				this._doc.DealWithResolveList();
				this.SetSpriteList(this._doc.ResolveList, true);
			}
			bool flag3 = DlgBase<SpriteSystemDlg, TabDlgBehaviour>.singleton._SpriteFightFrame != null && DlgBase<SpriteSystemDlg, TabDlgBehaviour>.singleton._SpriteFightFrame.IsVisible();
			if (flag3)
			{
				this.SetSpriteList(this._doc.SpriteList, true);
			}
		}

		public void SetSpriteList(List<SpriteInfo> list, bool resetScrollPos = true)
		{
			bool flag = !base.IsVisible();
			if (!flag)
			{
				this._list = list;
				this.m_WrapContent.SetContentCount(list.Count, false);
				if (resetScrollPos)
				{
					this.m_ScrollView.SetPosition(0f);
				}
			}
		}

		private void DesWrapListUpdated(Transform t, int i)
		{
			bool flag = i < 0 || i >= this._list.Count;
			if (flag)
			{
				XSingleton<XDebug>.singleton.AddErrorLog("leftScrollView_index is out of range of sprite list. index = ", i.ToString(), " cout = ", this._list.Count.ToString(), null, null);
			}
			else
			{
				SpriteTable.RowData bySpriteID = this._doc._SpriteTable.GetBySpriteID(this._list[i].SpriteID);
				GameObject gameObject = t.Find("Fight").gameObject;
				gameObject.SetActive(this._doc.CurrentTag == SpriteHandlerTag.Main && this._doc.isSpriteFight(this._list[i].uid));
				GameObject gameObject2 = t.Find("Fight2").gameObject;
				gameObject2.SetActive(this._doc.CurrentTag != SpriteHandlerTag.Main && this._doc.isSpriteFight(this._list[i].uid));
				IXUISprite ixuisprite = t.Find("Frame").GetComponent("XUISprite") as IXUISprite;
				ixuisprite.spriteName = string.Format("kuang_dj_{0}", bySpriteID.SpriteQuality);
				IXUISprite ixuisprite2 = t.Find("Icon").GetComponent("XUISprite") as IXUISprite;
				ixuisprite2.spriteName = bySpriteID.SpriteIcon;
				Transform ts = t.Find("Star");
				this.SetStar(ts, this._list[i].EvolutionLevel);
				GameObject gameObject3 = t.Find("Up").gameObject;
				bool active = (this._doc.CurrentTag == SpriteHandlerTag.Fight && this.isUpIconShow(i)) || (this._doc.CurrentTag == SpriteHandlerTag.Main && this._doc.isSpriteFight(this._list[i].uid) && !this._doc.isSpriteFoodEmpty() && this._doc.isSpriteNeed2Feed(this._list[i].uid, false));
				gameObject3.SetActive(active);
				IXUISprite ixuisprite3 = t.GetComponent("XUISprite") as IXUISprite;
				ixuisprite3.ID = (ulong)((long)i);
				switch (this._doc.CurrentTag)
				{
				case SpriteHandlerTag.Main:
				{
					ixuisprite3.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(DlgBase<SpriteSystemDlg, TabDlgBehaviour>.singleton._SpriteMainFrame.OnSpriteListClick));
					bool flag2 = DlgBase<SpriteSystemDlg, TabDlgBehaviour>.singleton._SpriteMainFrame.CurrentClick == 10000 && i == 0;
					if (flag2)
					{
						DlgBase<SpriteSystemDlg, TabDlgBehaviour>.singleton._SpriteMainFrame.OnSpriteListClick(ixuisprite3);
					}
					t.transform.Find("Select").gameObject.SetActive(i == DlgBase<SpriteSystemDlg, TabDlgBehaviour>.singleton._SpriteMainFrame.CurrentClick);
					break;
				}
				case SpriteHandlerTag.Fight:
					ixuisprite3.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(DlgBase<SpriteSystemDlg, TabDlgBehaviour>.singleton._SpriteFightFrame.OnLeftListClick));
					t.transform.Find("Select").gameObject.SetActive(false);
					break;
				case SpriteHandlerTag.Resolve:
					ixuisprite3.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(DlgBase<SpriteSystemDlg, TabDlgBehaviour>.singleton._SpriteResolveFrame.OnSpriteListClick));
					t.Find("Select").gameObject.SetActive(DlgBase<SpriteSystemDlg, TabDlgBehaviour>.singleton._SpriteResolveFrame.ScrollViewHasSprite(this._list[i].uid));
					break;
				}
			}
		}

		private bool isUpIconShow(int i)
		{
			return this._doc.isSpriteNeed2Fight(i);
		}

		private void SetStar(Transform ts, uint num)
		{
			uint num2 = num / XSpriteSystemDocument.MOONWORTH;
			uint num3 = num % XSpriteSystemDocument.MOONWORTH;
			for (int i = 0; i < 7; i++)
			{
				IXUISprite ixuisprite = ts.Find(string.Format("star{0}", i)).GetComponent("XUISprite") as IXUISprite;
				bool flag = (long)i < (long)((ulong)(num2 + num3));
				if (flag)
				{
					ixuisprite.SetVisible(true);
					ixuisprite.spriteName = (((long)i < (long)((ulong)num2)) ? "l_stars_02" : "l_stars_01");
				}
				else
				{
					ixuisprite.SetVisible(false);
				}
			}
		}
	}
}