Ejemplo n.º 1
0
    protected override void Start()
    {
        base.Start();

        episodeQuestSelect.SetPosition(new Vector2(0, -44), new Vector2(0, -251));

//        episodeQuestSelect.BackGroundImage = BGSprite;
        episodeQuestSelect.EpisodeTitle = "エピソード名";
        episodeQuestSelect.AreaTitle    = "エリア名";

        Sprite select1 = ResourceManager.Instance.Load("icon_circle_1");
        Sprite select2 = ResourceManager.Instance.Load("icon_circle_2");

        for (int i = 0; i < AreaCount; i++)
        {
            uint index = (uint)i;
            var  model = new EpisodeDataListItemModel(index);
            model.OnClicked += () =>
            {
            };

            EpisodeDataContext newEpisode = new EpisodeDataContext(model);
            if (i == 0)
            {
                newEpisode.SelectImage = select2;
                newEpisode.IsSelected  = true;
            }
            else
            {
                newEpisode.SelectImage = select1;
                newEpisode.IsSelected  = false;
            }
            newEpisode.m_EpisodeId = index;
            episodeQuestSelect.EpisodeList.Add(newEpisode);
        }

        for (int i = 0; i < QuestCount; i++)
        {
            uint index = (uint)i;
            var  model = new ListItemModel(index);
            model.OnClicked += () =>
            {
            };

            QuestDataContext newQuest = new QuestDataContext(model);
            //cnewQuest.BackGroundTexture = BGSprite.texture;
            newQuest.Title       = "クエスト" + index.ToString();
            newQuest.Index       = index;
            newQuest.Point       = ((uint)(index * 5) + 5).ToString();
            newQuest.SelectImage = select2;
            newQuest.IconLabel   = "BOSS";
            newQuest.m_QuestId   = index;
            episodeQuestSelect.QuestList.Add(newQuest);

            // TODO : 演出を入れるならその場所に移動
            model.Appear();
            model.SkipAppearing();
        }
    }
Ejemplo n.º 2
0
    private void updateEpsodeTime(EpisodeDataContext newEpisode, MasterDataArea area)
    {
        //残り時間計算
        newEpisode.Time = "";
        if (area.event_id != 0)
        {
            uint unTimingEnd = MainMenuUtil.GetEventTimingEnd(area.event_id);

            if (unTimingEnd != 0)
            {
                DateTime endTime  = TimeUtil.GetDateTime(unTimingEnd);
                DateTime nowTime  = TimeManager.Instance.m_TimeNow;
                TimeSpan leftTime = endTime - nowTime;
                newEpisode.Time = GameTextUtil.GetRemainStr(leftTime, GameTextUtil.GetText("general_time_01"));
            }
        }
    }
Ejemplo n.º 3
0
    /// <summary>
    /// クエスト決定
    /// </summary>
    /// <param name="quest_id"></param>
    private void SelectQuest(uint quest_index)
    {
        SoundUtil.PlaySE(SEID.SE_MENU_OK2);

        EpisodeDataContext selectArea  = m_QuestSelect.EpisodeList[m_SelectAreaIndex];
        QuestDataContext   selectQuest = m_QuestSelect.QuestList[(int)quest_index];

        switch (m_QuestSelect.QuestList[(int)quest_index].m_QuestType)
        {
        case QuestDataContext.ExecType.Quest:
            break;

        case QuestDataContext.ExecType.Quest2:
        {
            {
                MainMenuParam.m_QuestStamina = 0;
                MainMenuParam.m_QuestKey     = 0;
                MainMenuParam.m_QuestTicket  = 0;
                switch (selectQuest.master.consume_type)
                {
                case 1:
                    MainMenuParam.m_QuestStamina = selectQuest.m_Point;
                    break;

                case 2:
                    MainMenuParam.m_QuestKey = selectQuest.m_Point;
                    break;

                case 3:
                    MainMenuParam.m_QuestTicket = selectQuest.m_Point;
                    break;
                }

                MainMenuParam.m_QuestAreaAmendList = selectArea.amend.m_AreaMasterDataAmendList;
            }
            if (MainMenuManager.HasInstance)
            {
                MainMenuParam.m_QuestSelectAreaID    = selectArea.master.fix_id;
                MainMenuParam.m_QuestSelectMissionID = selectQuest.master.fix_id;
                MainMenuManager.Instance.AddSwitchRequest(MAINMENU_SEQ.SEQ_QUEST_SELECT_DETAIL, false, false);
            }
        }
        break;

        case QuestDataContext.ExecType.Event:
        {
            //----------------------------------------
            // パラメータリミットチェック
            //----------------------------------------
            //チェック対象:コイン、チケット、フレンドポイント
            PRM_LIMIT_ERROR_TYPE ret = MainMenuUtil.ChkPrmLimit(1, 1, 1, 0, 0);
            //チェック対象:消費アイテム全て
            ret = MainMenuUtil.ChkPrmLimitItem(1, -1, ret);
            //チェック対象:クエストキー全て
            ret = MainMenuUtil.ChkPrmLimitQuestKey(1, -1, ret);

            MainMenuUtil.ShowParamLimitDialog(ret, DialogType.DialogYesNo, (isPositive) =>
                {
                    if (isPositive == true)
                    {
                        //----------------------------------------
                        // ストーリー画面の表示
                        //----------------------------------------
                        StoryView cutin = StoryView.Create();
                        cutin.SetScenario(selectQuest.master.story, selectQuest.master.fix_id);
                        cutin.SetReloadQuestListEvent(() =>
                        {
                            int hasAreaCount   = 0;
                            bool hasSelectArea = false;
                            selectQuest.SetFlag(selectQuest.master.fix_id);
                            updateEpisodeListInfo(ref hasAreaCount, ref hasSelectArea);
                            // 表示しているエリアが期限切れ
                            if (hasSelectArea == false)
                            {
                                openWarningAreaDialog();
                            }
                        });
                        cutin.Show(() =>
                        {
#if BUILD_TYPE_DEBUG
                            Debug.Log("StoryView Completed");
#endif
                        });
                    }
                });
        }
        break;
        }
    }
