Пример #1
0
 public void AddSubQuest(MtQuest quest)
 {
     if (!visibleQuestDic.ContainsKey(quest.IDX))
     {
         visibleQuestDic.Add(quest.IDX, quest);
     }
 }
Пример #2
0
    public void RefreshVisibleQuest()
    {
        List <MtQuest> questList = new List <MtQuest>(visibleQuestDic.Values);

        visibleQuestDic.Clear();

        int     difficulty      = 9999;
        MtQuest easiestSubQuest = null;

        for (int i = 0; i < questList.Count; i++)
        {
            visibleQuestDic.Add(questList[i].IDX, questList[i]);

            if (questList[i].Difficulty < difficulty)
            {
                easiestSubQuest = questList[i];
                difficulty      = questList[i].Difficulty;
            }
        }

        if (easiestSubQuest != null &&
            MtStatic.IsQuestStepConditionOk(AccountInfo.instance.questStep, MtStatic.FirstQuestIDX_Hunt) &&
            !visibleQuestDic.ContainsKey(easiestSubQuest.IDX))
        {
            visibleQuestDic.Add(easiestSubQuest.IDX, easiestSubQuest);
        }
    }
Пример #3
0
    public void AddVisibleFederationQuest(MtQuest quest, bool isPointing = false)
    {
        List <int> visibleFederationQuestIDX = new List <int>();

        foreach (MtQuest entry in visibleQuestDic.Values)
        {
            if (entry.QuestType == MtQuestTypes.UnlimitedGuildQuest)
            {
                visibleFederationQuestIDX.Add(entry.IDX);
            }
        }

        foreach (int entry in visibleFederationQuestIDX)
        {
            RemoveVisibleQuest(entry);
        }

        visibleQuestDic.Add(quest.IDX, quest);
        traceSubQuestIDX = quest.IDX;
        PlayerPrefs.SetInt("TraceSubQuestIDX", quest.IDX);

        if (isPointing)
        {
            pointingReserved.Add(quest.IDX);
        }
        Refresh();
    }
Пример #4
0
    public void RemoveVisibleQuest(MtQuest quest)
    {
        if (visibleQuestDic.ContainsKey(quest.IDX))
        {
            visibleQuestDic.Remove(quest.IDX);
        }

        Refresh();
    }
Пример #5
0
    private IEnumerator CheckRoutin(MtQuest quest, QuestProgressText questProgressText)
    {
        while (UIQuestConversation.IsLoaded() || UIPointingFinger.IsLoaded() || UIWindow.IsLoaded() || Prologue.IsLoaded() || UIBuildResult.IsLoaded() || (!questBoxAnimator.GetCurrentAnimatorStateInfo(0).IsName("Show") && !questBoxAnimator.GetCurrentAnimatorStateInfo(0).IsName("IDLE")))
        {
            yield return(new WaitForSeconds(0.3f));
        }

        //if(quest.IsAccomplished())
        questProgressText.StartPointingOnMission();

        pointingReserved.Remove(quest.IDX);

        yield return(null);
    }
Пример #6
0
    public void AddVisibleQuest(MtQuest quest, bool isPointing = false)
    {
        if (!visibleQuestDic.ContainsKey(quest.IDX))
        {
            visibleQuestDic.Add(quest.IDX, quest);

            if (isPointing)
            {
                pointingReserved.Add(quest.IDX);
            }
        }

        Refresh();
    }
Пример #7
0
    public void AddVisibleSubQuest(MtQuest quest, bool isPointing = false)
    {
        //현재추적중이던 서브퀘스트를 지운다
        if (traceSubQuestIDX >= 0 && visibleQuestDic.ContainsKey(traceSubQuestIDX))
        {
            visibleQuestDic.Remove(traceSubQuestIDX);
            traceSubQuestIDX = -1;
        }

        visibleQuestDic.Add(quest.IDX, quest);
        traceSubQuestIDX = quest.IDX;
        PlayerPrefs.SetInt("TraceSubQuestIDX", quest.IDX);

        if (isPointing)
        {
            pointingReserved.Add(quest.IDX);
        }
        Refresh();
    }
