Files
JJBB/Assets/Project/Script/GUI/Other/CommitItemInfoController.cs

205 lines
6.4 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using Games.Item;
using System;
using GCGame.Table;
public class CommitItemInfoController : UIControllerBase<CommitItemInfoController>
{
public Button m_CloseBtn; //关闭
public Button m_SubmitBtn; //提交
public UIContainerSelect m_Container; //排列Item容器
public UInt64 m_SubItemID = 0;
public int m_ClassID = -1;
public static int m_MissionID = -1;
public bool isGuid = false;
public bool isClassId = false;
public int m_itemCount = 0;
public static int m_MissionBaseId = -1;
List<CommonItemBackPackItem.BackPackItem> m_ShowItemList = new List<CommonItemBackPackItem.BackPackItem>();
void OnEnable()
{
//true的时候初始化面板
InitMyItemInfo();
}
public static void setMissionId(int id, int m_MissionBID)
{
m_MissionBaseId = m_MissionBID;
m_MissionID = id;
}
//提交任务的时候进行初始化
public void InitMyItemInfo()
{
Tab_MissionLootItem m_LootItem = TableManager.GetMissionLootItemByID(m_MissionID, 0);
int m_ItemType = m_LootItem.SelectType;
int m_ItemId = m_LootItem.DataID;
m_itemCount = m_LootItem.ItemCount;
//初始化可以提交的物品的信息
GameItemContainer BackPack = GameManager.gameManager.PlayerDataPool.BackPack;
List<GameItem> itemList = ItemTool.ItemFilter(BackPack, 0); //过滤背包中所有物品 存储在ItemList中
if (itemList.Count == 0)
{
return;
}
//1 classID 2 dataId 0系统自动扣除
//对ItemList进行过滤 将可以提交的item存放在m_ShowItemList中
if (m_ItemType == 1) //物品ID
{
isGuid = true;
for (int index = 0; index < itemList.Count; index++)
{
if (itemList[index].DataID == m_ItemId)
{
m_ShowItemList.Add(new CommonItemBackPackItem.BackPackItem() { GameItem = itemList[index], IsPosLock = false });
}
}
}
else if(m_ItemType == 2) //classId
{
isClassId = true;
for (int index = 0; index < itemList.Count; index++)
{
Tab_MissionSortItem sortItem = TableManager.GetMissionSortItemByID(m_ItemId, 0);
if(sortItem != null)
{
Tab_CommonItem commonItem = TableManager.GetCommonItemByID(itemList[index].DataID, 0);
if (commonItem == null)
return;
if(sortItem.ItemClass != -1 && commonItem.ClassID != sortItem.ItemClass)
{
continue;
}
if(sortItem.ItemSubClass != -1 && commonItem.SubClassID != sortItem.ItemSubClass)
{
continue;
}
if (sortItem.ItemQuality != -1 && commonItem.Quality > sortItem.ItemQuality)
{
continue;
}
if (sortItem.ItemSubClass != -1 && commonItem.SubClassID != sortItem.ItemSubClass)
{
continue;
}
if (sortItem.ItemLevelBot != -1 && commonItem.MinLevelRequire < sortItem.ItemLevelBot)
{
continue;
}
if (sortItem.ItemLevelTop != -1 && commonItem.MinLevelRequire > sortItem.ItemLevelTop)
{
continue;
}
if (sortItem.Profession != -1 && commonItem.ProfessionRequire != sortItem.Profession)
{
continue;
}
//满足以上条件的,即为所需求的物品
m_ShowItemList.Add(new CommonItemBackPackItem.BackPackItem() { GameItem = itemList[index], IsPosLock = false });
}
}
}
//初始化Content界面
m_Container.InitSelectContent(m_ShowItemList, null, ItemClick);
//默认的选择第一个物品
if(m_ShowItemList.Count > 0)
{
m_SubItemID = (ulong)m_ShowItemList[0].GameItem.Guid;
m_ClassID = (int)m_ShowItemList[0].GameItem.GetClass();
}
}
public void ItemClick(object obj)
{
CommonItemBackPackItem.BackPackItem backPackItem = obj as CommonItemBackPackItem.BackPackItem;
if (backPackItem.GameItem != null && backPackItem.GameItem.IsValid())
{
ShowTooltips(backPackItem.GameItem);
}
}
private void ShowTooltips(GameItem gameItem)
{
if (gameItem != null && gameItem.IsValid())
{
if (gameItem.IsEquipMent())
{
EquipTooltipsLogic.ShowEquipTooltip(gameItem, ItemTooltipsLogic.ShowType.Info, transform.position);
}
else
{
ItemTooltipsLogic.ShowItemTooltip(gameItem, ItemTooltipsLogic.ShowType.Info, transform.position);
}
//记录点击的ID
m_SubItemID = gameItem.Guid;
m_ClassID = gameItem.GetClass();
}
}
public void MyClickPanelEvent()
{
UIManager.CloseUI(UIInfo.CommitItemPanel); //关闭当前Tip窗口
if(MissionInfoController.Instance())
{
UIManager.CloseUI(UIInfo.MissionInfoController);
}
}
public void MyClickSubmiBtnEvent()
{
//提交点击的物品的GUID 数量
if (m_SubItemID != 0)
{
// 给服务器发包
// 给服务器发包
CG_COMPLETEMISSION askMission = (CG_COMPLETEMISSION)PacketDistributed.CreatePacket(MessageID.PACKET_CG_COMPLETEMISSION);
askMission.SetMissionID(m_MissionBaseId);
ItemByNum commitItem = new ItemByNum();
commitItem.SetItemGuid(m_SubItemID);
commitItem.SetItemNum(m_itemCount);
askMission.AddItems(commitItem);
askMission.SendPacket();
}
//不管选没选,都关闭窗口
UIManager.CloseUI(UIInfo.CommitItemPanel); //关闭当前Tip窗口
}
private void OnDisable()
{
isClassId = false;
isGuid = false;
m_ShowItemList.Clear();
}
}