Exemple #1
0
    static SpawnController getSpawnController()
    {
        GameObject obj = GameObject.Find("SpawnController");

        if (G_GameInfo.GameMode == GAME_MODE.SINGLE)
        {
            //SingleGameInfo stageinfo = (SingleGameInfo)G_GameInfo.GameInfo;
            DungeonTable.StageInfo stage = _LowDataMgr.instance.GetStageInfo(SingleGameState.lastSelectStageId);
            if (stage.type == 2)
            {
                obj = GameObject.Find("SpawnController_Hard");
            }
        }

        SpawnController[] spawnCtlrs = obj.GetComponentsInChildren <SpawnController> ();

        //SpawnController[] spawnCtlrs = GameObject.FindObjectsOfType<SpawnController>();

        SpawnController _spawnCtlr;

        if (null == spawnCtlrs || 0 == spawnCtlrs.Length)
        {
            _spawnCtlr = ResourceMgr.InstAndGetComponent <SpawnController>("MapComponent/SpawnController");
        }
        else
        {
            _spawnCtlr = spawnCtlrs[0];
        }

        return(_spawnCtlr);
    }
Exemple #2
0
    protected override IEnumerator GameStartReady()
    {
        while (true)
        {
#if UNITY_EDITOR
            if (GameObject.Find("SpawnTestManager"))
            {
                SingleGameState.IsMapLoad = true;
            }
#endif
            if (SingleGameState.IsMapLoad)
            {
                break;
            }

            yield return(null);
        }

        SceneManager.instance.ShowLoadingTipPanel(false);

        float delay = 1f + Time.time;
        while (true)
        {
            if (delay < Time.time)
            {
                break;
            }

            yield return(null);
        }

        //SearchPathEffect();

        //싱글게임 진입 플래그 만족이 아닐경우
        Quest.QuestInfo info = QuestManager.instance.CheckSubQuest(QuestSubType.SINGLEGAMEPLAY, StageId);
        if (info == null)
        {
            IsQuestClear = false;
            GameStart();
        }
        else if (0 < info.QuestTalkSceneID)
        {
            IsQuestClear = true;

            UIMgr.OpenMissionPanel(info.ID);
            HudPanel.Hide();//꺼놓는다.
        }

        DungeonTable.StageInfo stage = _LowDataMgr.instance.GetStageInfo(StageId);
        if (stage != null)
        {
            TimeLimit = stage.LimitTime;
        }
        else
        {
            Debug.LogError(" stage info is null!");
        }
    }
    public void SetStageInfoPopup(uint stageId)
    {
        DungeonTable.StageInfo info = _LowDataMgr.instance.GetStageInfo(stageId);
        IsLevelHard = info.type == 2 ? true : false;
        int chapterNum = info.ChapId;

        List <DataChapter> list = null;

        if (!IsLevelHard)
        {
            list = ChapterList;
        }
        else
        {
            list = HardChapterList;
        }

        if (list.Count <= chapterNum - 1)
        {
            chapterNum = list.Count;
        }

        stageId = (stageId % 100) - 1;
        if (CurChapterNum != chapterNum)
        {
            SetChapter(chapterNum, IsLevelHard);
        }

        if (0 <= stageId && !SingleGameState.IsChapterClear)
        {
            List <DataStage> stageList = CurChapter.stageList;
            if (stageList[(int)stageId].State == -1)
            {
                return;
            }

            Btns[(uint)BUTTON_TYPE.PREV].gameObject.SetActive(false);
            Btns[(uint)BUTTON_TYPE.NEXT].gameObject.SetActive(false);
            StagePopup.SetStagePopup(stageList[(int)stageId], true);
        }
    }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.C))
        {
            float            delayTime = 0;
            List <UITweener> tweenList = UIHelper.FindComponents <UITweener>(ChapterClear);
            for (int i = 0; i < tweenList.Count; i++)
            {
                tweenList[i].ResetToBeginning();
                tweenList[i].PlayForward();

                if (delayTime < tweenList[i].delay + tweenList[i].duration)
                {
                    delayTime = tweenList[i].delay + tweenList[i].duration;
                }
            }


            DungeonTable.StageInfo lowData = _LowDataMgr.instance.GetStageInfo(110);
            string title = string.Format("{0} {1}", _LowDataMgr.instance.GetStringStageData(lowData.ChapName), _LowDataMgr.instance.GetStringStageData(lowData.ChapName + 10));
            ChapterClear.FindChild("Set_main_title/Txt_Title").GetComponent <UILabel>().text = title;

            //두줄로 나눠서 표기
            string   info   = _LowDataMgr.instance.GetStringStageData(lowData.ChapName + 20);
            string[] result = info.Split(new char[] { ' ' });

            ChapterClear.FindChild("Txt_Info_1").GetComponent <UILabel>().text = result[0];
            ChapterClear.FindChild("Txt_Info_2").GetComponent <UILabel>().text = result[1];
            ChapterClear.gameObject.SetActive(true);


            ChapterClear.gameObject.SetActive(true);
            TempCoroutine.instance.FrameDelay(delayTime, () => {
                ChapterClear.gameObject.SetActive(false);
            });
        }
    }
        public short State;//-1은 가지 못하는 지역, 0은 플레이 가능지역, 1은 클리어 지역

        public bool InitStageData(uint tableID, byte[] clearInfo, short state, int dailyClearCount)
        {
            ClearInfo       = clearInfo;
            _StageLowData   = _LowDataMgr.instance.GetStageInfo(tableID);
            State           = state;
            DailyClearCount = dailyClearCount;

            if (_StageLowData == null)//없으면 문제인데..
            {
                return(false);
            }


            QuestList.Add(new NetData.StageClearData((ClearQuestType)_StageLowData.ClearType1, _StageLowData.ClearValue1));
            QuestList.Add(new NetData.StageClearData((ClearQuestType)_StageLowData.ClearType2, _StageLowData.ClearValue2));
            QuestList.Add(new NetData.StageClearData((ClearQuestType)_StageLowData.ClearType3, _StageLowData.ClearValue3));

            int monsterCount = _StageLowData.regenMonster.Count;

            AppearMonster = new string[monsterCount];

            for (int i = 0; i < monsterCount; i++)
            {
                uint        m_id     = uint.Parse(_StageLowData.regenMonster[i]);
                Mob.MobInfo mLowData = _LowDataMgr.instance.GetMonsterInfo(m_id);
                if (mLowData == null)
                {
                    Debug.Log("MobTable id error " + m_id);
                    continue;
                }

                AppearMonster[i] = mLowData.PortraitId;
            }

            //아이템은 나의 클래스에 맞춰서 표시해준다.
            //int myClass = UIHelper.GetClassType(NetData.instance.GetUserInfo().GetCharIdx() );

            int addCount = _StageLowData.type == 2 ? 2 : 1;

            DropItemId = new uint[_StageLowData.rewardItemId.Count + addCount];
            // 최초
            GatchaReward.FixedRewardInfo firstInfo = _LowDataMgr.instance.GetFixedRewardItem(_StageLowData.FirstReward);
            if (firstInfo != null)
            {
                DropItemId[0] = firstInfo.ItemId == 0 ? firstInfo.Type :  firstInfo.ItemId;
            }

            if (_StageLowData.type == 2)//어려움만.
            {
                GatchaReward.FixedRewardInfo basicInfo = _LowDataMgr.instance.GetFixedRewardItem(_StageLowData.FixedReward);
                if (basicInfo != null)
                {
                    DropItemId[1] = basicInfo.ItemId == 0? basicInfo.Type : basicInfo.ItemId;
                }
            }

            for (int i = addCount; i < DropItemId.Length; i++)
            {
                uint i_id = uint.Parse(_StageLowData.rewardItemId[i - addCount]);  //ui유아이표시
                DropItemId[i] = i_id;
            }

            return(true);
        }
    public override void LateInit()
    {
        base.LateInit();

        UI_OPEN_TYPE openType = SceneManager.instance.UiOpenType;

        SceneManager.instance.UiOpenType = UI_OPEN_TYPE.NONE;
        int openStageArr = -1, openChapterArr = 0;

        uint openStageId = (uint)parameters[1];

        if (openStageId <= 0)
        {
            openStageId = SceneManager.instance.GetState <TownState>().MyHero.moveTargetStage;
        }
        reOpenPanel = (UIBasePanel)parameters[0];

        SceneManager.instance.GetState <TownState>().MyHero.ResetMoveTarget();
        if (openStageId != uint.MaxValue)//미션
        {
            DungeonTable.StageInfo info = _LowDataMgr.instance.GetStageInfo(openStageId);
            IsLevelHard = info.type == 2 ? true : false;
            int chapterNum = info.ChapId;

            List <DataChapter> list = null;
            if (!IsLevelHard)
            {
                list = ChapterList;
            }
            else
            {
                list = HardChapterList;
            }

            if (list.Count <= chapterNum - 1)
            {
                openChapterArr = list.Count;
            }
            else
            {
                openChapterArr = chapterNum;
                openStageArr   = (int)(openStageId % 100);
            }
        }
        else if (openType == UI_OPEN_TYPE.NEXT_ZONE)          // 다음스테이지 버튼일시
        {
            uint stageId = SingleGameState.lastSelectStageId; //405 이렇게
            DungeonTable.StageInfo info = _LowDataMgr.instance.GetStageInfo(stageId);
            IsLevelHard = info.type == 2 ? true : false;
            int chapterNum = info.ChapId;
            int nextId     = (int)(stageId % 100); // 스테이지 넘버 (챕터x)

            if (nextId < (IsLevelHard ? 3 : 10))   //다음 스테이지 로가면된다
            {
                openChapterArr = chapterNum;
                openStageArr   = nextId + 1;
            }
            else  // 마지막 스테이지가 X-10 인경우는 다음챕터로 이동해야함
            {
                openStageArr   = 1;
                openChapterArr = chapterNum + 1;

                if (IsLevelHard)//마지막 챕터인지 검사
                {
                    if (ChapterList[openChapterArr - 1].stageList[9].State != 1)
                    {
                        // 하드모드일경우 일반스테이지 클리어 했는지도 검사필요함
                        // 하드모드 1-3에서 2-1 을 가기위해서는 일반스테이지 2-10까지 클리어해야함.
                        IsLevelHard = false;
                    }
                    else if (HardChapterList.Count <= openChapterArr)
                    {
                        openChapterArr = HardChapterList.Count;
                    }
                }
                else
                {
                    if (ChapterList.Count <= openChapterArr)
                    {
                        openChapterArr = ChapterList.Count;
                    }
                }
            }
        }
        else// if(0 < parameters.Length )   //용 석상 or TownPanel에서 아이콘 터치
        {//클리어나 패배후 다시 스테이지를 눌렀을시도 고려해서 난이도를 다시 체크해줌
            uint stageId = (uint)parameters[1];
            if (0 == stageId || stageId.Equals(uint.MaxValue))
            {
                stageId = SingleGameState.lastSelectStageId;
            }
            else
            {
                openStageArr = (int)(stageId % 100);
            }

            DungeonTable.StageInfo info = _LowDataMgr.instance.GetStageInfo(stageId);
            IsLevelHard    = info.type == 2 ? true : false;
            openChapterArr = info.ChapId;

            if (SceneManager.instance.CurTutorial == TutorialType.STAGE)
            {
                openStageArr = (int)(stageId % 100);
            }
            else if (SceneManager.instance.CurTutorial == TutorialType.CHAPTER_HARD)
            {
                IsLevelHard    = false;
                openChapterArr = 1;
            }
        }

        SetChapter(openChapterArr, IsLevelHard);
        if (0 <= openStageArr && !SingleGameState.IsChapterClear)
        {
            List <DataStage> stageList = CurChapter.stageList;
            OnClickStage(stageList[openStageArr - 1]);
        }
        else
        {
            OnSubTutorial();
        }

        SceneManager.instance.GetState <TownState>().MyHero.ResetMoveTarget();
        SceneManager.instance.sw.Stop();
        SceneManager.instance.showStopWatchTimer("ChapterPanel, LateInit() finish");

        if (SingleGameState.IsChapterClear)
        {
            SingleGameState.IsChapterClear = false;

            float            delayTime = 0;
            List <UITweener> tweenList = UIHelper.FindComponents <UITweener>(ChapterClear);
            for (int i = 0; i < tweenList.Count; i++)
            {
                tweenList[i].ResetToBeginning();
                tweenList[i].PlayForward();

                if (delayTime < tweenList[i].delay + tweenList[i].duration)
                {
                    delayTime = tweenList[i].delay + tweenList[i].duration;
                }
            }

            DungeonTable.StageInfo lowData = _LowDataMgr.instance.GetStageInfo(SingleGameState.lastSelectStageId);
            string title = string.Format("{0} {1}", _LowDataMgr.instance.GetStringStageData(lowData.ChapName), _LowDataMgr.instance.GetStringStageData(lowData.ChapName + 10));
            ChapterClear.FindChild("Set_main_title/Txt_Title").GetComponent <UILabel>().text = title;

            //두줄로 나눠서 표기
            string   info   = _LowDataMgr.instance.GetStringStageData(lowData.ChapName + 20);
            string[] result = info.Split(new char[] { ' ' });

            ChapterClear.FindChild("Txt_Info_1").GetComponent <UILabel>().text = result[0];
            ChapterClear.FindChild("Txt_Info_2").GetComponent <UILabel>().text = result[1];
            ChapterClear.gameObject.SetActive(true);
            TempCoroutine.instance.FrameDelay(delayTime, () =>
            {
                if (ChapterClear != null)//혹시 모를 예외처리
                {
                    ChapterClear.gameObject.SetActive(false);
                }
            });
        }
        else
        {
            ChapterClear.gameObject.SetActive(false);
        }
    }
