少年修仙传客户端代码仓库
client_linchunjie
2018-09-25 78bfe524ea4776c47f6314e56e97f39970b00fce
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;
@@ -17,8 +17,7 @@
        {
            get
            {
                var openServerTime = TimeUtility.openServerTime;
                var openServerWeekDay = openServerTime.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)openServerTime.DayOfWeek;
                var openServerWeekDay = TimeUtility.openServerDayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.openServerDayOfWeek;
                if (specialLeagueTimes.ContainsKey(openServerWeekDay))
                {
                    var dict = specialLeagueTimes[openServerWeekDay];
@@ -40,8 +39,7 @@
        {
            get
            {
                var openServerTime = TimeUtility.openServerTime;
                var openServerWeekDay = openServerTime.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)openServerTime.DayOfWeek;
                var openServerWeekDay = TimeUtility.openServerDayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.openServerDayOfWeek;
                if (specialLeagueTimes.ContainsKey(openServerWeekDay))
                {
                    var dict = specialLeagueTimes[openServerWeekDay];
@@ -123,9 +121,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 +154,7 @@
            cacheLeagueStage = fairyLeagueStage;
            CheckFairyLeagueData();
            UpdateRedpoint();
            UpdateNoticeRedpoint();
            serverInited = true;
        }
@@ -244,6 +245,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 +353,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 +910,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 +924,114 @@
                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.ServerNow.AddTicks((weekTime.rings[0].openServerDay - TimeUtility.OpenDay - 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 openServerWeekDay = TimeUtility.openServerDayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.openServerDayOfWeek;
                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 +1207,8 @@
            public int dayOfWeek { get; set; }
            public int openServerDay { get; private set; }
            public void Sort()
            {
                sessions.Sort((Session x, Session y) =>
@@ -1122,6 +1238,8 @@
            public void ParseConfig(DungeonSpecialStateTimeConfig config, int dayOfWeek)
            {
                openServerDay = config.OpenServerDay;
                var session = sessions.Find((x) =>
                {
                    return x.session == (config.StateValue < 20 ? 0 : 1);