//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Saturday, January 20, 2018
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System;
|
|
|
namespace vnxbqy.UI
|
{
|
|
public class RealmBetterEquipModel : Model, IBeforePlayerDataInitialize, ISwitchAccount,IPlayerLoginOk
|
{
|
PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
|
public string currentEquipGuid { get; private set; }
|
|
Dictionary<string, ItemModel> betterEquipModels = new Dictionary<string, ItemModel>();
|
|
public event Action showEquipRefreshEvent;
|
public const string RealmRecordKey = "RealmRecord";
|
|
public override void Init()
|
{
|
playerPack.refrechPackEvent += OnPackageRefresh;
|
playerPack.refreshItemCountEvent += OnPackageItemRefresh;
|
}
|
|
public override void UnInit()
|
{;
|
playerPack.refrechPackEvent -= OnPackageRefresh;
|
playerPack.refreshItemCountEvent -= OnPackageItemRefresh;
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
PlayerDatas.Instance.playerDataRefreshEvent -= RefreshRealm;
|
currentEquipGuid = string.Empty;
|
betterEquipModels.Clear();
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
LocalSave.SetInt(RealmRecordKey,PlayerDatas.Instance.baseData.realmLevel);
|
PlayerDatas.Instance.playerDataRefreshEvent += RefreshRealm;
|
}
|
|
public void OnSwitchAccount()
|
{
|
currentEquipGuid = string.Empty;
|
}
|
|
private void RefreshRealm(PlayerDataType type)
|
{
|
int realmLv = PlayerDatas.Instance.baseData.realmLevel;
|
if (type != PlayerDataType.RealmLevel
|
|| LocalSave.GetInt(RealmRecordKey) == realmLv
|
|| NewBieCenter.Instance.inGuiding)
|
{
|
return;
|
}
|
|
LocalSave.SetInt(RealmRecordKey,realmLv);
|
Dictionary<int, ItemModel> pairs = ItemLogicUtility.Instance.CheckBetterEquipByRealm();
|
betterEquipModels.Clear();
|
currentEquipGuid = string.Empty;
|
foreach (var model in pairs.Values)
|
{
|
betterEquipModels[model.guid] = model;
|
currentEquipGuid = model.guid;
|
}
|
if (showEquipRefreshEvent != null)
|
{
|
showEquipRefreshEvent();
|
}
|
}
|
|
public bool TryGetBetterEquip(string _guid, out ItemModel _equip)
|
{
|
return betterEquipModels.TryGetValue(_guid, out _equip);
|
}
|
|
public void ReportConfirmBetterEquip(string _guid)
|
{
|
betterEquipModels.Remove(_guid);
|
|
var tempGuid = GetOneEquip();
|
if (tempGuid != currentEquipGuid)
|
{
|
currentEquipGuid = tempGuid;
|
if (showEquipRefreshEvent != null)
|
{
|
showEquipRefreshEvent();
|
}
|
}
|
}
|
|
|
private void OnPackageRefresh(PackType _packType)
|
{
|
if (_packType != PackType.Item)
|
{
|
return;
|
}
|
|
var keys = new List<string>(betterEquipModels.Keys);
|
for (int i = keys.Count - 1; i >= 0; i--)
|
{
|
var guid = keys[i];
|
var itemModel = playerPack.GetItemByGuid(guid);
|
if (itemModel == null || itemModel.packType != PackType.Item)
|
{
|
betterEquipModels.Remove(guid);
|
}
|
}
|
|
var tempGuid = GetOneEquip();
|
if (tempGuid != currentEquipGuid)
|
{
|
if (!string.IsNullOrEmpty(tempGuid))
|
{
|
currentEquipGuid = tempGuid;
|
if (showEquipRefreshEvent != null)
|
{
|
showEquipRefreshEvent();
|
}
|
}
|
else
|
{
|
currentEquipGuid = tempGuid;
|
if (showEquipRefreshEvent != null)
|
{
|
showEquipRefreshEvent();
|
}
|
}
|
}
|
}
|
|
private void OnPackageItemRefresh(PackType _packType, int _index, int _itemId)
|
{
|
if (_packType == PackType.Equip)
|
{
|
//穿上装备的时候的处理
|
var item = playerPack.GetItemByIndex(_packType, _index);
|
if (item != null)
|
{
|
RemoveLowGradeItemByEquipPlace(_index, item.score);
|
}
|
OnPackageRefresh(PackType.Item);
|
}
|
else if (_packType == PackType.Item)
|
{
|
OnPackageRefresh(_packType);
|
}
|
}
|
|
private string GetOneEquip()
|
{
|
var guid = string.Empty;
|
foreach (var key in betterEquipModels.Keys)
|
{
|
guid = key;
|
break;
|
}
|
|
return guid;
|
}
|
|
private void RemoveLowGradeItemByEquipPlace(int _place, int _score)
|
{
|
var place = _place == 10 ? 9 : _place;
|
var keys = new List<string>(betterEquipModels.Keys);
|
for (int i = keys.Count - 1; i >= 0; i--)
|
{
|
var item = betterEquipModels[keys[i]];
|
if (item != null && item.config.EquipPlace == place && item.score <= _score)
|
{
|
betterEquipModels.Remove(keys[i]);
|
}
|
}
|
}
|
|
}
|
|
}
|
|
|
|