Exemple #7
0
    void InitSpawnCtlr()
    {
        DungeonTable.StageInfo stage        = _LowDataMgr.instance.GetStageInfo(StageId);
        GameObject             spawnCtrlObj = null;

        if (stage.type == 1)           // normal
        {
            spawnCtrlObj = GameObject.Find("SpawnController");
            if (GameObject.Find("SpawnController_Hard"))
            {
                GameObject.Find("SpawnController_Hard").SetActive(false);
            }
        }
        else if (stage.type == 2)
        {
            GameObject.Find("SpawnController").SetActive(false);
            spawnCtrlObj = GameObject.Find("SpawnController_Hard");
        }

        // 난이도 선택 및 NPCSpawn 시작!
        //SpawnController[] spawnCtlrs = GameObject.FindObjectsOfType<SpawnController>();
        SpawnController[] spawnCtlrs = spawnCtrlObj.GetComponentsInChildren <SpawnController> ();

        if (null == spawnCtlrs || 0 == spawnCtlrs.Length)
        {
            spawnCtlr = ResourceMgr.InstAndGetComponent <SpawnController>("MapComponent/SpawnController");
        }
        else
        {
            spawnCtlr = spawnCtlrs[0];
        }

        spawnCtlr.Init(G_GameInfo.PlayerController.Leader.gameObject);

        //<==========================================
        //          스폰될 NPC들 설정해주기
        //<==========================================
        //Dictionary<uint, StageLowData.NpcPostingInfo> placementDic = LowDataMgr.GetSingleStagePlacementDatas(StageInfo.stageId);
        spawnGroup = spawnCtlr.GetList <SpawnGroup>();

        int           totalMonster = 0, propCount = 0;
        List <string> SpawnEffects = new List <string>();

        for (int i = 0; i < spawnGroup.Count; i++)
        {
            SpawnGroup group = spawnGroup[i];
            totalMonster += group.spawnerList.Count;
            for (int spawnerNo = 0; spawnerNo < group.spawnerList.Count; spawnerNo++)
            {
                // NPCSpawner만 골라서 처리해주도록 한다.
                //NPCSpawner npcSpawner = group.spawnerList[spawnerNo] as NPCSpawner;
                if (group.spawnerList[spawnerNo] is Prop)
                {
                    ++propCount;
                }
                else if (group.spawnerList[spawnerNo] is NPCSpawner)
                {
                    group.spawnerList[spawnerNo].Owner = group;
                }

                // NPCSpawner에서 SpawnNo를 얻어와서.
                //if (!placementDic.ContainsKey((uint)npcSpawner.UnitNum))
                //{
                //    if (GameDefine.TestMode)
                //        Debug.Log("UnitLowData.DataInfo Index Error UnitNum : " + npcSpawner.UnitNum + " , StageId : " + StageInfo.stageId);

                //    // 없는 데이터는 스폰안되도록하기.
                //    npcSpawner.unitId = 0;
                //    continue;
                //}

                //// 스테이지 정보 데이터 기반으로 스폰될 유닛 셋팅해주기.
                //npcSpawner.unitId = (int)placementDic[(uint)npcSpawner.UnitNum].unitId;
                //npcSpawner.GroupNo = (int)placementDic[(uint)npcSpawner.UnitNum].groupNo;
                //npcSpawner.SetEventData(placementDic[(uint)npcSpawner.UnitNum]);

                ////< 출현할때 이펙트 리스트를 저장
                //if (placementDic[(uint)npcSpawner.UnitNum].intro == 1 && !SpawnEffects.Contains(placementDic[(uint)npcSpawner.UnitNum].introEffect))
                //    SpawnEffects.Add(placementDic[(uint)npcSpawner.UnitNum].introEffect);
            }

            // 스폰불가능한 Spawner는 지우도록 한다.
            group.spawnerList.RemoveAll((spawner) =>
            {
                bool removed = false;
                if (spawner is NPCSpawner)
                {
                    removed = (spawner as NPCSpawner).unitId == 0;
                }

                if (removed)
                {
                    DestroyImmediate((spawner as NPCSpawner).gameObject);
                }

                return(removed);
            });
        }

        spawnCtlr.StartController();

        //< 트랩 스폰
        //TrapSpawnController[] TrapspawnCtlrs = GameObject.FindObjectsOfType<TrapSpawnController>();
        //if (TrapspawnCtlrs != null && TrapspawnCtlrs.Length > 0)
        //{
        //    TrapSpawnController TrapspawnCtlr = TrapspawnCtlrs[0];
        //    TrapspawnCtlr.Init();
        //}

        //< 이펙트를 풀에 생성해둔다
        for (int i = 0; i < SpawnEffects.Count; i++)
        {
            FillSpawnPool(effectPool, SpawnEffects[i], 3);
        }

        int dropGold = NetData.instance._RewardData.GetCoin;

        NormalDropGold = Mathf.CeilToInt(dropGold / (totalMonster));
        BossDropGold   = dropGold - (NormalDropGold * (totalMonster));
    }
    /// <summary> 보상아이템 셋팅 </summary>
    void SettingRewardItem()
    {
        if (G_GameInfo.GameMode == GAME_MODE.ARENA)
        {
            RewardAssetTf.parent.gameObject.SetActive(false);
            return;
        }

        RewardAssetTf.parent.gameObject.SetActive(true);
        RewardAssetTf.gameObject.SetActive(false);
        RewardExp.gameObject.SetActive(false);
        RewardGold.gameObject.SetActive(false);

        uint firstRewardId = 0;
        uint fixedRewardId = 0;

        if (G_GameInfo.GameMode == GAME_MODE.SINGLE && isSuccess)
        {
            DungeonTable.StageInfo lowData = _LowDataMgr.instance.GetStageInfo(SingleGameState.lastSelectStageId);

            //최초보상이 있을씨에..
            if (SingleGameState.IsFirstReward)
            {
                GatchaReward.FixedRewardInfo firstInfo = _LowDataMgr.instance.GetFixedRewardItem(lowData.FirstReward);

                GameObject go = Instantiate(ItemSlotPrefab) as GameObject;
                Transform  tf = go.transform;
                tf.parent        = RewardGrid.transform;
                tf.localPosition = Vector3.zero;
                tf.localScale    = Vector3.one;

                InvenItemSlotObject firstSlotObj = go.GetComponent <InvenItemSlotObject>();
                firstSlotObj.SetLowDataItemSlot(firstInfo.ItemId == 0 ? firstInfo.Type :  firstInfo.ItemId, firstInfo.ItemCount);

                FirstRewardSlotLabel.transform.parent        = go.transform;
                FirstRewardSlotLabel.transform.localPosition = new Vector3(0, 42, 0);
                FirstRewardSlotLabel.transform.localScale    = Vector3.one;
                FirstRewardSlotLabel.SetActive(true);

                firstRewardId = firstInfo.ItemId == 0 ? firstInfo.Type : firstInfo.ItemId;
            }

            // 기본보상표시 0이면안준다
            if (lowData.FixedReward != 0)
            {
                GatchaReward.FixedRewardInfo basicInfo = _LowDataMgr.instance.GetFixedRewardItem(lowData.FixedReward);

                GameObject basicGo = Instantiate(ItemSlotPrefab) as GameObject;
                Transform  basicTf = basicGo.transform;
                basicTf.parent        = RewardGrid.transform;
                basicTf.localPosition = Vector3.zero;
                basicTf.localScale    = Vector3.one;

                InvenItemSlotObject basicSlotObj = basicGo.GetComponent <InvenItemSlotObject>();
                basicSlotObj.SetLowDataItemSlot(basicInfo.ItemId == 0 ? basicInfo.Type : basicInfo.ItemId, basicInfo.ItemCount);

                BasicRewardSlotLabel.transform.parent        = basicGo.transform;
                BasicRewardSlotLabel.transform.localPosition = new Vector3(0, 42, 0);
                BasicRewardSlotLabel.transform.localScale    = Vector3.one;
                BasicRewardSlotLabel.SetActive(true);

                fixedRewardId = basicInfo.ItemId == 0 ? basicInfo.Type : basicInfo.ItemId;
            }
        }


        List <NetData.DropItemData> dropItemList = Reward.GetList;

        if (dropItemList != null)
        {
            int count = dropItemList.Count;
            for (int i = 0; i < count; i++)
            {
                NetData.DropItemData dropData = dropItemList[i];

                //위에 표기됬으므로 표기안해줌
                if (dropData.LowDataId == fixedRewardId)
                {
                    continue;
                }

                if (dropData.LowDataId == firstRewardId)
                {
                    continue;
                }

                GameObject go = Instantiate(ItemSlotPrefab) as GameObject;
                Transform  tf = go.transform;
                tf.parent        = RewardGrid.transform;
                tf.localPosition = Vector3.zero;
                tf.localScale    = Vector3.one;

                InvenItemSlotObject slotObj = go.GetComponent <InvenItemSlotObject>();
                slotObj.SetLowDataItemSlot(dropData.LowDataId, dropData.Amount);
            }

            RewardGrid.repositionNow = true;
        }

        if (5 < RewardGrid.transform.childCount)
        {
            RewardGrid.transform.parent.GetComponent <UIScrollView>().enabled = true;
        }
        else
        {
            RewardGrid.transform.parent.GetComponent <UIScrollView>().enabled = false;
        }

        if (G_GameInfo.GameMode == GAME_MODE.SINGLE)//GAME_MODE.SPECIAL)
        {
            return;
        }
        else
        {
            //획득 재화 설정
            bool isGoldDungeon = false, isExpDungeon = false;
            if (G_GameInfo.GameMode == GAME_MODE.SPECIAL_EXP)
            {
                isExpDungeon = true;
            }
            else if (G_GameInfo.GameMode == GAME_MODE.SPECIAL_GOLD)
            {
                isGoldDungeon = true;
            }

            AssetType assetType = AssetType.None;
            if (G_GameInfo.GameMode == GAME_MODE.TOWER)
            {
                assetType = AssetType.Badge;
            }

            if (0 <= Reward.GetCoin && !isExpDungeon)
            {
                RewardGold.gameObject.SetActive(true);
                RewardGold.text = Reward.GetCoin == 0 ? "0" : Reward.GetCoin.ToString(); // ToString("#,##");
            }

            if (0 <= Reward.GetExp && !isGoldDungeon)
            {
                RewardExp.gameObject.SetActive(true);
                RewardExp.text = Reward.GetExp == 0 ? "0" : Reward.GetExp.ToString(); // ToString("#,##");
            }

            if (0 <= Reward.GetAsset && assetType != AssetType.None)
            {
                RewardAssetTf.gameObject.SetActive(true);
                RewardAssetTf.GetComponent <UILabel>().text = Reward.GetAsset == 0 ? "0" : Reward.GetAsset.ToString(); // ToString("#,##");

                UISprite sp = RewardAssetTf.FindChild("icon").GetComponent <UISprite>();
                switch (assetType)
                {
                case AssetType.Badge:
                    sp.spriteName = "badge_A";    //Img_flag2
                    break;
                }
            }
        }
    }
    /// <summary> 비동기 방식의 게임들 결과화면 </summary>
    void ResultDungeon()
    {
        if (G_GameInfo.GameMode == GAME_MODE.SINGLE)
        {
            //현재 최초보상받을수있는지 체크?
            DungeonTable.StageInfo lowData = _LowDataMgr.instance.GetStageInfo(SingleGameState.lastSelectStageId);
            if (lowData != null)
            {
                //if (lowData.type == 2 && isSuccess)
                // {
                if (SingleGameState.IsFirstReward)
                {
                    GatchaReward.FixedRewardInfo firstInfo = _LowDataMgr.instance.GetFixedRewardItem(lowData.FirstReward);

                    //최초보상받을시기?
                    GameObject go = Instantiate(ItemSlotPrefab) as GameObject;
                    Transform  tf = go.transform;
                    tf.parent        = FirstRewardPopup.transform.FindChild("Icon").transform;
                    tf.localPosition = Vector3.zero;
                    tf.localScale    = Vector3.one;

                    UILabel name = FirstRewardPopup.transform.FindChild("Txt_Iconname").GetComponent <UILabel>();

                    InvenItemSlotObject slotObj = go.GetComponent <InvenItemSlotObject>();
                    slotObj.SetLowDataItemSlot(firstInfo.ItemId == 0? firstInfo.Type : firstInfo.ItemId, firstInfo.ItemCount);

                    Item.EquipmentInfo equipInfo = _LowDataMgr.instance.GetLowDataEquipItemInfo(firstInfo.ItemId);
                    if (equipInfo != null) //장비
                    {
                        name.text = _LowDataMgr.instance.GetStringItem(equipInfo.NameId);
                    }
                    else
                    {
                        uint id = 0;
                        //혹시 재화인가....
                        if (firstInfo.ItemId == 0)
                        {
                            switch (firstInfo.Type)
                            {
                            case 1:    //골드
                                id = 599000;
                                break;

                            case 2:    //원보
                                id = 599001;
                                break;

                            case 3:    //공헌
                                id = 599004;
                                break;

                            case 4:    //명예
                                id = 599005;
                                break;

                            case 5:    //휘장
                                id = 599002;
                                break;

                            case 6:    //사자왕
                                id = 599006;
                                break;

                            case 7:    //성망
                                id = 599003;
                                break;

                            case 8:    //체력
                                id = 599104;
                                break;

                            case 9:    //경험치;
                                id = 599105;
                                break;
                            }

                            name.text = _LowDataMgr.instance.GetStringItem(_LowDataMgr.instance.GetUseItem(firstInfo.ItemId == 0 ? id : firstInfo.ItemId).NameId);
                        }
                        else
                        {
                            name.text = _LowDataMgr.instance.GetStringItem(_LowDataMgr.instance.GetUseItem(firstInfo.ItemId).NameId);
                        }
                    }

                    SetRenderQueue renderQ = UIHelper.FindComponent <SetRenderQueue>(FirstRewardPopup.transform.FindChild("Effect"));
                    if (renderQ != null)
                    {
                        renderQ.ResetRenderQ(3031);
                    }

                    FirstRewardPopup.SetActive(true);

                    TempCoroutine.instance.FrameDelay(0.1f, () =>
                    {
                        FirstRewardPopup.transform.GetComponent <TweenScale>().ResetToBeginning();
                        FirstRewardPopup.transform.GetComponent <TweenScale>().PlayForward();
                    });

                    TempCoroutine.instance.FrameDelay(3f, () =>
                    {
                        FirstRewardPopup.SetActive(false);
                    });
                }
            }
            // }

            if (isSuccess && SceneManager.instance.CurTutorial == TutorialType.STAGE)//튜토리얼 중 스테이지 클리어했다면
            {
                SceneManager.instance.CurTutorial = TutorialType.STAGE;
            }
        }

        Reward = NetData.instance._RewardData;
        if (Reward == null)//없으면 안돼겠지만. 뻑은 안나게..
        {
            Reward = new NetData.RewardData();
        }

        uint curExp = 0, maxExp = 0, level = 0;

        if (Reward.GetExp <= 0)//획득 경험치가 있다면 뭔가 데이터가 있다는 것임.
        {
            level = NetData.instance.UserLevel;
            NetData.instance.GetUserInfo().GetCurrentAndMaxExp(ref curExp, ref maxExp);
        }
        else
        {
            curExp = Reward.SaveExp;
            maxExp = Reward.SaveMaxExp;
            level  = Reward.SaveLevel;
        }

        ExpGauge.value = (float)curExp / (float)maxExp;
        Labels[(int)labelT.hLv].text = string.Format(_LowDataMgr.instance.GetStringCommon(453), level);

        SettingRewardItem();

        if (G_GameInfo.GameMode == GAME_MODE.SINGLE)//싱글게임에만 스테이지 퀘스트가 존재.
        {
            StartCoroutine("MissionResult");
        }
        else if (G_GameInfo.GameMode != GAME_MODE.ARENA)
        {
            Result();
        }

        if (isSuccess)
        {
            TitleObj[0].SetActive(true);
            UIHelper.CreateEffectInGame(TitleObj[0].transform.FindChild("bg"), "Fx_UI_exp_result_01");
        }
        else
        {
            TitleObj[1].SetActive(true);
        }
    }
    /// <summary> 조건 체크. </summary>
    bool CheckContentsLink(Item.ContentsListInfo info, bool isClick)
    {
        bool isEnter = false;

        switch (info.ContentsType)
        {
        case 1:    //조합

            break;

        case 11:    //차관
            if (_LowDataMgr.instance.GetEtcTableValue <uint>(EtcID.PvpEnterLv) <= NetData.instance.UserLevel)
            {
                isEnter = true;
            }
            break;

        case 12:    //난투장
            List <DungeonTable.FreefightTableInfo> freeList = _LowDataMgr.instance.GetLowDataFreeFightList();
            for (int i = 0; i < freeList.Count; i++)
            {
                if (NetData.instance.UserLevel < freeList[i].MinenterLv || freeList[i].MaxenterLv < NetData.instance.UserLevel)
                {
                    continue;
                }

                isEnter = true;
                break;
            }

            break;

        case 2:    //모험 일반
        case 3:    //모험 어려움
            uint require = 0;
            NetData.ClearSingleStageData stageData = null;
            if (!NetData.instance.GetUserInfo().ClearSingleStageDic.TryGetValue(info.ContentsIdx, out stageData))
            {
                DungeonTable.StageInfo stageInfo = _LowDataMgr.instance.GetStageInfo(info.ContentsIdx);
                if (stageInfo != null && stageInfo.RequireStageId != null && 0 < stageInfo.RequireStageId.list.Count)
                {
                    List <string> conList = stageInfo.RequireStageId.list;
                    for (int i = 0; i < conList.Count; i++)
                    {
                        uint conIdx = uint.Parse(conList[i]);
                        if (NetData.instance.GetUserInfo().ClearSingleStageDic.TryGetValue(conIdx, out stageData))    //이전 스테이지 클리어해야함.
                        {
                            continue;
                        }

                        require = 1;    //진행 불가능
                        break;
                    }
                }
            }

            if (require <= 0)
            {
                isEnter = true;
            }

            break;

        case 5:    //보스레이드
            DungeonTable.SingleBossRaidInfo bossRaid = _LowDataMgr.instance.GetSingleBossRaidLimitLevel(info.ContentsIdx);
            if (bossRaid.levelLimit <= NetData.instance.UserLevel)
            {
                isEnter = true;
            }
            break;

        case 6:    //멀티 보스레이드
            DungeonTable.MultyBossRaidInfo multyBossRaid = _LowDataMgr.instance.GetLowDataMultyBossInfo(info.ContentsIdx);
            if (multyBossRaid.levelLimit <= NetData.instance.UserLevel)
            {
                isEnter = true;
            }
            break;

        case 10:    //길드
            if (0 < NetData.instance.GetUserInfo()._GuildId)
            {
                isEnter = true;
            }
            break;

        case 4:    //마계의탑
        case 7:    //콜로세움
        case 8:    //골드 던전
        case 9:    //경험치 던전
            byte idx = 0;
            if (info.ContentsType == 4)
            {
                idx = (byte)9;
            }
            else if (info.ContentsType == 7)
            {
                idx = (byte)1;
            }
            else if (info.ContentsType == 8)
            {
                idx = (byte)3;
            }
            else if (info.ContentsType == 9)
            {
                idx = (byte)2;
            }

            DungeonTable.ContentsOpenInfo content = _LowDataMgr.instance.GetFirstContentsOpenInfo(idx);
            if (content.ConditionType1 == 2 && content.ConditionValue1 <= NetData.instance.GetUserInfo()._TotalAttack)
            {
                isEnter = true;
            }
            else if (content.ConditionType1 == 1 && content.ConditionValue1 <= NetData.instance.UserLevel)
            {
                isEnter = true;
            }
            break;
        }

        if (!isEnter)
        {
            if (isClick)
            {
                SceneManager.instance.SetNoticePanel(NoticeType.Message, 0, _LowDataMgr.instance.GetStringCommon(712));
            }
            return(false);
        }

        return(true);
    }