| | |
| | | {
|
| | | public const int HEAVEBATTLE_MAPID = 31010;
|
| | | public const int HEAVEBATTLE_TargetID = 38;
|
| | | public const int HEAVEBATTLE_START = 1;
|
| | | public const int HeavenBattleDailyId = 14;
|
| | | List<DungeonStateTimeConfig> prepareConfiglist;
|
| | | DailyQuestConfig dailyConfig;
|
| | | public HeavenBattleState heavenBattleState { get; private set; }
|
| | | Dictionary<DayOfWeek,WeekTime> heavenBattleWeekTimeDict = new Dictionary<DayOfWeek,WeekTime>();
|
| | | public Dictionary<int,List<XMZZVictoryRewardInfo>> heavenAwardDict { get; private set; }
|
| | | public Dictionary<int, ItemCellModel> campVicRewardDict { get; private set; }
|
| | | public Dictionary<int, ItemCellModel> campFailRewardDict { get; private set; }
|
| | |
| | |
|
| | | public override void Init()
|
| | | {
|
| | | heavenBattleWeekTimeDict.Clear();
|
| | | prepareConfiglist = DungeonStateTimeConfig.DungeonStateTimelist(HEAVEBATTLE_MAPID, HEAVEBATTLE_START);
|
| | | for(int i = 0; i < prepareConfiglist.Count;i++)
|
| | | {
|
| | | DungeonStateTimeConfig prepareConfig = prepareConfiglist[i];
|
| | | WeekTime weekTime1 = new WeekTime(prepareConfig.StartWeekday, prepareConfig.StartHour
|
| | | , prepareConfig.StartMinute, prepareConfig.EndHour, prepareConfig.EndMinute);
|
| | | DayOfWeek dayOfWeek = (DayOfWeek)(prepareConfig.StartWeekday % 7);
|
| | | if(!heavenBattleWeekTimeDict.ContainsKey(dayOfWeek))
|
| | | {
|
| | | heavenBattleWeekTimeDict.Add(dayOfWeek, weekTime1);
|
| | | }
|
| | | else
|
| | | {
|
| | | heavenBattleWeekTimeDict[dayOfWeek] = weekTime1;
|
| | | }
|
| | | }
|
| | |
|
| | | FuncConfigConfig heavenAwardConfig = Config.Instance.Get<FuncConfigConfig>("XMZZAward");
|
| | | JsonData xmzzVicRewardData = JsonMapper.ToObject(heavenAwardConfig.Numerical1);
|
| | | heavenAwardDict = new Dictionary<int, List<XMZZVictoryRewardInfo>>();
|
| | |
| | | {
|
| | | if(dailyQuestModel.GetQuestState(dailyConfig.ID) != DailyQuestModel.DailyQuestState.OutTime)
|
| | | {
|
| | | if (!WindowCenter.Instance.IsOpen<HeavenBattleWin>())
|
| | | if (!WindowCenter.Instance.IsOpen<HeavenBattleWin>() && GetActivityRemainTime() > 0)
|
| | | {
|
| | | var config = Config.Instance.Get<DailyQuestConfig>(dailyConfig.ID);
|
| | | dungeonModel.currentDungeon = new Dungeon(config.RelatedID, 0);
|
| | |
| | |
|
| | | #endregion
|
| | |
|
| | | public HeavenBattleState GetXMZZState()
|
| | | {
|
| | | heavenBattleState = HeavenBattleState.None;
|
| | | DayOfWeek serverWeekDay = TimeUtility.ServerNow.DayOfWeek;
|
| | |
|
| | | if (heavenBattleWeekTimeDict.ContainsKey(serverWeekDay))
|
| | | {
|
| | | WeekTime activityEndWeek = new WeekTime(heavenBattleWeekTimeDict[serverWeekDay].dayOfWeek, heavenBattleWeekTimeDict[serverWeekDay].endHour, heavenBattleWeekTimeDict[serverWeekDay].endMinute
|
| | | , 0, 0);
|
| | |
|
| | | if ((WeekTime.Now - heavenBattleWeekTimeDict[serverWeekDay]).TotalSeconds >= 0
|
| | | && (activityEndWeek - WeekTime.Now).TotalSeconds >= 0)
|
| | | {
|
| | | heavenBattleState = HeavenBattleState.BattleStart;
|
| | | }
|
| | | else if ((WeekTime.Now - activityEndWeek).TotalSeconds > 0)
|
| | | {
|
| | | heavenBattleState = HeavenBattleState.BattleEnd;
|
| | | }
|
| | | }
|
| | | return heavenBattleState;
|
| | | }
|
| | |
|
| | | public int GetActivityRemainTime()
|
| | | {
|
| | | if (heavenBattleWeekTimeDict.ContainsKey(TimeUtility.ServerNow.DayOfWeek))
|
| | | DailyQuestOpenTime openTime = null;
|
| | | bool isActivity = dailyQuestModel.TryGetOpenTime(HeavenBattleDailyId,out openTime);
|
| | | if(isActivity)
|
| | | {
|
| | | DayOfWeek serverWeekDay = TimeUtility.ServerNow.DayOfWeek;
|
| | | List<HourMinute> hourMinutes = openTime.GetHourMinuteByWeek((int)TimeUtility.ServerNow.DayOfWeek);
|
| | | if(hourMinutes != null && hourMinutes.Count > 0)
|
| | | {
|
| | | HourMinute hourMinute = hourMinutes[0];
|
| | | DateTime endTime = new DateTime(TimeUtility.ServerNow.Year,TimeUtility.ServerNow.Month, TimeUtility.ServerNow.Day,
|
| | | hourMinute.hourEnd,hourMinute.minuteEnd,0);
|
| | | DateTime startTime = new DateTime(TimeUtility.ServerNow.Year, TimeUtility.ServerNow.Month, TimeUtility.ServerNow.Day,
|
| | | hourMinute.hourBegin, hourMinute.minuteBegin, 0);
|
| | | int advanceSec = Mathf.CeilToInt((float)(startTime - TimeUtility.ServerNow).TotalSeconds);
|
| | | int endSec = Mathf.CeilToInt((float)(endTime - TimeUtility.ServerNow).TotalSeconds);
|
| | | if(advanceSec > 0)
|
| | | {
|
| | | return 0;
|
| | | }
|
| | | else if(endSec <= 0)
|
| | | {
|
| | | return 0;
|
| | | }
|
| | | else
|
| | | {
|
| | | return endSec;
|
| | | }
|
| | |
|
| | | WeekTime endTime = new WeekTime(heavenBattleWeekTimeDict[serverWeekDay].dayOfWeek, heavenBattleWeekTimeDict[serverWeekDay].endHour, heavenBattleWeekTimeDict[serverWeekDay].endMinute
|
| | | , 0, 0);
|
| | | return (int)(endTime - WeekTime.Now).TotalSeconds;
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | return 0;
|
| | | }
|
| | |
|