//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, November 20, 2017
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
using System;
|
using System.Collections.Generic;
|
using vnxbqy.UI;
|
//翅膀精炼红点
|
namespace vnxbqy.UI
|
{
|
|
|
public class WingsRedDotModel : Model, IPlayerLoginOk, IBeforePlayerDataInitialize
|
{
|
private const int Redpoint_key = 10603;
|
private int WingNumber = 0;//翅膀数量标记
|
private int Marking = 0;
|
private bool IsOnePutOn = true;
|
public bool IsBoolOpenWingeWin = false;
|
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
|
public override void Init()
|
{
|
|
}
|
public void OnPlayerLoginOk()
|
{
|
packModel.itemCntAddEvent += ItemCntAddAct;//物品数量增加
|
packModel.itemCntReduceEvent += ItemCntReduceAct;//物品数量减少
|
FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChange;
|
ItemModel itemModel = packModel.GetItemByIndex(PackType.Equip, SpiritWeaponModel.WING_EQUIPINDEX);
|
if (IsOnePutOn)
|
{
|
WingsDot();
|
}
|
if (itemModel != null)
|
{
|
IsOnePutOn = false;
|
}
|
|
}
|
public void OnBeforePlayerDataInitialize()
|
{
|
packModel.itemCntAddEvent -= ItemCntAddAct;//物品数量增加
|
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChange;
|
packModel.itemCntReduceEvent -= ItemCntReduceAct;//物品数量减少
|
}
|
|
|
|
public override void UnInit()
|
{
|
|
}
|
|
|
|
private void OnFuncStateChange(int obj)
|
{
|
if (obj == 90)
|
{
|
WingsDot();
|
}
|
}
|
|
public class WingsInformation
|
{
|
public int WingsID;
|
public int WingsCount;
|
}
|
private Dictionary<int, WingsInformation> _dicWings = new Dictionary<int, WingsInformation>();
|
private List<WingRefineAttrConfig> WingRefineAttr = new List<WingRefineAttrConfig>();
|
public void WingsDot()
|
{
|
ItemModel itemModel = packModel.GetItemByIndex(PackType.Equip, SpiritWeaponModel.WING_EQUIPINDEX);
|
|
if (itemModel == null || !FuncOpen.Instance.IsFuncOpen(90))
|
{
|
WingNumber = 0;
|
Marking = 0;
|
return;
|
}
|
var WingItemA = WingRefineExpConfig.Get(itemModel.itemId);
|
if (WingItemA == null)
|
{
|
WingNumber = 0;
|
Marking = 0;
|
return;
|
}
|
SinglePack singlePackModel = packModel.GetSinglePack(PackType.Item);
|
Dictionary<int, ItemModel> backpack_dic = singlePackModel.GetAllItems();
|
|
List<int> wingsRefinelist = itemModel.GetUseData((int)ItemUseDataKey.wingProgressValue);
|
if (wingsRefinelist != null)
|
{
|
var config = WingRefineExpConfig.Get((int)itemModel.itemId);
|
int WingsPhase = config.WingsPhase;//获取翅膀阶数
|
if (WingRefineAttr.Count <= 0)
|
{
|
WingRefineAttr = WingRefineAttrConfig.GetValues();
|
}
|
//var WingRefineAttr = WingRefineAttrConfig.GetValues();
|
int Max = 0;
|
foreach (var value in WingRefineAttr)
|
{
|
if (value.wingsPhase == WingsPhase)
|
{
|
Max = value.EXPupper;//最大精炼度
|
}
|
}
|
int Now = wingsRefinelist[0];
|
if (Now >= Max)
|
{
|
WingNumber = 0;
|
Marking = 0;
|
return;
|
}
|
}
|
_dicWings.Clear();
|
foreach (int index in backpack_dic.Keys)
|
{
|
var item = backpack_dic[index];
|
var itemId = item.itemId;
|
if (WingRefineExpConfig.Has(itemId) && ItemLogicUtility.Instance.IsWing(itemId))
|
{
|
var _WingsInformation = new WingsInformation();
|
_WingsInformation.WingsID = itemId;
|
_WingsInformation.WingsCount = item.count;
|
_dicWings.Add(index, _WingsInformation);
|
}
|
}
|
|
var config1 = WingRefineExpConfig.Get((int)itemModel.itemId);
|
foreach (var key in _dicWings.Keys)
|
{
|
var wings = ItemConfig.Get(_dicWings[key].WingsID);
|
if (wings.EndureReduceType != 0)
|
{
|
return;
|
}
|
var config2 = WingRefineExpConfig.Get(_dicWings[key].WingsID);
|
if (config1.WingsPhase >= config2.WingsPhase)
|
{
|
WingNumber += packModel.GetItemCountByID(PackType.Item, _dicWings[key].WingsID);
|
}
|
}
|
if (IsBoolOpenWingeWin)
|
{
|
return;
|
}
|
if (WingNumber > Marking && FuncOpen.Instance.IsFuncOpen(90))
|
{
|
Marking = WingNumber;
|
return;
|
}
|
else
|
{
|
Marking = WingNumber;
|
}
|
}
|
private void ItemCntAddAct(PackType arg1, int ItemIndex, int ItemID)//物品数量增加
|
{
|
|
if (arg1 == PackType.Item)//物品背包物品增加
|
{
|
ItemBagAdd(ItemIndex, ItemID);
|
}
|
if (arg1 == PackType.Equip)//装备背包物品增加
|
{
|
ItemModel itemModel = packModel.GetItemByIndex(PackType.Equip, SpiritWeaponModel.WING_EQUIPINDEX);
|
if (IsOnePutOn)
|
{
|
WingsDot();
|
}
|
if (itemModel != null)
|
{
|
IsOnePutOn = false;
|
}
|
}
|
}
|
|
private void ItemBagAdd(int ItemIndex, int ItemID)//物品背包数量添加
|
{
|
ItemModel ItemModel = packModel.GetItemByIndex(PackType.Item, ItemIndex);
|
int ItemCount = ItemModel.preItemCount;
|
var WingItem = WingRefineExpConfig.Get(ItemModel.itemId);
|
if (IsBoolOpenWingeWin || WingItem == null)
|
{
|
return;
|
}
|
if (_dicWings.ContainsKey(ItemIndex))
|
{
|
if (ItemCount > _dicWings[ItemIndex].WingsCount)
|
{
|
_dicWings[ItemIndex].WingsCount = ItemCount;
|
}
|
else
|
{
|
_dicWings[ItemIndex].WingsCount = ItemCount;
|
}
|
}
|
}
|
private void ItemCntReduceAct(PackType arg1, int Index, int ItemID)
|
{
|
if (arg1 == PackType.Item)//物品背包物品减少
|
{
|
var WingItem = WingRefineExpConfig.Get(ItemID);
|
if (WingItem != null && _dicWings.ContainsKey(Index))
|
{
|
_dicWings.Remove(Index);
|
if (_dicWings.Count <= 0 )
|
{
|
return;
|
}
|
}
|
}
|
if (arg1 == PackType.Equip)//装备脱下
|
{
|
ItemModel itemModel = packModel.GetItemByIndex(PackType.Equip, SpiritWeaponModel.WING_EQUIPINDEX);
|
if (itemModel == null )
|
{
|
return;
|
}
|
}
|
}
|
}
|
}
|