diff options
Diffstat (limited to 'Client/Assets/Scripts/XMainClient/UI/XNPCFavorDramaSend.cs')
| -rw-r--r-- | Client/Assets/Scripts/XMainClient/UI/XNPCFavorDramaSend.cs | 237 | 
1 files changed, 237 insertions, 0 deletions
diff --git a/Client/Assets/Scripts/XMainClient/UI/XNPCFavorDramaSend.cs b/Client/Assets/Scripts/XMainClient/UI/XNPCFavorDramaSend.cs new file mode 100644 index 00000000..71a83395 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/UI/XNPCFavorDramaSend.cs @@ -0,0 +1,237 @@ +using System;
 +using System.Collections.Generic;
 +using KKSG;
 +using UILib;
 +using UnityEngine;
 +using XUtliPoolLib;
 +
 +namespace XMainClient.UI
 +{
 +	internal class XNPCFavorDramaSend : DlgHandlerBase
 +	{
 +		private XNPCFavorDrama operate
 +		{
 +			get
 +			{
 +				return XNPCFavorDocument.IsNpcDialogVisible();
 +			}
 +		}
 +
 +		protected override string FileName
 +		{
 +			get
 +			{
 +				return "GameSystem/NpcBlessing/NpcSendPresent";
 +			}
 +		}
 +
 +		private XNPCFavorDocument doc;
 +
 +		private IXUILabel m_LeftTimes;
 +
 +		private IXUIScrollView m_ScrollView;
 +
 +		private IXUIWrapContent m_WrapContent;
 +
 +		private List<NpcLikeItem> likeItems;
 +
 +		protected override void Init()
 +		{
 +			base.Init();
 +			this.doc = XDocuments.GetSpecificDocument<XNPCFavorDocument>(XNPCFavorDocument.uuID);
 +			this.m_LeftTimes = (base.transform.Find("LeftTimes").GetComponent("XUILabel") as IXUILabel);
 +			this.m_ScrollView = (base.transform.Find("Panel").GetComponent("XUIScrollView") as IXUIScrollView);
 +			this.m_WrapContent = (base.transform.Find("Panel/WrapContent").GetComponent("XUIWrapContent") as IXUIWrapContent);
 +		}
 +
 +		protected override void OnShow()
 +		{
 +			this.RefreshData();
 +		}
 +
 +		public override void OnUnload()
 +		{
 +			this.doc = null;
 +		}
 +
 +		public override void RefreshData()
 +		{
 +			this.m_LeftTimes.SetText(this.doc.GiveLeftCount.ToString());
 +			this.RefreshList();
 +		}
 +
 +		public override void RegisterEvent()
 +		{
 +			this.m_WrapContent.RegisterItemUpdateEventHandler(new WrapItemUpdateEventHandler(this.WrapListUpdate));
 +		}
 +
 +		private void RefreshList()
 +		{
 +			XNPCFavorDrama xnpcfavorDrama = XNPCFavorDocument.IsNpcDialogVisible();
 +			bool flag = xnpcfavorDrama != null;
 +			if (flag)
 +			{
 +				this.likeItems = this.doc.GetLikeItemsByXId(xnpcfavorDrama.GetXNpcId());
 +				bool flag2 = this.likeItems != null;
 +				if (flag2)
 +				{
 +					this.likeItems.Sort(new Comparison<NpcLikeItem>(XNPCFavorDramaSend.Compare));
 +					this.m_WrapContent.SetContentCount(this.likeItems.Count, false);
 +					this.m_ScrollView.ResetPosition();
 +				}
 +				else
 +				{
 +					XSingleton<XDebug>.singleton.AddLog("Error , Send Gift to UnActived Npc!", null, null, null, null, null, XDebugColor.XDebug_None);
 +				}
 +			}
 +		}
 +
 +		private void WrapListUpdate(Transform item, int index)
 +		{
 +			bool flag = this.likeItems == null || index >= this.likeItems.Count;
 +			if (flag)
 +			{
 +				for (int i = 0; i < item.childCount; i++)
 +				{
 +					item.GetChild(i).gameObject.SetActive(false);
 +				}
 +			}
 +			else
 +			{
 +				for (int j = 0; j < item.childCount; j++)
 +				{
 +					item.GetChild(j).gameObject.SetActive(true);
 +				}
 +				NpcLikeItem npcLikeItem = this.likeItems[index];
 +				this.DrawItem(item, npcLikeItem.itemid, npcLikeItem.itemcount, npcLikeItem.addexp, index, npcLikeItem.type);
 +			}
 +		}
 +
 +		private static int Compare(NpcLikeItem x, NpcLikeItem y)
 +		{
 +			bool flag = x.type != y.type;
 +			int result;
 +			if (flag)
 +			{
 +				result = XFastEnumIntEqualityComparer<NpcFlItemType>.ToInt(x.type) - XFastEnumIntEqualityComparer<NpcFlItemType>.ToInt(y.type);
 +			}
 +			else
 +			{
 +				result = (int)(x.itemid - y.itemid);
 +			}
 +			return result;
 +		}
 +
 +		private void DrawItem(Transform item, uint itemId, uint itemNum, uint favorAdd, int index, NpcFlItemType type)
 +		{
 +			IXUIButton ixuibutton = item.Find("SendBtn").GetComponent("XUIButton") as IXUIButton;
 +			IXUILabel ixuilabel = item.Find("friendship/Num").GetComponent("XUILabel") as IXUILabel;
 +			IXUILabel ixuilabel2 = item.Find("HaveGot/Num").GetComponent("XUILabel") as IXUILabel;
 +			IXUILabel ixuilabel3 = item.Find("Item/Name").GetComponent("XUILabel") as IXUILabel;
 +			GameObject gameObject = item.Find("BgNormal").gameObject;
 +			GameObject gameObject2 = item.Find("BgSpecial").gameObject;
 +			Transform transform = item.Find("Item");
 +			GameObject gameObject3 = transform.gameObject;
 +			XSingleton<XItemDrawerMgr>.singleton.normalItemDrawer.DrawItem(gameObject3, (int)itemId, (int)itemNum, true);
 +			IXUISprite ixuisprite = transform.Find("Icon").GetComponent("XUISprite") as IXUISprite;
 +			ixuisprite.ID = (ulong)itemId;
 +			ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(XSingleton<UiUtility>.singleton.OnItemClick));
 +			ItemList.RowData itemConf = XBagDocument.GetItemConf((int)itemId);
 +			ixuilabel3.SetText((itemConf != null) ? itemConf.ItemName[0] : string.Empty);
 +			ulong itemCount = XBagDocument.BagDoc.GetItemCount((int)itemId);
 +			string text = itemCount + "/" + itemNum;
 +			bool flag = itemCount < (ulong)itemNum;
 +			if (flag)
 +			{
 +				text = string.Concat(new object[]
 +				{
 +					"[ff0000]",
 +					itemCount,
 +					"/",
 +					itemNum,
 +					"[-]"
 +				});
 +			}
 +			ixuilabel2.SetText(text);
 +			ixuibutton.ID = (ulong)((long)index);
 +			ixuibutton.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickSendBtn));
 +			ixuilabel.SetText(favorAdd.ToString());
 +			bool flag2 = type == NpcFlItemType.NPCFL_ITEM_TRIGGER_FAVOR;
 +			if (flag2)
 +			{
 +				gameObject.SetActive(false);
 +				gameObject2.SetActive(true);
 +			}
 +			else
 +			{
 +				gameObject.SetActive(true);
 +				gameObject2.SetActive(false);
 +			}
 +		}
 +
 +		private bool OnClickSendBtn(IXUIButton btn)
 +		{
 +			bool flag = this.doc.GiveLeftCount <= 0u;
 +			bool result;
 +			if (flag)
 +			{
 +				XSingleton<UiUtility>.singleton.ShowSystemTip(XStringDefineProxy.GetString("ERR_NPCFL_GIVE_GIFT_COUNT_LESS"), "fece00");
 +				result = true;
 +			}
 +			else
 +			{
 +				int num = (int)btn.ID;
 +				bool flag2 = this.likeItems == null || num >= this.likeItems.Count;
 +				if (flag2)
 +				{
 +					result = true;
 +				}
 +				else
 +				{
 +					NpcLikeItem npcLikeItem = this.likeItems[num];
 +					uint itemid = npcLikeItem.itemid;
 +					uint itemcount = npcLikeItem.itemcount;
 +					uint addexp = npcLikeItem.addexp;
 +					ulong itemCount = XBagDocument.BagDoc.GetItemCount((int)itemid);
 +					bool flag3 = itemCount < (ulong)itemcount;
 +					if (flag3)
 +					{
 +						XSingleton<UiUtility>.singleton.ShowSystemTip(XStringDefineProxy.GetString("NPCSendItemNotEnough"), "fece00");
 +					}
 +					else
 +					{
 +						NpcFeelingOneNpc oneNpcByXId = this.doc.GetOneNpcByXId(this.operate.GetXNpcId());
 +						bool flag4 = oneNpcByXId == null;
 +						if (flag4)
 +						{
 +							return true;
 +						}
 +						bool flag5 = oneNpcByXId.level >= this.doc.NpcFlLevTop;
 +						if (flag5)
 +						{
 +							XSingleton<UiUtility>.singleton.ShowSystemTip(XStringDefineProxy.GetString("ERR_NPCFL_NPC_LEVEL_MAX"), "fece00");
 +							return true;
 +						}
 +						bool flag6 = this.doc.IsCanLevelUp(oneNpcByXId);
 +						if (flag6)
 +						{
 +							NpcFeeling.RowData npcTableInfoByXId = XNPCFavorDocument.GetNpcTableInfoByXId(this.operate.GetXNpcId());
 +							XSingleton<UiUtility>.singleton.ShowSystemTip(string.Format(XStringDefineProxy.GetString("NPCFavorisFull"), npcTableInfoByXId.name), "fece00");
 +							return true;
 +						}
 +						bool flag7 = this.operate != null;
 +						if (flag7)
 +						{
 +							this.doc.ReqSrvGiveGift(oneNpcByXId.npcid, npcLikeItem);
 +							ItemList.RowData itemConf = XBagDocument.GetItemConf((int)itemid);
 +							string arg = (itemConf == null) ? string.Empty : itemConf.ItemName[0];
 +							XSingleton<UiUtility>.singleton.ShowSystemTip(string.Format(XStringDefineProxy.GetString("NPCSendHint"), itemcount, arg, addexp), "fece00");
 +						}
 +					}
 +					result = true;
 +				}
 +			}
 +			return result;
 +		}
 +	}
 +}
  | 
