| | |
| | |
|
| | | namespace Snxxz.UI
|
| | | {
|
| | | public class FairyLeagueModel : Model, IAfterPlayerDataInitialize, IBeforePlayerDataInitialize, IPlayerLoginOk
|
| | | public class FairyLeagueModel : Model, IAfterPlayerDataInitialize, IBeforePlayerDataInitialize, IPlayerLoginOk,IOpenServerActivity
|
| | | {
|
| | | public event Action OnRefreshFairyLeagueEvent;
|
| | |
|
| | |
| | | {
|
| | | 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];
|
| | |
| | | {
|
| | | 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];
|
| | |
| | | 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()
|
| | |
| | | cacheLeagueStage = fairyLeagueStage;
|
| | | CheckFairyLeagueData();
|
| | | UpdateRedpoint();
|
| | | UpdateNoticeRedpoint();
|
| | | serverInited = true;
|
| | | }
|
| | |
|
| | |
| | | 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");
|
| | |
| | | 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;
|
| | | }
|
| | |
|
| | |
| | | #region 红点
|
| | | private Redpoint m_LeagueRedpoint = new Redpoint(107, 10704);
|
| | | public Redpoint m_JoinFairyLeagueRedpoint { get; private set; }
|
| | |
|
| | | public void UpdateRedpoint()
|
| | | {
|
| | | m_JoinFairyLeagueRedpoint.state = RedPointState.None;
|
| | |
| | | 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
|
| | | }
|
| | |
| | |
|
| | | public int dayOfWeek { get; set; }
|
| | |
|
| | | public int openServerDay { get; private set; }
|
| | |
|
| | | public void Sort()
|
| | | {
|
| | | sessions.Sort((Session x, Session y) =>
|
| | |
| | |
|
| | | public void ParseConfig(DungeonSpecialStateTimeConfig config, int dayOfWeek)
|
| | | {
|
| | | openServerDay = config.OpenServerDay;
|
| | |
|
| | | var session = sessions.Find((x) =>
|
| | | {
|
| | | return x.session == (config.StateValue < 20 ? 0 : 1);
|