Example #1
0
void Player::disconnectPlayerCleanup(Player* player)
{
    static QMutex playerCleanupMutex;

    // Save the pony
    QList<Pony> ponies = loadPonies(player);
    for (int i=0; i<ponies.size(); i++)
        if (ponies[i].ponyData == player->pony.ponyData)
            ponies[i] = player->pony;
    savePonies(player, ponies);
    player->pony.saveQuests();
    player->pony.saveInventory();

    QString uIP = player->IP;
    quint16 uPort = player->port;

    Scene* scene = findScene(player->pony.sceneName);
    if (scene->name.isEmpty())
        logMessage(tr("UDP: Can't find scene for player cleanup"));

    //app.logMessage("playerCleanup locking");
    playerCleanupMutex.lock();
    removePlayer(scene->players, uIP, uPort);
    for (int i=0; i<scene->players.size(); i++)
        sendNetviewRemove(scene->players[i], player->pony.netviewId);
    player->udpDelayedSend(); // We're about to remove the player, we can't delay the send
    player->udpSendReliableTimer->stop();
    player->udpSendReliableGroupTimer->stop();
    removePlayer(Player::udpPlayers, uIP, uPort);
    delete player;
    //app.logMessage("playerCleanup unlocking");
    playerCleanupMutex.unlock();
}
Example #2
0
void PlayerRelationsManager::clear()
{
    StringVect *const names = getPlayers();
    FOR_EACHP (StringVectCIter, it, names)
        removePlayer(*it);
    delete names;
}
Example #3
0
	/// Method handling the upgrade of a players ability
	int upgradePlayerAbility(int id, int ability){
		Player p=getPlayer(id);
		removePlayer(id);
		switch(ability){
            case 0://strength
            	{
                p.improveStrength(1);
                addPlayer(p);                
                return p.getStrength();
               	}
            
            case 1://velocity
                {
                p.improveVelocity(1);
                addPlayer(p);
                return p.getVelocity();
            	}
            case 2://precision
                {
                p.improvePrecision(1);
                addPlayer(p);                
                return p.getPrecision();
            	}
            case 3://chance
                {
                p.improveChance(1);
                addPlayer(p);
                return p.getChance();
            	}
            default:
                return -1;
		}
	}
