コード例 #1
0
ファイル: EventSchedule.cs プロジェクト: mliuzailin/GitGame
    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;
    }
コード例 #2
0
ファイル: EventSchedule.cs プロジェクト: mliuzailin/GitGame
    /// <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);
    }
コード例 #3
0
ファイル: EventSchedule.cs プロジェクト: mliuzailin/GitGame
    /// <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;
        }
    }
コード例 #4
0
ファイル: EventSchedule.cs プロジェクト: mliuzailin/GitGame
    /// <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);
    }