示例#1
0
        public int GetBirthPoint(GameClient client, out int posX, out int posY)
        {
            int side = client.ClientData.BattleWhichSide;

            if (side <= 0)
            {
                KuaFuServerLoginData clientKuaFuServerLoginData = Global.GetClientKuaFuServerLoginData(client);
                side = TianTiClient.getInstance().GetRoleBattleWhichSide((int)clientKuaFuServerLoginData.GameId, clientKuaFuServerLoginData.RoleId);
                if (side > 0)
                {
                    client.ClientData.BattleWhichSide = side;
                }
            }

            lock (RuntimeData.Mutex)
            {
                TianTiBirthPoint TianTiBirthPoint = null;
                if (RuntimeData.MapBirthPointDict.TryGetValue(side, out TianTiBirthPoint))
                {
                    posX = TianTiBirthPoint.PosX;
                    posY = TianTiBirthPoint.PosY;
                    return(side);
                }
            }

            posX = 0;
            posY = 0;
            return(-1);
        }
示例#2
0
        /// <summary>
        /// 初始化配置
        /// </summary>
        public bool InitConfig()
        {
            bool     success          = true;
            XElement xml              = null;
            string   fileName         = "";
            string   fullPathFileName = "";
            IEnumerable <XElement> nodes;

            lock (RuntimeData.Mutex)
            {
                try
                {
                    //段位配置
                    RuntimeData.TianTiDuanWeiDict.Clear();
                    RuntimeData.DuanWeiJiFenRangeDuanWeiIdDict.Clear();

                    int preJiFen     = 0;
                    int perDuanWeiId = 0;
                    int maxDuanWeiId = 0;
                    fileName         = "Config/DuanWei.xml";
                    fullPathFileName = Global.GameResPath(fileName); //Global.IsolateResPath(fileName);
                    xml   = XElement.Load(fullPathFileName);
                    nodes = xml.Elements();
                    foreach (var node in nodes)
                    {
                        TianTiDuanWei item = new TianTiDuanWei();
                        item.ID = (int)Global.GetSafeAttributeLong(node, "ID");
                        item.NeedDuanWeiJiFen = (int)Global.GetSafeAttributeLong(node, "NeedDuanWeiJiFen");
                        item.WinJiFen         = (int)Global.GetSafeAttributeLong(node, "WinJiFen");
                        item.LoseJiFen        = (int)Global.GetSafeAttributeLong(node, "LoseJiFen");
                        item.RongYaoNum       = (int)Global.GetSafeAttributeLong(node, "RongYaoNum");
                        item.WinRongYu        = (int)Global.GetSafeAttributeLong(node, "WinRongYu");
                        item.LoseRongYu       = (int)Global.GetSafeAttributeLong(node, "LoseRongYu");

                        if (perDuanWeiId > 0)
                        {
                            RuntimeData.DuanWeiJiFenRangeDuanWeiIdDict[new RangeKey(preJiFen, item.NeedDuanWeiJiFen - 1)] = perDuanWeiId;
                        }

                        preJiFen     = item.NeedDuanWeiJiFen;
                        perDuanWeiId = item.ID;
                        maxDuanWeiId = item.ID;
                        RuntimeData.TianTiDuanWeiDict[item.ID] = item;
                    }

                    if (maxDuanWeiId > 0 && preJiFen > 0)
                    {
                        RuntimeData.DuanWeiJiFenRangeDuanWeiIdDict[new RangeKey(preJiFen, int.MaxValue)] = maxDuanWeiId;
                    }

                    //出生点配置
                    RuntimeData.MapBirthPointDict.Clear();

                    fileName         = "Config/TianTiBirthPoint.xml";
                    fullPathFileName = Global.GameResPath(fileName); //Global.IsolateResPath(fileName);
                    xml   = XElement.Load(fullPathFileName);
                    nodes = xml.Elements();
                    foreach (var node in nodes)
                    {
                        TianTiBirthPoint item = new TianTiBirthPoint();
                        item.ID          = (int)Global.GetSafeAttributeLong(node, "ID");
                        item.PosX        = (int)Global.GetSafeAttributeLong(node, "PosX");
                        item.PosY        = (int)Global.GetSafeAttributeLong(node, "PosY");
                        item.BirthRadius = (int)Global.GetSafeAttributeLong(node, "BirthRadius");

                        RuntimeData.MapBirthPointDict[item.ID] = item;
                    }

                    //段位排行奖励
                    RuntimeData.DuanWeiRankAwardDict.Clear();

                    fileName         = "Config/DuanWeiRankAward.xml";
                    fullPathFileName = Global.GameResPath(fileName); //Global.IsolateResPath(fileName);
                    xml   = XElement.Load(fullPathFileName);
                    nodes = xml.Elements();
                    foreach (var node in nodes)
                    {
                        DuanWeiRankAward item = new DuanWeiRankAward();
                        item.ID       = (int)Global.GetSafeAttributeLong(node, "ID");
                        item.StarRank = (int)Global.GetSafeAttributeLong(node, "StarRank");
                        item.EndRank  = (int)Global.GetSafeAttributeLong(node, "EndRank");
                        ConfigParser.ParseAwardsItemList(Global.GetSafeAttributeStr(node, "Award"), ref item.Award);
                        if (item.EndRank < 0)
                        {
                            item.EndRank = int.MaxValue;
                        }

                        RuntimeData.DuanWeiRankAwardDict[new RangeKey(item.StarRank, item.EndRank)] = item;
                    }

                    //活动配置
                    RuntimeData.MapCodeDict.Clear();

                    fileName         = "Config/TianTi.xml";
                    fullPathFileName = Global.GameResPath(fileName); //Global.IsolateResPath(fileName);
                    xml   = XElement.Load(fullPathFileName);
                    nodes = xml.Elements();
                    foreach (var node in nodes)
                    {
                        int mapCode = (int)Global.GetSafeAttributeLong(node, "MapCode");
                        if (!RuntimeData.MapCodeDict.ContainsKey(mapCode))
                        {
                            RuntimeData.MapCodeDict[mapCode] = 1;
                            RuntimeData.MapCodeList.Add(mapCode);
                        }

                        RuntimeData.WaitingEnterSecs = (int)Global.GetSafeAttributeLong(node, "WaitingEnterSecs");
                        RuntimeData.FightingSecs     = (int)Global.GetSafeAttributeLong(node, "FightingSecs");
                        RuntimeData.ClearRolesSecs   = (int)Global.GetSafeAttributeLong(node, "ClearRolesSecs");

                        if (!ConfigParser.ParserTimeRangeList(RuntimeData.TimePoints, Global.GetSafeAttributeStr(node, "TimePoints")))
                        {
                            success = false;
                            LogManager.WriteLog(LogTypes.Fatal, "读取跨服天梯系统时间配置(TimePoints)出错");
                        }

                        GameMap gameMap = null;
                        if (!GameManager.MapMgr.DictMaps.TryGetValue(mapCode, out gameMap))
                        {
                            success = false;
                            LogManager.WriteLog(LogTypes.Fatal, string.Format("缺少跨服天梯系统地图 {0}", mapCode));
                        }
                    }

                    //奖励配置
                    RuntimeData.DuanWeiJiFenNum  = (int)GameManager.systemParamsList.GetParamValueIntByName("DuanWeiJiFenNum");
                    RuntimeData.WinDuanWeiJiFen  = (int)GameManager.systemParamsList.GetParamValueIntByName("WinDuanWeiJiFen");
                    RuntimeData.LoseDuanWeiJiFen = (int)GameManager.systemParamsList.GetParamValueIntByName("LoseDuanWeiJiFen");
                    RuntimeData.MaxTianTiJiFen   = (int)GameManager.systemParamsList.GetParamValueIntByName("MaxTianTiJiFen");
                }
                catch (System.Exception ex)
                {
                    success = false;
                    LogManager.WriteLog(LogTypes.Fatal, string.Format("加载xml配置文件:{0}, 失败。", fileName), ex);
                }
            }

            return(success);
        }