private void setupChallengeTitle(EventScheduleInfo data) { //開催中のイベントからチェック List <MasterDataChallengeEvent> challengeEvents = MasterDataUtil.GetActiveChallengeEvent(); if (challengeEvents != null && challengeEvents.Count > 0) { MasterDataChallengeEvent challengeEvent = challengeEvents.Where(a => a.event_id == data.m_MasterDataEvent.event_id).FirstOrDefault(); if (challengeEvent != null) { data.m_AreaName = challengeEvent.title; return; } } //ないときは開催前 challengeEvents = MasterFinder <MasterDataChallengeEvent> .Instance.GetAll().Where(a => a.event_id == data.m_MasterDataEvent.event_id).ToList(); if (challengeEvents != null && challengeEvents.Count > 0) { challengeEvents.Sort((a, b) => (int)a.timing_start - (int)b.timing_start); for (int i = 0; i < challengeEvents.Count; i++) { if (data.m_MasterDataEvent.timing_start < challengeEvents[i].timing_start) { data.m_AreaName = challengeEvents[i].title; return; } } } return; }
/// <summary> /// ソート処理:イベントリスト /// </summary> /// <param name="cEventA"></param> /// <param name="cEventB"></param> /// <returns></returns> static public int SortExec(EventScheduleInfo cEventA, EventScheduleInfo cEventB) { //開始日時で比較 if (cEventA.m_MasterDataEvent.timing_start < cEventB.m_MasterDataEvent.timing_start) { return(-1); } if (cEventA.m_MasterDataEvent.timing_start > cEventB.m_MasterDataEvent.timing_start) { return(1); } //終了日時で比較 if (cEventA.m_MasterDataEvent.timing_end < cEventB.m_MasterDataEvent.timing_end) { return(-1); } if (cEventA.m_MasterDataEvent.timing_end > cEventB.m_MasterDataEvent.timing_end) { return(1); } //期間が同じだったらエリアIDで比較 if (cEventA.m_MasterDataEvent.area_id < cEventB.m_MasterDataEvent.area_id) { return(-1); } if (cEventA.m_MasterDataEvent.area_id > cEventB.m_MasterDataEvent.area_id) { return(1); } return(0); }
/// <summary> /// レコードの追加 /// </summary> private void AddRecord(Category category, EventScheduleInfo data) { var contex = new EventRecordListItemContex(); contex.FixId = (int)data.m_MasterDataEvent.fix_id; contex.EventId = (int)data.m_MasterDataEvent.event_id; // アイコンイメージの設定 //クエスト情報 contex.questType = MasterDataDefineLabel.QuestType.NONE; //通常クエスト MasterDataQuest2 lastQuestMaster = MasterFinder <MasterDataQuest2> .Instance.SelectFirstWhere("where area_id = ? AND boss_chara_id > 0 AND story = 0 ORDER BY fix_id DESC" , data.m_MasterDataEvent.area_id); if (lastQuestMaster != null) { contex.questType = MasterDataDefineLabel.QuestType.NORMAL; } else { //成長ボスクエスト lastQuestMaster = MasterFinder <MasterDataChallengeQuest> .Instance.SelectFirstWhere("where area_id = ? AND boss_chara_id > 0 AND story = 0 ORDER BY fix_id DESC" , data.m_MasterDataEvent.area_id); if (lastQuestMaster != null) { contex.questType = MasterDataDefineLabel.QuestType.CHALLENGE; //タイトル差し替え setupChallengeTitle(data); } } if (lastQuestMaster == null) { // ボスが居ない場合の画像 contex.IconImage = ResourceManager.Instance.Load("divine1", ResourceType.Common); #if BUILD_TYPE_DEBUG DialogManager.Open1B_Direct("EventSchedule AddRecord", "renew_quest_masterのarea_idに下記の\nidが含まれていません。\nプランナーさんに画面を見せるか\n画面キャプチャーして報告してください。\n\n" + "area_id: " + data.m_MasterDataEvent.area_id, "common_button7", true, true). SetOkEvent(() => { }); #endif Debug.LogError("[none x.boss_chara_id > 0]: " + data.m_MasterDataEvent.area_id); } else { UnitIconImageProvider.Instance.Get( lastQuestMaster.boss_chara_id, sprite => { contex.IconImage = sprite; }); } // 予約済みアイコンの設定 if (category == Category.Furture) { LocalSaveEventNotification cEventNotification = LocalSaveManager.Instance.CheckFuncNotificationRequest((uint)data.m_MasterDataEvent.fix_id); if (cEventNotification != null) { contex.IsReserveBadge = cEventNotification.m_Push; } } // タイトル(エリア名称)表示 contex.CaptionText01 = data.m_AreaName; // 枠色変更 contex.IconColor = this.IconColor[(int)category]; contex.FrameColor = this.FrameColor[(int)category]; // ボタン挙動 contex.DidSelectItem += OnClickedRecordButton; // レコードの追加先の指定 switch (category) { case Category.Active: // 日付表示 contex.CaptionText02 = data.m_MasterDataEvent.timing_end != 0 ? string.Format(GameTextUtil.GetText("schedule_held_text"), TimingFormat(data.m_MasterDataEvent.timing_end, true)) : ""; Records0.Add(contex); break; case Category.Furture: contex.CaptionText02 = data.m_MasterDataEvent.timing_start != 0 ? string.Format(GameTextUtil.GetText("schedule_plans_text"), TimingFormat(data.m_MasterDataEvent.timing_start)) : ""; Records1.Add(contex); break; default: return; } }
/// <summary> /// 表示するイベント情報を取得する /// </summary> List <EventScheduleInfo> GetEvetntItemList(Category category) { List <EventScheduleInfo> eventItemList = new List <EventScheduleInfo>(); MasterDataArea[] areaMasterArray = MasterFinder <MasterDataArea> .Instance.GetAll(); for (int i = 0; i < areaMasterArray.Length; ++i) { MasterDataArea cAreaMasterData = areaMasterArray[i]; // イベント情報取得 MasterDataEvent cMasterDataEvent = null; if (category == Category.Active) { //開催中ページの場合、有効なイベント情報取得 cMasterDataEvent = MasterDataUtil.GetMasterDataEventFromID(cAreaMasterData.event_id); } else { //開催予定ページの場合、開始日が未来日のイベント情報取得 cMasterDataEvent = MasterDataUtil.GetMasterDataFurtureEventFromID(cAreaMasterData.event_id); } //-------------------------------- //表示対象かをチェック //-------------------------------- if (cMasterDataEvent == null) { continue; } uint unFixID = 0; uint unTimingStart = 0; uint unTimingEnd = 0; MasterDataDefineLabel.BoolType unScheduleShow = MasterDataDefineLabel.BoolType.NONE; //-------------------------------- // 期間指定タイプによる分岐 // @add Developer 2016/07/29 v360 //-------------------------------- switch (cMasterDataEvent.period_type) { // 指定(従来通り) default: case MasterDataDefineLabel.PeriodType.DESIGNATION: unFixID = cMasterDataEvent.fix_id; unTimingStart = cMasterDataEvent.timing_start; unTimingEnd = cMasterDataEvent.timing_end; unScheduleShow = cMasterDataEvent.event_schedule_show; break; // サイクル case MasterDataDefineLabel.PeriodType.CYCLE: if (TimeEventManager.Instance == null) { continue; } // エリアの表示期間のカウントダウンを算出 CycleParam cCycleParam; if (category == Category.Active) { cCycleParam = TimeEventManager.Instance.GetEventCycleParam(cMasterDataEvent.event_id); } else { cCycleParam = TimeEventManager.Instance.GetEventCycleFurtureParam(cMasterDataEvent.event_id); } if (cCycleParam == null) { continue; } unFixID = cCycleParam.fixID; unTimingStart = cCycleParam.timingStart; unTimingEnd = cCycleParam.timingEnd; unScheduleShow = cCycleParam.schedule; break; } if (unScheduleShow != MasterDataDefineLabel.BoolType.ENABLE) { continue; } // 開催中ページの場合 if (category == Category.Active) { //-------------------------------- // イベント期間判定 //-------------------------------- bool bCheckWithinTime = TimeManager.Instance.CheckWithinTime(unTimingStart, unTimingEnd); if (bCheckWithinTime == false) { continue; } } // 開催予定ページの場合開始時間が現在日の次の日までを表示する else if (category == Category.Furture) { // 時間を考慮しない開始日を取得 int nYear = TimeUtil.GetDateTimeToYear(unTimingStart); int nMonth = TimeUtil.GetDateTimeToMonth(unTimingStart); int nDay = TimeUtil.GetDateTimeToDay(unTimingStart); DateTime cTimeStartDay = new DateTime(nYear, nMonth, nDay, 0, 0, 0); // 時間を考慮しない現在日を取得 DateTime cTmpTimeNow = TimeManager.Instance.m_TimeNow; DateTime cTimeNowDay = new DateTime(cTmpTimeNow.Year, cTmpTimeNow.Month, cTmpTimeNow.Day, 0, 0, 0); // 現在日から開催日までのTimeSpanを取得 TimeSpan timeSpan = cTimeStartDay - cTimeNowDay; // 開催日まで一日よりある場合は登録しない if (timeSpan.Days > 1) { continue; } } EventScheduleInfo cEventScheduleInfo = new EventScheduleInfo(); //-------------------------------- // マスターの情報をそのまま使うと、 // サイクルなどの処理で困るため、一部改変してスケジュールのマスタとする //-------------------------------- cEventScheduleInfo.m_MasterDataEvent = new MasterDataEvent(); cEventScheduleInfo.m_MasterDataEvent.fix_id = unFixID; cEventScheduleInfo.m_MasterDataEvent.active = cMasterDataEvent.active; cEventScheduleInfo.m_MasterDataEvent.period_type = cMasterDataEvent.period_type; cEventScheduleInfo.m_MasterDataEvent.cycle_date_type = cMasterDataEvent.cycle_date_type; cEventScheduleInfo.m_MasterDataEvent.cycle_timing_start = cMasterDataEvent.cycle_timing_start; cEventScheduleInfo.m_MasterDataEvent.cycle_active_hour = cMasterDataEvent.cycle_active_hour; cEventScheduleInfo.m_MasterDataEvent.timing_start = unTimingStart; cEventScheduleInfo.m_MasterDataEvent.timing_end = unTimingEnd; cEventScheduleInfo.m_MasterDataEvent.user_group = cMasterDataEvent.user_group; cEventScheduleInfo.m_MasterDataEvent.event_id = cMasterDataEvent.event_id; cEventScheduleInfo.m_MasterDataEvent.event_schedule_show = unScheduleShow; cEventScheduleInfo.m_MasterDataEvent.area_id = (int)cAreaMasterData.fix_id; cEventScheduleInfo.m_AreaName = cAreaMasterData.area_name; cEventScheduleInfo.m_AreaUrl = cAreaMasterData.area_url; //リストに追加 eventItemList.Add(cEventScheduleInfo); } return(eventItemList); }