Ejemplo n.º 4
0
    private void setupQuest()
    {
        m_QuestSelect.isEndShowList = false;
        m_QuestSelect.QuestList.Clear();
        m_questButtons.Clear();

        if (m_SelectAreaIndex >= m_QuestSelect.EpisodeList.Count)
        {
            return;
        }

        EpisodeDataContext episodeData = m_QuestSelect.EpisodeList[m_SelectAreaIndex];

        MasterDataArea areaMaster = episodeData.master;

        if (areaMaster == null)
        {
            return;
        }

        List <MasterDataQuest2> quest2List = MasterFinder <MasterDataQuest2> .Instance.SelectWhere("where area_id = ?", areaMaster.fix_id);

        quest2List.Sort((a, b) => (int)a.fix_id - (int)b.fix_id);
        MasterDataQuest2[] quest2Array = quest2List.ToArray();
        if (quest2Array == null)
        {
            return;
        }

        MainMenuParam.m_QuestStaminaAmend = (float)episodeData.amend.m_QuestSelectAreaAmendStamina / 100.0f;

        //クエストリスト更新
        {
            uint _count         = 0;
            uint _notClearCount = 0;
            bool bSkip          = false;
            for (int i = 0; i < quest2Array.Length; i++)
            {
                uint             _index        = _count;
                MasterDataQuest2 _masterQuest2 = quest2Array[i];

                if (_masterQuest2.active != MasterDataDefineLabel.BoolType.ENABLE)
                {
                    continue;
                }

                if (_masterQuest2.story != 0 && _notClearCount != 0)
                {
                    //未クリアクエスト以降のシナリオはスキップ
                    bSkip = true;
                }
                else if (_masterQuest2.story == 0 &&
                         !ServerDataUtil.ChkRenewBitFlag(ref UserDataAdmin.Instance.m_StructPlayer.flag_renew_quest_clear, quest2Array[i].fix_id))
                {
                    //1つめの未クリアは表示
                    if (_notClearCount != 0)
                    {
                        bSkip = true;
                    }

                    _notClearCount++;
                }

                if (bSkip)
                {
                    continue;
                }

                var model = new ListItemModel(_index);
                model.OnClicked += () =>
                {
                    SelectQuest(_index);
                };
                m_questButtons.Add(model);

                QuestDataContext newQuest = new QuestDataContext(model);
                newQuest.master           = _masterQuest2;
                newQuest.area_category_id = m_MasterAreaCategory.fix_id;
                newQuest.boss             = MasterDataUtil.GetGuerrillaBossParamFromQuestID(_masterQuest2.fix_id);
                newQuest.m_QuestId        = _index + 1;

                if (_masterQuest2.story == 0)
                {
                    newQuest.m_QuestType = QuestDataContext.ExecType.Quest2;
                    newQuest.IconLabel   = GameTextUtil.GetText("questselect_text1");
                    {
                        //詳細情報テキスト差し替え
                        MasterDataQuestAppearance[] questAppearance = MasterFinder <MasterDataQuestAppearance> .Instance.SelectWhere("where area_category_id = ?", MainMenuParam.m_QuestSelectAreaCateID).ToArray();

                        if (questAppearance.IsNullOrEmpty() == false)
                        {
                            // newQuest.IconLabel = GameTextUtil.GetText(questAppearance[0].boss_text_key);
                            // テキストキーではなく直接テキストが入っている
                            newQuest.IconLabel = questAppearance[0].boss_text_key;
                        }
                    }
                    UnitIconImageProvider.Instance.Get(
                        _masterQuest2.boss_chara_id,
                        sprite => { newQuest.IconImage = sprite; });
                }
                else
                {
                    newQuest.m_QuestType = QuestDataContext.ExecType.Event;
                    newQuest.IconLabel   = GameTextUtil.GetText("questselect_text2");
                    newQuest.IconImage   = ResourceManager.Instance.Load("storyicon");
                }

                string titleFormat = GameTextUtil.GetText("questselect_questname1");
                if (newQuest.boss != null)
                {
                    titleFormat = GameTextUtil.GetText("questselect_questname2");
                }

                newQuest.Title       = string.Format(titleFormat, _masterQuest2.quest_name);
                newQuest.Index       = _index;
                newQuest.SelectImage = m_SelectSprite;

                //                newQuest.BackGroundTexture = m_QuestSelect.BackGroundImage.texture;

                newQuest.IsActivePoint = false;
                switch (_masterQuest2.consume_type)
                {
                case 1:    //スタミナ
                    newQuest.IsActivePoint = true;
                    newQuest.PointLabel    = GameTextUtil.GetText("questselect_text3");
                    if (episodeData.amend.m_QuestSelectAreaAmendStamina == 100)
                    {
                        newQuest.m_Point = (uint)_masterQuest2.consume_value;
                        newQuest.Point   = string.Format("{0}", _masterQuest2.consume_value);
                    }
                    else
                    {
                        uint point = (uint)((float)_masterQuest2.consume_value * ((float)episodeData.amend.m_QuestSelectAreaAmendStamina / 100.0f));
                        newQuest.m_Point = point;
                        newQuest.Point   = string.Format(GameTextUtil.GetText("stmina_bahutext"), point);
                    }

                    //スコア倍率アップ
                    newQuest.AmendText = "";
                    if (_masterQuest2.story == 0 &&
                        _masterQuest2.consume_value != 0 &&
                        episodeData.amend.m_FlagAmendScore)
                    {
                        float score_rate = (float)episodeData.amend.m_QuestSelectAreaAmendScore / 100.0f;
                        newQuest.AmendText = string.Format("スコア {0:0.0}倍", score_rate);
                    }
                    break;

                case 2:    //Key
                {
                    newQuest.IsActivePoint = true;
                    newQuest.m_Point       = (uint)_masterQuest2.consume_value;
                    string             strFormat  = GameTextUtil.GetText("questselect_text5");
                    MasterDataQuestKey _keyMaster = MasterDataUtil.GetMasterDataQuestKeyFromAreaCategoryID(m_MasterAreaCategory.fix_id);
                    if (_keyMaster != null)
                    {
                        newQuest.PointLabel = string.Format(strFormat, _keyMaster.key_name);
                    }
                    newQuest.Point = string.Format("{0}", _masterQuest2.consume_value);
                }
                break;

                case 3:    //Ticket
                    newQuest.IsActivePoint = true;
                    newQuest.m_Point       = (uint)_masterQuest2.consume_value;
                    newQuest.PointLabel    = GameTextUtil.GetText("questselect_text4");
                    newQuest.Point         = string.Format("{0}", _masterQuest2.consume_value);
                    break;
                }

                newQuest.SetFlag(quest2Array[i].fix_id);

                m_QuestSelect.QuestList.Add(newQuest);

                _count++;
            }

            //-------------------------------------------------
            // イベントスケジュールがあるが検索
            //-------------------------------------------------
            MasterDataEvent eventMaster = MasterDataUtil.GetMasterDataEventFromID(areaMaster.event_id);
            m_QuestSelect.m_EventMaster = eventMaster;
            if (eventMaster != null &&
                eventMaster.event_schedule_show == MasterDataDefineLabel.BoolType.ENABLE)
            {
                m_QuestSelect.IsViewDetailButton = true;
            }
            else
            {
                m_QuestSelect.IsViewDetailButton = false;
            }
        }


        // View更新
        foreach (var episodeButton in m_episodeButtons)
        {
            episodeButton.HideArrow();
        }

        // インジケーターを表示
        if (LoadingManager.Instance != null)
        {
            LoadingManager.Instance.RequestLoadingStart(LOADING_TYPE.ASSETBUNDLE);
        }
        m_QuestSelect.Show(episodeData.masterDataAreaCategory.fix_id, () =>
        {
            foreach (var questButton in m_questButtons)
            {
                questButton.Appear();
            }

            foreach (var episodeButton in m_episodeButtons)
            {
                if (episodeButton.isSelected)
                {
                    episodeButton.ShowArrow();
                }
                else
                {
                    episodeButton.HideArrow();
                }
            }
            //戻るボタン抑制解除
            SetSuspendReturn(false);

            StartCoroutine(WaitShowQuestList(() =>
            {
                m_QuestSelect.isEndShowList = true;
            }));
        }, () =>
        {
            // インジケーターを閉じる
            if (LoadingManager.Instance != null)
            {
                LoadingManager.Instance.RequestLoadingFinish(LOADING_TYPE.ASSETBUNDLE);
            }
        });
    }
