当前位置: 首页>>代码示例>>C++>>正文


C++ CBuffer::reset方法代码示例

本文整理汇总了C++中net::CBuffer::reset方法的典型用法代码示例。如果您正苦于以下问题:C++ CBuffer::reset方法的具体用法?C++ CBuffer::reset怎么用?C++ CBuffer::reset使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在net::CBuffer的用法示例。


在下文中一共展示了CBuffer::reset方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: createAndMirrorSpectator

	void CGameServerState::createAndMirrorSpectator(Net::NetID playerNetId) {
		// Primero comprobamos si habia una entidad correspondiente a este jugador
		// ya que durante el juego tambien podemos cambiar de clase.
		// En caso de que la haya la eliminamos para crear la nueva
		std::pair<Logic::TEntityID, bool> id = _playersMgr->getPlayerId(playerNetId);
		if(id.second) { // Si el id devuelto es valido
			Logic::CEntity* deletePlayer = _map->getEntityByID( id.first );
			if(deletePlayer) {
				Logic::CEntityFactory::getSingletonPtr()->deleteEntity(deletePlayer, true);
			}
		}
		
		// Obtenemos el nickname del jugador que quiere espectar
		std::string nickname = _playersMgr->getPlayerNickname(playerNetId);
		// Creamos la entidad espectador con el nombre del jugador
		Logic::CEntity* spectator = _map->createPlayer(nickname, "Spectator");
		// Obtenemos la id logica de la entidad espectador
		Logic::TEntityID spectatorId = spectator->getEntityID();
		// Seteamos la id logica del jugador en el gestor de jugadores
		_playersMgr->setEntityID(playerNetId, spectatorId);

		// Escribimos el tipo de mensaje de red a enviar
		Net::NetMessageType netMsg = Net::LOAD_PLAYERS;
		int nbPlayers = 1;
				
		// Serializamos toda la información que se necesita para la creación de la entidad
		Net::CBuffer buffer;
		buffer.write(&netMsg, sizeof(netMsg));
		buffer.write(&nbPlayers, sizeof(nbPlayers));
		buffer.write(&playerNetId, sizeof(playerNetId));
		buffer.write(&spectatorId, sizeof(spectatorId));
		buffer.serialize(nickname, false); // Nombre del player
		buffer.serialize("Spectator", false); // Clase del player
		// Enviamos la entidad nueva al resto de jugadores
		_netMgr->broadcastIgnoring(playerNetId, buffer.getbuffer(), buffer.getSize());

		buffer.reset();

		// Enviamos la entidad nueva al jugador local
		netMsg = Net::LOAD_LOCAL_PLAYER;
		// Serializamos toda la información que se necesita para la creación de la entidad
		buffer.write(&netMsg, sizeof(netMsg));
		buffer.write(&playerNetId, sizeof(playerNetId));
		buffer.write(&spectatorId, sizeof(spectatorId));
		buffer.serialize(nickname, false); // Nombre del player
		buffer.serialize("Spectator", false); // Clase del player

		spectator->activate();
		spectator->start();

		_netMgr->sendTo(playerNetId, buffer.getbuffer(), buffer.getSize());

		_playersMgr->setPlayerState(playerNetId, false);
		_playersMgr->setPlayerTeam(playerNetId, Logic::TeamFaction::eNONE);
	}
开发者ID:franaisa,项目名称:Gloom,代码行数:55,代码来源:GameServerState.cpp

示例2: createAndMirrorPlayer

	void CGameServerState::createAndMirrorPlayer(int race, Net::NetID playerNetId, Logic::TeamFaction::Enum team) {
		// Primero comprobamos si habia una entidad correspondiente a este jugador
		// ya que durante el juego tambien podemos cambiar de clase.
		// En caso de que la haya la eliminamos para crear la nueva
		std::pair<Logic::TEntityID, bool> id = _playersMgr->getPlayerId(playerNetId);
		if(id.second) { // Si el id devuelto es valido
			Logic::CEntity* deletePlayer = _map->getEntityByID( id.first );
			if(deletePlayer) {
				Logic::CEntityFactory::getSingletonPtr()->deleteEntity(deletePlayer, true);
			}
		}
		
		std::string name = _playersMgr->getPlayerNickname(playerNetId);
		
		// Obtenemos el nombre de la clase a la que pertenece el player
		std::string playerClass;
		switch(race) {
			case 1:
				playerClass = "Screamer";
				break;
			case 2:
				playerClass = "Hound";
				break;
			case 3:
				playerClass = "Archangel";
				break;
			case 4:
				playerClass = "Shadow";
				break;
		}

		// Creamos el player
		Logic::CEntity* player = _map->createPlayer(name, playerClass);
		// Seteamos la id logica asociada al player
		Logic::TEntityID playerId = player->getEntityID();
		_playersMgr->setEntityID(playerNetId, playerId);

		// Escribimos el tipo de mensaje de red a enviar
		Net::NetMessageType netMsg = Net::LOAD_PLAYERS;
		int nbPlayers = 1;
				
		// Serializamos toda la información que se necesita para la creación de la entidad
		Net::CBuffer buffer;
		buffer.write(&netMsg, sizeof(netMsg));
		buffer.write(&nbPlayers, sizeof(nbPlayers));
		buffer.write(&playerNetId, sizeof(playerNetId));
		buffer.write(&playerId, sizeof(playerId));
		buffer.serialize(player->getName(), false); // Nombre del player
		buffer.serialize(player->getType(), false); // Clase del player
		buffer.write(&team, sizeof(team));
		// Enviamos la entidad nueva al resto de jugadores
		_netMgr->broadcastIgnoring(playerNetId, buffer.getbuffer(), buffer.getSize());

		buffer.reset();

		// Enviamos la entidad nueva al jugador local
		netMsg = Net::LOAD_LOCAL_PLAYER;

		// Serializamos toda la información que se necesita para la creación de la entidad
		buffer.write(&netMsg, sizeof(netMsg));
		buffer.write(&playerNetId, sizeof(playerNetId));
		buffer.write(&playerId, sizeof(playerId));
		buffer.serialize(player->getName(), false); // Nombre del player
		buffer.serialize(player->getType(), false); // Clase del player
		buffer.write(&team, sizeof(team));
		std::cout << "el equipo que estoy enviando es ... " << team << std::endl;
		player->activate();
		player->start();

		_netMgr->sendTo(playerNetId, buffer.getbuffer(), buffer.getSize());

		_playersMgr->setPlayerState(playerNetId, true);
		_playersMgr->setPlayerTeam(playerNetId, team);
	}
开发者ID:franaisa,项目名称:Gloom,代码行数:74,代码来源:GameServerState.cpp


注:本文中的net::CBuffer::reset方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。