using System;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
using System.Collections.Generic;
|
using Snxxz.UI;
|
|
namespace Snxxz.UI
|
{
|
public class FurnaceFireChooseWin : MonoBehaviour
|
{
|
[SerializeField]
|
private ScrollerController _fireCellCtrl;
|
|
[SerializeField]
|
private Button _closeBtn;
|
|
private int[] extraMatIds;
|
|
private List<AlchemySpecConfig> _alchemySpeModellist;
|
|
BlastFurnaceModel _furnaceModel;
|
BlastFurnaceModel FurnaceModel
|
{
|
get
|
{
|
return _furnaceModel ?? (_furnaceModel = ModelCenter.Instance.GetModel<BlastFurnaceModel>());
|
}
|
}
|
|
ItemTipsModel _itemTipsModel;
|
ItemTipsModel itemTipsModel
|
{
|
get
|
{
|
return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
|
}
|
}
|
|
PackModel _playerPack;
|
PackModel playerPack
|
{
|
get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PackModel>()); }
|
}
|
|
GetItemPathModel _itemPathModel;
|
GetItemPathModel itemPathModel
|
{
|
get
|
{
|
return _itemPathModel ?? (_itemPathModel = ModelCenter.Instance.GetModel<GetItemPathModel>());
|
}
|
}
|
|
private void OnEnable()
|
{
|
_fireCellCtrl.OnRefreshCell += RefreshMatCell;
|
playerPack.refreshItemCountEvent += InitModel;
|
_closeBtn.onClick.AddListener(CloseWin);
|
CreateCell();
|
}
|
|
private void OnDisable()
|
{
|
_fireCellCtrl.OnRefreshCell -= RefreshMatCell;
|
playerPack.refreshItemCountEvent -= InitModel;
|
_closeBtn.RemoveAllListeners();
|
}
|
|
private void InitModel(PackType type,int index,int id)
|
{
|
if (type != PackType.Item) return;
|
|
CreateCell();
|
}
|
|
private void CreateCell()
|
{
|
_fireCellCtrl.Refresh();
|
switch (FurnaceModel.funcTitle)
|
{
|
case BlastFurnaceFuncTitle.MakeDan:
|
_alchemySpeModellist = FurnaceModel.GetAlchemySpecModellist();
|
if (_alchemySpeModellist.Count > 0)
|
{
|
int i = 0;
|
int length = _alchemySpeModellist.Count;
|
for (i = 0; i < length; i++)
|
{
|
_fireCellCtrl.AddCell(ScrollerDataType.Header, i);
|
}
|
}
|
break;
|
//case BlastFurnaceFuncTitle.TreasureRefine:
|
// extraMatIds = FurnaceModel.extraMats;
|
// if (extraMatIds != null)
|
// {
|
// int i = 0;
|
// int length = extraMatIds.Length;
|
// for (i = 0; i < length; i++)
|
// {
|
// _fireCellCtrl.AddCell(ScrollerDataType.Header, i);
|
// }
|
// }
|
// break;
|
}
|
|
_fireCellCtrl.Restart();
|
}
|
|
private void RefreshMatCell(ScrollerDataType type, CellView cell)
|
{
|
FireChooseCell fireChooseCell = cell.GetComponent<FireChooseCell>();
|
if (fireChooseCell == null)
|
fireChooseCell = cell.gameObject.AddComponent<FireChooseCell>();
|
|
fireChooseCell.addBtn.onClick.RemoveAllListeners();
|
ItemConfig chinItemModel = null;
|
int num = 0;
|
SinglePack singlePack = playerPack.GetSinglePack(PackType.Item);
|
switch (FurnaceModel.funcTitle)
|
{
|
case BlastFurnaceFuncTitle.MakeDan:
|
AlchemySpecConfig alchemySpecModel = _alchemySpeModellist[cell.index];
|
chinItemModel = ItemConfig.Get(alchemySpecModel.SpecialMaterialD);
|
if (chinItemModel != null)
|
{
|
RefreshCellUI(alchemySpecModel.SpecialMaterialD, cell, alchemySpecModel.Introduce, fireChooseCell, chinItemModel);
|
if(singlePack != null)
|
{
|
num = singlePack.GetCountById(alchemySpecModel.SpecialMaterialD);
|
}
|
fireChooseCell.addBtn.gameObject.SetActive(true);
|
if (num >= alchemySpecModel.SpecialMateriaNUM)
|
{
|
fireChooseCell.itemCell.countText.text = UIHelper.AppendColor(TextColType.Green,num.ToString(),true) + "/" + alchemySpecModel.SpecialMateriaNUM;
|
}
|
else
|
{
|
fireChooseCell.itemCell.countText.text = UIHelper.AppendColor(TextColType.Red, num.ToString()) + "/" + alchemySpecModel.SpecialMateriaNUM;
|
}
|
fireChooseCell.addBtn.onClick.AddListener(() => { OnClickSpecAddBtn(alchemySpecModel); });
|
}
|
|
break;
|
}
|
}
|
|
private void RefreshCellUI(int matId,CellView cell, string effectStr,FireChooseCell fireChooseCell,ItemConfig chinItemModel)
|
{
|
ItemCellModel cellModel = new ItemCellModel(matId);
|
fireChooseCell.itemCell.Init(cellModel);
|
fireChooseCell.itemCell.countText.gameObject.SetActive(true);
|
fireChooseCell.nameText.text = chinItemModel.ItemName;
|
fireChooseCell.addSuccessRateText.text = effectStr;
|
fireChooseCell.itemCell.button.RemoveAllListeners();
|
fireChooseCell.itemCell.button.AddListener(() =>
|
{
|
itemPathModel.SetChinItemModel(matId);
|
});
|
}
|
|
private void OnClickSpecAddBtn(AlchemySpecConfig specModel)
|
{
|
FurnaceModel.RefreshAddSpecMat(specModel);
|
CloseWin();
|
}
|
|
private void CloseWin()
|
{
|
this.gameObject.SetActive(false);
|
}
|
}
|
}
|