Ejemplo n.º 5
0
    void updateEpisodeFlag(EpisodeDataContext newEpisode, bool hasQuestCleard, bool hasQuestCompleted, MasterDataGuerrillaBoss guerrillaBoss)
    {
        newEpisode.flagImageList.Clear();
        newEpisode.flagTextList.Clear();

        //フラグ関連
        {
            if (hasQuestCompleted)
            {
                newEpisode.flagImageList.Add(ResourceManager.Instance.Load("completed"));
                newEpisode.flagTextList.Add("");
            }
            else if (hasQuestCleard)
            {
                newEpisode.flagImageList.Add(ResourceManager.Instance.Load("clear"));
                newEpisode.flagTextList.Add("");
            }

            if (guerrillaBoss != null)
            {
                newEpisode.flagImageList.Add(ResourceManager.Instance.Load("flag_warn"));
                newEpisode.flagTextList.Add("");
            }

            if (newEpisode.amend != null)
            {
                if (newEpisode.amend.m_FlagAmendCoin)
                {
                    newEpisode.flagImageList.Add(ResourceManager.Instance.Load("flag_coin"));
                    newEpisode.flagTextList.Add(getStringFlagRate(newEpisode.amend.m_QuestSelectAreaAmendCoin));
                }
                if (newEpisode.amend.m_FlagAmendDrop)
                {
                    newEpisode.flagImageList.Add(ResourceManager.Instance.Load("flag_drop"));
                    newEpisode.flagTextList.Add(getStringFlagRate(newEpisode.amend.m_QuestSelectAreaAmendDrop));
                }
                if (newEpisode.amend.m_FlagAmendEXP)
                {
                    newEpisode.flagImageList.Add(ResourceManager.Instance.Load("flag_exp"));
                    newEpisode.flagTextList.Add(getStringFlagRate(newEpisode.amend.m_QuestSelectAreaAmendEXP));
                }
                if (newEpisode.amend.m_FlagAmendTicket)
                {
                    newEpisode.flagImageList.Add(ResourceManager.Instance.Load("flag_ticket"));
                    newEpisode.flagTextList.Add(getStringFlagRate(newEpisode.amend.m_QuestSelectAreaAmendTicket));
                }
                if (newEpisode.amend.m_FlagAmendStamina)
                {
                    newEpisode.flagImageList.Add(ResourceManager.Instance.Load("flag_stm"));
                    newEpisode.flagTextList.Add("");
                }
                if (newEpisode.amend.m_FlagAmendGuerrillaBoss)
                {
                    newEpisode.flagImageList.Add(ResourceManager.Instance.Load("flag_boss"));
                    newEpisode.flagTextList.Add("");
                }
                if (newEpisode.amend.m_FlagAmendLinkPoint)
                {
                    newEpisode.flagImageList.Add(ResourceManager.Instance.Load("flag_link"));
                    newEpisode.flagTextList.Add(getStringFlagRate(newEpisode.amend.m_QuestSelectAreaAmendLinkPoint));
                }
            }
            if (newEpisode.flagImageList.Count != 0)
            {
                newEpisode.IsActiveFlag = true;
                newEpisode.flagCounter  = 0;
                newEpisode.FlagImage    = newEpisode.flagImageList[newEpisode.flagCounter];
                newEpisode.FlagRate     = newEpisode.flagTextList[newEpisode.flagCounter];
            }
            else
            {
                newEpisode.IsActiveFlag = false;
            }
        }
    }
