Example #1
0
        public static bool IsMeetRule(int key, cmd_warstatistic_history_record record)
        {
            SSchemeLifeHero config;

            if (LifeHeroConfig.Instance.LifeHeroConfigDic.TryGetValue(key, out config))
            {
                return((record.wKillPersonNum + record.wAssistCount - record.wDieCount - config.rule) >= 0 ? true : false);
            }
            else
            {
                Debug.LogWarning("not find match rule in lifehero.csv. key=" + key);
                return(false);
            }
        }
Example #2
0
        // 根据当前本命英雄的个数和历史战绩匹配是否有可激活的本命英雄
        private bool IsMeetLifeHeroRule(cmd_warstatistic_history_record record)
        {
            if (record.nHeroID <= 0)
            {
                Debug.LogWarning("返回的历史记录中错误(heroID=0).warType=" + record.wWarType + "k/d/a=" + record.wKillPersonNum + "/" + record.wDieCount + "/" + record.wAssistCount);
                return(false);
            }

            int meetRuleKey = GetMeetRuleKey();

            return(record.bIsFull &&
                   LifeHeroRules.IsMeetRule(meetRuleKey, record) &&
                   LifeHeroConfig.Instance.IsMeetWarType(meetRuleKey, record.wWarType) &&
                   !m_LifeHeroDic.ContainsKey(record.nHeroID));
        }
Example #3
0
        // 收到玩家的历史战绩
        public void RecvHistoryRecord(IntPtr ptrParam, int nPtrLen)
        {
            m_historyRecord.Clear();
            IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptrParam, nPtrLen);
            int count = helper.get <int>();

            for (int i = 0; i < count; ++i)
            {
                cmd_warstatistic_history_record item = helper.get <cmd_warstatistic_history_record>();
                m_historyRecord.Add(item);
            }

            m_recvDataFlag |= ERecvDataFlag.RECV_HISTORY_RECORD;
            if ((m_recvDataFlag & ERecvDataFlag.RECV_LIFE_HERO) == ERecvDataFlag.RECV_LIFE_HERO)
            {
                SetLifeHeroFlag();
            }

            UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_LIFEHERO_RECV_HISTORY_RECORD);
        }
Example #4
0
        /* 在刚进入主城时判断是否需要本命弹窗
         * 本命弹窗逻辑:
         * 1、从战场结算界面返回主城
         * 2、还没有收集完本命英雄
         * 3、本命记录里没有该英雄
         * 4、比赛必须满员
         * 5、比赛类型必须满足配置要求的比赛类型(lifehero.csv)
         */
        private void OpenLifeHeroDialog()
        {
            if (!LogicDataCenter.lifeHeroDataManager.IsFromWarExit)
            {
                return;
            }

            LogicDataCenter.lifeHeroDataManager.IsFromWarExit = false;
            if (StageManager.Instance.getCurrentState() != EStage_State.ESS_GAME && StageManager.Instance.getCurrentState() != EStage_State.ESS_LOADSCENE)
            {
                Debug.Log("recv all lifehero at gamestate=" + StageManager.Instance.getCurrentState() + ", so dont show dialog.");
                return;
            }

            if (!LogicDataCenter.lifeHeroDataManager.HasCollectedAllLifeHero() &&
                (GuideManager.Instance.IsCurrentGuideGreaterEqual(ENNOVICEGUIDE_TYPE.ENNOVICEGUIDE_TYPE_GUIDE_LIFEHEROCULTURE) ||
                 (LogicDataCenter.playerSystemDataManager.GetActorPlayerInfo().playerInfo.nLv > 3)))
            {
                List <cmd_warstatistic_history_record> recordList = LogicDataCenter.lifeHeroDataManager.HistoryRecord;
                if (recordList == null || recordList.Count < 1)
                {
                    Debug.LogWarning("lifehero entance: history record is empty.");
                    return;
                }

                cmd_warstatistic_history_record record = recordList[0];
                if (!record.bIsFull)
                {
                    return;
                }

                Dictionary <int, cmd_entity_lifehero_info> ownedLifeHero = LogicDataCenter.lifeHeroDataManager.AllLifeHero;
                if (ownedLifeHero.ContainsKey(record.nHeroID))
                {
                    return;
                }

                if (!LifeHeroConfig.Instance.IsMeetWarType(ownedLifeHero.Count, record.wWarType))
                {
                    return;
                }

                string        content;
                DialogActions buttons;
                if (LifeHeroRules.IsMeetRule(LogicDataCenter.lifeHeroDataManager.AllLifeHero.Count, record))
                {
                    content = ULocalizationService.Instance.Get("UIView", "LifeHeroSelect", "TravelContent_Good");
                    buttons = new UIWidgets.DialogActions()
                    {
                        { ULocalizationService.Instance.Get("UIView", "LifeHeroSelect", "Confirm"), () => { UISystem.Instance.ShowWnd(WndID.WND_ID_LIFE_HERO_CULTURE, true); return(true); } }, { ULocalizationService.Instance.Get("UIView", "LifeHeroSelect", "Cancel"), null }
                    };
                }
                else
                {
                    SSchemeLifeHero config;
                    int             key = LogicDataCenter.lifeHeroDataManager.AllLifeHero.Count;
                    if (LifeHeroConfig.Instance.LifeHeroConfigDic.TryGetValue(key, out config))
                    {
                        content = string.Format(ULocalizationService.Instance.Get("UIView", "LifeHeroSelect", "TravelContent_NontDiscourage"), config.rule);
                        buttons = new UIWidgets.DialogActions()
                        {
                            { ULocalizationService.Instance.Get("UIView", "LifeHeroSelect", "Confirm"), () => { UISystem.Instance.ShowWnd(WndID.WND_ID_WAR_MAIN_FRAME, true);; return(true); } }, { ULocalizationService.Instance.Get("UIView", "LifeHeroSelect", "Cancel"), null }
                        };
                    }
                    else
                    {
                        Debug.LogError("获取本命配置失败.key = " + key);
                        return;
                    }
                }

                UBB.toHtml(ref content);
                TooltipAndDialog.UIDialogData data = new TooltipAndDialog.UIDialogData(
                    title: ULocalizationService.Instance.Get("UIView", "LifeHeroSelect", "TravelTitle"),
                    message: content,
                    buttons: buttons,
                    modal: false,
                    hideByModalClick: false,
                    modalColor: Color.clear,
                    mutex: true,
                    eDialogType: EDialogType.LifeHeroEntrance
                    );
                UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_COMMON_DIALOG, data);
            }
        }