using System;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
public enum ItemCellformat
|
{
|
Format_120x120,
|
Format_100x100,
|
Format_84x84,
|
Format_80x80,
|
Format_70x70,
|
Format_64x64,
|
None,
|
}
|
|
public class CommonItemBaisc : MonoBehaviour
|
{
|
[SerializeField] ItemCellformat m_Format;
|
public ItemCellformat format { get { return m_Format; } set { m_Format = value; } }
|
|
Image m_BgIcon;
|
private Image bgIcon {
|
get {
|
if (m_BgIcon == null)
|
{
|
LoadPrefab();
|
m_BgIcon = this.transform.GetComponent<Image>("Container_ItemCell/Img_BackGround");
|
}
|
return m_BgIcon;
|
}
|
}
|
|
Image m_ItemIcon;
|
private Image itemIcon {
|
get {
|
if (m_ItemIcon == null)
|
{
|
LoadPrefab();
|
m_ItemIcon = this.transform.GetComponent<Image>("Container_ItemCell/Img_Icon");
|
}
|
return m_ItemIcon;
|
}
|
}
|
|
|
Image m_StateIcon;
|
public Image stateIcon {
|
get {
|
if (m_StateIcon == null)
|
{
|
LoadPrefab();
|
m_StateIcon = this.transform.GetComponent<Image>("Container_ItemCell/Img_State");
|
}
|
return m_StateIcon;
|
}
|
}
|
|
Text m_CountText;
|
public Text countText {
|
get {
|
if (m_CountText == null)
|
{
|
LoadPrefab();
|
m_CountText = this.transform.GetComponent<Text>("Container_ItemCell/Txt_Count");
|
}
|
return m_CountText;
|
}
|
}
|
|
Button m_Button;
|
public Button button {
|
get {
|
if (m_Button == null)
|
{
|
LoadPrefab();
|
m_Button = this.GetComponent<Button>("Container_ItemCell");
|
}
|
return m_Button;
|
}
|
}
|
|
// EquipSuitEffect m_SuitEffect;
|
// EquipSuitEffect suitEffect {
|
// get {
|
// if (m_SuitEffect == null)
|
// {
|
// LoadPrefab();
|
// //clone 会造成二次创建
|
// m_SuitEffect = transform.GetComponentInChildren<EquipSuitEffect>();
|
// if (m_SuitEffect == null)
|
// m_SuitEffect = EquipSuitEffect.Create(transform as RectTransform);
|
// }
|
// return m_SuitEffect;
|
// }
|
// }
|
|
//物品基础特效(物品表)
|
ItemBaseEffect m_ItemBaseEffect;
|
ItemBaseEffect itemBaseEffect {
|
get {
|
if (m_ItemBaseEffect == null)
|
{
|
LoadPrefab();
|
//clone 会造成二次创建
|
m_ItemBaseEffect = transform.GetComponentInChildren<ItemBaseEffect>();
|
if (m_ItemBaseEffect == null)
|
m_ItemBaseEffect = ItemBaseEffect.Create(transform as RectTransform);
|
}
|
return m_ItemBaseEffect;
|
}
|
}
|
|
// public bool suitEffectDirty { get; set; }
|
|
GameObject cellContainer;
|
protected void LoadPrefab()
|
{
|
if (cellContainer != null)
|
return;
|
//clone 会造成二次创建
|
var tmp = transform.Find("Container_ItemCell");
|
if (tmp != null)
|
{
|
cellContainer = tmp.gameObject;
|
return;
|
}
|
if (cellContainer == null)
|
{
|
switch (format)
|
{
|
case ItemCellformat.Format_64x64:
|
cellContainer = UIUtility.CreateWidget("ItemCell_64", "Container_ItemCell");
|
break;
|
case ItemCellformat.Format_70x70:
|
cellContainer = UIUtility.CreateWidget("ItemCell_70", "Container_ItemCell");
|
break;
|
case ItemCellformat.Format_80x80:
|
cellContainer = UIUtility.CreateWidget("ItemCell_80", "Container_ItemCell");
|
break;
|
case ItemCellformat.Format_84x84:
|
cellContainer = UIUtility.CreateWidget("ItemCell_84", "Container_ItemCell");
|
break;
|
case ItemCellformat.Format_100x100:
|
cellContainer = UIUtility.CreateWidget("ItemCell_100", "Container_ItemCell");
|
break;
|
case ItemCellformat.Format_120x120:
|
cellContainer = UIUtility.CreateWidget("ItemCell_120", "Container_ItemCell");
|
break;
|
}
|
|
if (cellContainer != null)
|
{
|
cellContainer.transform.SetParentEx(this.transform, Vector3.zero, Quaternion.identity, Vector3.one);
|
cellContainer.transform.SetAsFirstSibling();
|
}
|
}
|
}
|
|
public int itemId { get; private set; }
|
PackManager packModel { get { return PackManager.Instance; } }
|
// EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
|
|
/// <summary>
|
/// 初始化数据 bool值用来判断是否需要展示评分高低或者职业限制
|
/// </summary>
|
/// <param name="model"></param>
|
/// <param name="isCompare"></param>
|
public virtual void Init(ItemModel model, bool isCompare = false)
|
{
|
itemId = model.itemId;
|
InitUI(model.guid, model.itemId, (ulong)model.count, model.score, model.isAuction, model.packType, isCompare, model.useDataDict);
|
}
|
|
/// <summary>
|
/// 初始化数据(预览)
|
/// </summary>
|
/// <param name="model"></param>
|
public virtual void Init(ItemCellModel model)
|
{
|
itemId = model.itemId;
|
InitUI(model.guid, model.itemId, model.count, model.score, false, model.packType, model.isCompare, model.useDataDic);
|
}
|
|
private void InitUI(string guid, int itemId, ulong count, int score, bool isAuction, PackType type, bool isCompare, Dictionary<int, List<int>> useDataDic)
|
{
|
var config = ItemConfig.Get(itemId);
|
if (config == null) return;
|
|
itemIcon.SetActive(true);
|
bgIcon.SetActive(true);
|
itemIcon.SetSprite(config.IconKey);
|
ItemConfig itemConfig = ItemConfig.Get(itemId);
|
bgIcon.SetItemBackGround(ItemLogicUtility.Instance.GetItemQuality(itemId, useDataDic), itemConfig.QualityEchoType);
|
if (packModel.textCountShow.ContainsKey(itemId))
|
{
|
countText.SetActive(true);
|
countText.text = count > 1 ? packModel.textCountShow[itemId] + "x" + count : packModel.textCountShow[itemId];
|
}
|
else if (packModel.gameCashShow.Contains(itemId))
|
{
|
//代金券
|
countText.SetActive(true);
|
countText.text = count > 1000000 ? UIHelper.ReplaceLargeNum(count / 100.0f) : (count / 100.0f).ToString("0.#");
|
}
|
else if (Array.IndexOf(packModel.textCountShow2, itemId) != -1)
|
{
|
countText.SetActive(true);
|
countText.text = UIHelper.ReplaceLargeNum(count * (ulong)config.EffectValueA1);
|
}
|
else
|
{
|
countText.SetActive(count > 1);
|
if (count > 1)
|
{
|
countText.text = UIHelper.ReplaceLargeNum((double)count);
|
}
|
}
|
|
// suitEffect.Display(itemId, suitEffectDirty);
|
// suitEffectDirty = false;
|
itemBaseEffect.Display(itemId);
|
|
var compareReslut = isCompare ? Compare(type, itemId, score, guid) : 0;
|
switch (compareReslut)
|
{
|
case -1:
|
stateIcon.SetActive(true);
|
stateIcon.SetSprite("EquipDownIcon");
|
break;
|
case 0:
|
stateIcon.SetActive(false);
|
break;
|
case 1:
|
stateIcon.SetActive(true);
|
stateIcon.SetSprite("EquipUpIcon");
|
break;
|
case 99:
|
stateIcon.SetActive(true);
|
stateIcon.SetSprite("EquipForbidIcon");
|
break;
|
}
|
}
|
|
// / <summary>
|
// / 0 相等 99 禁止比较 1 高评分 -1 低评分
|
// / </summary>
|
// / <param name="itemId"></param>
|
// / <param name="score"></param>
|
// / <param name="isCompare"></param>
|
// / <param name="compareSocre"></param>
|
// / <returns></returns>
|
int Compare(PackType type, int itemId, int score, string guid)
|
{
|
if (type == PackType.Equip || type == PackType.DogzEquip)
|
{
|
return 0;
|
}
|
|
//此处可能是武将卡
|
// if (!ItemLogicUtility.Instance.IsJobCompatibleItem(itemId))
|
// {
|
// return 99;
|
// }
|
|
var config = ItemConfig.Get(itemId);
|
if (config == null || config.EquipPlace == 0)
|
{
|
return 0;
|
}
|
|
var item = packModel.GetItemByGuid(guid);
|
|
if (item != null && ItemLogicUtility.Instance.IsOverdue(guid))
|
{
|
return 99;
|
}
|
|
if (ItemLogicUtility.Instance.IsRealmEquip(itemId))
|
{
|
return EquipModel.Instance.CompareToCurrent(guid);
|
}
|
else
|
{
|
return 0;
|
}
|
}
|
|
// int GetDogzEquipScore(int equipPlace)
|
// {
|
// var dogzModel = ModelCenter.Instance.GetModel<DogzModel>();
|
// ItemModel putOnModel = null;
|
// dogzModel.TryGetDogzEquip(dogzModel.presentSelectDogz, equipPlace, out putOnModel);
|
// return putOnModel == null ? 0 : putOnModel.score;
|
// }
|
|
// int GetSpiritWeaponScore(int equipPlace)
|
// {
|
// var spiritWeaponModel = ModelCenter.Instance.GetModel<SpiritWeaponModel>();
|
// var guid = spiritWeaponModel.GetSpiritWeapon((RoleEquipType)equipPlace);
|
// var item = packModel.GetItemByGuid(guid);
|
// return item != null ? item.score : 0;
|
// }
|
|
}
|
|
public class ItemCellModel
|
{
|
public string guid { get; private set; }
|
public int itemId { get; private set; }
|
public ulong count { get; private set; }
|
public int score { get; private set; }
|
public bool isCompare { get; private set; }
|
public ItemConfig itemConfig { get { return ItemConfig.Get(itemId); } }
|
public PackType packType { get; private set; }
|
public Dictionary<int, List<int>> useDataDic { get; private set; }
|
|
|
public ItemCellModel(int itemId, bool isPreview = false, ulong count = 0, string guid = "", PackType type = PackType.Deleted, bool isCompare = false, Dictionary<int, List<int>> useDataDic = null)
|
{
|
this.itemId = AdjustItemId(itemId);
|
this.guid = guid;
|
this.count = count;
|
this.isCompare = isCompare;
|
this.useDataDic = useDataDic;
|
this.packType = type;
|
|
//this.score = ItemLogicUtility.Instance.GetEquipScore(itemId, useDataDic, isPreview);
|
}
|
|
public ItemCellModel(int itemId)
|
{
|
this.itemId = AdjustItemId(itemId);
|
this.guid = "";
|
this.count = 0;
|
this.isCompare = false;
|
this.useDataDic = null;
|
this.packType = PackType.Deleted;
|
this.score = 0;
|
}
|
|
public ItemCellModel(int itemId, bool isPreview, ulong count)
|
{
|
this.itemId = AdjustItemId(itemId);
|
this.guid = "";
|
this.count = count;
|
this.isCompare = false;
|
this.useDataDic = null;
|
this.packType = PackType.Deleted;
|
|
//this.score = ItemLogicUtility.Instance.GetEquipScore(itemId, null, isPreview);
|
}
|
|
int AdjustItemId(int itemId)
|
{
|
var config = ItemConfig.Get(itemId);
|
if (config != null && config.Effect1 == 220)
|
{
|
return config.EffectValueA1;
|
}
|
else
|
{
|
return itemId;
|
}
|
}
|
|
}
|
|