Ejemplo n.º 6
0
    /// <summary>
    /// エリア更新
    /// </summary>
    private void setupArea(MasterDataArea[] areaArray)
    {
        m_QuestSelect.EpisodeList.Clear();
        m_episodeButtons.Clear();
        uint _count = 0;

        for (int i = 0; i < areaArray.Length; i++)
        {
            bool hasArea           = false;
            bool hasQuestCleard    = true;
            bool hasQuestCompleted = true;
            bool hasQuestNew       = false;
            MasterDataGuerrillaBoss guerrillaBoss = null;

            MainMenuUtil.ChkActiveArea(m_MasterAreaCategory, areaArray[i], ref hasArea, ref hasQuestCompleted, ref hasQuestCleard, ref hasQuestNew, ref guerrillaBoss);
            if (!hasArea)
            {
                continue;
            }

            uint index = _count;
            var  model = new EpisodeDataListItemModel(index);
            model.OnClicked += () =>
            {
                SelectArea(index, true);
            };
            model.OnViewInstantidated += () =>
            {
                if (m_episodeButtons.Count > index + 1)
                {
                    return;
                }

                model.Appear();
            };
            model.OnShowedNext += () =>
            {
                if (index == 0)
                {
                    return;
                }

                m_episodeButtons[(int)index - 1].Appear();
            };

            EpisodeDataContext newEpisode = new EpisodeDataContext(model);
            newEpisode.master = areaArray[i];
            newEpisode.masterDataAreaCategory = m_MasterAreaCategory;
            newEpisode.amend       = MainMenuUtil.CreateAreaParamAmend(newEpisode.master);
            newEpisode.m_EpisodeId = (uint)i + 1;
            newEpisode.IconImage   = ResourceManager.Instance.Load("icon_city");
            newEpisode.SelectImage = m_UnSelectSprite;
            newEpisode.IsSelected  = false;
            updateEpisodeFlag(newEpisode, hasQuestCleard, hasQuestCompleted, guerrillaBoss);
            updateEpsodeTime(newEpisode, newEpisode.master);
            m_QuestSelect.EpisodeList.Add(newEpisode);

            m_episodeButtons.Add(model);

            _count++;
        }

        //選択できるエリアがない
        if (m_QuestSelect.EpisodeList.Count == 0)
        {
            openWarningAreaDialog();
            return;
        }

        //指定エリア選択
        if (MainMenuParam.m_JmpQuestSelectAreaID != 0)
        {
            for (int i = 0; i < m_QuestSelect.EpisodeList.Count; i++)
            {
                if (m_QuestSelect.EpisodeList[i].master.fix_id == MainMenuParam.m_JmpQuestSelectAreaID)
                {
                    SelectArea((uint)i);
                    return;
                }
            }
        }

        //指定がないときは一番下のエリア選択
        SelectArea((uint)(m_QuestSelect.EpisodeList.Count - 1));
    }
