From 8ec139a41a68bc0aebd3c2de4912276d3db3bd8e Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期五, 21 九月 2018 15:39:14 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/FairyAu/FairyLeagueModel.cs |  125 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 123 insertions(+), 2 deletions(-)

diff --git a/System/FairyAu/FairyLeagueModel.cs b/System/FairyAu/FairyLeagueModel.cs
index eed633f..d27d464 100644
--- a/System/FairyAu/FairyLeagueModel.cs
+++ b/System/FairyAu/FairyLeagueModel.cs
@@ -9,7 +9,7 @@
 
 namespace Snxxz.UI
 {
-    public class FairyLeagueModel : Model, IAfterPlayerDataInitialize, IBeforePlayerDataInitialize, IPlayerLoginOk
+    public class FairyLeagueModel : Model, IAfterPlayerDataInitialize, IBeforePlayerDataInitialize, IPlayerLoginOk,IOpenServerActivity
     {
         public event Action OnRefreshFairyLeagueEvent;
 
@@ -123,9 +123,11 @@
             DTCA003_tagUniversalGameRecInfo.onGetUniversalGameInfo += OnGetUniversalGameInfo;
             PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
             StageManager.Instance.onStageLoadFinish += OnStageLoadFinish;
+            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
             TimeMgr.Instance.OnMinuteEvent += MinuteEvent;
             TimeMgr.Instance.OnDayEvent += DayEvent;
             fairyLeagueHelp = new FairyLeagueHelp();
+            OpenServerActivityCenter.Instance.Register((int)OpenServerActivityCenter.OSActivityType.FairyLeagueNotice, this);
         }
 
         public override void UnInit()
@@ -154,6 +156,7 @@
             cacheLeagueStage = fairyLeagueStage;
             CheckFairyLeagueData();
             UpdateRedpoint();
+            UpdateNoticeRedpoint();
             serverInited = true;
         }
 
@@ -244,6 +247,7 @@
         readonly List<int> fairyLeagueStateValues = new List<int>() { 11, 12, 13, 21, 22, 23 };
         FairyLeagueWeekTime fairyLeagueWeekTime = new FairyLeagueWeekTime();
         Dictionary<int, Dictionary<int, FairyLeagueWeekTime>> specialLeagueTimes = new Dictionary<int, Dictionary<int, FairyLeagueWeekTime>>();
+        public Dictionary<int,int> leagueNoticeWeapons { get; private set; }
         private void ParseConfig()
         {
             FuncConfigConfig cfg = Config.Instance.Get<FuncConfigConfig>("FamilyMatchGuide");
@@ -351,12 +355,15 @@
             integralAddition = int.Parse(cfg.Numerical5);
             cfg = Config.Instance.Get<FuncConfigConfig>("FamilyMatchResourcePoint1");
             crystalRateDict = ConfigParse.GetDic<int, float>(cfg.Numerical1);
+            cfg = Config.Instance.Get<FuncConfigConfig>("FamilyForcast");
+            leagueNoticeWeapons = ConfigParse.GetDic<int, int>(cfg.Numerical1);
         }
 
         int GetIndexOfWeek(int _openWeekDay, int _openDays, out int dayOfWeek)
         {
-            var index = (_openWeekDay + _openDays - 1) / 7;
+            var index = (_openWeekDay + _openDays - 2) / 7;
             dayOfWeek = (_openWeekDay + _openDays - 1) % 7;
+            dayOfWeek = dayOfWeek == 0 ? 7 : dayOfWeek;
             return index;
         }
 
@@ -905,6 +912,7 @@
         #region 绾㈢偣
         private Redpoint m_LeagueRedpoint = new Redpoint(107, 10704);
         public Redpoint m_JoinFairyLeagueRedpoint { get; private set; }
+
         public void UpdateRedpoint()
         {
             m_JoinFairyLeagueRedpoint.state = RedPointState.None;
@@ -918,6 +926,115 @@
                 return;
             }
             m_JoinFairyLeagueRedpoint.state = RedPointState.Simple;
