Esempio n. 1
0
        public bool KuaFuLogin(KuaFuServerLoginData kuaFuServerLoginData)
        {
            KarenFuBenRoleData kroleData = JunTuanClient.getInstance().GetKarenFuBenRoleData((int)kuaFuServerLoginData.GameId, kuaFuServerLoginData.RoleId);
            bool result;

            if (kroleData == null || (long)kroleData.KuaFuMapCode != kuaFuServerLoginData.GameId || kroleData.KuaFuServerId != GameManager.ServerId)
            {
                LogManager.WriteLog(LogTypes.Error, string.Format("{0}不具有进入跨服地图{1}的资格", kuaFuServerLoginData.RoleId, kuaFuServerLoginData.GameId), null, true);
                result = false;
            }
            else
            {
                result = true;
            }
            return(result);
        }
Esempio n. 2
0
        public bool OnInitGame(GameClient client)
        {
            KuaFuServerLoginData kuaFuServerLoginData = Global.GetClientKuaFuServerLoginData(client);
            KarenFuBenData       fuBenData;

            lock (this.RuntimeData.Mutex)
            {
                if (!this.RuntimeData.FuBenItemData.TryGetValue((int)kuaFuServerLoginData.GameId, out fuBenData))
                {
                    fuBenData = null;
                }
                else if (fuBenData.State >= GameFuBenState.End)
                {
                    return(false);
                }
            }
            if (null == fuBenData)
            {
                if (KarenBattleManager.getInstance().GMTest)
                {
                    lock (this.RuntimeData.Mutex)
                    {
                        if (!this.RuntimeData.FuBenItemData.TryGetValue((int)kuaFuServerLoginData.GameId, out fuBenData))
                        {
                            fuBenData            = new KarenFuBenData();
                            fuBenData.GameId     = (int)kuaFuServerLoginData.GameId;
                            fuBenData.SequenceId = GameCoreInterface.getinstance().GetNewFuBenSeqId();
                            this.RuntimeData.FuBenItemData[fuBenData.GameId] = fuBenData;
                        }
                    }
                }
                else
                {
                    KarenFuBenData newFuBenData = JunTuanClient.getInstance().GetKarenKuaFuFuBenData((int)kuaFuServerLoginData.GameId);
                    if (newFuBenData == null || newFuBenData.State == GameFuBenState.End)
                    {
                        LogManager.WriteLog(LogTypes.Error, ("获取不到有效的副本数据," + newFuBenData == null) ? "fuBenData == null" : "fuBenData.State == GameFuBenState.End", null, true);
                        return(false);
                    }
                    lock (this.RuntimeData.Mutex)
                    {
                        if (!this.RuntimeData.FuBenItemData.TryGetValue((int)kuaFuServerLoginData.GameId, out fuBenData))
                        {
                            fuBenData            = newFuBenData;
                            fuBenData.SequenceId = GameCoreInterface.getinstance().GetNewFuBenSeqId();
                            this.RuntimeData.FuBenItemData[fuBenData.GameId] = fuBenData;
                        }
                    }
                }
            }
            if (KarenBattleManager.getInstance().GMTest)
            {
                client.ClientData.BattleWhichSide = Global.GetRandomNumber(1, 5);
            }
            else
            {
                KarenFuBenRoleData kroleData = JunTuanClient.getInstance().GetKarenFuBenRoleData((int)kuaFuServerLoginData.GameId, client.ClientData.RoleID);
                if (null == kroleData)
                {
                    return(false);
                }
                client.ClientData.BattleWhichSide = kroleData.Side;
            }
            int  posX;
            int  posY;
            int  side = this.GetBirthPoint(client, out posX, out posY, true);
            bool result;

            if (side <= 0)
            {
                LogManager.WriteLog(LogTypes.Error, "无法获取有效的阵营和出生点,进入跨服失败,side=" + side, null, true);
                result = false;
            }
            else
            {
                lock (this.RuntimeData.Mutex)
                {
                    kuaFuServerLoginData.FuBenSeqId = fuBenData.SequenceId;
                    KarenBattleSceneInfo sceneInfo;
                    if (null == (sceneInfo = KarenBattleManager.getInstance().TryGetKarenBattleSceneInfo((int)kuaFuServerLoginData.GameId)))
                    {
                        return(false);
                    }
                    client.ClientData.MapCode = sceneInfo.MapCode;
                }
                client.ClientData.PosX       = posX;
                client.ClientData.PosY       = posY;
                client.ClientData.FuBenSeqID = kuaFuServerLoginData.FuBenSeqId;
                KarenBattleManager.getInstance().OnInitGame(SceneUIClasses.KarenWest, client);
                result = true;
            }
            return(result);
        }