Пример #8
0
    public void Refresh()
    {
        if (UIWindow.IsLoaded())
        {
            UIWindow.AddCloseAction(Refresh);
            return;
        }

        if (LobbyScene.Get().GetBattleStage().IsLoaded())
        {
            LobbyScene.Get().GetBattleStage().AddUnloadAction(Refresh);
            return;
        }

        if (Prologue.IsLoaded())
        {
            UIWindow.AddCloseAction(Refresh);
        }

        DestroyChildren(gridParent);
        RefreshVisibleQuest();

        List <MtQuest> questList = new List <MtQuest>(visibleQuestDic.Values);

        questList.Sort(new QuestIDXComparer());

        bool hasMainQuest = false;

        List <QuestProgressText> progressTextList = new List <QuestProgressText>();

        if (questList.Count > 0)
        {
            foreach (MtQuest quest in questList)
            {
                QuestProgressText questProgressText = QuestProgressText.Create(gridParent, this, quest);

                progressTextList.Add(questProgressText);

                if (pointingReserved.Contains(quest.IDX) && !UITutorial.IsLoaded() && questProgressText.gameObject.activeSelf)
                {
                    if (UIQuestConversation.IsLoaded() || UIPointingFinger.IsLoaded() || UIWindow.IsLoaded() || Prologue.IsLoaded() || UIBuildResult.IsLoaded())
                    {
                        StartCoroutine(CheckRoutin(quest, questProgressText));
                    }
                    else
                    {
                        questProgressText.StartPointingOnMission();
                        pointingReserved.Remove(quest.IDX);
                    }
                }
                else
                {
                    pointingReserved.Remove(quest.IDX);
                }

                foreach (MtQuestMission mission in quest.Missions)
                {
                    if (!mission.IsAccomplished())
                    {
                        MissionProgressText.Create(questProgressText.transform, quest, mission);
                        break;
                    }
                }

                if (quest.QuestType == MtQuestTypes.MainStory)
                {
                    hasMainQuest = true;
                }
            }
        }

        if (!hasMainQuest && !UIQuestConversation.IsLoaded())
        {
            MtQuest quest = MtDataManager.GetQuestDataFromPreRequirementIDX(AccountInfo.instance.questStep);

            if (quest != null)
            {
                QuestProgressText questProgressText = QuestProgressText.Create(gridParent, this, quest, true);
                questProgressText.transform.SetAsFirstSibling();

                questList.Add(quest);
            }
        }

        zoomButton.SetActive(questList.Count > 0);

        if (questList.Count == 0)
        {
            ZoneTerrain.Get().zoneTiles.RefreshQuestMarks();
        }
        else
        {
            foreach (MtQuest quest in questList)
            {
                foreach (MtQuestMission missionInfo in quest.Missions)
                {
                    int x = 0, y = 0;

                    if (missionInfo.ActionType == MtMissionActionTypes.GotoLocationFromCastle)
                    {
                        x = missionInfo.TargetIndex1 + AccountInfo.instance.castlePositionX;
                        y = missionInfo.TargetIndex2 + AccountInfo.instance.castlePositionY;
                    }
                    else if (missionInfo.ActionType == MtMissionActionTypes.GotoLocationFromSherinStation)
                    {
                        x = MtStatic.SherinStationX;
                        y = MtStatic.SherinStationY;

                        MtTileInfo.GetPositionOnMyField(MtStatic.SherinStationX, MtStatic.SherinStationY, out x, out y, AccountInfo.instance.castlePositionX, AccountInfo.instance.castlePositionY);

                        x += missionInfo.TargetIndex1;
                        y += missionInfo.TargetIndex2;
                    }
                    else if (missionInfo.ActionType == MtMissionActionTypes.GotoLocationFromWooboldVillageStation)
                    {
                        x = MtStatic.WooboldVillageStationX;
                        y = MtStatic.WooboldVillageStationY;

                        MtTileInfo.GetPositionOnLavaField(MtStatic.WooboldVillageStationX, MtStatic.WooboldVillageStationY, out x, out y, AccountInfo.instance.castlePositionX, AccountInfo.instance.castlePositionY);

                        x += missionInfo.TargetIndex1;
                        y += missionInfo.TargetIndex2;
                    }
                    else if (missionInfo.ActionType == MtMissionActionTypes.GotoLocationFromOldCastleStation)
                    {
                        x = MtStatic.OldCastleStationX;
                        y = MtStatic.OldCastleStationY;

                        MtTileInfo.GetPositionOnMyField(MtStatic.OldCastleStationX, MtStatic.OldCastleStationY, out x, out y, AccountInfo.instance.castlePositionX, AccountInfo.instance.castlePositionY);

                        x += missionInfo.TargetIndex1;
                        y += missionInfo.TargetIndex2;
                    }
                    else if (missionInfo.ActionType == MtMissionActionTypes.GotoLocationFromLahindelStation)
                    {
                        x = MtStatic.LahindelStationX;
                        y = MtStatic.LahindelStationY;

                        MtTileInfo.GetPositionOnMyField(MtStatic.LahindelStationX, MtStatic.LahindelStationY, out x, out y, AccountInfo.instance.castlePositionX, AccountInfo.instance.castlePositionY);

                        x += missionInfo.TargetIndex1;
                        y += missionInfo.TargetIndex2;
                    }
                    else if (missionInfo.ActionType == MtMissionActionTypes.GotoLocationFromMarenStation)
                    {
                        x = MtStatic.MarenStationX;
                        y = MtStatic.MarenStationY;

                        MtTileInfo.GetPositionOnMyField(MtStatic.MarenStationX, MtStatic.MarenStationY, out x, out y, AccountInfo.instance.castlePositionX, AccountInfo.instance.castlePositionY);

                        x += missionInfo.TargetIndex1;
                        y += missionInfo.TargetIndex2;
                    }
                    else if (missionInfo.ActionType == MtMissionActionTypes.GotoLocationFromDotakCastle)
                    {
                        x = MtStatic.DotakCastleStationX;
                        y = MtStatic.DotakCastleStationY;

                        MtTileInfo.GetPositionOnLavaField(MtStatic.DotakCastleStationX, MtStatic.DotakCastleStationY, out x, out y, AccountInfo.instance.castlePositionX, AccountInfo.instance.castlePositionY);

                        x += missionInfo.TargetIndex1;
                        y += missionInfo.TargetIndex2;
                    }
                    else if (missionInfo.ActionType == MtMissionActionTypes.GotoLocationFromTitansGardenStation)
                    {
                        x = MtStatic.TitansGardenStationX;
                        y = MtStatic.TitansGardenStationY;

                        MtTileInfo.GetPositionOnLavaField(MtStatic.TitansGardenStationX, MtStatic.TitansGardenStationY, out x, out y, AccountInfo.instance.castlePositionX, AccountInfo.instance.castlePositionY);

                        x += missionInfo.TargetIndex1;
                        y += missionInfo.TargetIndex2;
                    }
                    else if (missionInfo.ActionType == MtMissionActionTypes.GotoLocationFromLastStageStation)
                    {
                        x = MtStatic.LastStageStationX;
                        y = MtStatic.LastStageStationY;

                        MtTileInfo.GetPositionOnLavaField(MtStatic.LastStageStationX, MtStatic.LastStageStationY, out x, out y, AccountInfo.instance.castlePositionX, AccountInfo.instance.castlePositionY);

                        x += missionInfo.TargetIndex1;
                        y += missionInfo.TargetIndex2;
                    }

                    if (x != 0 || y != 0)
                    {
                        ZoneTile tile = ZoneTerrain.Get().zoneTiles.GetTileByXY(x, y);
                        if (tile != null)
                        {
                            tile.Refresh3D();
                        }
                    }
                }
            }
        }

        if (questList.Count == 0)
        {
            backPanelImg.enabled = false;
        }
        else
        {
            backPanelImg.enabled = true;
        }

        RefreshHeight();
    }