public void hide()
    {
        clearSlots();

        selectSigongData = null;

        gameObject.SetActive(false);

        saveLocalData();
    }
 IEnumerator updateCurrentDungeonState(P_Sigong data)
 {
     while (data != null && selectSigongData != null && selectSigongData.id == data.id)
     {
         if (checkCanEnterDungeon(data))
         {
             yield return(Util.ws1);
         }
         else
         {
             yield break;
         }
     }
 }
    bool checkCanEnterDungeon(P_Sigong data)
    {
        TimeSpan ts = (DateTime.Now - GameDataManager.instance.sigongTimer[data.id]);

        int leftTime = 0;

        bool canEnter = true;

        bool nowOpen = true;

        if (data.enterWaitingTime > 0)
        {
            leftTime = data.enterWaitingTime - (int)ts.TotalSeconds;

            if (leftTime >= 0)            // 입장 시간이 남았으면...
            {
                canEnter = false;
            }
        }
        else if (data.enterCoolTime > 0)
        {
            leftTime = data.enterCoolTime - (int)ts.TotalSeconds;

            if (leftTime >= 0)            // 쿨타임이 남았으면...
            {
                canEnter = false;
            }
        }

        if (data.closingTime > 0)        // 닫힌 던전이면.
        {
            leftTime = data.closingTime - (int)ts.TotalSeconds;

            if (leftTime <= 0)
            {
                canEnter = false;
                nowOpen  = false;
            }
        }

        btnStartRound.isEnabled = canEnter;

        return(nowOpen);
    }
    public void setDungeon(P_Sigong data, int selectIndex = 0)
    {
#if UNITY_EDITOR
        Debug.LogError("setDungeon : " + selectIndex);
#endif

        _selectIndex = selectIndex;

        if (_selectIndex < 0)
        {
            _selectIndex = 0;
        }

        selectSigongData = data;

        GameManager.me.uiManager.popupInstantDungeon.list.listGrid.refreshPanel();

        StartCoroutine(refreshContentView());

        updatePriceForStartDungeon(data);
    }
    void updatePriceForStartDungeon(P_Sigong data, bool checkStatus = true)
    {
        if (string.IsNullOrEmpty(data.priceType))
        {
            goEnterNoPriceType.SetActive(true);
            goEnterPriceType.SetActive(false);
        }
        else
        {
            goEnterNoPriceType.SetActive(false);
            goEnterPriceType.SetActive(true);

            bool enough = false;

            if (data.priceType == WSDefine.ENERGY)
            {
                spRoundStartPriceType.spriteName = WSDefine.ICON_ENERGY;

                if (GameDataManager.instance.energy < data.price)
                {
                    enough = false;
                }
                else
                {
                    enough = true;
                }
            }
            else if (data.priceType == WSDefine.GOLD)
            {
                spRoundStartPriceType.spriteName = WSDefine.ICON_GOLD;

                if (GameDataManager.instance.gold < data.price)
                {
                    enough = false;
                }
                else
                {
                    enough = true;
                }
            }
            else if (data.priceType == WSDefine.RUBY)
            {
                spRoundStartPriceType.spriteName = WSDefine.ICON_RUBY;

                if (GameDataManager.instance.ruby < data.price)
                {
                    enough = false;
                }
                else
                {
                    enough = true;
                }
            }

            if (enough)
            {
                lbRoundStartPrice.text = "[fff1c9]" + data.price + "[-]";
            }
            else
            {
                lbRoundStartPrice.text = "[b82b00]" + data.price + "[-]";
            }
        }

        if (checkStatus == false)
        {
            return;
        }

        if (string.IsNullOrEmpty(data.enterDepId) == false && GameDataManager.instance.sigongList[data.enterDepId].clearCount <= 0)
        {
            btnStartRound.isEnabled = false;
        }
        else
        {
            checkCanEnterDungeon(data);

            StartCoroutine(updateCurrentDungeonState(data));
        }
    }
    public void onCompleteReceivePlaySigong()
    {
        P_Sigong p = GameManager.me.uiManager.popupInstantDungeon.selectSigongData;

        if (p.roundId.StartsWith("PVP"))
        {
            DebugManager.instance.pvpPlayerData  = TestModeData.getTestModePlayerData(selectSigongData.roundId.Substring(4), false, "AI_PVP6");
            DebugManager.instance.pvpPlayerData2 = null;

            UIPlay.pvpleagueGrade = 6;

            UIPlay.pvpImageUrl    = DebugManager.instance.pvpPlayerData.id;
            UIPlay.playerImageUrl = PandoraManager.instance.localUser.image_url;

            GameManager.me.stageManager.setNowRound(GameManager.info.roundData["PVP"], GameType.Mode.Sigong);
        }
        else
        {
            GameManager.me.stageManager.setNowRound(GameManager.info.roundData[GameManager.me.uiManager.popupInstantDungeon.selectSigongData.roundId], GameType.Mode.Sigong);
        }

        GameManager.me.stageManager.sigongData = p;

        hide();

        GameManager.me.uiManager.showLoading();

        GamePlayerData gpd = null;

        if (string.IsNullOrEmpty(p.forcedDeck) == false)
        {
            if (p.forcedDeck == "HERO_SELECT")
            {
                gpd = selectHeroData;
            }
            else
            {
                gpd = TestModeData.getTestModePlayerData(p.forcedDeck, true, DebugManager.instance.ai, p.handicap);
            }
        }

        if (gpd == null)
        {
            if (string.IsNullOrEmpty(p.handicap) == false)
            {
                string heroId = GameDataManager.instance.selectHeroId;

                gpd = new GamePlayerData(heroId);

                P_Hero heroData = GameDataManager.instance.serverHeroData[GameDataManager.instance.selectHeroId];

                string[] u = new string[5];
                string[] s = new string[3];

                if (p.handicap == WSDefine.HANDICAP_TYPE_UNIT || p.handicap == WSDefine.HANDICAP_TYPE_BOTH)
                {
                    u[0] = string.Empty;
                    u[1] = string.Empty;
                    u[2] = string.Empty;
                    u[3] = string.Empty;
                    u[4] = string.Empty;
                }
                else
                {
                    u = GameDataManager.instance.getSelectUnitRunes(null);
                }

                if (p.handicap == WSDefine.HANDICAP_TYPE_SKILL || p.handicap == WSDefine.HANDICAP_TYPE_BOTH)
                {
                    s[0] = string.Empty;
                    s[1] = string.Empty;
                    s[2] = string.Empty;
                }
                else
                {
                    s = GameDataManager.instance.getSelectSkillRunes(null);
                }

                DebugManager.instance.setPlayerData(gpd, true,
                                                    heroData.name,
                                                    heroData.selEqts[HeroParts.HEAD],
                                                    heroData.selEqts[HeroParts.BODY],
                                                    heroData.selEqts[HeroParts.WEAPON],
                                                    heroData.selEqts[HeroParts.VEHICLE],
                                                    u,
                                                    s);
            }
        }

        GameManager.me.startGame(0.5f, gpd);
    }
    public override void setData(object obj)
    {
        if (obj == null)
        {
            return;
        }
        _data = (P_Sigong)obj;

        switch (UIPopupInstantDungeon.type)
        {
        case UIPopupInstantDungeon.Type.Easy:
            spBackground.spriteName = BACKGROUND_EASY;
            break;

        case UIPopupInstantDungeon.Type.Normal:
            spBackground.spriteName = BACKGROUND_NORMAL;
            break;

        case UIPopupInstantDungeon.Type.Hard:
            spBackground.spriteName = BACKGROUND_HARD;
            break;

        case UIPopupInstantDungeon.Type.Event:
            spBackground.spriteName = BACKGROUND_EVENT;
            break;
        }


        if (_setUIText == false)
        {
            _setUIText        = true;
            lbAutoEnable.text = Util.getUIText("CANT_AUTOPLAY");
        }

        lbTitle.text = _data.title;

        if (_data.enterMax == 0)
        {
            lbEnterNum.text  = Util.getUIText("ENTER_NUM") + " -";
            lbEnterNum.alpha = 0.5f;
        }
        else
        {
            lbEnterNum.text  = Util.getUIText("ENTER_NUM") + " " + _data.enterCount + "/" + _data.enterMax;
            lbEnterNum.alpha = 1.0f;
        }


        if (_data.clearMax == 0)
        {
            lbClearNum.text  = Util.getUIText("CLEAR_NUM") + " -";
            lbClearNum.alpha = 0.5f;
        }
        else
        {
            lbClearNum.text  = Util.getUIText("CLEAR_NUM") + " " + _data.clearCount + "/" + _data.clearMax;
            lbClearNum.alpha = 1.0f;
        }


        lbAutoEnable.cachedGameObject.SetActive(_data.autoPlay == WSDefine.NO);

        spAutoEnable.cachedGameObject.SetActive(_data.autoPlay == WSDefine.NO);


        if (UIPopupInstantDungeon.checkNewDic.ContainsKey(_data.id))
        {
            spNew.enabled = false;
        }
        else
        {
            spNew.enabled = true;
            UIPopupInstantDungeon.checkNewDic.Add(_data.id, true);
        }

        refreshPanel();

        if (_data.roundId.StartsWith("PVP"))
        {
            lbGameMode.text       = Util.getUIText("HERO_PVP");
            spGameMode.spriteName = "img_epicmode_boss";
        }
        else
        {
            switch (GameManager.info.roundData[_data.roundId].mode)
            {
            case RoundData.MODE.KILLEMALL:
                lbGameMode.text       = Util.getUIText("KILLEMALL");
                spGameMode.spriteName = "img_epicmode_kill";
                break;

            case RoundData.MODE.SURVIVAL:
                lbGameMode.text       = Util.getUIText("SURVIVAL");
                spGameMode.spriteName = "img_epicmode_survival";
                break;

            case RoundData.MODE.PROTECT:
                lbGameMode.text       = Util.getUIText("PROTECT");
                spGameMode.spriteName = "img_epicmode_protect";
                break;

            case RoundData.MODE.SNIPING:
                lbGameMode.text       = Util.getUIText("SNIPING");
                spGameMode.spriteName = "img_epicmode_boss";
                break;

            case RoundData.MODE.KILLCOUNT:
                lbGameMode.text       = Util.getUIText("KILLCOUNT");
                spGameMode.spriteName = "img_epicmode_killcount";
                break;

            case RoundData.MODE.KILLCOUNT2:
                lbGameMode.text       = Util.getUIText("KILLCOUNT");
                spGameMode.spriteName = "img_epicmode_killcount";
                break;

            case RoundData.MODE.ARRIVE:
                lbGameMode.text       = Util.getUIText("ARRIVE");
                spGameMode.spriteName = "img_epicmode_arrive";
                break;

            case RoundData.MODE.DESTROY:
                lbGameMode.text       = Util.getUIText("DESTROY");
                spGameMode.spriteName = "img_epicmode_destroy";
                break;

            case RoundData.MODE.GETITEM:
                lbGameMode.text       = Util.getUIText("GETITEM");
                spGameMode.spriteName = "img_epicmode_getitem";
                break;
            }
        }

        ++_updateTimeIndex;

        lbLeftTime.text = "";

        if (string.IsNullOrEmpty(_data.enterDepId) == false && GameDataManager.instance.sigongList[_data.enterDepId].clearCount <= 0)
        {
            lbLeftTime.text = "이전 단계 던전을 클리어하시면 입장하실 수 있습니다.";
        }
        else
        {
            checkUpdateTime();
            StartCoroutine(updateTime(_updateTimeIndex));
        }
    }
