using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using Snxxz.UI;
|
|
namespace Snxxz.UI
|
{
|
public class SinglePack
|
{
|
public readonly PackType type;
|
public int unlockedGridCount { get; private set; }
|
private Dictionary<int, ItemModel> items = new Dictionary<int, ItemModel>(); //key 物品位置索引
|
|
public SinglePack(PackType type)
|
{
|
this.type = type;
|
}
|
|
public ItemModel UpdateItem(ItemInfo itemInfo)
|
{
|
var index = itemInfo.index;
|
if (!items.ContainsKey(index))
|
{
|
items.Add(index, new ItemModel(type, itemInfo));
|
}
|
else
|
{
|
items[index].SetItemInfo(itemInfo);
|
}
|
|
return items[index];
|
}
|
|
public void RemoveItem(int index)
|
{
|
if (items.ContainsKey(index))
|
{
|
items.Remove(index);
|
}
|
}
|
|
public void SetOpenGridCount(int count)
|
{
|
unlockedGridCount = count;
|
}
|
|
public ItemModel GetItemByIndex(int index)
|
{
|
ItemModel item = null;
|
items.TryGetValue(index, out item);
|
return item;
|
}
|
|
public Dictionary<int, ItemModel> GetAllItems()
|
{
|
return items;
|
}
|
|
public List<ItemModel> GetItemsById(int itemId)
|
{
|
var list = new List<ItemModel>();
|
foreach (var model in items.Values)
|
{
|
if (model.itemId == itemId)
|
{
|
list.Add(model);
|
}
|
}
|
|
return list;
|
}
|
|
public int GetCountById(int itemId)
|
{
|
var count = 0;
|
foreach (var item in items.Values)
|
{
|
if (item.itemId == itemId)
|
{
|
count += item.count;
|
}
|
}
|
|
return count;
|
}
|
|
public List<ItemModel> GetItems(FilterParams filterParams)
|
{
|
var list = new List<ItemModel>();
|
foreach (var item in items.Values)
|
{
|
var levelValid = filterParams.levels == null || filterParams.levels.Contains(item.config.LV);
|
var qualityValid = filterParams.qualitys == null || filterParams.qualitys.Contains(item.config.ItemColor);
|
var typeValid = filterParams.itemTypes == null || filterParams.itemTypes.Contains(item.config.Type);
|
var equipTypeValid = filterParams.equipTypes == null || filterParams.equipTypes.Contains(item.config.EquipPlace);
|
var jobValid = filterParams.jobs == null || filterParams.jobs.Contains(item.config.JobLimit);
|
var auctionValid = filterParams.isAuction == item.isAuction;
|
|
if (levelValid && qualityValid && typeValid && equipTypeValid && jobValid && auctionValid)
|
{
|
list.Add(item);
|
}
|
}
|
|
return list;
|
}
|
|
public int GetCountByType(int type)
|
{
|
var count = 0;
|
foreach (var item in items.Values)
|
{
|
if (item.config.Type == type)
|
{
|
count += item.count;
|
}
|
}
|
|
return count;
|
}
|
|
/// <summary>
|
/// 得到同一个id指定数量的物品格子序号
|
/// </summary>
|
/// <param name="itemId"></param>
|
/// <param name="needCount"></param>
|
/// <param name="type"></param>
|
/// <returns></returns>
|
public List<int> GetItemIndexsAppointedCount(int itemId, int needCount)
|
{
|
var goalItems = new List<ItemModel>();
|
foreach (var item in this.items.Values)
|
{
|
if (item.itemId == itemId)
|
{
|
goalItems.Add(item);
|
}
|
}
|
|
var itemIndexs = new List<int>();
|
var count = 0;
|
for (var i = 0; i < goalItems.Count; i++)
|
{
|
if (count < needCount)
|
{
|
itemIndexs.Add(goalItems[i].gridIndex);
|
count += goalItems[i].count;
|
}
|
else
|
{
|
break;
|
}
|
|
}
|
|
return itemIndexs;
|
}
|
|
/// <summary>
|
/// 得到第一个空格位置索引
|
/// </summary>
|
/// <param name="type"></param>
|
/// <returns></returns>
|
public int GetFirstEmptyGridIndex()
|
{
|
for (var index = 0; index < unlockedGridCount; index++)
|
{
|
if (!items.ContainsKey(index))
|
{
|
return index;
|
}
|
}
|
|
return -1;
|
}
|
|
public int GetEmptyGridCount()
|
{
|
return unlockedGridCount - items.Count;
|
}
|
|
public void Clear()
|
{
|
items.Clear();
|
}
|
|
public struct FilterParams
|
{
|
public List<int> levels;
|
public List<int> qualitys;
|
public List<int> itemTypes;
|
public List<int> equipTypes;
|
public bool isAuction;
|
public List<int> jobs;
|
}
|
|
}
|
}
|