Example #4
0
void GateGameClient::parseChangeGS(google::protobuf::Message* p, pb_flag_type flag)
{
	message::MsgDB2GTChangeGS* msg = static_cast<message::MsgDB2GTChangeGS*>(p);
	UserSession* pksession = gGTUserMgr.getUserSession(flag);
	
	if (msg && pksession)
	{
		GateGameClient* pkNew = gGTGameMgr.getGameClient(msg->gameserverid());
		if (!pkNew)
		{
			pksession->setClose();
			Mylog::log_server(LOG_ERROR, "change server not found the gmae server [%u]", msg->gameserverid());
		}else
		{
			//切换到目标图的GS上
			removePlayer( pksession->getTrans());
			account_type a = gGTUserMgr.getAccount(pksession->getTrans());
			if (a != INVALID_ACCOUNT)
			{
				pksession->setGSid(msg->gameserverid());
				pkNew->addNewPlayer(pksession->getTrans(), gGTUserMgr.getAccount(pksession->getTrans()));
			}else
			{
				pksession->setClose();
				Mylog::log_server(LOG_ERROR, "change server not found the Account ");
			}
		}
	}
}
Example #5
0
void OnlineRaceLogic::onPlayerLeaved(const CL_String &p_name)
{
	// get the player
	Player &player = getPlayer(p_name);

	// remove from level
	getLevel().removeCar(&player.getCar());

	// remove from game
	removePlayer(player);

	TPlayerList::iterator itor;
	bool found = false;

	for (itor = m_remotePlayers.begin(); itor != m_remotePlayers.end(); ++itor) {

		if (reinterpret_cast<unsigned> (itor->get()) == reinterpret_cast<unsigned> (&player)) {
			m_remotePlayers.erase(itor);
			found = true;
			break;
		}
	}

	G_ASSERT(found);
	display(cl_format("Player %1 leaved", p_name));
}
Example #6
0
void TeamHolder::handleEvent(sf::Event& event){

    switch(event.type){

         case sf::Event::MouseButtonPressed: {

            int x = event.mouseButton.x;
            int y = event.mouseButton.y;

            if(addPlayerButton.clicked(x, y)){
                if(players.size() < maxPlayers){
                    PlayerHolder* player = new PlayerHolder("Player", _body.getPosition().x + 12, _body.getPosition().y + 4 + 73*players.size());
                    addPlayer(player);
                }
            }

            for(int i = 0; i < players.size(); i++){
                if(players.at(i)->removeButton.clicked(x, y)){
                    removePlayer(i);
                }
            }

            break;
        }
    }
}
Example #7
0
GHS_Lobby::~GHS_Lobby(void)
{
	for(MAP_PLAYER_ITOR itor=m_players.begin();itor!=m_players.end();++itor)
	{
		if(itor->second)
			removePlayer(itor->second->getSerial());
	}
}
Example #8
0
void Map::disconnect (ClientId clientId)
{
	removePlayer(clientId);

	_serviceProvider->getNetwork().disconnectClientFromServer(clientId);

	if (_players.size() == 1 && _playersWaitingForSpawn.empty())
		resetCurrentMap();
}
Example #9
0
// Frees all memory previously allocated for the GameView toBeDeleted
void disposeGameView(GameView toBeDeleted)
{
  //printf("called disposeGameView\n");
   /*free(toBeDeleted->Lord_Godalming);
   free(toBeDeleted->Dr_Seward);
   free(toBeDeleted->Van_Helsing);
   free(toBeDeleted->Mina_Harker);
   free(toBeDeleted->Dracula);
   free(toBeDeleted->europe);*/
   removePlayer( toBeDeleted->Lord_Godalming );
   removePlayer( toBeDeleted->Dr_Seward );
   removePlayer( toBeDeleted->Van_Helsing );
   removePlayer( toBeDeleted->Mina_Harker );
   removePlayer( toBeDeleted->Dracula );
   disposeMap( toBeDeleted->europe );
   free( toBeDeleted );

}
Example #10
0
void PlayerManager::removePlayer(Player* player)
{
    if (player == nullptr)
    {
        error_log("failed to remove player, nullptr.");
        return;
    }
    removePlayer(player->playerId());
}
Example #11
0
void HostLobby::processPackets()
{
	Packet *packet = network->getNextPacket();
	while(packet != NULL)
	{
		int packetType = packet->getInt();
		switch(packetType)
		{
			// These are all received by the host.
			case msg_lobby_chat: {
				std::string chatText   = packet->getString();
				std::string playerName = packet->getString();
				messages.println(formatChatText(playerName, chatText));

				// Now forward to clients...
				Packet *chatPacket = new Packet(msg_lobby_chat);
					chatPacket->putString(chatText);
					chatPacket->putString(playerName);
				network->sendToAll(chatPacket);
				break;
			}
			case msg_join_lobby: {
				if (!isFull())
				{
					std::string name = packet->getString();
					addPlayer(name);
				}
				else
				{
					sendMessage("A player tried to join, but the game is full.");
					int destNodeId = network->getLastNodeId();
					Packet *joinFailed = new Packet(msg_join_failed);
						network->sendTo(joinFailed, destNodeId);
					network->getNode(destNodeId)->disconnect();
				}
				break;
			}
			
			case msg_disconnect: {
				int nodeId       = packet->getInt();
				std::string name = packet->getString();
				removePlayer(name);
				network->getNode(nodeId)->disconnect();
				
				sendMessage(name + " has left the game.");
				break;
			}

			default:
				logger.log("Lobby host unhandled msg:  %d\n", packetType);
				break;
		}
		delete packet;
		packet = network->getNextPacket();
	}
}
Example #12
0
bool CLounge::logout(SOCKET sd,
                     CPlayer* player,
                     bool force)
{
    if (force)
    {   // will be logged out with no questions asked
        removePlayer(player, force);
    }
    else
    {
        // XXX
        // if player is not playing in any table,
        //   loggingOut_.push_back(PlayerPtr(player));
        // else 
        //   send CpduLogoutWarning
        removePlayer(player);
    }
    return true;
}
Example #13
0
bool Game::loseLife(Character* character, int life_lost)
{
  character->setLife(character->life() - life_lost);
  if (character->life() <= 0) {
    ui->announce("The " + character->name() + " has perished!");
    removePlayer(character);
    return false;
  }
  return true;
}
Example #14
0
void SetupScreen::playerSwitchRole(std::string uniqueId, std::string name, std::string oldRole, std::string newRole)
{
    PlayerObj player;
    player.uniqueId = uniqueId;
    player.name = name;
    player.role = oldRole;
    removePlayer(player);
    player.role = newRole;
    updatePlayer(player);
}
Example #15
0
//-----------------------------------------------------------------------------------------
//kick the player from the game if he's ran out of money
void dealerLib::kickBrokePlayer()
{
  std::vector<player>::iterator playerIt;

  //iterate through all players and check if they've lost then kick if true
  for(playerIt = m_table.begin();playerIt != m_table.end(); playerIt++)
  {
    if(checkIfLost(*playerIt)) {removePlayer(playerIt);}
  }
}
Example #16
0
bool House::kickPlayer(Player* player, Player* target)
{
	if(!target || target->isRemoved())
		return false;

	HouseTile* houseTile = target->getTile()->getHouseTile();
	if(!houseTile || houseTile->getHouse() != this)
		return false;

	if(player == target)
	{
		removePlayer(target, true);
		return true;
	}

	if(getHouseAccessLevel(player) >= getHouseAccessLevel(target))
	{
		removePlayer(target, false);
		return true;
	}

	return false;
}
Example #17
0
void PlayerSetupDialog::setupUI()
{
    connect(ui->addPlayerBtn, SIGNAL(clicked()), this, SLOT(newPlayer()));
    connect(ui->removePlayerBtn, SIGNAL(clicked()), this, SLOT(removePlayer()));

    connect(ui->newSubviewBtn, SIGNAL(clicked()), this, SLOT(newSubview()));
    connect(ui->delSubviewBtn, SIGNAL(clicked()), this, SLOT(removeSubview()));

    connect(ui->testConnectionBtn, SIGNAL(clicked()), this, SLOT(testConnection()));
    connect(ui->connectBtn, SIGNAL(clicked()), this, SLOT(connectPlayer()));
    connect(ui->autoconnectBox, SIGNAL(toggled(bool)), this, SLOT(autoconBoxChanged(bool)));

    connect(ui->playerListview, SIGNAL(activated(const QModelIndex &)), this, SLOT(playerSelected(const QModelIndex &)));
    connect(ui->playerListview, SIGNAL(clicked(const QModelIndex &)),   this, SLOT(playerSelected(const QModelIndex &)));

    connect(ui->subviewListview, SIGNAL(activated(const QModelIndex &)), this, SLOT(subviewSelected(const QModelIndex &)));
    connect(ui->subviewListview, SIGNAL(clicked(const QModelIndex &)),   this, SLOT(subviewSelected(const QModelIndex &)));

    connect(ui->aphaMaskBrowseBtn, SIGNAL(clicked()), this, SLOT(alphamaskBrowse()));
    connect(ui->keyTLx, SIGNAL(valueChanged(int)), this, SLOT(subviewTopLeftXChanged(int)));
    connect(ui->keyTLy, SIGNAL(valueChanged(int)), this, SLOT(subviewTopLeftYChanged(int)));
    connect(ui->keyTRx, SIGNAL(valueChanged(int)), this, SLOT(subviewTopRightXChanged(int)));
    connect(ui->keyTRy, SIGNAL(valueChanged(int)), this, SLOT(subviewTopRightYChanged(int)));
    connect(ui->keyBLx, SIGNAL(valueChanged(int)), this, SLOT(subviewBottomLeftXChanged(int)));
    connect(ui->keyBLy, SIGNAL(valueChanged(int)), this, SLOT(subviewBottomLeftYChanged(int)));
    connect(ui->keyBRx, SIGNAL(valueChanged(int)), this, SLOT(subviewBottomRightXChanged(int)));
    connect(ui->keyBRy, SIGNAL(valueChanged(int)), this, SLOT(subviewBottomRightYChanged(int)));

    connect(ui->outputX, SIGNAL(valueChanged(int)), this, SLOT(screenXChanged(int)));
    connect(ui->outputY, SIGNAL(valueChanged(int)), this, SLOT(screenYChanged(int)));
    connect(ui->outputWidth, SIGNAL(valueChanged(int)), this, SLOT(screenWChanged(int)));
    connect(ui->outputHeight, SIGNAL(valueChanged(int)), this, SLOT(screenHChanged(int)));

    connect(ui->viewportX, SIGNAL(valueChanged(int)), this, SLOT(viewportXChanged(int)));
    connect(ui->viewportY, SIGNAL(valueChanged(int)), this, SLOT(viewportYChanged(int)));
    connect(ui->viewportWidth, SIGNAL(valueChanged(int)), this, SLOT(viewportWChanged(int)));
    connect(ui->viewportHeight, SIGNAL(valueChanged(int)), this, SLOT(viewportHChanged(int)));

    connect(ui->optIgnoreAR, SIGNAL(toggled(bool)), this, SLOT(ignoreArBoxChanged(bool)));

    connect(ui->aphaMaskBrowseBtn, SIGNAL(clicked()), this, SLOT(alphamaskBrowse()));
    connect(ui->alphaMaskFile, SIGNAL(textChanged(QString)), this, SLOT(showAlphaMaskPreview(QString)));

    connect(ui->brightnessResetBtn, SIGNAL(clicked()), this, SLOT(brightReset()));
    connect(ui->contrastResetBtn, SIGNAL(clicked()), this, SLOT(contReset()));
    connect(ui->hueResetBtn, SIGNAL(clicked()), this, SLOT(hueReset()));
    connect(ui->saturationResetBtn, SIGNAL(clicked()), this, SLOT(satReset()));
}
Example #18
0
bool Server_Game::kickPlayer(int playerId)
{
	QMutexLocker locker(&gameMutex);
	
	Server_Player *playerToKick = players.value(playerId);
	if (!playerToKick)
		return false;
	
	GameEventContainer *gec = prepareGameEvent(Event_Kicked(), -1);
	playerToKick->sendGameEvent(*gec);
	delete gec;
	
	removePlayer(playerToKick);
	
	return true;
}
Example #19
0
bool House::kickPlayer(Player* player, Player* target)
{
	if(!target || target->isRemoved())
		return false;

	HouseTile* houseTile = target->getTile()->getHouseTile();
	if(!houseTile || houseTile->getHouse() != this)
		return false;

	bool self = player == target;
	if(getHouseAccessLevel(player) < getHouseAccessLevel(target) && !self)
		return false;

	removePlayer(target, self);
	return true;
}
Example #20
0
err_t Room::leavePlayer(Player* player)
{
	Player* old = removePlayer(player->pid());
	err_t err = 0;
	if (!old)
	{
		err = MSG_ERR_NOT_IN_ROOM_1003;
	}
	else if (old != player)
	{
		//??
	}
	else
	{
	}
	return err;
}
Example #21
0
void IRoom::playerDoLeaveRoom( stStandPlayer* pp )
{
	// send msg to data svr tell player leave room ;
	if ( pp )
	{
		if ( getDelegate() )
		{
			getDelegate()->onPlayerWillDoLeaveRoom(this,pp) ;
		}
		LOGFMTD("uid = %d , do leave this room ",pp->nUserUID) ;
		removePlayer(pp);
	}
	else
	{
		LOGFMTE("player , not in this room can not do leave room" ) ;
	}
	
}
Example #22
0
//
// Table accepted the player - seat him.
//
void CWaitingList::seatPlayer(CPlayer* player, CTable* table)
{
  // Remove player from waiting list
  bool rc = removePlayer(*player);
  
  // broadcast queue update
  if (rc)
  {
    CpduQueueUpdate pdu;
    pdu.sendQueueServiced(getQueueNumber(), player);
  }
  
  CpduSitting pdu;
  pdu.sendSitting(player,
                  table->getNumber(),
                  table->getPort(),
                  table->getAddr());
}
Example #23
0
void Maps::changeMap(Player* player, int mapid, int pos){
	removePlayer(player);
	player->setMap(mapid);
	player->setMappos(pos);
	player->setType(0);
	player->setChair(0);
	Pos cpos;
	if((unsigned int)pos<info[mapid].Portals.size()){
		cpos.x = info[mapid].Portals[pos].x;
		cpos.y = info[mapid].Portals[pos].y;
	}
	else if(info[mapid].Portals.size() > 0){
		cpos.x = info[mapid].Portals[0].x;
		cpos.y = info[mapid].Portals[0].y;
	}
	else{
		cpos.x = 0;
		cpos.y = 0;
	}
	player->setPos(cpos);
	MapPacket::changeMap(player);
	newMap(player);
}
Example #24
0
void GameManager::handleCollision( Player &player, const char &collisionSign )
{
	// TODO - handle to players that jump against each other - this is a collision.
	switch (collisionSign)
	{
		case FOOD_SIGN:
			player.setPower(player.getPower() + 200);
			break;
		case ARROWS_SIGN:
			player.setArrowsCount(player.getArrowsCount() + 3);
			break;
		case BOOM_SIGN:
			player.setPower(player.getPower() - 750);
			break;
	}

	if (player.getPower() <= 0)
	{
		removePlayer(&player);
	}

	m_gameBoard.printSummary();	
}
Example #25
0
err_t Room::enterPlayer(Player* player)
{
	Player* old = removePlayer(player->pid());
	err_t err = 0;
	if (!old)
	{
		addPlayer(player->pid(),player);
	}
	else if (old == player)
	{
		err = MSG_ERR_ALREADY_IN_1002;
	}
	else//log in different places. to do
	{
		addPlayer(player->pid(), player);
		old;//to do something;
	}
	if (!err)
	{
		player->setChanelId(nCid);
	}
	return err;
}
Example #26
0
void House::removePlayers(bool ignoreInvites)
{
	PlayerVector kickList;
	for(HouseTileList::iterator it = houseTiles.begin(); it != houseTiles.end(); ++it)
	{
		CreatureVector* creatures = (*it)->getCreatures();
		if(!creatures)
			continue;

		Player* player = NULL;
		for(CreatureVector::iterator cit = creatures->begin(); cit != creatures->end(); ++cit)
		{
			if((player = (*cit)->getPlayer()) && !player->isRemoved()
				&& (ignoreInvites || !isInvited(player)))
				kickList.push_back(player);
		}
	}

	if(kickList.empty())
		return;

	for(PlayerVector::iterator it = kickList.begin(); it != kickList.end(); ++it)
		removePlayer((*it), false);
}
Example #27
0
	inline void removePlayer(const std::string& playerName)
		{ removePlayer(getPlayer(playerName)); }
Example #28
0
	inline void removePlayer(const PlayerPtr player)
		{ removePlayer(player ? player->getID() : 0); }
Example #29
0
bool CLounge::logoutCertain(SOCKET sd,
                            CPlayer* player)
{
    removePlayer(player);
    return true;
}
Example #30
0
void removePlayerFromRoom(Room room, Player player) {
    removePlayer(room->playerList, player);
}