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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
 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);
         }
     }
 }
Exemplo n.º 7
0
 public override void ServerDo(ClientConnectionWorker connectionWork)
 {
     UnityEngine.Debug.Log("收到客户端:" + this.ip + ":" + this.port + "的连接请求!");
     connectionWork.SendPackage(PackageFactory.GetPackage(this.id));
 }