예제 #1
0
 private void NotifySceneData(KuaFuBossScene scene)
 {
     if (null != scene)
     {
         GameManager.ClientMgr.BroadSpecialCopyMapMessage <KuaFuBossSceneStateData>(1122, scene.SceneStateData, scene.CopyMap);
     }
 }
예제 #2
0
 public void CheckCreateDynamicMonster(KuaFuBossScene scene, long nowMs)
 {
     lock (this.RuntimeData.Mutex)
     {
         List <BattleDynamicMonsterItem> dynMonsterList = scene.DynMonsterList;
         if (dynMonsterList != null)
         {
             foreach (BattleDynamicMonsterItem item in dynMonsterList)
             {
                 if (!scene.DynMonsterSet.Contains(item.Id))
                 {
                     if (nowMs - scene.m_lBeginTime >= (long)item.DelayBirthMs)
                     {
                         Monster seedMonster = GameManager.MonsterZoneMgr.AddDynamicMonsters(scene.m_nMapCode, item.MonsterID, scene.CopyMap.CopyMapID, item.Num, item.PosX / scene.MapGridWidth, item.PosY / scene.MapGridHeight, item.Radius, item.PursuitRadius, SceneUIClasses.KuaFuBoss, null, null);
                         scene.DynMonsterSet.Add(item.Id);
                         if (null != seedMonster)
                         {
                             if (seedMonster.MonsterType == 401)
                             {
                                 scene.SceneStateData.TotalBossNum += item.Num;
                                 scene.SceneStateData.BossNum      += item.Num;
                             }
                             else
                             {
                                 scene.SceneStateData.TotalNormalNum += item.Num;
                                 scene.SceneStateData.MonsterNum     += item.Num;
                             }
                         }
                     }
                 }
             }
         }
     }
 }
예제 #3
0
 public void LeaveFuBen(GameClient client)
 {
     lock (this.RuntimeData.Mutex)
     {
         KuaFuBossScene scene = null;
         if (this.SceneDict.TryGetValue(client.ClientData.FuBenSeqID, out scene))
         {
             scene.m_nPlarerCount--;
         }
     }
 }
예제 #4
0
        public bool AddCopyScenes(GameClient client, CopyMap copyMap, SceneUIClasses sceneType)
        {
            bool result;

            if (sceneType == SceneUIClasses.KuaFuBoss)
            {
                int            fuBenSeqId = copyMap.FuBenSeqID;
                int            mapCode    = copyMap.MapCode;
                int            roleId     = client.ClientData.RoleID;
                int            gameId     = (int)Global.GetClientKuaFuServerLoginData(client).GameId;
                DateTime       now        = TimeUtil.NowDateTime();
                KuaFuBossScene scene      = null;
                lock (this.RuntimeData.Mutex)
                {
                    if (!this.SceneDict.TryGetValue(fuBenSeqId, out scene))
                    {
                        KuaFuBossSceneInfo        sceneInfo = null;
                        YongZheZhanChangFuBenData fuBenData;
                        if (!this.RuntimeData.FuBenItemData.TryGetValue(gameId, out fuBenData))
                        {
                            LogManager.WriteLog(LogTypes.Error, "跨服Boss没有为副本找到对应的跨服副本数据,GameID:" + gameId, null, true);
                        }
                        if (!this.RuntimeData.SceneDataDict.TryGetValue(fuBenData.GroupIndex, out sceneInfo))
                        {
                            LogManager.WriteLog(LogTypes.Error, "跨服Boss没有为副本找到对应的档位数据,ID:" + fuBenData.GroupIndex, null, true);
                        }
                        scene         = new KuaFuBossScene();
                        scene.CopyMap = copyMap;
                        scene.CleanAllInfo();
                        scene.GameId         = gameId;
                        scene.m_nMapCode     = mapCode;
                        scene.CopyMapId      = copyMap.CopyMapID;
                        scene.FuBenSeqId     = fuBenSeqId;
                        scene.m_nPlarerCount = 1;
                        scene.SceneInfo      = sceneInfo;
                        DateTime startTime = now.Date.Add(this.GetStartTime(sceneInfo.Id));
                        scene.StartTimeTicks             = startTime.Ticks / 10000L;
                        scene.GameStatisticalData.GameId = gameId;
                        this.SceneDict[fuBenSeqId]       = scene;
                        List <BattleDynamicMonsterItem> dynMonsterList;
                        if (this.RuntimeData.SceneDynMonsterDict.TryGetValue(mapCode, out dynMonsterList))
                        {
                            scene.DynMonsterList = dynMonsterList;
                        }
                    }
                    else
                    {
                        scene.m_nPlarerCount++;
                    }
                    copyMap.IsKuaFuCopy = true;
                    copyMap.SetRemoveTicks(TimeUtil.NOW() + (long)(scene.SceneInfo.TotalSecs * 1000));
                }
                GameMap gameMap = null;
                if (GameManager.MapMgr.DictMaps.TryGetValue(copyMap.MapCode, out gameMap))
                {
                    scene.MapGridWidth  = gameMap.MapGridWidth;
                    scene.MapGridHeight = gameMap.MapGridHeight;
                }
                YongZheZhanChangClient.getInstance().GameFuBenRoleChangeState(roleId, 5, 0, 0);
                result = true;
            }
            else
            {
                result = false;
            }
            return(result);
        }