//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, May 13, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class ActivityPlaceWin : Window
|
{
|
[SerializeField] Button m_Close;
|
[SerializeField] Text m_Finding;
|
[SerializeField] Transform m_FindTrans;
|
[SerializeField] Text m_DownTime;
|
[SerializeField] Button FinishNow;
|
[SerializeField] RawImage m_RawRole;
|
[SerializeField] ScrollerController m_Scroller;
|
[SerializeField] Button m_Button;
|
[SerializeField] Text m_ButtonText;
|
[SerializeField] Text FindCountSys;
|
[SerializeField] Text NoItem;
|
[SerializeField] Text allUseActivity;
|
[SerializeField] Text ExpYesterday;
|
[SerializeField] Text ExpToday;
|
[SerializeField] Text ExpMinute;
|
[SerializeField] ExperienceHYXL expHYXL;
|
[SerializeField] UIEffect startEffect;
|
|
int m_itemID = 0;
|
int m_Money = 0;
|
int OneTimes = 0;
|
int maxCnt = 0;
|
int useActivity = 0;
|
int ButtonModel = 0; //三个状态 0. 开始修炼,1.继续修炼 2. 领取X次奖励
|
DailyQuestModel dailyModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
|
PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
|
Dictionary<int, string> ExpFormulaDict = new Dictionary<int, string>();
|
#region Built-in
|
protected override void BindController()
|
{
|
OneTimes = int.Parse(FuncConfigConfig.Get("ActivityPlace").Numerical3); //单次放置探索时间
|
useActivity = int.Parse(FuncConfigConfig.Get("ActivityPlace").Numerical2); //单次消耗活跃点
|
maxCnt = int.Parse(FuncConfigConfig.Get("ActivityPlace").Numerical4); //最大奖励累计次数
|
var configNum1 = FuncConfigConfig.Get("ActivityPlace").Numerical5; // 快速完成消耗
|
var _jsonDataC = LitJson.JsonMapper.ToObject(configNum1);
|
m_itemID = int.Parse(_jsonDataC[0].ToString());
|
m_Money = int.Parse(_jsonDataC[1].ToString());
|
|
var cfg = FuncConfigConfig.Get("ActivityPlaceExp");
|
if (cfg != null)
|
{
|
int index = 0;
|
ExpFormulaDict.Clear();
|
var formulaList = cfg.Numerical2.Split(',');
|
foreach (var tmpStr in formulaList)
|
{
|
if (index % 2 == 0)
|
{
|
ExpFormulaDict[int.Parse(ReplaceClean(tmpStr))] = ReplaceClean(formulaList[index + 1]);
|
}
|
|
index++;
|
}
|
}
|
}
|
|
private string ReplaceClean(string srcStr)
|
{
|
return srcStr.Replace("\"", "").Replace(" ","").Replace("[", "").Replace("]", "");
|
}
|
|
private int GetTheLV()
|
{
|
var playerLV = PlayerDatas.Instance.baseData.LV;
|
int theLV = 100000000;
|
foreach (var lv in ExpFormulaDict.Keys)
|
{
|
if (playerLV > lv)
|
continue;
|
theLV = Math.Min(theLV, lv);
|
|
}
|
return theLV;
|
}
|
|
protected override void AddListeners()
|
{
|
m_Close.SetListener(CloseClick);
|
//FinishNow.SetListener(()=> {
|
// if (playerPack.GetItemCountByID(PackType.Item, m_itemID) == 0 && PlayerDatas.Instance.baseData.bindDiamond < m_Money)
|
// {
|
// SysNotifyMgr.Instance.ShowTip("GoldPaperErr");
|
// }
|
// else
|
// {
|
// WindowCenter.Instance.Open<FastFinishWin>();
|
// }
|
//});
|
|
}
|
|
protected override void OnPreOpen()
|
{
|
dailyModel.ActivityPlaceInfoEvent += Display;
|
m_Scroller.OnRefreshCell += OnRefreshItemCell;
|
dailyModel.usableActivePointUpdateEvent += ShowFindCountSys;
|
PlayerMainDate.Event_Experience += OnExperience;
|
PlayerDatas.Instance.playerDataRefreshEvent += OnRefreshPlayerInfo;
|
PlayerMainDate.Event_Experience += OnGetNewExperience;
|
UI3DModelExhibition.Instance.ShowSitDownPlayer(m_RawRole, PlayerDatas.Instance.baseData.Job);
|
Display();
|
QueryExp();
|
}
|
|
|
|
private void OnRefreshItemCell(ScrollerDataType type, CellView cell)
|
{
|
switch (type)
|
{
|
case ScrollerDataType.Header:
|
ItemCell itemCell = cell.transform.Find("ItemCell1").GetComponent<ItemCell>();
|
ItemCellModel cellModel = new ItemCellModel(cell.info.Value.infoInt1, true, (ulong)cell.info.Value.infoInt2);
|
itemCell.Init(cellModel);
|
itemCell.button.SetListener(() =>
|
{
|
ItemTipUtility.Show(cell.info.Value.infoInt1);
|
});
|
break;
|
}
|
}
|
|
//IEnumerator PlayAnimate()
|
//{
|
// List<int> valueList = new List<int> { 1, 10, 11, 12, 13};
|
// int i = 0;
|
// while (true)
|
// {
|
// if (i >= valueList.Count)
|
// {
|
// i = 0;
|
// }
|
// if (UI3DModelExhibition.Instance.playerModel != null)
|
// {
|
// UI3DModelExhibition.Instance.playerModel.Play(valueList[0]);
|
// }
|
// i++;
|
// yield return new WaitForSeconds(1);
|
// }
|
//}
|
private void QueryExp()
|
{
|
var send = new CB029_tagCMActivityPlaceQuery();
|
GameNetSystem.Instance.SendInfo(send);
|
}
|
|
private void OnExperience(int source, int expPoint, int exp)
|
{
|
if (source == 9)
|
QueryExp();
|
}
|
|
private void Display()
|
{
|
ExpYesterday.text = Language.Get("ActivityPlaceExp1", UIHelper.ReplaceLargeNum((dailyModel.ActivityPlaceInfo.YestordayExp +
|
dailyModel.ActivityPlaceInfo.YestordayExpPoint * Constants.ExpPointValue)));
|
ExpToday.text = Language.Get("ActivityPlaceExp2", UIHelper.ReplaceLargeNum((dailyModel.ActivityPlaceInfo.TodayExp +
|
dailyModel.ActivityPlaceInfo.TodayExpPoint * Constants.ExpPointValue)));
|
|
Equation.Instance.Clear();
|
PlayerLVConfig cfg = PlayerLVConfig.Get(PlayerDatas.Instance.baseData.LV);
|
Equation.Instance.AddKeyValue("lv", PlayerDatas.Instance.baseData.LV);
|
if (cfg != null)
|
{
|
Equation.Instance.AddKeyValue("reExp", cfg.ReExp);
|
}
|
|
ExpMinute.text = Language.Get("ActivityPlaceExp3", UIHelper.ReplaceLargeNum((double)60*Equation.Instance.Eval<float>(ExpFormulaDict[GetTheLV()])));
|
|
//var npcConfig = NPCConfig.Get(20103003);
|
//UI3DModelExhibition.Instance.ShowNPC(20103003, npcConfig.UIModeLOffset, npcConfig.UIModelRotation, m_RawRole);
|
//UI3DModelExhibition.Instance.ShowNPC(20103003, npcConfig.UIModeLOffset, npcConfig.UIModelRotation, m_NPC);
|
|
|
|
var remindCount = dailyModel.ActivityPlaceInfo.PlaceCount;
|
if (remindCount == 0)
|
{
|
m_FindTrans.SetActive(false);
|
ShowMainButton(0);
|
NoItem.SetActive(true);
|
m_Scroller.SetActive(false);
|
|
}
|
else
|
{
|
m_FindTrans.SetActive(true);
|
ShowDownTime();
|
m_Finding.text = Language.Get("ActivityPlaceFinding", dailyModel.ActivityPlaceInfo.PlaceCount);
|
|
}
|
|
if (dailyModel.ActivityPlaceInfo.RewardCount <= 0)
|
{
|
if (remindCount != 0)
|
{
|
NoItem.SetActive(true);
|
m_Scroller.SetActive(false);
|
ShowMainButton(1);
|
}
|
|
}
|
else
|
{
|
NoItem.SetActive(false);
|
m_Scroller.SetActive(true);
|
m_Scroller.Refresh();
|
var array = LitJson.JsonMapper.ToObject<int[][]>(dailyModel.ActivityPlaceInfo.RewardInfo);
|
for (int i = 0; i < array.Length; i++)
|
{
|
CellInfo cellinfo = new CellInfo();
|
cellinfo.infoInt1 = array[i][0]; //物品ID
|
cellinfo.infoInt2 = array[i][1]; //物品数量
|
m_Scroller.AddCell(ScrollerDataType.Header, i, cellinfo);
|
}
|
m_Scroller.Restart();
|
|
ShowMainButton(2);
|
}
|
|
if (dailyModel.ActivityPlaceInfo.PlaceCount > 0)
|
UI3DModelExhibition.Instance.ShowPlayerBodyEffect(51023);
|
else
|
{
|
UI3DModelExhibition.Instance.HidePlayerBodyEffect();
|
}
|
}
|
|
//三个状态 0. 开始探索,1.继续探索 2. 领取X次奖励
|
private void ShowMainButton(int modelType)
|
{
|
ButtonModel = modelType;
|
switch (ButtonModel)
|
{
|
case 0:
|
m_ButtonText.text = Language.Get("ActivityPlaceFinding1");
|
m_Button.SetListener(() => {
|
if (dailyModel.usableActivePoint < useActivity)
|
{
|
SysNotifyMgr.Instance.ShowTip("DailyquestNothingToGet");
|
return;
|
}
|
int findCnt = Math.Min(dailyModel.usableActivePoint / useActivity, maxCnt - dailyModel.ActivityPlaceInfo.RewardCount - dailyModel.ActivityPlaceInfo.PlaceCount);
|
|
if (findCnt > 1)
|
{
|
ConfirmCancel.ShowPopConfirm(
|
Language.Get("Mail101"),
|
Language.Get("ActivityPlaceFinding2", findCnt * useActivity, findCnt),
|
(bool _ok) =>
|
{
|
if (_ok)
|
{
|
var send = new CB027_tagCMActivityPlaceStart();
|
startEffect.Play();
|
GameNetSystem.Instance.SendInfo(send);
|
}
|
}
|
);
|
}
|
else
|
{
|
var send = new CB027_tagCMActivityPlaceStart();
|
startEffect.Play();
|
GameNetSystem.Instance.SendInfo(send);
|
}
|
});
|
|
break;
|
case 1:
|
m_ButtonText.text = Language.Get("ActivityPlaceFinding3");
|
m_Button.SetListener(() => {
|
if (dailyModel.usableActivePoint < useActivity)
|
{
|
SysNotifyMgr.Instance.ShowTip("DailyquestNothingToGet");
|
return;
|
}
|
int findCnt = Math.Min(dailyModel.usableActivePoint / useActivity, maxCnt - dailyModel.ActivityPlaceInfo.RewardCount - dailyModel.ActivityPlaceInfo.PlaceCount);
|
ConfirmCancel.ShowPopConfirm(
|
Language.Get("Mail101"),
|
Language.Get("ActivityPlaceFinding2", findCnt * useActivity, findCnt),
|
(bool _ok) =>
|
{
|
if (_ok)
|
{
|
var send = new CB027_tagCMActivityPlaceStart();
|
startEffect.Play();
|
GameNetSystem.Instance.SendInfo(send);
|
}
|
}
|
);
|
});
|
break;
|
case 2:
|
m_ButtonText.text = Language.Get("TaskBoxWin_BtnGetReward_Text_1");
|
m_Button.SetListener(() => {
|
CA504_tagCMPlayerGetReward getReward = new CA504_tagCMPlayerGetReward();
|
getReward.RewardType = (byte)GotServerRewardType.Def_RewardType_ActivityPlace;
|
getReward.DataEx = 0;
|
getReward.DataExStrLen = 0;
|
getReward.DataExStr = string.Empty;
|
GameNetSystem.Instance.SendInfo(getReward);
|
});
|
break;
|
}
|
|
ShowFindCountSys();
|
}
|
|
private void ShowFindCountSys()
|
{
|
allUseActivity.text = dailyModel.usableActivePoint.ToString();
|
switch (ButtonModel)
|
{
|
case 0:
|
case 1:
|
FindCountSys.text = Language.Get("ActivityPlaceFinding5", useActivity);
|
break;
|
case 2:
|
FindCountSys.text = Language.Get("ActivityPlaceFinding6", dailyModel.ActivityPlaceInfo.RewardCount);
|
break;
|
}
|
}
|
|
|
private void ShowDownTime()
|
{
|
var remindCount = dailyModel.ActivityPlaceInfo.PlaceCount;
|
if (remindCount == 0)
|
{
|
return;
|
}
|
|
var seconds = (int)(OneTimes - (float)(TimeUtility.ServerNow -
|
TimeUtility.OriginalTime.AddSeconds(dailyModel.ActivityPlaceInfo.StartTime)).TotalSeconds);
|
|
m_DownTime.text = TimeUtility.SecondsToHMS(seconds);
|
}
|
protected override void OnActived()
|
{
|
base.OnActived();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
|
}
|
|
protected override void OnPreClose()
|
{
|
PlayerMainDate.Event_Experience -= OnGetNewExperience;
|
dailyModel.ActivityPlaceInfoEvent -= Display;
|
m_Scroller.OnRefreshCell -= OnRefreshItemCell;
|
dailyModel.usableActivePointUpdateEvent -= ShowFindCountSys;
|
PlayerMainDate.Event_Experience -= OnExperience;
|
PlayerDatas.Instance.playerDataRefreshEvent -= OnRefreshPlayerInfo;
|
UI3DModelExhibition.Instance.StopShow();
|
}
|
|
|
private void OnGetNewExperience(int _source, int _billionsExperience, int _unitExperience)
|
{
|
if (_source != 9)
|
return;
|
var experience = _billionsExperience * (long)Constants.ExpPointValue + _unitExperience;
|
expHYXL.Begin(experience);
|
}
|
|
private void OnRefreshPlayerInfo(PlayerDataType refreshType)
|
{
|
if (refreshType == PlayerDataType.LV)
|
{
|
Equation.Instance.Clear();
|
PlayerLVConfig cfg = PlayerLVConfig.Get(PlayerDatas.Instance.baseData.LV);
|
Equation.Instance.AddKeyValue("lv", PlayerDatas.Instance.baseData.LV);
|
if (cfg != null)
|
{
|
Equation.Instance.AddKeyValue("reExp", cfg.ReExp);
|
}
|
ExpMinute.text = Language.Get("ActivityPlaceExp3", UIHelper.ReplaceLargeNum(60 * Equation.Instance.Eval<float>(ExpFormulaDict[GetTheLV()])));
|
}
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
protected override void LateUpdate()
|
{
|
base.LateUpdate();
|
ShowDownTime();
|
}
|
#endregion
|
|
|
}
|
|
}
|