public override void ServerDo(ClientConnectionWorker connectionWork) { List <int> viewEntities = connectionWork.player.viewEntities; list = new List <ClientEntityInfo>(viewEntities.Count); for (int i = 0; i < viewEntities.Count; i++) { ClientEntity entity = NetManager.Instance.server.entityManager.GetEntity(viewEntities[i]); list.Add(entity.GetClientEntityInfo()); } connectionWork.SendPackage(this); }
public override void ServerDo(ClientConnectionWorker connectionWork) { ClientEntity entity = NetManager.Instance.server.entityManager.GetEntity(aoId); if (entity != null && entity.viewPlayers.Contains(connectionWork.player.id)) { needRefresh = true; info = entity.GetClientEntityInfo(); } else { needRefresh = false; } connectionWork.SendPackage(this); }
public override void ServerDo(ClientConnectionWorker connectionWork) { List <int> viewPlayers = connectionWork.player.viewPlayers; list = new List <PlayerInfo>(viewPlayers.Count); for (int i = 0; i < viewPlayers.Count; i++) { ClientPlayer player = NetManager.Instance.server.playerManager.GetPlayer(viewPlayers[i]); PlayerInfo info = new PlayerInfo(); info.aoId = player.aoId; info.playerId = player.playerId; info.position = player.position; info.isMe = false; list.Add(info); } connectionWork.SendPackage(this); }
public override void ServerDo(ClientConnectionWorker connectionWork) { ResponseRemoveChunkExtDataPackage package = PackageFactory.GetPackage(PackageType.ResponseRemoveChunkExtData) as ResponseRemoveChunkExtDataPackage; package.pos = pos; package.needSave = NetManager.Instance.server.sceneManager.CanchangedChunkSaved(pos); package.entities = new List <ClientEntityInfo>(); List <ClientEntity> list = NetManager.Instance.server.entityManager.GetEntitiesInChunk(pos); if (list != null) { for (int i = 0; i < list.Count; i++) { package.entities.Add(list[i].GetClientEntityInfo()); } } connectionWork.SendPackage(package); }
public override void ServerDo(ClientConnectionWorker connectionWork) { //在服务器中初始化当前加入玩家的信息 int aoId = AoIdManager.instance.getAoId(); Vector3 birthPlace = NetManager.Instance.server.playerManager.mainPlayer.position; ClientPlayerInfo playerInfo = new ClientPlayerInfo(); playerInfo.id = roleId; playerInfo.aoId = aoId; playerInfo.position = birthPlace; playerInfo.playerId = playerId; playerInfo.configName = NetManager.Instance.server.playerManager.mainPlayer.configName; playerInfo.seed = NetManager.Instance.server.playerManager.mainPlayer.seed; connectionWork.InitPlayer(playerInfo); NetManager.Instance.server.playerManager.AddPlayer(connectionWork.player); //通知自己进入游戏,并返回一些配置 ClientJoinGamePackage package = PackageFactory.GetPackage(PackageType.ClientJoinGame) as ClientJoinGamePackage; package.playerId = playerId; package.aoId = aoId; package.birthPlace = birthPlace; package.worldConfigName = NetManager.Instance.server.playerManager.mainPlayer.configName; package.seed = NetManager.Instance.server.playerManager.mainPlayer.seed; package.time = NetManager.Instance.server.gameTime; connectionWork.SendPackage(package); //通知其他人我已进入游戏,并出现在他们视野内 PlayerJoinViewPackage joinViewPackage = PackageFactory.GetPackage(PackageType.PlayerJoinView) as PlayerJoinViewPackage; joinViewPackage.playerId = playerId; joinViewPackage.aoId = aoId; joinViewPackage.birthPlace = birthPlace; List <int> viewPlayers = connectionWork.player.viewPlayers; for (int i = 0; i < viewPlayers.Count; i++) { ClientPlayer otherPlayer = NetManager.Instance.server.playerManager.GetPlayer(viewPlayers[i]); otherPlayer.worker.SendPackage(joinViewPackage); } }
public override void ServerDo(ClientConnectionWorker connectionWork) { for (int i = 0; i < entityInfos.Count; i++) { NetManager.Instance.server.entityManager.InitEntity(entityInfos[i]); } //可是entity全部交由服务器来管理,因此,客户端的某些怪物可能需要移掉(不在视野范围之内) for (int i = 0; i < entityInfos.Count; i++) { ClientEntity clientEntity = NetManager.Instance.server.entityManager.GetEntity(entityInfos[i].aoId); //检测归属变更 clientEntity.CheckViewHold(); if (clientEntity.viewPlayers.Count <= 0) { EntityLeaveViewPackage leaveViewPackage = PackageFactory.GetPackage(PackageType.EntityLeaveView) as EntityLeaveViewPackage; leaveViewPackage.aoId = clientEntity.aoId; leaveViewPackage.type = clientEntity.type; connectionWork.SendPackage(leaveViewPackage); } } }
public override void ServerDo(ClientConnectionWorker connectionWork) { UnityEngine.Debug.Log("收到客户端:" + this.ip + ":" + this.port + "的连接请求!"); connectionWork.SendPackage(PackageFactory.GetPackage(this.id)); }