Beispiel #1
0
    private void ShowCardAwardPreview(UserCardVo userCardVo)
    {
        List <CardAwardPreInfo> infos = new List <CardAwardPreInfo>();
        var vo     = userCardVo;
        int cardId = userCardVo.CardId;
        int NpcId  = (int)userCardVo.CardVo.Player;

        var userFavorabilityVo = GlobalData.FavorabilityMainModel.GetUserFavorabilityVo(NpcId);//用户NPC的好感度信息

        Debug.LogError("CardId " + cardId + "  NpcId " + NpcId);

        PlayerPB playerPB = userCardVo.CardVo.Player;

        var cardPd = GlobalData.CardModel.GetCardBase(cardId);

        for (int i = 0; i < cardPd.GainSceneIds.Count; i++)
        {
            int phonesceneId = cardPd.GainSceneIds[i];
            if (phonesceneId == 0)
            {
                continue;
            }
            bool isUnlock = true;

            var userCard = GlobalData.CardModel.GetUserCardById(cardId);
            isUnlock = userCard != null;

            //   Debug.LogError("phonesceneId" + phonesceneId+ "GetSceneName"+ GetSceneName(phonesceneId));

            CardAwardPreInfo info = CreateCardAwardPreInfo(GetSceneName(phonesceneId), isUnlock, GetCardAwardPreType(phonesceneId));

            info.StartTips = "1心解锁.";
//            Debug.LogError(isUnlock+" "+info.content);
            infos.Add(info);
        }



        int sceneId = 0;

        //解锁手机事件
        for (int i = 0; i < vo.MaxStars; i++)
        {
            var targetStarUpPb = GlobalData.CardModel.GetCardStarUpRule(vo.CardId, (StarPB)i);
            if (targetStarUpPb == null)
            {
                //Debug.LogError("no i" + i);
                continue;
            }
            for (int j = 0; j < targetStarUpPb.SceneIds.Count; j++)
            {
                if (targetStarUpPb.SceneIds[j] == 0)
                {
                    continue;
                }
                sceneId = targetStarUpPb.SceneIds[j];
                bool isUnlock = false;
                SceneUnlockRulePB curscenePb = GlobalData.FavorabilityMainModel.GetUnlockRulePb(sceneId);
                if (curscenePb == null)
                {
                    continue;
                }
                if (curscenePb.FavorabilityLevel <= userFavorabilityVo.Level && (int)targetStarUpPb.Star <= vo.Star)
                {
                    isUnlock = true;
                }
                if (curscenePb != null)
                {
                    //SmsInfo info = JsonConvert.DeserializeObject<SmsInfo>(text);
                    CardAwardPreInfo info        = CreateCardAwardPreInfo(GetSceneName(sceneId), isUnlock, GetCardAwardPreType(sceneId));
                    PhoneUnlockInfo  phoneUnlock = ClientData.GetPhoneUnlockInfoById(sceneId);
                    if (phoneUnlock != null)
                    {
                        info.UnlockDescription = phoneUnlock.UnlcokDes;
                        info.StartTips         = phoneUnlock.StartTips + ".";
                        Debug.LogError(info.content);
                        infos.Add(info);
                    }
                }
                Debug.Log("Star  level " + i + "  sceneID  " + sceneId + "  isUnlock " + isUnlock);
            }
        }


        //恋爱剧情
        UserAppointmentVo userAppointmentVo = GlobalData.AppointmentData.GetCardAppointmentVo(cardId);

        if (userAppointmentVo != null)
        {
            int appointmentId = userAppointmentVo.AppointmentId;
            AppointmentRuleVo appointmentRuleVo = GlobalData.AppointmentData.GetAppointmentRule(appointmentId);

            string cotent = appointmentRuleVo.Name;

            foreach (var v in appointmentRuleVo.GateInfos)
            {
                //cotent = cotent + v.Gate.ToString();

                bool isUnlock = userAppointmentVo.ActiveGateInfos.Contains(v.Gate);
                if (v.Star == 0 && v.Evo == 0)
                {
                    isUnlock = true;
                }


                string key  = "Common_Number" + v.Gate.ToString();
                var    info = CreateCardAwardPreInfo(cotent + I18NManager.Get(key), isUnlock, CardAwardPreType.LoveStory);

                if (v.Star == 0 && v.Evo == 0)
                {
                    info.StartTips = "1心解锁.";
                }


                if (v.Star > 0)
                {
                    info.StartTips         = (v.Star + 1) + "心解锁.";
                    info.UnlockDescription = I18NManager.Get("Card_PreviewStarUnlock", (v.Star + 1));
                }

                if (v.Evo > 0)
                {
                    info.StartTips         = "进化" + v.Evo + "解锁.";
                    info.UnlockDescription = I18NManager.Get("Card_PreviewEvoUnlock", v.Evo);
                }

                infos.Add(info);
            }
        }

        //日记语音
        List <ElementPB> elementPBs = GlobalData.DiaryElementModel.GetDialogsByCardId(cardId);

        foreach (var elementPB in elementPBs)
        {
            if (elementPB.ElementType == ElementTypePB.Sound)
            {
                string cotent   = elementPB.Name;
                bool   isUnlock = GlobalData.DiaryElementModel.IsCanUseElement(elementPB.Id);
                var    info     = CreateCardAwardPreInfo(cotent, isUnlock, CardAwardPreType.LoveDiaryLabelVoice);
                info.StartTips         = "进化1解锁.";
                info.UnlockDescription = I18NManager.Get("Card_PreviewEvoUnlock", 1);
                infos.Add(info);
            }
        }

//        var drawcards = ClientData.GetDrawCardExpressionInfos(NpcId, EXPRESSIONTRIGERTYPE.DRAWCARD);
//        //抽卡语音
//        foreach (var v in drawcards)
//        {
//            string cotent = v.DialogName;
//            bool isUnlock = true;
//            infos.Add(CreateCardAwardPreInfo(cotent, isUnlock, CardAwardPreType.DrawCardVioce));
//        }

        infos.Sort();

        string cardName = userCardVo.CardVo.CardName;
        var    win      = PopupManager.ShowWindow <CardAwardPreviewWindow>("Card/Prefabs/CardDetail/CardAwardPreviewWindow");

        win.SetData(cardName, infos);

        //string path = "FavorabilityMain/Prefabs/VoiceWindow";
        //var voiceWin = PopupManager.ShowWindow<VoiceWindow>(path);
        //voiceWin.SetData("111", infos);
    }
    private void SetCardData(UserCardVo vo)
    {
        SetStateTran(true, false, false);
        _curCardVo         = vo;
        _title.text        = vo.CardVo.TitleName;
        _roleImage.texture = ResourceManager.Load <Texture>(vo.CardVo.BigCardPath(vo.UserNeedShowEvoCard()), ModuleName);
        SetStars(vo);
        string spName = "UIAtlas_Common_R";

        if (vo.CardVo.Credit == CreditPB.Ssr)
        {
            spName = "UIAtlas_Common_SSR";
        }
        else if (vo.CardVo.Credit == CreditPB.Sr)
        {
            spName = "UIAtlas_Common_SR";
        }

        _credit.sprite = AssetManager.Instance.GetSpriteAtlas(spName);
        _credit.SetNativeSize();

        int  sceneId         = 0;
        bool normalstate     = false;
        bool finishedState   = false;
        bool finishedCurStep = false;

        _levelupDisposition.image.color = Color.white;
        _gotocard.image.color           = Color.white;
        _gotocard.enabled           = true;
        _levelupDisposition.enabled = true;
        _gotoCardtxt.text           = I18NManager.Get("FavorabilityMain_GoRoseheart"); //前往升心

        for (int i = 0; i < vo.MaxStars; i++)
        {
            //这个表示从0到1的数据!
            var targetStarUpPb = GlobalData.CardModel.GetCardStarUpRule(vo.CardId, (StarPB)i);

            if (targetStarUpPb == null)
            {
                Debug.LogError("no i" + i);
            }

            if (targetStarUpPb != null)
            {
                //Debug.LogError(targetStarUpPb.SceneIds.Count);
                for (int j = 0; j < targetStarUpPb.SceneIds.Count; j++)
                {
                    if (targetStarUpPb.SceneIds[j] == 0)
                    {
                        continue;
                    }
                    sceneId = targetStarUpPb.SceneIds[j];
                    SceneUnlockRulePB curscenePb = GlobalData.FavorabilityMainModel.GetUnlockRulePb(sceneId);

                    //万一CursemePb为空我直接隐藏吧。
                    if (curscenePb == null)
                    {
                        SetStateTran(false, false, true);
                        FlowText.ShowMessage(I18NManager.Get("FavorabilityMain_IDAndFavorabilityLevelInconformity")); //找不到场景ID对应的好感度等级
                        return;
                    }

//                    Debug.LogError("i"+i+"j"+sceneId);
                    //_dispositionTo.text =
                    //    GlobalData.FavorabilityMainModel.GetPlayerName(_userFavorabilityVo.Player) + "好感度达到" +
                    //    curscenePb.FavorabilityLevel;
                    _dispositionTo.text = I18NManager.Get("FavorabilityMain_DispositionTo", GlobalData.FavorabilityMainModel.GetPlayerName(_userFavorabilityVo.Player), curscenePb.FavorabilityLevel);
                    // _startxt.text = "星缘达到" + (int)targetStarUpPb.Star + "心";
                    _startxt.text = I18NManager.Get("FavorabilityMain_Startext", (int)targetStarUpPb.Star);
                    if (curscenePb.FavorabilityLevel > _userFavorabilityVo.Level)
                    {
                        _addFavorability.text           = I18NManager.Get("FavorabilityMain_PromoteFavorability"); //提升好感度
                        _levelupDisposition.image.color = Color.white;
                        _levelupDisposition.enabled     = true;
                        finishedCurStep = false;
                        if ((int)targetStarUpPb.Star > vo.Star)
                        {
                            _gotoCardtxt.text     = I18NManager.Get("FavorabilityMain_GoRoseheart"); //前往升心
                            _gotocard.image.color = Color.white;
                            _gotocard.enabled     = true;
                        }
                        else
                        {
                            _gotoCardtxt.text     = I18NManager.Get("FavorabilityMain_Arriveat"); //已达成
                            _gotocard.image.color = Color.gray;
                            _gotocard.enabled     = false;
                        }

                        normalstate = true;
                        break;
                    }
                    else
                    {
                        _addFavorability.text           = I18NManager.Get("FavorabilityMain_Arriveat");//已达成
                        _levelupDisposition.image.color = Color.gray;
                        _levelupDisposition.enabled     = false;
                        if ((int)targetStarUpPb.Star <= vo.Star)
                        {
//                            Debug.LogError((int) targetStarUpPb.Star +"已达成"+ vo.Star);
                            _gotoCardtxt.text     = I18NManager.Get("FavorabilityMain_Arriveat");//已达成
                            _gotocard.image.color = Color.gray;
                            _gotocard.enabled     = false;
                            finishedCurStep       = true;
                            if ((int)targetStarUpPb.Star == vo.MaxStars)
                            {
                                finishedState = true;
                                break;
                            }
                        }
                        else
                        {
                            _gotoCardtxt.text     = I18NManager.Get("FavorabilityMain_GoRoseheart"); //前往升心
                            _gotocard.image.color = Color.white;
                            _gotocard.enabled     = true;
                            finishedCurStep       = false;
                            normalstate           = true;
                            break;
                        }
                    }
                }

                //这里需要做一个判断,当解锁完所有关卡了,并且也已经遍历了所有心级,那么久可以当做是finished了!
                if ((int)targetStarUpPb.Star == vo.MaxStars && finishedCurStep)
                {
                    finishedState = true;
                }
            }

            if (normalstate)
            {
                SetStateTran(true, false, false);
                break;
            }

            if (finishedState)
            {
                SetStateTran(false, true, false);
                break;
            }

            if (targetStarUpPb != null && sceneId == 0 && vo.Star == vo.MaxStars)
            {
                _startxt.text       = I18NManager.Get("FavorabilityMain_GUESSTargetFavorability");     // 暂无目标好感度
                _dispositionTo.text = I18NManager.Get("FavorabilityMain_GUESSHeartLevelFavorability"); //"暂无心级好感度";
            }
        }
    }