//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, April 26, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; namespace vnxbqy.UI { public class FairyJadeInvestmentItem : MonoBehaviour { [SerializeField] Transform m_Group;//奖励品组 [SerializeField] Button m_ReceiveAwardBtn;//领奖按钮 [SerializeField] Image m_IsDrawImage;//是否领取 [SerializeField] Text m_TimeRemaining;//领取时间剩余 [SerializeField] GameObject m_Uieffect;//特效 [SerializeField] Text m_Label_Text;//标签 [SerializeField] GameObject m_IsReachImage;//未达成 FairyJadeInvestmentModel model { get { return ModelCenter.Instance.GetModel(); } } VipInvestModel investModel { get { return ModelCenter.Instance.GetModel(); } } public void Display(int id) { int PlayerLv = PlayerDatas.Instance.baseData.LV; int _type = model.fairyInvestType; if (model.fairyInvestItems.ContainsKey(_type)) { var info = model.fairyInvestItems[_type][id]; if (PlayerLv >= info.levelLimit) { MoreThanGrade(id); } else { BeforeTheClass(id); } } } private void MoreThanGrade(int id)//超过等级 { int _type = model.fairyInvestType; if (!model.fairyInvestItems.ContainsKey(_type)) { return; } var Dit = model.fairyInvestItems[_type]; if (Dit.ContainsKey(id)) { var info = Dit[id]; if (info.levelLimit <= 0) { m_Label_Text.SetActive(true); m_Label_Text.text = Language.Get("FairyJadeInvestment_12"); } else { int GetRebateMultiple = RebateMultiple(id); if (model.fairyInvestMultiples.Contains(GetRebateMultiple)) { m_Label_Text.SetActive(true); m_Label_Text.text = string.Format(Language.Get("FairyJadeInvestment_11"), GetRebateMultiple); } else { m_Label_Text.SetActive(false); } } int indexID = info.id; int InvestmentGrade = model.GetFairyInvestGear(); if (InvestmentGrade == 0) { m_ReceiveAwardBtn.SetActive(false); m_IsDrawImage.SetActive(false); m_TimeRemaining.SetActive(false); m_IsReachImage.SetActive(true); m_Uieffect.SetActive(false); } else { int IsReceive = 0; var dit = model.GetInfoSeriors(); if (dit.ContainsKey(indexID)) { IsReceive = dit[indexID]; } if (IsReceive == 0) { m_ReceiveAwardBtn.SetActive(true); m_Uieffect.SetActive(true); m_IsDrawImage.SetActive(false); m_TimeRemaining.SetActive(false); m_IsReachImage.SetActive(false); m_ReceiveAwardBtn.RemoveAllListeners(); m_ReceiveAwardBtn.AddListener(() => { int type = model.fairyInvestType; model.SendGotInvestReward(type, indexID); }); } else { List fairyJadeInvestmentItem = info.items.ContainsKey(InvestmentGrade) ? info.items[InvestmentGrade] : null; int AtPresentNumber = 0; if (IsReceive != 0) { List fairyJadeInvestmentItemAdd = info.items.ContainsKey(IsReceive) ? info.items[IsReceive] : null; Item itemAdd = fairyJadeInvestmentItemAdd[0]; AtPresentNumber = itemAdd.count; } if (fairyJadeInvestmentItem[0].count > AtPresentNumber) { m_ReceiveAwardBtn.SetActive(true); m_Uieffect.SetActive(true); m_IsDrawImage.SetActive(false); m_TimeRemaining.SetActive(false); m_IsReachImage.SetActive(false); m_ReceiveAwardBtn.RemoveAllListeners(); m_ReceiveAwardBtn.AddListener(() => { int type = model.fairyInvestType; model.SendGotInvestReward(type, indexID); }); } else { m_ReceiveAwardBtn.SetActive(false); m_IsDrawImage.SetActive(true); m_TimeRemaining.SetActive(false); m_IsReachImage.SetActive(false); m_Uieffect.SetActive(false); } } } } ItemCellAssignment(id); } private void BeforeTheClass(int id)//未到等级 { int _type = model.fairyInvestType; if (!model.fairyInvestItems.ContainsKey(_type)) { return; } var Dit = model.fairyInvestItems[_type]; if (Dit.ContainsKey(id)) { var info = Dit[id]; if (info.levelLimit <= 0) { m_Label_Text.SetActive(true); m_Label_Text.text = Language.Get("FairyJadeInvestment_12"); } else { int GetRebateMultiple= RebateMultiple(id); if (model.fairyInvestMultiples.Contains(GetRebateMultiple)) { m_Label_Text.SetActive(true); m_Label_Text.text = string.Format(Language.Get("FairyJadeInvestment_11"), GetRebateMultiple); } else { m_Label_Text.SetActive(false); } } m_ReceiveAwardBtn.SetActive(false); m_IsDrawImage.SetActive(false); m_TimeRemaining.SetActive(false); m_IsReachImage.SetActive(true); m_Uieffect.SetActive(false); } ItemCellAssignment(id); } private void ItemCellAssignment(int id) { int _type = model.fairyInvestType; if (!model.fairyInvestItems.ContainsKey(_type)) { return; } var Dit = model.fairyInvestItems[_type]; int InvestmentGrade = model.GetFairyInvestGear(); if (Dit.ContainsKey(id)) { var info = Dit[id]; int grade = 1; if (InvestmentGrade != 0) { grade = InvestmentGrade; } else { int type = model.fairyInvestType; var _gear = investModel.GetInvestGear(type, model.selectInvestMoney); if (_gear != 0) { grade = _gear; } } List fairyJadeInvestmentItem = info.items.ContainsKey(grade) ? info.items[grade] : null; int indexID = info.id; int IsReceive = 0; var dit = model.GetInfoSeriors(); if (dit.ContainsKey(indexID)) { IsReceive = dit[indexID]; } for (int i = 0; i < m_Group.childCount; i++) { if (i < fairyJadeInvestmentItem.Count) { m_Group.GetChild(i).SetActive(true); Item item = fairyJadeInvestmentItem[i]; MotnlyItem motnlyItem = m_Group.GetChild(i).GetComponent(); var Item = ItemConfig.Get(item.id); ItemCellModel cellModel = new ItemCellModel(item.id, true, (ulong)1); motnlyItem.Item_Cell.Init(cellModel); if (IsReceive == 0) { if (info.levelLimit <= 0) { motnlyItem.NameText.text = string.Format(Language.Get("FairyJadeInvestment_3"), item.count); } else { float GetFairyJadeNumber = InvestmentProportion(id); int ShowLinesNumber = investModel.GetInvestAmount(_type, grade - 1); int GetValue = Mathf.FloorToInt((GetFairyJadeNumber / ShowLinesNumber) * 100); motnlyItem.NameText.text = string.Format(Language.Get("FairyJadeInvestment_10"), info.levelLimit, GetValue); } motnlyItem.MoneyNumberText.text = item.count.ToString(); } else { int AtPresentNumber = 0; if (IsReceive != 0) { List fairyJadeInvestmentItemAdd = info.items.ContainsKey(IsReceive) ? info.items[IsReceive] : null; Item itemAdd = fairyJadeInvestmentItemAdd[i]; AtPresentNumber = itemAdd.count; } if (item.count > AtPresentNumber) { motnlyItem.NameText.text = string.Format(Language.Get("FairyJadeInvestment_5"), (item.count - AtPresentNumber)); motnlyItem.MoneyNumberText.text = (item.count - AtPresentNumber).ToString(); } else { motnlyItem.NameText.text = string.Format(Language.Get("FairyJadeInvestment_6"), item.count); motnlyItem.MoneyNumberText.text = item.count.ToString(); } } // motnlyItem.MoneyImage.SetSprite(Item.IconKey); } else { m_Group.GetChild(i).SetActive(false); } } } } private float InvestmentProportion(int id)//获取返回仙玉的比例 { int grade = 1; int InvestmentGrade = model.GetFairyInvestGear(); if (InvestmentGrade != 0) { grade = InvestmentGrade; } else { int type = model.fairyInvestType; var _gear = investModel.GetInvestGear(type, model.selectInvestMoney); if (_gear != 0) { grade = _gear; } } int GetFairyJade = 0; int _type = model.fairyInvestType; if (!model.fairyInvestItems.ContainsKey(_type)) { return GetFairyJade; } var Dit = model.fairyInvestItems[_type]; if (Dit.ContainsKey(id)) { var info = Dit[id]; List fairyJadeInvestmentItem = info.items.ContainsKey(grade) ? info.items[grade] : null; Item item = fairyJadeInvestmentItem[0]; GetFairyJade = item.count; } return GetFairyJade; } private int RebateMultiple(int id) { int type = model.fairyInvestType; int grade = 1; int InvestmentGrade = model.GetFairyInvestGear(); if (InvestmentGrade != 0) { grade = InvestmentGrade; } else { var _gear = investModel.GetInvestGear(type, model.selectInvestMoney); if (_gear != 0) { grade = _gear; } } int ShowLinesNumber = investModel.GetInvestAmount(type, grade - 1); int GetFairyJade = 0; int _type = model.fairyInvestType; if (!model.fairyInvestItems.ContainsKey(_type)) { return GetFairyJade; } var Dit = model.fairyInvestItems[_type]; var compareInfo = Dit[id]; foreach (var info in Dit.Values) { if (info.levelLimit <= compareInfo.levelLimit) { List fairyJadeInvestmentItem = info.items.ContainsKey(grade) ? info.items[grade] : null; Item item = fairyJadeInvestmentItem[0]; GetFairyJade += item.count; } } int GetValue = (int)(GetFairyJade / ShowLinesNumber); if ((float)GetFairyJade / ShowLinesNumber >= (GetValue + 0.5)) { GetValue = 0; } return GetValue; } } }