Ejemplo n.º 7
0
    public void Show(uint areaCategoryFixId, System.Action callback, System.Action finishLoadAction)
    {
        Action action = () =>
        {
            if (finishLoadAction != null)
            {
                finishLoadAction();
            }

            PlayAnimation(AppearAnimationName, () =>
            {
                PlayAnimation(DefaultAnimationName);

                if (callback != null)
                {
                    callback();
                }
            });
        };

        Action itemAction = () =>
        {
            // Cellの背景取得
            // M4Uで接続されるまで時間がかかるので専用処理
            AssetBundlerMultiplier multiplier2 = AssetBundlerMultiplier.Create();
            if (viewMask2 != null)
            {
                GameObject          gobj  = viewMask2.transform.Find("Content").gameObject;
                QuestDataListItem[] items = gobj.GetComponentsInChildren <QuestDataListItem>();
                for (int i = 0; i < items.Length; i++)
                {
                    multiplier2.Add(items[i].CreateBg());
                }

                multiplier2.Load(() =>
                {
                    if (action != null)
                    {
                        action();
                    }
                },
                                 () =>
                {
                    if (action != null)
                    {
                        action();
                    }
                });
            }
            else
            {
                if (action != null)
                {
                    action();
                }
            }
        };

        AssetBundlerMultiplier multiplier = AssetBundlerMultiplier.Create();

        multiplier.Add(assetAutoSetEpisodeBackgroundTexture.Create(areaCategoryFixId));
        if (m_bEpisodeFirst == false)
        {
            for (int i = 0; i < EpisodeList.Count; i++)
            {
                EpisodeDataContext context = EpisodeList[i];
                multiplier.Add(context.CreatetIcon());
            }
            m_bEpisodeFirst = true;
        }

        multiplier.Load(() =>
        {
            if (itemAction != null)
            {
                itemAction();
            }
        },
                        () =>
        {
            if (itemAction != null)
            {
                itemAction();
            }
        });
    }