+        }
+        #endregion
+
+        #region 浠欑洘鑱旇禌棰勫憡
+        private void OnFuncStateChangeEvent(int func)
+        {
+            if (func == 142)
+            {
+                if (onStateUpate != null)
+                {
+                    onStateUpate((int)OpenServerActivityCenter.OSActivityType.FairyLeagueNotice);
+                }
+                UpdateNoticeRedpoint();
+            }
+        }
+
+        public event Action<int> onStateUpate;
+        public bool IsOpen
+        {
+            get
+            {
+                return FuncOpen.Instance.IsFuncOpen(142) && !IsAfterFirstLeague();
+            }
+        }
+        public bool IsAdvance
+        {
+            get { return false; }
+        }
+
+        public bool priorityOpen
+        {
+            get { return false; }
+        }
+
+        public int GetBeforeFirstLeagueTime()
+        {
+            var seconds = 0;
+            if (TimeUtility.OpenWeekCnt <= 1)
+            {
+                if (IsAfterFirstLeague())
+                {
+                    return 0;
+                }
+                var weekTime = currentWeekTime == null ? nextWeekTime : currentWeekTime;
+                var ring = weekTime.rings[0];
+                var session = ring.sessions[0];
+                var fightStage = session.stages.Find((x) =>
+                {
+                    return x.stage == FairyLeagueStage.Fight;
+                });
+                var time = TimeUtility.openServerTime.AddTicks((weekTime.rings[0].openServerDay - 1) * TimeSpan.TicksPerDay);
+                time = new DateTime(time.Year, time.Month, time.Day, fightStage.startHour, fightStage.startMinute, 0);
+                seconds = (int)(time - TimeUtility.ServerNow).TotalSeconds;
+                seconds = Mathf.Max(seconds, 0);
+            }
+            return seconds;
+        }
+
+        public bool IsAfterFirstLeague()
+        {
+            if (TimeUtility.OpenWeekCnt <= 1)
+            {
+                var openServerTime = TimeUtility.openServerTime;
+                var openServerWeekDay = openServerTime.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)openServerTime.DayOfWeek;
+                if (specialLeagueTimes.ContainsKey(openServerWeekDay))
+                {
+                    var dict = specialLeagueTimes[openServerWeekDay];
+                    var weekCount = TimeUtility.OpenWeekCnt;
+                    if (dict.ContainsKey(0) && weekCount > 0)
+                    {
+                        return true;
+                    }
+                    if (currentWeekTime == null)
+                    {
+                        return false;
+                    }
+                    var weekTime = currentWeekTime == null ? nextWeekTime : currentWeekTime;
+                    if (weekTime.IsNextWeek)
+                    {
+                        return true;
+                    }
+                    if (weekTime.rings.Count > 1 && weekTime.currentRing == 1)
+                    {
+                        return true;
+                    }
+                    return weekTime.currentSession == 1 && weekTime.fairyLeagueStage == FairyLeagueStage.Over;
+                }
+            }
+            return true;
+        }
+
+        Redpoint fairyLeagueNoticeRedpoint = new Redpoint(MainRedDot.REDPOINT_OPENSERVER, 20912);
+        void UpdateNoticeRedpoint()
+        {
+            fairyLeagueNoticeRedpoint.state = RedPointState.None;
+            if (!DayRemind.Instance.GetDayRemind(DayRemind.LEAGUE_NOTICE_REDPOINT)
+                && IsOpen)
+            {
+                fairyLeagueNoticeRedpoint.state = RedPointState.Simple;
+            }
+        }
+
+        public void SetViewLeagueNotice()
+        {
+            if (fairyLeagueNoticeRedpoint.state == RedPointState.Simple)
+            {
+                DayRemind.Instance.SetDayRemind(DayRemind.LEAGUE_NOTICE_REDPOINT, true);
+                UpdateNoticeRedpoint();
+            }
         }
         #endregion
     }
@@ -1093,6 +1210,8 @@
 
             public int dayOfWeek { get; set; }
 
+            public int openServerDay { get; private set; }
+
             public void Sort()
             {
                 sessions.Sort((Session x, Session y) =>
@@ -1122,6 +1241,8 @@
 
             public void ParseConfig(DungeonSpecialStateTimeConfig config, int dayOfWeek)
             {
+                openServerDay = config.OpenServerDay;
+
                 var session = sessions.Find((x) =>
                 {
                     return x.session == (config.StateValue < 20 ? 0 : 1);

--
Gitblit v1.8.0