/// <summary>
        /// 添加一个场景
        /// </summary>
        public bool AddCopyScenes(GameClient client, CopyMap copyMap, SceneUIClasses sceneType)
        {
            if (sceneType == SceneUIClasses.LangHunLingYu)
            {
                GameMap gameMap = null;
                if (!GameManager.MapMgr.DictMaps.TryGetValue(client.ClientData.MapCode, out gameMap))
                {
                    return(false);
                }

                int      fuBenSeqId = copyMap.FuBenSeqID;
                int      mapCode    = copyMap.MapCode;
                int      roleId     = client.ClientData.RoleID;
                int      gameId     = (int)Global.GetClientKuaFuServerLoginData(client).GameId;
                DateTime now        = TimeUtil.NowDateTime();
                lock (RuntimeData.Mutex)
                {
                    LangHunLingYuScene scene = null;
                    if (!RuntimeData.SceneDict.TryGetValue(fuBenSeqId, out scene))
                    {
                        LangHunLingYuFuBenData fuBenData;
                        if (!RuntimeData.FuBenDataDict.TryGetValue(gameId, out fuBenData))
                        {
                            LogManager.WriteLog(LogTypes.Error, "圣域争霸没有为副本找到对应的跨服副本数据,GameID:" + gameId);
                        }

                        scene = new LangHunLingYuScene();
                        scene.CleanAllInfo();
                        scene.GameId              = gameId;
                        RuntimeData.MapGridWidth  = gameMap.MapGridWidth;
                        RuntimeData.MapGridHeight = gameMap.MapGridHeight;
                        int cityLevel = GetCityLevelById(fuBenData.CityId);
                        if (!RuntimeData.CityLevelInfoDict.TryGetValue(cityLevel, out scene.LevelInfo))
                        {
                            LogManager.WriteLog(LogTypes.Error, "圣域争霸没有为副本找到对应的城池等级配置:CityId=" + fuBenData.CityId);
                        }

                        scene.SceneInfo = client.SceneInfoObject as LangHunLingYuSceneInfo;

                        DateTime startTime = now.Date.Add(GetStartTime(scene.LevelInfo.ID));
                        scene.StartTimeTicks = startTime.Ticks / 10000;
                        scene.m_lEndTime     = scene.StartTimeTicks + (scene.SceneInfo.PrepareSecs + scene.SceneInfo.FightingSecs) * TimeUtil.SECOND;
                        InitScene(scene, client);

                        RuntimeData.SceneDict[fuBenSeqId] = scene;
                        scene.CityData.CityId             = fuBenData.CityDataEx.CityId;
                        scene.CityData.CityLevel          = fuBenData.CityDataEx.CityLevel;
                        LangHunLingYuBangHuiDataEx bangHuiDataEx;
                        if (RuntimeData.BangHuiDataExDict.TryGetValue(fuBenData.CityDataEx.Site[0], out bangHuiDataEx))
                        {
                            scene.LongTaOwnerData.OwnerBHid     = bangHuiDataEx.Bhid;
                            scene.LongTaOwnerData.OwnerBHName   = bangHuiDataEx.BhName;
                            scene.LongTaOwnerData.OwnerBHZoneId = bangHuiDataEx.ZoneId;
                        }
                    }

                    scene.CopyMapDict[mapCode] = copyMap;

                    int bhid = client.ClientData.Faction;
                    if (!RuntimeData.BangHuiMiniDataCacheDict.ContainsKey(bhid))
                    {
                        RuntimeData.BangHuiMiniDataCacheDict[bhid] = Global.GetBangHuiMiniData(bhid, client.ServerId);
                    }

                    LangHunLingYuClientContextData clientContextData;
                    if (!scene.ClientContextDataDict.TryGetValue(roleId, out clientContextData))
                    {
                        clientContextData = new LangHunLingYuClientContextData()
                        {
                            RoleId = roleId, ServerId = client.ServerId, BattleWhichSide = client.ClientData.BattleWhichSide
                        };
                        scene.ClientContextDataDict[roleId] = clientContextData;
                    }

                    client.SceneObject       = scene;
                    client.SceneGameId       = scene.GameId;
                    client.SceneContextData2 = clientContextData;

                    copyMap.SetRemoveTicks(scene.StartTimeTicks + scene.SceneInfo.TotalSecs * TimeUtil.SECOND);
                    copyMap.IsKuaFuCopy = true;
                }

                //更新状态
                YongZheZhanChangClient.getInstance().GameFuBenRoleChangeState(roleId, (int)KuaFuRoleStates.StartGame);
                return(true);
            }

            return(false);
        }