using System; using UnityEngine; using UnityEngine.UI; using TableConfig; 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 _alchemySpeModellist; BlastFurnaceModel _furnaceModel; BlastFurnaceModel FurnaceModel { get { return _furnaceModel ?? (_furnaceModel = ModelCenter.Instance.GetModel()); } } ItemTipsModel _itemTipsModel; ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel()); } } PlayerPackModel _playerPack; PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel()); } } GetItemPathModel _itemPathModel; GetItemPathModel itemPathModel { get { return _itemPathModel ?? (_itemPathModel = ModelCenter.Instance.GetModel()); } } private void OnEnable() { _fireCellCtrl.OnRefreshCell += RefreshMatCell; playerPack.RefreshItemCountAct += InitModel; _closeBtn.onClick.AddListener(CloseWin); FurnaceModel.GetRefineStoveConditions(); CreateCell(); } private void OnDisable() { _fireCellCtrl.OnRefreshCell -= RefreshMatCell; playerPack.RefreshItemCountAct -= InitModel; _closeBtn.RemoveAllListeners(); } private void InitModel(PackType type,int index,int id) { if (type != PackType.rptItem) 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(); if (fireChooseCell == null) fireChooseCell = cell.gameObject.AddComponent(); fireChooseCell.addBtn.onClick.RemoveAllListeners(); ItemConfig chinItemModel = null; int num = 0; SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem); switch (FurnaceModel.funcTitle) { case BlastFurnaceFuncTitle.MakeDan: AlchemySpecConfig alchemySpecModel = _alchemySpeModellist[cell.index]; chinItemModel = Config.Instance.Get(alchemySpecModel.SpecialMaterialD); if (chinItemModel != null) { RefreshCellUI(alchemySpecModel.SpecialMaterialD, cell, alchemySpecModel.Introduce, fireChooseCell, chinItemModel); if(singlePack != null) { num = singlePack.GetItemCountByID(alchemySpecModel.SpecialMaterialD); } fireChooseCell.addBtn.gameObject.SetActive(true); if (num >= alchemySpecModel.SpecialMateriaNUM) { fireChooseCell.itemCell.countText.text = UIHelper.GetTextColorByItemColor(TextColType.Green,num.ToString(),true) + "/" + alchemySpecModel.SpecialMateriaNUM; } else { fireChooseCell.itemCell.countText.text = UIHelper.GetTextColorByItemColor(TextColType.Red, num.ToString()) + "/" + alchemySpecModel.SpecialMateriaNUM; } fireChooseCell.addBtn.onClick.AddListener(() => { OnClickSpecAddBtn(alchemySpecModel); }); } break; //case BlastFurnaceFuncTitle.TreasureRefine: // chinItemModel = Config.Instance.Get(extraMatIds[cell.index]); // if (chinItemModel != null) // { // RefreshCellUI(extraMatIds[cell.index], cell, FurnaceModel.GetFireSuccessRate(chinItemModel.Effect1, chinItemModel.EffectValueA1), fireChooseCell, chinItemModel); // if(singlePack != null) // { // num = singlePack.GetItemCountByID(extraMatIds[cell.index]); // } // if (num >= 1) // { // fireChooseCell.addBtn.gameObject.SetActive(true); // fireChooseCell.itemCell.countText.text = UIHelper.GetTextColorByItemColor(TextColType.Green, num.ToString(),true) + "/1"; // } // else // { // fireChooseCell.addBtn.gameObject.SetActive(false); // fireChooseCell.itemCell.countText.text = UIHelper.GetTextColorByItemColor(TextColType.Red, num.ToString()) + "/1"; // } // fireChooseCell.addBtn.onClick.AddListener(() => { OnClickExtraAddBtn(cell, chinItemModel.EffectValueA1); }); // } // 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.cellBtn.RemoveAllListeners(); fireChooseCell.itemCell.cellBtn.AddListener(() => { itemPathModel.SetChinItemModel(matId); }); } private void OnClickExtraAddBtn(CellView cell,int value) { FurnaceModel.SetCurUseFire(extraMatIds[cell.index],value); CloseWin(); } private void OnClickSpecAddBtn(AlchemySpecConfig specModel) { FurnaceModel.RefreshAddSpecMat(specModel); CloseWin(); } private void CloseWin() { this.gameObject.SetActive(false); } } }