Ejemplo n.º 8
0
    public void setNowRound(RoundData rd, GameType.Mode gameType = GameType.Mode.Epic, int inputAct = 1, int inputStage = 1, int inputRound = 1)
    {
//		Debug.LogError("**** StageManager setNowRound");

        sigongData = null;

        playAct   = inputAct;
        playStage = inputStage;
        playRound = inputRound;

        DebugManager.instance.useTagMatchMode = (gameType == GameType.Mode.Friendly || gameType == GameType.Mode.Championship);


#if UNITY_EDITOR
        if (DebugManager.instance.useDebug)
        {
            DebugManager.instance.useTagMatchMode = (rd.mode == RoundData.MODE.PVP);
        }
#endif


        isMaxRound = (inputAct == GameDataManager.instance.maxAct && inputStage == GameDataManager.instance.maxStage && inputRound == GameDataManager.instance.maxRound);

        isRepeatGame = (GameDataManager.instance.roundClearStatusCheck(playAct, playStage, playRound));

        isSurrenderGame = false;

        // 라운드 게임 정보를 입력.
        isIntro = (rd.id == "INTRO");

        nowRound         = rd;
        mapStartPosX     = rd.mapStartEndPosX[0];
        mapEndPosX       = rd.mapStartEndPosX[1];
        mapPlayerEndPosX = mapEndPosX - 100;

        if (rd.mode == RoundData.MODE.HELL)
        {
            HellModeManager.instance.setStage(rd);
        }
        else
        {
            HellModeManager.instance.setStage(null);
        }

        isPVPMode = false;

        nowPlayingGameType = gameType;


        switch (rd.mode)
        {
        case RoundData.MODE.PVP:
            clearChecker = checkGameClearPVP;
            failChecker  = checkGameFailPVP;
            isPVPMode    = true;
            break;

        case RoundData.MODE.KILLEMALL:
            clearChecker = checkGameClearKillemAll;
            failChecker  = checkGameFailKillemAll;
            break;

        case RoundData.MODE.SURVIVAL:
            clearChecker = checkGameClearSurvival;
            failChecker  = checkGameFailSurvival;
            break;

        case RoundData.MODE.PROTECT:
            clearChecker = checkGameClearProtect;
            failChecker  = checkGameFailProtect;
            break;

        case RoundData.MODE.SNIPING:
            clearChecker = checkGameClearSniping;
            failChecker  = checkGameFailSniping;
            break;

        case RoundData.MODE.KILLCOUNT:
            clearChecker = checkGameClearKillCount;
            failChecker  = checkGameFailKillCount;
            break;

        case RoundData.MODE.KILLCOUNT2:
            clearChecker = checkGameClearKillCount2;
            failChecker  = checkGameFailKillCount;
            break;

        case RoundData.MODE.ARRIVE:
            clearChecker = checkGameClearArrive;
            failChecker  = checkGameFailArrive;
            _prevDist    = 99999;
            break;

        case RoundData.MODE.DESTROY:
            clearChecker = checkGameClearDestroy;
            failChecker  = checkGameFailDestroy;
            break;

        case RoundData.MODE.GETITEM:
            clearChecker = checkGameClearGetItem;
            failChecker  = checkGameFailGetItem;
            break;

        case RoundData.MODE.B_TEST:
            clearChecker = checkGameClearBtest;
            failChecker  = checkGameFailKillemAll;
            break;

        case RoundData.MODE.HELL:
            clearChecker       = checkGameClearHell;
            failChecker        = checkGameFailHell;
            nowPlayingGameType = GameType.Mode.Hell;
            break;

        default:
            clearChecker = checkGameClear;
            failChecker  = checkGameFail;
            break;
        }


                #if UNITY_EDITOR
        if (DebugManager.instance.useDebug)
        {
            if (UnitSkillCamMaker.instance.useUnitSkillCamMaker)
            {
                clearChecker = GameManager.me.stageManager.dontCheck;
                failChecker  = GameManager.me.stageManager.dontCheck;
                return;
            }
        }
                #endif
    }