//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, January 24, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI {
|
|
public class DogzActiveWin : Window
|
{
|
[SerializeField] ScrollerController m_Controller;
|
[SerializeField] List<DogzSkillData> m_DogzSkills;
|
[SerializeField] List<DogzEquip> m_DogzEquips;
|
[SerializeField] List<DogzUnEquip> m_DogzUnEquipBtns;
|
[SerializeField] List<Text> m_PropertyTypes;
|
[SerializeField] List<Text> m_PropertyValues;
|
[SerializeField] List<Image> sliderImglist = new List<Image>();
|
[SerializeField] Image m_DogzHeadIcon;
|
[SerializeField] Text m_DogzAssistCnt;
|
[SerializeField] Button m_AddAssistBtn;
|
[SerializeField] Button m_TakeOffEquipBtn;
|
[SerializeField] Button m_EquipPackBtn;
|
[SerializeField] Button m_CallBackBtn;
|
[SerializeField] RedpointBehaviour assistBtnRedBehav;
|
[SerializeField] Text m_CallBackBtnTxt;
|
[SerializeField] UIEffect alreadyAssistEffect;
|
[SerializeField] UIEffect assistEffect;
|
[SerializeField] UIEffect assistTextEffect;
|
DogzModel m_Model;
|
DogzModel model
|
{
|
get
|
{
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<DogzModel>());
|
}
|
}
|
|
PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_AddAssistBtn.onClick.AddListener(AddAssist);
|
m_TakeOffEquipBtn.onClick.AddListener(TakeOffEquip);
|
m_EquipPackBtn.onClick.AddListener(OpenEquipPack);
|
m_CallBackBtn.onClick.AddListener(CallBackDogz);
|
for (int i = 0; i < m_DogzUnEquipBtns.Count; i++)
|
{
|
var _index = i;
|
m_DogzUnEquipBtns[i].DogzUnEquipBtn.AddListener(() =>
|
{
|
OpenDogzEquip(_index);
|
});
|
}
|
}
|
|
protected override void OnPreOpen()
|
{
|
GenerateDogz();
|
UpdateSelectDogzEvent();
|
UpdateDogzAssistCnt();
|
model.UpdateSelectDogzEvent += UpdateSelectDogzEvent;
|
model.UpdateAssistDogzEvent += UpdateDogzAssistCnt;
|
model.RefreshDogzEquipAct += RefreshDogzEquipEvent;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
model.UpdateSelectDogzEvent -= UpdateSelectDogzEvent;
|
model.UpdateAssistDogzEvent -= UpdateDogzAssistCnt;
|
model.RefreshDogzEquipAct -= RefreshDogzEquipEvent;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
|
void GenerateDogz()
|
{
|
if (m_Controller.GetNumberOfCells(m_Controller.m_Scorller) == 0)
|
{
|
var _dogzCfgs = DogzConfig.GetValues();
|
m_Controller.Refresh();
|
for (int i = 0; i < _dogzCfgs.Count; i++)
|
{
|
m_Controller.AddCell(ScrollerDataType.Header, _dogzCfgs[i].ID);
|
}
|
m_Controller.Restart();
|
}
|
int jumpIndex = model.presentSelectDogz - 2 > 0 ? model.presentSelectDogz - 2 : 0;
|
m_Controller.JumpIndex(jumpIndex);
|
}
|
|
private void SetDefalutDogzEquipState()
|
{
|
for (int i = 0; i < sliderImglist.Count; i++)
|
{
|
ItemModel itemModel = null;
|
bool isPut = model.TryGetDogzEquip(model.presentSelectDogz, model.GetDogzEquipPlaceByIndex(i), out itemModel);
|
if (!isPut)
|
{
|
sliderImglist[i].fillAmount = 0;
|
sliderImglist[i].SetActive(false);
|
}
|
else
|
{
|
sliderImglist[i].fillAmount = 1;
|
sliderImglist[i].SetActive(true);
|
}
|
}
|
}
|
|
private void UpdateSelectDogzEvent()
|
{
|
m_Controller.m_Scorller.RefreshActiveCellViews();
|
UpdateDogzSkill();
|
UpdateDogzEquip();
|
UpdateDogzProperty();
|
UpdateDogzBtn();
|
SetDefalutDogzEquipState();
|
assistBtnRedBehav.redpointId = model.GetDogzAssistRedpointById(model.presentSelectDogz).id;
|
}
|
private void UpdateDogzSkill()
|
{
|
var _dogzCfg = DogzConfig.Get(model.presentSelectDogz);
|
if (_dogzCfg != null)
|
{
|
for (int i = 0; i < m_DogzSkills.Count; i++)
|
{
|
if (_dogzCfg.HelpBattleSkills == null || _dogzCfg.HelpBattleSkills.Length == 0
|
|| i >= _dogzCfg.HelpBattleSkills.Length)
|
{
|
m_DogzSkills[i].SetEnable(false);
|
}
|
else
|
{
|
m_DogzSkills[i].SetEnable(true);
|
var _skillCfg = SkillConfig.Get(_dogzCfg.HelpBattleSkills[i]);
|
m_DogzSkills[i].Icon.SetSprite(_skillCfg.IconName);
|
m_DogzSkills[i].Lv.text = Language.Get("Z1024", _skillCfg.SkillLV);
|
m_DogzSkills[i].SkillBtn.RemoveAllListeners();
|
m_DogzSkills[i].SkillBtn.AddListener(()=>
|
{
|
int fightPower = 0;
|
if (_skillCfg.FightPower > 0)
|
{
|
fightPower = _skillCfg.FightPower;
|
}
|
SkillDetails.ShowSkillDetails(_skillCfg.SkillID, SkillDetails.SkillSourceType.DogzSkill, fightPower);
|
});
|
}
|
}
|
}
|
}
|
|
|
private void RefreshDogzEquipEvent(int dogzId)
|
{
|
if (dogzId != model.presentSelectDogz) return;
|
|
m_Controller.m_Scorller.RefreshActiveCellViews();
|
UpdateDogzEquip();
|
UpdateDogzProperty();
|
UpdateDogzBtn();
|
SetDefalutDogzEquipState();
|
}
|
|
private void UpdateDogzEquip()
|
{
|
var _dogzCfg = DogzConfig.Get(model.presentSelectDogz);
|
m_DogzHeadIcon.SetSprite(_dogzCfg.HeadIcon);
|
m_DogzHeadIcon.SetNativeSize();
|
var _dogzEquips = model.GetDogzEquips(model.presentSelectDogz);
|
alreadyAssistEffect.Stop();
|
if (_dogzEquips != null && _dogzEquips.Count == 5)
|
{
|
m_DogzHeadIcon.material = MaterialUtility.GetUIDefaultGraphicMaterial();
|
if(model.TryGetAssistDogzState(model.presentSelectDogz))
|
{
|
if(!alreadyAssistEffect.IsPlaying)
|
{
|
alreadyAssistEffect.Play();
|
}
|
}
|
}
|
else
|
{
|
m_DogzHeadIcon.material = MaterialUtility.GetDefaultSpriteGrayMaterial();
|
}
|
|
for (int i = 0; i < m_DogzEquips.Count; i++)
|
{
|
ItemModel _data;
|
bool _equiped = model.TryGetDogzEquip(model.presentSelectDogz, i+101, out _data);
|
m_DogzUnEquipBtns[i].DogzUnEquipBtn.SetActive(!_equiped);
|
m_DogzUnEquipBtns[i].RedpointBeh.redpointId = model.GetDogzEquipPlaceRedpointById(model.presentSelectDogz,i).id;
|
m_DogzEquips[i].SetActive(_equiped);
|
if (_equiped)
|
{
|
m_DogzEquips[i].Display(_data);
|
}
|
}
|
}
|
private void UpdateDogzProperty()
|
{
|
var _dogzCfg = DogzConfig.Get(model.presentSelectDogz);
|
bool isAddAttr = model.GetDogzEquips(model.presentSelectDogz) != null && model.GetDogzEquips(model.presentSelectDogz).Count == 5 ? true : false;
|
if(isAddAttr)
|
{
|
model.GetDogzEquipAddAttr(model.presentSelectDogz);
|
}
|
for (int i = 0; i < m_PropertyTypes.Count; i++)
|
{
|
m_PropertyTypes[i].SetActive(i < _dogzCfg.BaseAttrTypes.Length);
|
m_PropertyValues[i].SetActive(i < _dogzCfg.BaseAttrTypes.Length);
|
string addAttrStr = "";
|
string baseAttrStr = "";
|
if (i < _dogzCfg.BaseAttrTypes.Length)
|
{
|
var _propertyCfg = PlayerPropertyConfig.Get(_dogzCfg.BaseAttrTypes[i]);
|
m_PropertyTypes[i].text = _propertyCfg.Name;
|
int attrValue = _dogzCfg.BaseAttrValues[i];
|
if (isAddAttr && model.m_DogzEquipAttrDict[_propertyCfg.ID] > 0)
|
{
|
|
baseAttrStr = StringUtility.Contact(UIHelper.ReplacePercentage(_dogzCfg.BaseAttrValues[i], _propertyCfg.ISPercentage)
|
, _propertyCfg.ISPercentage == 1 ? "%" : string.Empty);
|
|
addAttrStr = StringUtility.Contact("+", UIHelper.ReplacePercentage(model.m_DogzEquipAttrDict[_propertyCfg.ID], _propertyCfg.ISPercentage)
|
, _propertyCfg.ISPercentage == 1 ? "%" : string.Empty);
|
}
|
else
|
{
|
baseAttrStr = StringUtility.Contact(UIHelper.ReplacePercentage(_dogzCfg.BaseAttrValues[i], _propertyCfg.ISPercentage)
|
, _propertyCfg.ISPercentage == 1 ? "%" : string.Empty);
|
}
|
|
}
|
|
if(model.TryGetAssistDogzState(model.presentSelectDogz))
|
{
|
m_PropertyTypes[i].color = UIHelper.s_NavyBrown;
|
if(addAttrStr != "")
|
{
|
m_PropertyValues[i].text = StringUtility.Contact("<color=#401c06>", baseAttrStr, "</color>", "<color=#109d06>", addAttrStr, "</color>");
|
}
|
else
|
{
|
m_PropertyValues[i].text = StringUtility.Contact("<color=#401c06>", baseAttrStr, "</color>");
|
}
|
}
|
else
|
{
|
m_PropertyTypes[i].color = UIHelper.s_BrightWhiteColor;
|
if (addAttrStr != "")
|
{
|
m_PropertyValues[i].text = StringUtility.Contact("<color=#686868>", baseAttrStr, "</color>", "<color=#109d06>", addAttrStr, "</color>");
|
}
|
else
|
{
|
m_PropertyValues[i].text = StringUtility.Contact("<color=#686868>", baseAttrStr, "</color>");
|
}
|
}
|
}
|
}
|
|
private void UpdateDogzAssistCnt()
|
{
|
m_Controller.m_Scorller.RefreshActiveCellViews();
|
m_DogzAssistCnt.text = Language.Get("TreasurePrivilege_Dogz_1", StringUtility.Contact(model.GetAssistDogzCount(), "/", model.curSumAssistNum));
|
UpdateDogzBtn();
|
UpdateDogzProperty();
|
UpdateDogzEquip();
|
}
|
|
private void UpdateDogzBtn()
|
{
|
var _dogzEquips = model.GetDogzEquips(model.presentSelectDogz);
|
m_TakeOffEquipBtn.SetActive(_dogzEquips != null && _dogzEquips.Count > 0);
|
m_CallBackBtnTxt.text = model.TryGetAssistDogzState(model.presentSelectDogz) ? Language.Get("DogzFunc104") : Language.Get("DogzFunc105");
|
}
|
|
private void AddAssist()
|
{
|
if(model.IsAddMaxAssist())
|
{
|
SysNotifyMgr.Instance.ShowTip("DogzNumLimit");
|
return;
|
}
|
|
var _itemConfig = ItemConfig.Get(model.AddAssistItem);
|
ConfirmCancel.ShowItemConfirm(Language.Get("DogzFunc102", _itemConfig.ItemName, model.GetAssistItemCnt()),
|
model.AddAssistItem, model.GetAssistItemCnt(), () =>
|
{
|
model.SendBuyAssistCnt();
|
if (model.curSumAssistNum + 1 >= model.DogzAssistMaxCnt)
|
{
|
SysNotifyMgr.Instance.ShowTip("DogzNumLimit");
|
}
|
});
|
}
|
private void TakeOffEquip()
|
{
|
model.CheckPutOff(0);
|
}
|
private void OpenEquipPack()
|
{
|
WindowCenter.Instance.Open<DogzPackWin>();
|
}
|
private void CallBackDogz()
|
{
|
List<ItemModel> models = model.GetDogzEquips(model.presentSelectDogz);
|
if(models != null
|
&& models.Count == 5)
|
{
|
if(!model.TryGetAssistDogzState(model.presentSelectDogz))
|
{
|
if(model.GetAssistDogzCount() < model.curSumAssistNum)
|
{
|
assistEffect.Play();
|
assistTextEffect.Play();
|
model.SendChangeDogzAssist(1,model.presentSelectDogz);
|
}
|
else
|
{
|
int minAssistDogzId = model.GetMinAssistDogzId();
|
if(model.presentSelectDogz > minAssistDogzId)
|
{
|
model.SendChangeDogzAssist(0,minAssistDogzId);
|
model.SendChangeDogzAssist(1,model.presentSelectDogz);
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("AssistDogzReachMax");
|
}
|
}
|
}
|
else
|
{
|
model.SendChangeDogzAssist(0,model.presentSelectDogz);
|
}
|
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("DogzCantHelp");
|
}
|
}
|
private void OpenDogzEquip(int index)
|
{
|
WindowCenter.Instance.Open<DogzPackWin>();
|
}
|
[Serializable]
|
public class DogzSkillData
|
{
|
[SerializeField] RectTransform m_SkillContainer;
|
public void SetEnable(bool _enable)
|
{
|
m_SkillContainer.SetActive(_enable);
|
}
|
[SerializeField] Image m_SkillIcon;
|
public Image Icon { get { return m_SkillIcon; } }
|
[SerializeField] Text m_SkillLv;
|
public Text Lv { get { return m_SkillLv; } }
|
[SerializeField] Button m_SkillBtn;
|
public Button SkillBtn { get { return m_SkillBtn; } }
|
}
|
|
[Serializable]
|
public class DogzUnEquip
|
{
|
[SerializeField] Button m_DogzUnEquipBtn;
|
public Button DogzUnEquipBtn { get { return m_DogzUnEquipBtn; } }
|
[SerializeField] RedpointBehaviour m_RedpointBeh;
|
public RedpointBehaviour RedpointBeh { get { return m_RedpointBeh; } }
|
}
|
}
|
}
|
|
|
|
|