private void RefreshTimeLimitedActivity(bool isInit = false) { var tabIdx = (int)PlayFrameTab.TimedActivity; List <DailyActivity> records; if (!DailyActs.TryGetValue(tabIdx, out records)) { return; } CurrentCellData.Clear(); CurrentTimeSpan.Clear(); var playerData = PlayerDataManager.Instance; var isShowTimeLimitNotice = false; var now = Game.Instance.ServerTime; var nearestActivityTime = now.AddYears(10); var cells = new List <PlayFrameCellData>(); foreach (var record in records) { var args = new CreateCellDataArgs(); args.nowCount = 0; args.maxCount = 0; args.state = ActivityCellState.Start; args.textId = 100000613; //参加 var param0 = record.dailyActivityRecord.CommonParam[0]; var cell = CreateCellData(record, args); cells.Add(cell); var _tbDavi = Table.GetDailyActivity(record.dailyActivityRecord.Id); cell.IsRewardShow1 = 1; cell.IsRewardShow2 = 1; cell.IsRewardShow3 = 1; for (int i = 0, imax = _tbDavi.RewardShow.Count; i < imax; i++) { if (i == 0) { cell.RewardId1 = _tbDavi.RewardShow[i]; cell.IsRewardShow1 = 0; } if (i == 1) { cell.RewardId2 = _tbDavi.RewardShow[i]; cell.IsRewardShow2 = 0; } if (i == 2) { cell.RewardId3 = _tbDavi.RewardShow[i]; cell.IsRewardShow3 = 0; } } { var tbSU = Table.GetSkillUpgrading(param0); var openLastMin = tbSU.Param[0]; var speId = tbSU.Param[1]; var values = tbSU.Values; var actState = -1; var startTime = default(DateTime); if (speId != -1 && playerData.ActivityState.Count > speId) { actState = playerData.ActivityState[speId]; } if (actState < (int)eActivityState.WillEnd) { foreach (var value in values) { var hour = value / 100; var min = value % 100; var startTime1 = new DateTime(now.Year, now.Month, now.Day, hour, min, 0); var endTime1 = startTime1.AddMinutes(openLastMin); if (endTime1 >= now) { startTime = startTime1; // TimeSpan span = startTime1 - DateTime.Now; string timeForm = string.Format("距开启还有{0}:{1}:{2}", span.Hours, span.Minutes, span.Seconds); cell.Reason = timeForm; if (!CurrentCellData.Contains(cell)) { CurrentCellData.Add(cell); CurrentTimeSpan.Add(startTime1); if (!isInit) { NetManager.Instance.StartCoroutine(UpDateTime()); } } // break; } } } if (startTime == default(DateTime)) { var value = values[0]; var hour = value / 100; var min = value % 100; startTime = new DateTime(now.Year, now.Month, now.Day, hour, min, 0).AddDays(1); cell.State = (int)ActivityCellState.CanNotAttend; } cell.StartTime = startTime; if (startTime <= now) { if (cell.State == (int)ActivityCellState.Start) { cell.IsShowNotice = startTime <= now; isShowTimeLimitNotice = true; } startTime = startTime.AddMinutes(openLastMin); nearestActivityTime = nearestActivityTime < startTime ? nearestActivityTime : startTime; } else { if (cell.State == (int)ActivityCellState.Start) { cell.State = (int)ActivityCellState.WillStart; } //cell.Reason = string.Format(GameUtils.GetDictionaryText(100000612), startTime.ToString("HH:mm")); //cell.Reason = GameUtils.GetAllTimeDiffString(startTime, true); nearestActivityTime = nearestActivityTime < startTime ? nearestActivityTime : startTime; } } //未开启限时活动 if (record.state == (int)PlayFrameTab.NoToDpen) { cell.State = (int)ActivityCellState.NoEnoughtLV; cell.Reason = record.dailyActivityRecord.Desc; } switch (cell.State) { //case 0: //case 2: // cell.BtnId = 1; // break; //case 1: // cell.BtnId = 2; // break; //case 3: // cell.BtnId = 3; // break; case 0: //参加 cell.BtnId = 1; break; case 1: cell.BtnId = 2; break; case 2: //领取奖励 cell.ShowColor = 1; cell.BtnId = 4; break; case 3: //未开启 cell.ShowColor = 2; cell.BtnId = 2; break; case 4: //当日活动结束 cell.BtnId = 5; break; } } { SetNextRefreshCellTime(nearestActivityTime); } isInit = true; cells.Sort((l, r) => { if (l.State < r.State) { return(-1); } if (l.State > r.State) { return(1); } if (l.StartTime < r.StartTime) { return(-1); } if (l.StartTime > r.StartTime) { return(1); } if (l.SortPriority < r.SortPriority) { return(-1); } if (l.SortPriority > r.SortPriority) { return(1); } return(0); }); if (TabIdx == tabIdx) { DataModel.Cells = new ObservableCollection <PlayFrameCellData>(cells); if (cells.Count == 0) { DataModel.EmptyTipDic = tabIdx + 100000900; } else { DataModel.EmptyTipDic = -1; } } DataModel.IsShowTimeLimitNotice = isShowTimeLimitNotice; if (isInit) { var showReward = IsShowDailyRedPoint(); playerData.NoticeData.DailyActivityFlag = DataModel.IsShowTimeLimitNotice || DataModel.IsShowDailyNotice || showReward; } }
private void RefreshLimitTime() { var tabIdx = (int)PlayFrameTab.TimedActivity; List <DailyActivity> records; if (!DailyActs.TryGetValue(tabIdx, out records)) { return; } var playerData = PlayerDataManager.Instance; var isShowTimeLimitNotice = false; var now = Game.Instance.ServerTime; var nearestActivityTime = now.AddYears(10); var cells = new List <PlayFrameCellData>(); foreach (var record in records) { var args = new CreateCellDataArgs(); args.nowCount = 0; args.maxCount = 0; args.state = ActivityCellState.Start; args.textId = 100000613; //参加 var param0 = record.dailyActivityRecord.CommonParam[0]; var cell = CreateCellData(record, args); cells.Add(cell); { var tbSU = Table.GetSkillUpgrading(param0); var openLastMin = tbSU.Param[0]; var speId = tbSU.Param[1]; var values = tbSU.Values; var actState = -1; var startTime = default(DateTime); if (speId != -1 && playerData.ActivityState.Count > speId) { actState = playerData.ActivityState[speId]; } if (actState < (int)eActivityState.WillEnd) { foreach (var value in values) { var hour = value / 100; var min = value % 100; var startTime1 = new DateTime(now.Year, now.Month, now.Day, hour, min, 0); var endTime1 = startTime1.AddMinutes(openLastMin); if (endTime1 >= now) { startTime = startTime1; break; } } } if (startTime == default(DateTime)) { var value = values[0]; var hour = value / 100; var min = value % 100; startTime = new DateTime(now.Year, now.Month, now.Day, hour, min, 0).AddDays(1); cell.State = (int)ActivityCellState.CanNotAttend; } cell.StartTime = startTime; if (startTime <= now) { if (cell.State == (int)ActivityCellState.Start) { cell.IsShowNotice = startTime <= now; isShowTimeLimitNotice = true; } startTime = startTime.AddMinutes(openLastMin); nearestActivityTime = nearestActivityTime < startTime ? nearestActivityTime : startTime; } else { if (cell.State == (int)ActivityCellState.Start) { cell.State = (int)ActivityCellState.WillStart; } //cell.Reason = string.Format(GameUtils.GetDictionaryText(100000612), startTime.ToString("HH:mm")); cell.Reason = GameUtils.GetAllTimeDiffString(startTime, true); nearestActivityTime = nearestActivityTime < startTime ? nearestActivityTime : startTime; } } { SetNextRefreshCellTime(nearestActivityTime); } DataModel.IsShowTimeLimitNotice = isShowTimeLimitNotice; } }
private PlayFrameCellData CreateCellData(DailyActivity record, CreateCellDataArgs args) { var playerData = PlayerDataManager.Instance; var cell = new PlayFrameCellData(); cell.TableId = record.dailyActivityRecord.Id; var exdataId = record.dailyActivityRecord.ExDataId; var param0 = record.dailyActivityRecord.CommonParam[0]; var param1 = record.dailyActivityRecord.CommonParam[1]; var type = (eActivityType)record.dailyActivityRecord.DetailType; var btnId = -1; switch (type) { case eActivityType.DailyTask: { var tbSU = Table.GetSkillUpgrading(param0); var values = tbSU.Values; var myLevel = PlayerDataManager.Instance.GetLevel(); foreach (var value in values) { var tbMission = Table.GetMissionBase(value); var tbCondition = Table.GetConditionTable(tbMission.Condition); if (PlayerDataManager.Instance.GetFlag(tbCondition.TrueFlag[0]) && myLevel >= tbCondition.ItemCountMin[0] && myLevel <= tbCondition.ItemCountMax[0]) { args.maxCount = tbCondition.ExdataMax[0]; args.nowCount = playerData.GetExData(tbCondition.ExdataId[0]); args.state = args.nowCount < args.maxCount ? ActivityCellState.Start : ActivityCellState.Complete; break; } } } break; case eActivityType.StoryDungeon: { var tbPF = Table.GetPlotFuben(param0); if (tbPF == null) { break; } args.nowCount = playerData.GetExData(exdataId); foreach (var fubenId in tbPF.Difficulty) { var tbFuben = Table.GetFuben(fubenId); if (tbFuben == null) { break; } var result = playerData.CheckCondition(tbFuben.EnterConditionId); if (result != 0) { break; } args.maxCount += tbFuben.TodayCount + playerData.GetExData(tbFuben.ResetExdata); } if (args.nowCount < args.maxCount) { args.state = ActivityCellState.Start; } else { args.state = ActivityCellState.Complete; } } break; case eActivityType.Arena: { args.nowCount = playerData.GetExData(exdataId); args.maxCount = Table.GetClientConfig(201).ToInt(); var totalCount = args.maxCount + Table.GetClientConfig(204).ToInt(); if (args.nowCount < args.maxCount) { args.state = ActivityCellState.Start; } else if (args.nowCount < totalCount) { args.state = ActivityCellState.Complete; } else { args.state = ActivityCellState.CanNotAttend; } } break; case eActivityType.NormalCount: { args.nowCount = playerData.GetExData(exdataId); args.maxCount = record.dailyActivityRecord.DisplayCount; args.state = args.nowCount < args.maxCount ? ActivityCellState.Start : ActivityCellState.Complete; } break; case eActivityType.Infinity: { args.nowCount = playerData.GetExData(exdataId); args.maxCount = record.dailyActivityRecord.DisplayCount; args.state = args.nowCount < args.maxCount ? ActivityCellState.Start : ActivityCellState.Complete; } break; case eActivityType.AcientBF: { args.nowCount = playerData.GetExData(eExdataDefine.e545); args.maxCount = record.dailyActivityRecord.DisplayCount; args.state = args.nowCount < args.maxCount ? ActivityCellState.Start : ActivityCellState.Complete; } break; case eActivityType.Question: { args.nowCount = playerData.GetExData(exdataId); args.maxCount = Table.GetClientConfig(581).ToInt(); args.state = args.nowCount < args.maxCount ? ActivityCellState.Start : ActivityCellState.Complete; } break; case eActivityType.VipAddCount: { args.nowCount = playerData.GetExData(exdataId); args.maxCount = record.dailyActivityRecord.DisplayCount; args.state = args.nowCount < args.maxCount ? ActivityCellState.Start : ActivityCellState.Complete; } break; case eActivityType.IgnoreCount: { cell.IsShowCount = false; } break; case eActivityType.VipDailyGift: { args.nowCount = 0; args.maxCount = record.dailyActivityRecord.DisplayCount; var vipLevel = playerData.GetItemCount((int)eResourcesType.VipLevel); if (vipLevel <= 0) { args.textId = 100000896; //购买 } else if (playerData.GetFlag(param0)) //flag 2506:每天的vip礼包是否已领取 { args.nowCount = 1; } else { args.textId = 100000894; //领取 btnId = 4; } args.state = args.nowCount < args.maxCount ? ActivityCellState.Start : ActivityCellState.Complete; } break; case eActivityType.MonthCard: { args.nowCount = 0; args.maxCount = record.dailyActivityRecord.DisplayCount; var exdata64Idx = Table.GetClientConfig(418).ToInt(); var endTime = playerData.GetExData64(exdata64Idx); var endDate = Extension.FromServerBinary(endTime); var now = Game.Instance.ServerTime; if (now > endDate) { args.textId = 100000896; //购买 } else if (playerData.GetFlag(param0)) //flag 2507:每天的月卡礼包是否已领取 { args.nowCount = 1; } else { args.textId = 100000894; //领取 btnId = 4; } args.state = args.nowCount < args.maxCount ? ActivityCellState.Start : ActivityCellState.Complete; } break; } if (record.dailyActivityRecord.FinishCanJoin == 0) { if (args.state == ActivityCellState.Complete) { args.state = ActivityCellState.CanNotAttend; } } var activityValue = record.dailyActivityRecord.ActivityValue; var activityCount = record.dailyActivityRecord.ActivityCount; if (activityCount == -1 && activityValue > 0) { activityCount = args.maxCount; } var slashText = GameUtils.GetDictionaryText(230027); var wuText = GameUtils.GetDictionaryText(270024); cell.State = (int)args.state; cell.BtnId = btnId; cell.SortPriority = record.dailyActivityRecord.SortPriority; cell.TextId = args.textId; cell.Count = string.Format(slashText, Math.Min(args.nowCount, args.maxCount), args.maxCount); cell.Activity = activityCount <= 0 ? wuText : (string.Format(slashText, activityValue * Math.Min(args.nowCount, activityCount), activityValue * activityCount)); return(cell); }
private void RefreshCells(int tabIdx, bool isInit = false) { if (tabIdx == (int)PlayFrameTab.TimedActivity) { RefreshTimeLimitedActivity(); return; } List <DailyActivity> records; if (!DailyActs.TryGetValue(tabIdx, out records)) { return; } var cells = new List <PlayFrameCellData>(); foreach (var record in records) { var args = new CreateCellDataArgs(); args.nowCount = 0; args.maxCount = 0; args.state = ActivityCellState.Start; args.textId = 100000613; //参加 var _tbDavi = Table.GetDailyActivity(record.dailyActivityRecord.Id); if (!GameUtils.CheckIsWeekLoopOk(_tbDavi.WeekLoop)) { continue; } var cell = CreateCellData(record, args); cells.Add(cell); cell.IsRewardShow1 = 1; cell.IsRewardShow2 = 1; cell.IsRewardShow3 = 1; for (int i = 0, imax = _tbDavi.RewardShow.Count; i < imax; i++) { if (i == 0) { cell.RewardId1 = _tbDavi.RewardShow[i]; cell.IsRewardShow1 = 0; } if (i == 1) { cell.RewardId2 = _tbDavi.RewardShow[i]; cell.IsRewardShow2 = 0; } if (i == 2) { cell.RewardId3 = _tbDavi.RewardShow[i]; cell.IsRewardShow3 = 0; } } if (/*tabIdx == (int) PlayFrameTab.AboutToOpen*/ record.state == (int)PlayFrameTab.NoToDpen) { cell.State = (int)ActivityCellState.WillStart; cell.Reason = record.dailyActivityRecord.Desc; } if (cell.BtnId == -1) { switch (cell.State) { case 0: //参加 cell.BtnId = 1; break; case 1: //等级不够,未开启 cell.ShowColor = 2; cell.BtnId = 2; break; case 2: //领取奖励 cell.ShowColor = 1; cell.BtnId = 4; break; case 4: //完成 cell.ShowColor = 1; cell.BtnId = 3; break; } } } cells.Sort((l, r) => { if (l.State < r.State) { return(-1); } if (l.State > r.State) { return(1); } if (l.SortPriority < r.SortPriority) { return(-1); } if (l.SortPriority > r.SortPriority) { return(1); } return(0); }); DataModel.Cells = new ObservableCollection <PlayFrameCellData>(cells); if (cells.Count == 0) { DataModel.EmptyTipDic = tabIdx + 100000900; } else { DataModel.EmptyTipDic = -1; } if (tabIdx == (int)PlayFrameTab.DailyActivity) { var count = cells.Count(c => c.State == (int)ActivityCellState.Start); //DataModel.IsShowDailyNotice = count > 0;日常按钮小红点改为活跃度奖励未领取时显示 if (isInit) { var showReward = IsShowDailyRedPoint(); PlayerDataManager.Instance.NoticeData.DailyActivityFlag = DataModel.IsShowTimeLimitNotice || DataModel.IsShowDailyNotice || showReward; } } }
private void RefreshTimeLimitedActivity(bool isInit = false) { var tabIdx = (int)PlayFrameTab.TimedActivity; List <DailyActivityRecord> records; if (!DailyActs.TryGetValue(tabIdx, out records)) { return; } var playerData = PlayerDataManager.Instance; var isShowTimeLimitNotice = false; var now = Game.Instance.ServerTime; var nearestActivityTime = now.AddYears(10); var cells = new List <PlayFrameCellData>(); foreach (var record in records) { var args = new CreateCellDataArgs(); args.nowCount = 0; args.maxCount = 0; args.state = ActivityCellState.Start; args.textId = 100000613; //参加 var param0 = record.CommonParam[0]; var cell = CreateCellData(record, args); cells.Add(cell); { var tbSU = Table.GetSkillUpgrading(param0); var openLastMin = tbSU.Param[0]; var speId = tbSU.Param[1]; var values = tbSU.Values; var actState = -1; var startTime = default(DateTime); if (speId != -1 && playerData.ActivityState.Count > speId) { actState = playerData.ActivityState[speId]; } if (actState < (int)eActivityState.WillEnd) { foreach (var value in values) { var hour = value / 100; var min = value % 100; var startTime1 = new DateTime(now.Year, now.Month, now.Day, hour, min, 0); var endTime1 = startTime1.AddMinutes(openLastMin); if (endTime1 >= now) { startTime = startTime1; break; } } } if (startTime == default(DateTime)) { var value = values[0]; var hour = value / 100; var min = value % 100; startTime = new DateTime(now.Year, now.Month, now.Day, hour, min, 0).AddDays(1); cell.State = (int)ActivityCellState.CanNotAttend; } cell.StartTime = startTime; if (startTime <= now) { if (cell.State == (int)ActivityCellState.Start) { cell.IsShowNotice = startTime <= now; isShowTimeLimitNotice = true; } startTime = startTime.AddMinutes(openLastMin); nearestActivityTime = nearestActivityTime < startTime ? nearestActivityTime : startTime; } else { if (cell.State == (int)ActivityCellState.Start) { cell.State = (int)ActivityCellState.WillStart; } cell.Reason = string.Format(GameUtils.GetDictionaryText(100000612), startTime.ToString("HH:mm")); nearestActivityTime = nearestActivityTime < startTime ? nearestActivityTime : startTime; } } switch (cell.State) { case 0: case 2: cell.BtnId = 1; break; case 1: cell.BtnId = 2; break; case 3: cell.BtnId = 3; break; } } { SetNextRefreshCellTime(nearestActivityTime); } cells.Sort((l, r) => { if (l.State < r.State) { return(-1); } if (l.State > r.State) { return(1); } if (l.StartTime < r.StartTime) { return(-1); } if (l.StartTime > r.StartTime) { return(1); } if (l.SortPriority < r.SortPriority) { return(-1); } if (l.SortPriority > r.SortPriority) { return(1); } return(0); }); if (TabIdx == tabIdx) { DataModel.Cells = new ObservableCollection <PlayFrameCellData>(cells); if (cells.Count == 0) { DataModel.EmptyTipDic = tabIdx + 100000900; } else { DataModel.EmptyTipDic = -1; } } DataModel.IsShowTimeLimitNotice = isShowTimeLimitNotice; if (isInit) { var rewards = DataModel.Rewards; var reward = rewards.Cast <DailyActivityCell>().FirstOrDefault(r => r.IsShowNotice); playerData.NoticeData.DailyActivityFlag = DataModel.IsShowTimeLimitNotice || DataModel.IsShowDailyNotice || (reward != null); } }
private void RefreshCells(int tabIdx, bool isInit = false) { if (tabIdx == (int)PlayFrameTab.TimedActivity) { RefreshTimeLimitedActivity(); return; } List <DailyActivityRecord> records; if (!DailyActs.TryGetValue(tabIdx, out records)) { return; } var cells = new List <PlayFrameCellData>(); foreach (var record in records) { var args = new CreateCellDataArgs(); args.nowCount = 0; args.maxCount = 0; args.state = ActivityCellState.Start; args.textId = 100000613; //参加 var cell = CreateCellData(record, args); cells.Add(cell); if (tabIdx == (int)PlayFrameTab.AboutToOpen) { cell.State = (int)ActivityCellState.WillStart; cell.Reason = record.Desc; } if (cell.BtnId == -1) { switch (cell.State) { case 0: case 2: cell.BtnId = 1; break; case 1: cell.BtnId = 2; break; case 3: cell.BtnId = 3; break; } } } cells.Sort((l, r) => { if (l.State < r.State) { return(-1); } if (l.State > r.State) { return(1); } if (l.SortPriority < r.SortPriority) { return(-1); } if (l.SortPriority > r.SortPriority) { return(1); } return(0); }); DataModel.Cells = new ObservableCollection <PlayFrameCellData>(cells); if (cells.Count == 0) { DataModel.EmptyTipDic = tabIdx + 100000900; } else { DataModel.EmptyTipDic = -1; } if (tabIdx == (int)PlayFrameTab.DailyActivity) { var count = cells.Count(c => c.State == (int)ActivityCellState.Start); DataModel.IsShowDailyNotice = count > 0; if (isInit) { var rewards = DataModel.Rewards; var reward = rewards.Cast <DailyActivityCell>().FirstOrDefault(r => r.IsShowNotice); PlayerDataManager.Instance.NoticeData.DailyActivityFlag = DataModel.IsShowTimeLimitNotice || DataModel.IsShowDailyNotice || reward != null; } } }