using System;
using System.Collections.Generic;
using AX.MessageSystem;
using Newtonsoft.Json;
using SuperScrollView;
using UnityEngine;
using UnityEngine.UI;
///
/// 装备仓库
///
public class UIViewEquipLib : UIView
{
//分组按钮
public List GroupButtons = new List();
//类型按钮
public List TypeButtons = new List();
//循环列表
public LoopListView2 EquipLoopList;
//提交按钮
public CommonButton CommitButton;
//关闭按钮
public CommonButton ButtonClose;
//当前激活的按钮
private CommonToggle ActiveTypeToggle;
private CommonToggle ActiveGroupToggle;
//展示的装备数据
private List IDList = new List();
[HideInInspector]
//总Item个数
public int TotalCount = 0;
[HideInInspector]
//每行Item个数
public int RowCount = 4;
public override UIViewType ViewType
{
get
{
return UIViewType.Normal;
}
}
//初始化
public void Awake()
{
EquipLoopList.InitListView(GetItemCount(), OnGetItemByIndex);
InitButtonsOnClick();
ChangedGroupButton(GroupButtons[0]);
SerchEquipData();
}
// 初始化按钮OnClick
private void InitButtonsOnClick()
{
foreach (var item in TypeButtons)
{
item.OnClicked = TypeButtonClicked;
}
foreach (var item in GroupButtons)
{
item.OnClicked = GroupButtonClicked;
}
CommitButton.OnClicked = CommitButon_OnClicked;
ButtonClose.OnClicked = ButtonClose_OnClicked;
}
public override void OnDestroy()
{
base.OnDestroy();
MessageDispatcher.RemoveListener("REFRESH_UIVIEW_EQUIPLIB", RefreshUI);
CommitButton.OnClicked -= CommitButon_OnClicked;
ButtonClose.OnClicked -= ButtonClose_OnClicked;
}
//关闭按钮事件
private void ButtonClose_OnClicked(CommonButton obj)
{
//初始化购物车数据
EquipManager.Instance.InitData();
Hide();
}
//提交按钮事件
private void CommitButon_OnClicked(CommonButton obj)
{
//添加装备到背包
EquipManager.Instance.AddSelectedEquipToBag();
//初始化购物车数据
EquipManager.Instance.InitData();
//刷新UI
Refresh();
}
private void OnEnable()
{
MessageDispatcher.AddListener("REFRESH_UIVIEW_EQUIPLIB", RefreshUI);
}
private void OnDisable()
{
MessageDispatcher.RemoveListener("REFRESH_UIVIEW_EQUIPLIB", RefreshUI);
}
private void RefreshUI(IMessage obj)
{
Refresh();
}
public LoopListViewItem2 OnGetItemByIndex(LoopListView2 listView, int index)
{
//获取Item预设
LoopListViewItem2 item = listView.NewListViewItem("EquipRowItem");
//
EquipRowItem itemScript = item.GetComponent();
if (item.IsInitHandlerCalled == false)
{
itemScript.Init(false);
item.IsInitHandlerCalled = true;
}
for (int i = 0; i < RowCount; ++i)
{
int itemIndex = index * RowCount + i;
if (itemIndex >= TotalCount)
{
itemScript.mItemList[i].gameObject.SetActive(false);
continue;
}
string id = IDList[itemIndex];
//获取装备数据
Equip itemData = EquipManager.Instance.GetEquipByID(id);
if (itemData != null)
{
itemScript.mItemList[i].gameObject.SetActive(true);
itemScript.mItemList[i].SetItemData(itemData, itemIndex);
}
else
{
itemScript.mItemList[i].gameObject.SetActive(false);
}
}
return item;
}
#region 初始化按钮
private void InitTypeButtons()
{
}
private void TypeButtonClicked(CommonToggle arg1, bool arg2)
{
if (arg2)
{
ActiveTypeToggle = arg1;
SerchEquipData();
}
}
private void ChangedGroupButton(CommonToggle toggle)
{
//设置激活的组按钮
ActiveGroupToggle = toggle;
//查询组按钮下需要激活的类型按钮
List types = EquipManager.Instance.Groups[ActiveGroupToggle.LableText];
//激活组按钮下的类型按钮
foreach (var item in TypeButtons)
{
item.IsOn = false;
item.gameObject.SetActive(false);
}
for (int i = 0; i < types.Count; i++)
{
TypeButtons[i].LableText = types[i];
TypeButtons[i].gameObject.SetActive(true);
}
//这是当前激活按钮
TypeButtons[0].IsOn = true;
ActiveTypeToggle = TypeButtons[0];
}
private void GroupButtonClicked(CommonToggle arg1, bool arg2)
{
if (arg2)
{
ActiveGroupToggle = arg1;
ChangedGroupButton(arg1);
//SerchEquipData();改变类型按钮时会查询数据,不用再次查询
}
}
#endregion
// 查询要展示的装备
public void SerchEquipData()
{
IDList.Clear();
IDList = EquipManager.Instance.Serch(ActiveTypeToggle.LableText, ActiveGroupToggle.LableText);
Refresh();
}
//刷新
public override void Refresh()
{
base.Refresh();
EquipLoopList.SetListItemCount(GetItemCount(), false);
EquipLoopList.RefreshAllShownItem();
}
public int GetItemCount()
{
TotalCount = IDList.Count;
int itemCount = TotalCount / RowCount;
if (TotalCount % RowCount > 0)
{
itemCount++;
}
return itemCount;
}
//////TODO
//void SetListItemTotalCount(int count)
//{
// int count1 = ViewModel.EquipData.Count / mItemCountPerRow;
// if (ViewModel.EquipData.Count % mItemCountPerRow > 0)
// {
// count1++;
// }
// EquipLoopList.SetListItemCount(count1, false);
// EquipLoopList.RefreshAllShownItem();
//}
}