From bb98d8ae9ff4d799bd8e2c11ddf3335ab4e0b017 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期二, 29 一月 2019 14:09:29 +0800
Subject: [PATCH] 6086 【前端】【1.5.200】春节红包雨活动
---
System/OpenServerActivity/FestivalRedpackModel.cs | 109 ++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 96 insertions(+), 13 deletions(-)
diff --git a/System/OpenServerActivity/FestivalRedpackModel.cs b/System/OpenServerActivity/FestivalRedpackModel.cs
index 4481cd5..f5594e4 100644
--- a/System/OpenServerActivity/FestivalRedpackModel.cs
+++ b/System/OpenServerActivity/FestivalRedpackModel.cs
@@ -14,6 +14,8 @@
bool serverInited = false;
public List<int> systemDisplayRedpacks = new List<int>();
+ public List<FestivalRedpackAchievement> displayAchievements = new List<FestivalRedpackAchievement>();
+ public List<int> taskDisplayRedpacks = new List<int>();
int m_SelectType;
public int selectType
@@ -51,6 +53,9 @@
public int jumpType { get; set; }
+ public bool autoOpen { get; set; }
+
+
public bool IsOpen
{
get
@@ -82,6 +87,10 @@
public int grabTotalJade { get; private set; }
+ public float redpackVoiceInterval { get; private set; }
+
+ DateTime voicePlayTime = DateTime.Now;
+
public const int FESTIVALTASKREDPACKTYPE = 33;
public const int FESTIVALSYSTEMREDPACK1 = 31;
public const int FESTIVALSYSTEMREDPACK2 = 32;
@@ -99,6 +108,7 @@
public event Action selectTypeRefresh;
public event Action selectDateIndexRefresh;
public event Action<int> achievementRefresh;
+ public event Action taskRedpackRefresh;
RedEnvelopeModel envelopeModel { get { return ModelCenter.Instance.GetModel<RedEnvelopeModel>(); } }
AchievementModel achievementModel { get { return ModelCenter.Instance.GetModel<AchievementModel>(); } }
@@ -110,7 +120,6 @@
OperationTimeHepler.Instance.dayResetEvent += DayResetEvent;
envelopeModel.EnvelopeUpdateEvent += EnvelopeUpdateEvent;
envelopeModel.EnvelopeDelEvent += EnvelopeDelEvent;
- envelopeModel.EnvelopeGetEvent += EnvelopeGetEvent;
achievementModel.achievementCompletedEvent += AchievementCompletedEvent;
achievementModel.achievementProgressUpdateEvent += AchievementProgressUpdateEvent;
ParseConfig();
@@ -137,7 +146,6 @@
OperationTimeHepler.Instance.dayResetEvent -= DayResetEvent;
envelopeModel.EnvelopeUpdateEvent -= EnvelopeUpdateEvent;
envelopeModel.EnvelopeDelEvent -= EnvelopeDelEvent;
- envelopeModel.EnvelopeGetEvent -= EnvelopeGetEvent;
achievementModel.achievementCompletedEvent -= AchievementCompletedEvent;
achievementModel.achievementProgressUpdateEvent -= AchievementProgressUpdateEvent;
}
@@ -179,6 +187,14 @@
});
}
}
+ }
+
+ {
+ var config = Config.Instance.Get<FuncConfigConfig>("FeastRedPacket");
+ grabRedpackLimitTimes = int.Parse(config.Numerical1);
+
+ config = Config.Instance.Get<FuncConfigConfig>("RedEnvelopeVoiceCd");
+ redpackVoiceInterval = float.Parse(config.Numerical1) / 1000;
}
}
@@ -260,7 +276,7 @@
return festivalRedpacks.TryGetValue(id, out redpack);
}
- public bool TryGetAchievements(out List<FestivalRedpackAchievement> list)
+ public bool TryGetAchievements(int index, out List<FestivalRedpackAchievement> list)
{
return achievements.TryGetValue(festivalDay + 1, out list);
}
@@ -294,6 +310,22 @@
}
}
return lhs.id.CompareTo(rhs.id);
+ }
+
+ public int CompareEnvelope(int x, int y)
+ {
+ RedEnvelopeModel.RedEnvelope xEnvelope;
+ RedEnvelopeModel.RedEnvelope yEnvelope;
+ if (envelopeModel.TryGetEnvelope(x, out xEnvelope)
+ && envelopeModel.TryGetEnvelope(y, out yEnvelope))
+ {
+ if (xEnvelope.state.CompareTo(yEnvelope.state) != 0)
+ {
+ return xEnvelope.state.CompareTo(yEnvelope.state);
+ }
+ return -xEnvelope.time.CompareTo(yEnvelope.time);
+ }
+ return -x.CompareTo(y);
}
public void OnReceivePackage(HAB25_tagMCFeastRedPackInfo package)
@@ -345,23 +377,74 @@
private void EnvelopeUpdateEvent()
{
+ bool rewardable = receiveRedpoint.state == RedPointState.GetReward;
+
UpdateRedpoint();
+ if (taskRedpackRefresh != null)
+ {
+ taskRedpackRefresh();
+ }
+
+ if (!rewardable && receiveRedpoint.state == RedPointState.GetReward
+ && serverInited && !ExistSelfTaskRedpack())
+ {
+ PlayRedpackVoice();
+ }
+ }
+
+ public bool ExistSelfTaskRedpack()
+ {
+ List<int> list;
+ if (envelopeModel.TryGetEnvelopes(FESTIVALTASKREDPACKTYPE, out list))
+ {
+ foreach (var id in list)
+ {
+ RedEnvelopeModel.RedEnvelope envelope;
+ if (envelopeModel.TryGetEnvelope(id, out envelope))
+ {
+ if (envelope.player == PlayerDatas.Instance.PlayerId
+ && envelope.state == 1)
+ {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ public void JudgePlayRedpackVoice(int type)
+ {
+ if (type == FESTIVALSYSTEMREDPACK1
+ || type == FESTIVALSYSTEMREDPACK2)
+ {
+ PlayRedpackVoice();
+ }
+ }
+
+ void PlayRedpackVoice()
+ {
+ if ((DateTime.Now - voicePlayTime).TotalSeconds < redpackVoiceInterval)
+ {
+ return;
+ }
+ SoundPlayer.Instance.PlayUIAudio(632);
+ voicePlayTime = DateTime.Now;
}
private void EnvelopeDelEvent()
{
UpdateRedpoint();
- }
-
- private void EnvelopeGetEvent(int id)
- {
-
+ if (taskRedpackRefresh != null)
+ {
+ taskRedpackRefresh();
+ }
}
private void AchievementCompletedEvent(int _achieve)
{
List<FestivalRedpackAchievement> list;
- if (TryGetAchievements(out list) && IsContainsAchievement(list, _achieve))
+ if (TryGetAchievements(festivalDay + 1, out list) && IsContainsAchievement(list, _achieve))
{
if (achievementRefresh != null)
{
@@ -374,7 +457,7 @@
private void AchievementProgressUpdateEvent(int _achieve)
{
List<FestivalRedpackAchievement> list;
- if (TryGetAchievements(out list) && IsContainsAchievement(list, _achieve))
+ if (TryGetAchievements(festivalDay + 1, out list) && IsContainsAchievement(list, _achieve))
{
if (achievementRefresh != null)
{
@@ -420,7 +503,7 @@
}
List<FestivalRedpackAchievement> list;
- if (TryGetAchievements(out list))
+ if (TryGetAchievements(festivalDay + 1, out list))
{
foreach (var festivalRedpackAchievement in list)
{
@@ -461,9 +544,9 @@
}
}
}
- systemRedpoint.state = existSystemRedpack ? RedPointState.Simple : RedPointState.None;
+ systemRedpoint.state = existSystemRedpack ? RedPointState.GetReward : RedPointState.None;
taskRedpoint.state = existFinishTask ? RedPointState.Simple : RedPointState.None;
- receiveRedpoint.state = existUnGetRedpack ? RedPointState.Simple : RedPointState.None;
+ receiveRedpoint.state = existUnGetRedpack ? RedPointState.GetReward : RedPointState.None;
}
}
--
Gitblit v1.8.0