From f6f6bbe9beff5724e4c3fd00bf333ad4e6029fd7 Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期四, 20 十二月 2018 20:30:09 +0800
Subject: [PATCH] 5398 子 【开发】【1.4】跨服竞技场 / 【前端】【1.4】跨服竞技场开发
---
System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs | 105 +++++++++++++++++
System/CrossServerOneVsOne/CrossServerWin.cs | 3
Utility/EnumHelper.cs | 2
System/Dungeon/DungeonModel.cs | 18 +++
System/CrossServerOneVsOne/CrossServerArenaWin.cs | 36 +++++
System/CrossServerOneVsOne/CrossServerPlayerInfo.cs | 2
System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs | 100 ++++++++++++++++
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs | 11 +
Core/GameEngine/Model/Config/CrossServerArenaConfig.cs | 13 +
System/CrossServerOneVsOne/CrossServerModel.cs | 2
Core/GameEngine/Model/Config/CrossServerArenaConfig.cs.meta | 4
System/CrossServerOneVsOne/CrossServerPKSeason.cs | 24 +++
System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs.meta | 12 ++
System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs.meta | 12 ++
14 files changed, 325 insertions(+), 19 deletions(-)
diff --git a/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs b/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs
index 1dd49fa..8bdccf2 100644
--- a/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs
+++ b/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs
@@ -1,6 +1,6 @@
锘�//--------------------------------------------------------
// [Author]: 绗簩涓栫晫
-// [ Date ]: Wednesday, December 12, 2018
+// [ Date ]: Thursday, December 20, 2018
//--------------------------------------------------------
using UnityEngine;
@@ -13,8 +13,9 @@
public int DanLV { get ; private set ; }
public string Name { get ; private set; }
+ public string IconKey { get ; private set; }
public int LVUpScore { get ; private set ; }
- public string DayAwardList { get ; private set; }
+ public string DanLVAwardList { get ; private set; }
public string SeasonAwardList { get ; private set; }
public override string getKey()
@@ -29,11 +30,13 @@
Name = rawContents[1].Trim();
- LVUpScore=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0;
+ IconKey = rawContents[2].Trim();
- DayAwardList = rawContents[3].Trim();
+ LVUpScore=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0;
- SeasonAwardList = rawContents[4].Trim();
+ DanLVAwardList = rawContents[4].Trim();
+
+ SeasonAwardList = rawContents[5].Trim();
}
catch (Exception ex)
{
diff --git a/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs.meta b/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs.meta
index bfb1789..7417413 100644
--- a/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs.meta
+++ b/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs.meta
@@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: f10a2faba8659904ab5c13d1a770a7e2
-timeCreated: 1544607874
-licenseType: Free
+timeCreated: 1545293132
+licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs b/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs
index 71dede9..4d905a1 100644
--- a/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs
+++ b/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs
@@ -11,7 +11,7 @@
dungeonModel.UpdateCoolDown((DungeonCoolDownType)vNetData.Type,vNetData.Tick);
if((DungeonCoolDownType)vNetData.Type == DungeonCoolDownType.WaitStart)
{
- var mapId = PlayerDatas.Instance.baseData.MapID;
+ var mapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
switch (mapId)
{
case HeavenBattleModel.HEAVEBATTLE_MAPID:
@@ -23,7 +23,14 @@
WindowCenter.Instance.Open<BattlePrepareCoolDownWin>();
}
break;
-
+ case CrossServerModel.CrossServerDataMapId:
+ WindowCenter.Instance.CloseImmediately<DungeonBeginCoolDownWin>();
+ WindowCenter.Instance.CloseImmediately<DungeonEndCoolDownWin>();
+ if (!WindowCenter.Instance.IsOpen<BattlePrepareCoolDownWin>())
+ {
+ WindowCenter.Instance.Open<BattlePrepareCoolDownWin>();
+ }
+ break;
}
}
}
diff --git a/System/CrossServerOneVsOne/CrossServerArenaWin.cs b/System/CrossServerOneVsOne/CrossServerArenaWin.cs
index 77eb9a5..dd6bc07 100644
--- a/System/CrossServerOneVsOne/CrossServerArenaWin.cs
+++ b/System/CrossServerOneVsOne/CrossServerArenaWin.cs
@@ -37,6 +37,7 @@
protected override void OnPreOpen()
{
SetDisplay();
+ TimeMgr.Instance.OnMinuteEvent += UpdateMinute;
}
protected override void OnAfterOpen()
@@ -46,7 +47,7 @@
protected override void OnPreClose()
{
-
+ TimeMgr.Instance.OnMinuteEvent -= UpdateMinute;
}
protected override void OnAfterClose()
{
@@ -60,6 +61,28 @@
UpdatePKInfo();
UpdateActivityState();
seasonTimeText.text = CrossServerPKSeason.Instance.ToDisplaySeasonTime();
+ var openTimes = CrossServerPKSeason.Instance.GetActivityTimes();
+ openTimeText.gameObject.SetActive(openTimes != null && openTimes.Count > 0);
+ if(openTimes != null)
+ {
+ string openTimeDes = string.Empty;
+ for(int i = 0; i < openTimes.Count; i++)
+ {
+ var openTime = openTimes[i];
+ string timeDes = StringUtility.Contact(openTime.hourBegin.ToString("D2"), ":", openTime.minuteBegin.ToString("D2")
+ ,"-",openTime.hourEnd.ToString("D2"),":",openTime.minuteEnd.ToString("D2"));
+ if(i == 0)
+ {
+ openTimeDes = timeDes;
+ }
+ else
+ {
+ openTimeDes = StringUtility.Contact(openTimeDes,"銆�",timeDes);
+ }
+ }
+ openTimeText.text = Language.Get("CrossServer119", openTimeDes);
+ }
+
}
private void UpdateMatchInfo()
@@ -81,19 +104,24 @@
sumNumText.text = CrossServerPlayerInfo.Instance.PKCount.ToString();
}
+ private void UpdateMinute()
+ {
+ UpdateActivityState();
+ }
+
private void UpdateActivityState()
{
bool isInTime = CrossServerPKSeason.Instance.InDay(TimeUtility.ServerNow);
- bool isOpen = false;
+ bool isOpen = CrossServerPKSeason.Instance.InOpenTime();
matchBtn.RemoveAllListeners();
if(!isInTime)
{
- matchBtn_Text.text = "鍗冲皢寮�鍚�";
+ matchBtn_Text.text = Language.Get("CrossServer111");
matchBtn_Img.material = MaterialUtility.GetDefaultSpriteGrayMaterial();
}
else
{
- matchBtn_Text.text = "寮�濮嬪尮閰�";
+ matchBtn_Text.text = Language.Get("CrossServer109");
if(isOpen)
{
matchBtn_Img.material = MaterialUtility.GetUIDefaultGraphicMaterial();
diff --git a/System/CrossServerOneVsOne/CrossServerModel.cs b/System/CrossServerOneVsOne/CrossServerModel.cs
index bfa41ec..b296641 100644
--- a/System/CrossServerOneVsOne/CrossServerModel.cs
+++ b/System/CrossServerOneVsOne/CrossServerModel.cs
@@ -15,7 +15,7 @@
public List<CrossServerPkResult> localSaveResults { get; private set; }
CrossServerRewardModel rewardModel { get { return ModelCenter.Instance.GetModel<CrossServerRewardModel>(); } }
public event Action UpdateDayAwardsEvent;
-
+ public const int CrossServerDataMapId = 32010;
public override void Init()
{
ParseFuncConfig();
diff --git a/System/CrossServerOneVsOne/CrossServerPKSeason.cs b/System/CrossServerOneVsOne/CrossServerPKSeason.cs
index f80cb38..6daef07 100644
--- a/System/CrossServerOneVsOne/CrossServerPKSeason.cs
+++ b/System/CrossServerOneVsOne/CrossServerPKSeason.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using TableConfig;
namespace Snxxz.UI
{
@@ -30,6 +31,8 @@
public event Action activityEndEvent;
private bool inDateNotify = false;
private bool stepDateNotify = false;
+ public const int dailyQuestId = 21;
+ DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
public CrossServerPKSeason()
{
@@ -40,6 +43,14 @@
private void BeforePlayerDataInitializeEvent()
{
+ }
+
+ public List<HourMinute> GetActivityTimes()
+ {
+ DailyQuestOpenTime _openTime = null;
+ dailyQuestModel.TryGetOpenTime(dailyQuestId, out _openTime);
+ var dayOfWeek = (int)TimeUtility.ServerNow.DayOfWeek;
+ return _openTime != null ? _openTime.GetHourMinuteByWeek(dayOfWeek) : null;
}
private void SecondEvent()
@@ -90,6 +101,13 @@
return date >= StartDate && date <= EndDate;
}
+ public bool InOpenTime()
+ {
+ DailyQuestOpenTime _openTime = null;
+ dailyQuestModel.TryGetOpenTime(dailyQuestId, out _openTime);
+ return _openTime != null && _openTime.InOpenTime();
+ }
+
public int IndexOfDays(DateTime time)
{
if (!InDay(time))
@@ -105,17 +123,17 @@
if(!StartDate.Equals(default(OperationDate))
&& InDay(TimeUtility.ServerNow))
{
- return ToDisplayTime(StartDate,EndDate);
+ return Language.Get("CrossServer106", ToDisplayTime(StartDate, EndDate));
}
else
{
if(NextStartDate.Equals(default(OperationDate)))
{
- return "鏁鏈熷緟";
+ return Language.Get("107",Language.Get("CrossServer108"));
}
else
{
- return ToDisplayTime(NextStartDate,NextEndDate);
+ return Language.Get("CrossServer107", ToDisplayTime(NextStartDate, NextEndDate));
}
}
}
diff --git a/System/CrossServerOneVsOne/CrossServerPlayerInfo.cs b/System/CrossServerOneVsOne/CrossServerPlayerInfo.cs
index 58e9770..8e99031 100644
--- a/System/CrossServerOneVsOne/CrossServerPlayerInfo.cs
+++ b/System/CrossServerOneVsOne/CrossServerPlayerInfo.cs
@@ -85,7 +85,7 @@
public string DisplayWinningRate()
{
- float rate = (float)WinCount / PKCount;
+ float rate = PKCount != 0 ? (float)WinCount / PKCount : 0;
return StringUtility.Contact((float)Math.Round(rate,1),"%");
}
diff --git a/System/CrossServerOneVsOne/CrossServerWin.cs b/System/CrossServerOneVsOne/CrossServerWin.cs
index f01034a..5d4d4ee 100644
--- a/System/CrossServerOneVsOne/CrossServerWin.cs
+++ b/System/CrossServerOneVsOne/CrossServerWin.cs
@@ -20,6 +20,7 @@
[SerializeField] Text rankText;
[SerializeField] Text curScoreText;
[SerializeField] Text honorText;
+ [SerializeField] Image rankImg;
[SerializeField] Slider scoreSlider;
[SerializeField] Text scorePerText;
[SerializeField] GameObject danLvUpObj;
@@ -90,7 +91,7 @@
var arenaConfig = Config.Instance.Get<CrossServerArenaConfig>(playerInfo.DanLV);
rankText.text = arenaConfig.Name;
-
+ rankImg.SetSprite(arenaConfig.IconKey);
}
private void UpdateScore()
diff --git a/System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs b/System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs
new file mode 100644
index 0000000..f669a4a
--- /dev/null
+++ b/System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs
@@ -0,0 +1,105 @@
+锘�//--------------------------------------------------------
+// [Author]: 绗簩涓栫晫
+// [ Date ]: Wednesday, September 13, 2017
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+
+ public class DungeonPlayerLeaveCoolDownWin : Window
+ {
+ [SerializeField]
+ Transform m_CoolDownContainer;
+
+ [SerializeField]
+ Text m_CoolDown;
+ DateTime beginTime = DateTime.Now;
+
+ DungeonModel m_Model;
+ DungeonModel model {
+ get {
+ return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<DungeonModel>());
+ }
+ }
+ int coolTime = -1;
+ #region Built-in
+ protected override void BindController()
+ {
+ }
+
+ protected override void AddListeners()
+ {
+ }
+
+ protected override void OnPreOpen()
+ {
+ coolTime = -1;
+ beginTime = model.GetCoolDownEndTime(DungeonCoolDownType.PlayerLeave);
+ model.dungeonCoolDownEvent += OnBeginTimeEvent;
+ }
+
+ protected override void OnAfterOpen()
+ {
+ }
+
+ protected override void OnPreClose()
+ {
+ model.dungeonCoolDownEvent -= OnBeginTimeEvent;
+ }
+
+ protected override void OnAfterClose()
+ {
+ }
+ #endregion
+
+
+ private void OnBeginTimeEvent(DungeonCoolDownType _type)
+ {
+ if (_type != DungeonCoolDownType.PlayerLeave)
+ {
+ return;
+ }
+
+ beginTime = model.GetCoolDownEndTime(_type);
+ }
+
+ protected override void LateUpdate()
+ {
+ base.LateUpdate();
+
+ if (beginTime > DateTime.Now)
+ {
+ var surplusTime =Mathf.Clamp((int)(beginTime - DateTime.Now).TotalSeconds,0,int.MaxValue);
+ if (coolTime != surplusTime)
+ {
+ coolTime = surplusTime;
+ m_CoolDown.text = Language.Get("CrossServer118",surplusTime);
+ }
+ if (!m_CoolDownContainer.gameObject.activeInHierarchy)
+ {
+ m_CoolDownContainer.gameObject.SetActive(true);
+ }
+ }
+ else
+ {
+ if (m_CoolDownContainer.gameObject.activeInHierarchy)
+ {
+ m_CoolDownContainer.gameObject.SetActive(false);
+ }
+ }
+
+ }
+
+ }
+
+}
+
+
+
+
diff --git a/System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs.meta b/System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs.meta
new file mode 100644
index 0000000..8be5dcf
--- /dev/null
+++ b/System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 06957814b0967e2408ce1f18ed6ea6d1
+timeCreated: 1545298190
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs b/System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs
new file mode 100644
index 0000000..18b73ec
--- /dev/null
+++ b/System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs
@@ -0,0 +1,100 @@
+锘�//--------------------------------------------------------
+// [Author]: 绗簩涓栫晫
+// [ Date ]: Wednesday, September 13, 2017
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+
+ public class DungeonWaitPlayerCoolDownWin : Window
+ {
+ [SerializeField]
+ Transform m_CoolDownContainer;
+
+ [SerializeField]
+ Text m_CoolDown;
+ DateTime beginTime = DateTime.Now;
+
+ DungeonModel m_Model;
+ DungeonModel model {
+ get {
+ return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<DungeonModel>());
+ }
+ }
+
+ #region Built-in
+ protected override void BindController()
+ {
+ }
+
+ protected override void AddListeners()
+ {
+ }
+
+ protected override void OnPreOpen()
+ {
+ beginTime = model.GetCoolDownEndTime(DungeonCoolDownType.WaitPlayer);
+ model.dungeonCoolDownEvent += OnBeginTimeEvent;
+ }
+
+ protected override void OnAfterOpen()
+ {
+ }
+
+ protected override void OnPreClose()
+ {
+ model.dungeonCoolDownEvent -= OnBeginTimeEvent;
+ }
+
+ protected override void OnAfterClose()
+ {
+ }
+ #endregion
+
+
+ private void OnBeginTimeEvent(DungeonCoolDownType _type)
+ {
+ if (_type != DungeonCoolDownType.WaitPlayer)
+ {
+ return;
+ }
+
+ beginTime = model.GetCoolDownEndTime(_type);
+ }
+
+ protected override void LateUpdate()
+ {
+ base.LateUpdate();
+
+ if (beginTime > DateTime.Now)
+ {
+ var surplusTime =Mathf.Clamp((int)(beginTime - DateTime.Now).TotalSeconds,0,int.MaxValue);
+ m_CoolDown.text = surplusTime.ToString();
+ if (!m_CoolDownContainer.gameObject.activeInHierarchy)
+ {
+ m_CoolDownContainer.gameObject.SetActive(true);
+ }
+ }
+ else
+ {
+ if (m_CoolDownContainer.gameObject.activeInHierarchy)
+ {
+ m_CoolDownContainer.gameObject.SetActive(false);
+ }
+ }
+
+ }
+
+ }
+
+}
+
+
+
+
diff --git a/System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs.meta b/System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs.meta
new file mode 100644
index 0000000..92c8866
--- /dev/null
+++ b/System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 8e5a4e30b66e6fc41973e7aceb0ef6bf
+timeCreated: 1545297371
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/System/Dungeon/DungeonModel.cs b/System/Dungeon/DungeonModel.cs
index 8fe20b6..df7fbaf 100644
--- a/System/Dungeon/DungeonModel.cs
+++ b/System/Dungeon/DungeonModel.cs
@@ -686,6 +686,8 @@
switch (_type)
{
case DungeonCoolDownType.WaitStart:
+ case DungeonCoolDownType.WaitPlayer:
+ case DungeonCoolDownType.PlayerLeave:
dungeonFightStage = DungeonFightStage.Prepare;
break;
case DungeonCoolDownType.TowerTake:
@@ -701,6 +703,22 @@
dungeonFightStage = DungeonFightStage.ElderGodAreaNearDead;
break;
}
+
+ switch(_type)
+ {
+ case DungeonCoolDownType.WaitPlayer:
+ if(!WindowCenter.Instance.IsOpen<DungeonWaitPlayerCoolDownWin>())
+ {
+ WindowCenter.Instance.Open<DungeonWaitPlayerCoolDownWin>();
+ }
+ break;
+ case DungeonCoolDownType.PlayerLeave:
+ if (!WindowCenter.Instance.IsOpen<DungeonPlayerLeaveCoolDownWin>())
+ {
+ WindowCenter.Instance.Open<DungeonPlayerLeaveCoolDownWin>();
+ }
+ break;
+ }
}
if (_type == DungeonCoolDownType.WaitStart)
diff --git a/Utility/EnumHelper.cs b/Utility/EnumHelper.cs
index 3e83573..f318022 100644
--- a/Utility/EnumHelper.cs
+++ b/Utility/EnumHelper.cs
@@ -344,6 +344,8 @@
FBAddTime = 6,
ElderGodAreaDeadTime = 7,//鍙ょ绂佸湴鍊掕鏃�
PickUpTime = 8,//鍓湰鎹¤澶囧�掕鏃�
+ WaitPlayer = 9, //绛夊緟瀵规墜鍊掕鏃�
+ PlayerLeave = 10, //瀵规墜鎺夌嚎鍊掕鏃�
}
/// <summary>
--
Gitblit v1.8.0