//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, October 09, 2017
|
//--------------------------------------------------------
|
|
using Snxxz.UI;
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Linq;
|
using TableConfig;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using EnhancedUI.EnhancedScroller;
|
namespace Snxxz.UI
|
{
|
|
public class MarketPutawayWin : Window
|
{
|
[SerializeField] ScrollerController putawayItemCtrl;
|
[SerializeField] ScrollerController bagItemCtrl;
|
|
[SerializeField] RectTransform m_NotItemPutTip;
|
|
MarketModel m_Model = null;
|
MarketModel model
|
{
|
get
|
{
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<MarketModel>());
|
}
|
}
|
|
ItemTipsModel _itemTipsModel;
|
ItemTipsModel itemTipsModel
|
{
|
get
|
{
|
return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
|
}
|
}
|
|
PlayerPackModel m_PackModel;
|
PlayerPackModel PackModel
|
{
|
get { return m_PackModel ?? (m_PackModel = ModelCenter.Instance.GetModel<PlayerPackModel>()); }
|
}
|
|
|
#region Built-in
|
protected override void BindController()
|
{
|
putawayItemCtrl.OnRefreshCell += OnRefreshPutawayItemCell;
|
bagItemCtrl.OnRefreshCell += OnRefreshBagItemCell;
|
}
|
|
protected override void AddListeners()
|
{
|
}
|
|
protected override void OnPreOpen()
|
{
|
model.m_AchievementIndex = -1;
|
PlayerMarketData.OnRefreshPutaway += OnRefreshPutaway;
|
PackModel.RefreshItemCountAct += ItemRefreshEvent;
|
InitData();
|
}
|
|
private void ItemRefreshEvent(PackType arg1, int arg2, int arg3)
|
{
|
InitBagData();
|
}
|
|
private void InitPutawayItem()
|
{
|
putawayItemCtrl.Refresh();
|
List<MarketItemData> list = PlayerDatas.Instance.market.putawayList;
|
if (list.Count > 0)
|
{
|
m_NotItemPutTip.gameObject.SetActive(false);
|
int page = Mathf.CeilToInt((float)list.Count / 2);
|
for (int i = 0; i < page; i++)
|
{
|
putawayItemCtrl.AddCell(ScrollerDataType.Header, i);
|
}
|
}
|
else
|
{
|
m_NotItemPutTip.gameObject.SetActive(true);
|
}
|
putawayItemCtrl.Restart();
|
}
|
|
private void OnRefreshPutaway()
|
{
|
InitPutawayItem();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
HandleAchievement();
|
}
|
|
protected override void OnPreClose()
|
{
|
}
|
|
protected override void OnAfterClose()
|
{
|
PlayerMarketData.OnRefreshPutaway -= OnRefreshPutaway;
|
PackModel.RefreshItemCountAct -= ItemRefreshEvent;
|
}
|
#endregion
|
|
private void InitData()
|
{
|
m_NotItemPutTip.gameObject.SetActive(true);
|
InitBagData();
|
InitPutawayItem();
|
}
|
|
private void InitBagData()
|
{
|
bagItemCtrl.Refresh();
|
model.bagItems.Clear();
|
SinglePackModel packTypeModel = PackModel.GetSinglePackModel(PackType.rptItem);
|
if (packTypeModel != null)
|
{
|
Dictionary<int, ItemModel> dic = packTypeModel.GetPackModelIndexDict();
|
if (dic != null && dic.Count > 0)
|
{
|
model.bagItems.AddRange(dic.Values.ToList());
|
model.bagItems.Sort(ComparePutawayItems);
|
}
|
}
|
if (model.bagItems.Count > 0)
|
{
|
int page = Mathf.CeilToInt((float)model.bagItems.Count / 4);
|
for (int i = 0; i < page; i++)
|
{
|
bagItemCtrl.AddCell(ScrollerDataType.Header, i);
|
}
|
}
|
bagItemCtrl.Restart();
|
}
|
|
int ComparePutawayItems(ItemModel x, ItemModel y)
|
{
|
bool putaway_ok_x = model.CheckItemPutaway(x, false, true);
|
bool putaway_ok_y = model.CheckItemPutaway(y, false, true);
|
if (putaway_ok_x != putaway_ok_y)
|
{
|
return -putaway_ok_x.CompareTo(putaway_ok_y);
|
}
|
bool item_x = x.chinItemModel != null && x.chinItemModel.Type <= 100;
|
bool item_y = y.chinItemModel != null && y.chinItemModel.Type <= 100;
|
if (item_x != item_y)
|
{
|
return -item_x.CompareTo(item_y);
|
}
|
else if (item_x && item_y)
|
{
|
return x.itemId.CompareTo(y.itemId);
|
}
|
bool wing_x = x.chinItemModel != null && x.chinItemModel.Type == 111;
|
bool wing_y = y.chinItemModel != null && y.chinItemModel.Type == 111;
|
if (wing_x != wing_y)
|
{
|
return -wing_x.CompareTo(wing_y);
|
}
|
else if (wing_x && wing_y)
|
{
|
if (x.chinItemModel.LV != y.chinItemModel.LV)
|
{
|
return x.chinItemModel.LV.CompareTo(y.chinItemModel.LV);
|
}
|
return -x.chinItemModel.ItemColor.CompareTo(y.chinItemModel.ItemColor);
|
}
|
bool equip_x = x.chinItemModel != null && (x.chinItemModel.Type > 100 && x.chinItemModel.Type <= 112);
|
bool equip_y = y.chinItemModel != null && (y.chinItemModel.Type > 100 && y.chinItemModel.Type <= 112);
|
if (equip_x != equip_y)
|
{
|
return -equip_x.CompareTo(equip_y);
|
}
|
else if (equip_x && equip_y)
|
{
|
if (x.chinItemModel.EquipPlace != y.chinItemModel.EquipPlace)
|
{
|
return x.chinItemModel.EquipPlace.CompareTo(y.chinItemModel.EquipPlace);
|
}
|
return -x.chinItemModel.ItemColor.CompareTo(y.chinItemModel.ItemColor);
|
}
|
return 0;
|
}
|
|
private void OnRefreshPutawayItemCell(ScrollerDataType type, CellView cell)
|
{
|
var _putCell = cell as MarketPutedItemCell;
|
int page = cell.index;
|
_putCell.Display(page * 2, page * 2 + 1);
|
}
|
|
private void OnRefreshBagItemCell(ScrollerDataType type, CellView cell)
|
{
|
var _bagCell = cell as MarketBagItemCell;
|
int page = cell.index;
|
int _index = 0;
|
if (TryGetIndex(page, out _index))
|
{
|
if (_bagCell.m_AchieveEffects[_index] == null)
|
{
|
var _effect = AchievementGuideEffectPool.Require(2);
|
_bagCell.m_AchieveEffects[_index] = _effect;
|
_effect.transform.SetParentEx(_bagCell[_index].transform, Vector3.zero, Vector3.zero, Vector3.one);
|
(_effect.transform as RectTransform).anchoredPosition = Vector3.zero;
|
if (_effect.effect != null)
|
{
|
_effect.effect.SetMask();
|
}
|
//m_AchievementIndex = -1;
|
}
|
}
|
else
|
{
|
for (int i = 0; i < 4; i++)
|
{
|
if (_bagCell.m_AchieveEffects[i] != null)
|
{
|
AchievementGuideEffectPool.Recycle(_bagCell.m_AchieveEffects[i]);
|
_bagCell.m_AchieveEffects[i] = null;
|
}
|
}
|
}
|
_bagCell.Display(page * 4, page * 4 + 1, page * 4 + 2, page * 4 + 3);
|
}
|
|
public bool TryGetIndex(int _page,out int _index)
|
{
|
_index = 0;
|
for (int i = 0; i < 4; i++)
|
{
|
if (model.m_AchievementIndex == _page * 4 + i)
|
{
|
_index = i;
|
return true;
|
}
|
}
|
return false;
|
}
|
|
void HandleAchievement()
|
{
|
model.m_AchievementIndex = -1;
|
if (AchievementGoto.achievementType == AchievementGoto.MarketPutOn)
|
{
|
for (int i = 0; i < model.bagItems.Count; i++)
|
{
|
if (model.CheckItemPutaway(model.bagItems[i]))
|
{
|
model.m_AchievementIndex = i;
|
break;
|
}
|
}
|
if (model.m_AchievementIndex == -1)
|
{
|
SysNotifyMgr.Instance.ShowTip("Achievement_21");
|
}
|
else
|
{
|
var _page = model.m_AchievementIndex / 4;
|
bagItemCtrl.JumpIndex(_page);
|
bagItemCtrl.m_Scorller.RefreshActiveCellViews();
|
}
|
AchievementGoto.achievementType = 0;
|
}
|
}
|
}
|
|
}
|
|
|
|
|