private void NotifySceneData(KuaFuBossScene scene) { if (null != scene) { GameManager.ClientMgr.BroadSpecialCopyMapMessage <KuaFuBossSceneStateData>(1122, scene.SceneStateData, scene.CopyMap); } }
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; } } } } } } } }
public void LeaveFuBen(GameClient client) { lock (this.RuntimeData.Mutex) { KuaFuBossScene scene = null; if (this.SceneDict.TryGetValue(client.ClientData.FuBenSeqID, out scene)) { scene.m_nPlarerCount--; } } }
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); }