void GroupManager::_processIsmGroupLootMasterResponse(Message* message) { gLogger->logMsg("_processIsmGroupLootMasterResponse"); PlayerObject* playerObject = gWorldManager->getPlayerByAccId(message->getUint32()); // the player whos group_id has changed if(playerObject == NULL) { gLogger->logMsg("GroupManager::_processIsmGroupLootMasterResponse PlayerAccId not found"); return; } //send the SUI gLogger->logMsg("ok\n"); PlayerList inRangeMembers = playerObject->getInRangeGroupMembers(true); PlayerList::iterator it = inRangeMembers.begin(); BStringVector namesArray; while(it != inRangeMembers.end()) { namesArray.push_back((*it)->getFirstName().getAnsi()); ++it; } gUIManager->createNewPlayerSelectListBox(playerObject,"handleSetLootMaster","@group:master_looter_sui_title","@group:set_loot_type_text",namesArray,inRangeMembers,playerObject); }
void MyAvatarLabel::paintEvent(QPaintEvent*) { QPainter painter(this); if(transparent) painter.setOpacity(0.4); else painter.setOpacity(1.0); //hide avatar if player is on ignore list boost::shared_ptr<Game> currentGame = myW->myStartWindow->getSession()->getCurrentGame(); PlayerListConstIterator it_c; int seatPlace; PlayerList seatsList = currentGame->getSeatsList(); for (seatPlace=0,it_c=seatsList->begin(); it_c!=seatsList->end(); ++it_c, seatPlace++) { if(seatPlace == myId) { if(!playerIsOnIgnoreList(QString::fromUtf8((*it_c)->getMyName().c_str()))) { painter.drawPixmap(0,0,myPixmap); return; } else if(myW->getMyConfig()->readConfigInt("DontHideAvatarsOfIgnored")) { painter.drawPixmap(0,0,myPixmap); return; } } } }
int set_descriptors() { FD_ZERO(&in_set); FD_ZERO(&out_set); int max_socket = ircSocket; // We want IO from irc FD_SET(ircSocket, &in_set); if (!ircOutBuf.empty()) { FD_SET(ircSocket, &out_set); } // And IO from players for (PlayerListIterator i = playerList.begin(); i != playerList.end(); ++i) { if ((*i)->socket != NO_SOCKET) { max_socket = max ((*i)->socket, max_socket); FD_SET((*i)->socket, &in_set); if (!(*i)->out_buf.empty()) { FD_SET((*i)->socket, &out_set); } } } return max_socket; }
void MyAvatarLabel::refreshTooltips() { boost::shared_ptr<Game> currentGame = myW->myStartWindow->getSession()->getCurrentGame(); PlayerListConstIterator it_c; int seatPlace; PlayerList seatsList = currentGame->getSeatsList(); for (seatPlace=0,it_c=seatsList->begin(); it_c!=seatsList->end(); ++it_c, seatPlace++) { if((*it_c)->getMyStayOnTableStatus() == TRUE || (*it_c)->getMyActiveStatus()) { bool computerPlayer = false; if((*it_c)->getMyType() == PLAYER_TYPE_COMPUTER) { computerPlayer = true; } if(!computerPlayer && getPlayerTip(QString::fromUtf8((*it_c)->getMyName().c_str()))!="" && seatPlace!=0) { myW->playerTipLabelArray[(*it_c)->getMyID()]->setText(QString("<a style='text-decoration: none; color: #"+myW->getMyGameTableStyle()->getPlayerInfoHintTextColor()+"; font-size: 14px; font-weight: bold; font-family:serif;' href=\'")+QString::fromUtf8((*it_c)->getMyName().c_str())+"\'>i</a>"); myW->playerTipLabelArray[(*it_c)->getMyID()]->setToolTip( getPlayerTip(QString::fromUtf8((*it_c)->getMyName().c_str())) ); myW->playerAvatarLabelArray[(*it_c)->getMyID()]->setToolTip( getPlayerTip(QString::fromUtf8((*it_c)->getMyName().c_str())) ); } else { myW->playerTipLabelArray[(*it_c)->getMyID()]->setText(""); myW->playerTipLabelArray[(*it_c)->getMyID()]->setToolTip(""); myW->playerAvatarLabelArray[(*it_c)->getMyID()]->setToolTip(""); } } else { myW->playerTipLabelArray[(*it_c)->getMyID()]->setText(""); myW->playerTipLabelArray[(*it_c)->getMyID()]->setToolTip(""); myW->playerAvatarLabelArray[(*it_c)->getMyID()]->setToolTip(""); } } refreshStars(); }
void QBSoundWin::stopAll() { //printf("stopAll\n"); QBSoundLocker locker(&mMutex); #ifdef __USE_OGG_VORBIS__ { PlayerList::iterator it = streamTrack.begin(); while(it != streamTrack.end()) { delete (*it).second; ++it; } streamTrack.clear(); } { EffectList::iterator it = sharedList().begin(); while(it != sharedList().end()) { delete (*it).second; ++it; } sharedList().clear(); } #endif return QBSound::stopAll(); }
void Turn::play() { game->setState(TURN); game->getDeck()->pick(); game->getCardsOnTable()[3] = game->getDeck()->pick(); game->setCardsOnTableCount(4); PlayerList *playerList = game->getPlayerList(); playerList->setNextPlayer(1); playersToPlay = playerList->getPlayersInGameCount(); game->setCurrentBet(0); bool eos = false; everyonePlayed = false; currentPlayer = 0; std::cout << "Turn" << std::endl; while(!eos) { Player *player = playerList->getNext(); player->play(); playerPlayed(); eos = canEndState(); } endOfState(); }
void MyAvatarLabel::reportBadAvatar() { boost::shared_ptr<Game> currentGame = myW->getSession()->getCurrentGame(); int j=0; PlayerListConstIterator it_c; PlayerList seatList = currentGame->getSeatsList(); for (it_c=seatList->begin(); it_c!=seatList->end(); ++it_c) { if(myId == j) { QString avatar = QString::fromUtf8((*it_c)->getMyAvatar().c_str()); if(!avatar.isEmpty()) { QString nick = QString::fromUtf8((*it_c)->getMyName().c_str()); int ret = MyMessageBox::question(this, tr("PokerTH - Question"), tr("Are you sure you want to report the avatar of \"%1\" as inappropriate?").arg(nick), QMessageBox::Yes | QMessageBox::No); if(ret == QMessageBox::Yes) { QFileInfo fi(avatar); myW->getSession()->reportBadAvatar((*it_c)->getMyUniqueID(), fi.baseName().toStdString()); } } break; } j++; } }
//====================================================================================================================== // // Broadcasts a message to players in group and in range of the given object, used by tutorial and other instances // void MessageLib::_sendToInstancedPlayersUnreliable(Message* message,uint16 priority, const PlayerObject* const playerObject) const { if (!_checkPlayer(playerObject)) { mMessageFactory->DestroyMessage(message); return; } PlayerList const inRangeMembers = playerObject->getInRangeGroupMembers(true); PlayerList::const_iterator playerIt = inRangeMembers.begin(); while (playerIt != inRangeMembers.end()) { if (_checkPlayer(*playerIt)) { // Clone the message. mMessageFactory->StartMessage(); mMessageFactory->addData(message->getData(),message->getSize()); ((*playerIt)->getClient())->SendChannelAUnreliable(mMessageFactory->EndMessage(),(*playerIt)->getAccountId(),CR_Client,static_cast<uint8>(priority)); } ++playerIt; } mMessageFactory->DestroyMessage(message); }
void Mud::removeInactivePlayers() { PlayerList toRemove = PlayerList(); for (auto iterator : mudPlayers) { // Proceed only if the player is not connected and is closing. if (!iterator->checkConnection() || iterator->closing) { // Add the player to the list of players that have to be removed. toRemove.insert(iterator); } } for (auto iterator = toRemove.begin(); iterator != toRemove.end(); ++iterator) { // Get the player at the given position. Player * player = *iterator; // Log the action of removing. Logger::log(LogLevel::Global, "Removing inactive player : " + player->getName()); // Only if the player has successfully logged in, save its state on DB. if (player->logged_in) { SQLiteDbms::instance().beginTransaction(); player->updateOnDB(); SQLiteDbms::instance().endTransaction(); } // Remove the player from the list of players. remPlayer(player); // Delete the player. delete (player); } }
void players_process_lines() { for (PlayerListIterator i = playerList.begin(); i != playerList.end(); ++i) { if ((*i)->socket != NO_SOCKET) { player_process_lines((*i)); } } }
void QBSoundWin::stopEffect(unsigned int nSoundId) { QBSoundLocker locker(&mMutex,"stopEffect"); PlayerList::iterator p = streamTrack.find(nSoundId); if (p != streamTrack.end()) { findPlayer(nSoundId)->stop(); } }
bool QBSoundWin::streamIsPlaying(int track) { QBSoundLocker locker(&mMutex,"streamStop"); PlayerList::iterator p = streamTrack.find(track); if (p == streamTrack.end()) { return false; } return findPlayer(track)->isPlaying(); }
bool LfgGroup::SelectRandomDungeon() { m_originalInfo = m_dungeonInfo; m_lfgFlags |= LFG_GRP_RANDOM; LfgLocksMap *groupLocks = GetLocksList(); std::vector<LFGDungeonEntry const*> options; LFGDungeonEntry const *currentRow = NULL; //Possible dungeons LfgDungeonList* list = sLfgMgr.GetRandomOptions(m_dungeonInfo->ID); for(LfgDungeonList::iterator itr = list->begin(); itr != list->end(); ++itr) options.push_back(*itr); //And now get only without locks for(LfgLocksMap::iterator itr = groupLocks->begin(); itr != groupLocks->end(); ++itr) { for(LfgLocksList::iterator itr2 = itr->second->begin(); itr2 != itr->second->end(); ++itr2) { for(std::vector<LFGDungeonEntry const*>::iterator itrDung = options.begin(); itrDung != options.end(); ++itrDung) { if ((*itrDung)->ID != (*itr2)->dungeonInfo->ID) continue; DungeonInfo* dungeonInfo = sLfgMgr.GetDungeonInfo((*itr2)->dungeonInfo->ID); if (dungeonInfo->locked || (*itr2)->lockType != LFG_LOCKSTATUS_RAID_LOCKED) { options.erase(itrDung); break; } } } } //This should not happen if (options.empty()) { PlayerList toRemove; for(member_witerator itr = m_memberSlots.begin(); itr != m_memberSlots.end(); ++itr) { Player *plr = sObjectMgr.GetPlayer(itr->guid); if (!plr) continue; sLfgMgr.SendLfgUpdatePlayer(plr, LFG_UPDATETYPE_GROUP_DISBAND); sLog.outError("LfgMgr: Cannot find any random dungeons for player %s", plr->GetName()); plr->GetSession()->SendNotification("Cannot find any random dungeons for this group, you have to find new group. We are sorry"); toRemove.insert(plr->GetGUID()); } for(PlayerList::iterator itr = toRemove.begin(); itr != toRemove.end(); ++itr) RemoveMember(*itr, 0); toRemove.clear(); sLfgMgr.AddGroupToDelete(this); return false; } //Select dungeon, there should be also bind check uint32 tmp = time(NULL)%options.size(); m_dungeonInfo = options[tmp]; return true; }
IrcPlayer *get_player_from_nick(string nick) { for (PlayerListIterator i = playerList.begin(); i != playerList.end(); ++i) { if ((*i)->socket != NO_SOCKET) { if (boost::iequals((*i)->nick, nick)) { return (*i); } } } return NULL; }
static QBStreamSound* findPlayer(int track) { QBStreamSound* player=NULL; PlayerList::iterator p = streamTrack.find(track); if (p != streamTrack.end()) { player = p->second; } else { player = new QBStreamSound(); streamTrack.insert(make_pair(track,player)); } return player; }
/** Creates 2 groups: one from winners and one from loosers */ QList< Group* > SwissGroup::split( ) const { if ( _matches.count() < 2 ) { // nothing to split return QList< Group* >(); } QList< Group* > ret; PlayerList w = winners(), l = loosers(); // number of winnders and loosers can be non-even, when group consists, // for example, from 6 persons. We need to add 'bye' players if ( w.count() & 1 ) w << byePlayer; if ( l.count() & 1 ) l << byePlayer; qDebug() << "Winners:"; for ( int i = 0; i < w.count(); i ++ ) { qDebug() << w.at( i ).name(); } qDebug() << "Loosers:"; for ( int i = 0; i < l.count(); i ++ ) { qDebug() << l.at( i ).name(); } // winners group if ( !isPlayerListByed( w ) ) { ret << new SwissGroup( _fromPlace, _stage + 1, w ); } // loosers group if ( !isPlayerListByed( l ) ) { ret << new SwissGroup( _fromPlace + _players.count() / 2, _stage + 1, l ); } foreach( Group *g, ret ) { const TournAlgo *a = _tournData->algo(); Q_CHECK_PTR( a ); g->setTournData( _tournData ); g->setQualif( isQualif() ); dynamic_cast<SwissGroup*>(g)->permuteMatches( a->breakAlgo() ); // if there is at least one bye player, we should notify that // at least one game is fakely played. if ( g->const_players().contains( byePlayer ) ) { _tournData->groupChanged( g ); } } return ret; }
std::shared_ptr<PlayerController> CreatePlayerController(int numPlayers) { const int numBills = 5; PlayerList players; for (int playerId = 0; playerId < numPlayers; ++playerId) { auto timer = std::make_unique<TimerObject>(playerId); players.push_back(std::make_unique<Player>(playerId, std::move(timer), numBills)); } return std::make_shared<PlayerController>(players); }
/** calls updateMatchCell for each match cell ;) */ void RatingsTable::updateMatchCells( ) { PlayerList players = _group->const_validPlayers(); int plCnt = players.count(); for ( int i = 1; i < rowCount(); i ++ ) { for ( int j = 1; j < plCnt + 1; j ++ ) { if ( i != j ) { updateMatchCell( i, j ); } } } }
void remove_disconnected_players() { PlayerListIterator i = playerList.begin (); while (i != playerList.end ()) { IrcPlayer *player = (*i); PlayerListIterator prev = i; i++; if (player->socket == NO_SOCKET) { say_to(player->nick, "You are now disconnected from uMUD"); playerList.erase(prev); delete player; player = 0; } } /* end of looping through players */ }
void MyAvatarLabel::startEditTip() { boost::shared_ptr<Game> currentGame = myW->getSession()->getCurrentGame(); int j=0; PlayerListConstIterator it_c; PlayerList seatList = currentGame->getSeatsList(); for (it_c=seatList->begin(); it_c!=seatList->end(); ++it_c) { if(myId == j) { QString nick = QString::fromUtf8((*it_c)->getMyName().c_str()); startChangePlayerTip(nick); break; } j++; } }
void close_comms() { // Disconnect players for (PlayerListIterator i = playerList.begin(); i != playerList.end(); ++i) { if ((*i)->socket != NO_SOCKET) { close((*i)->socket); delete (*i); } } playerList.clear(); // Disconnect irc if (ircSocket != NO_SOCKET) { close(ircSocket); } }
void Preflop::play() { cout << "TIMES : " << times++ << endl; game->getDeck()->shuffle(); game->setState(PFLOP); game->setCardsOnTableCount(0); Pot *pot = new Pot(0); PlayerList *playerList = game->getPlayerList(); list<Player *> players = playerList->getPlayers(); int sum = 0; for (list<Player*>::iterator p = players.begin(); p != players.end();) { pot->registerPlayer(*p); sum += (*p)->getBankRoll(); ++p; } game->setCurrentPot(pot); game->getPots()->push_back(pot); playerList->initPlayersInGame(); playersToPlay = playerList->getPlayersInGameCount(); playerList->setNextPlayer(1); playerList->getNext()->paySmallBlind(); playerList->getNext()->payBigBlind(); game->setCurrentBet(game->getBigBlindAmount()); bool eos = false; everyonePlayed = false; currentPlayer = 0; Player *player; for (int i = 0; i < playerList->getPlayersInGameCount(); i++) { player = playerList->getNext(); sum += player->getBankRoll(); player->setHand(game->getDeck()->pick(), game->getDeck()->pick()); } while (!eos) { player = playerList->getNext(); player->play(); playerPlayed(); eos = canEndState(); } endOfState(); }
static DWORD WINAPI LoaderThreadProc(LPVOID vdParam) { QBSoundWin* snd = (QBSoundWin*)vdParam; bool r=false; while (!r) { { QBSoundLocker locker(&snd->mMutex); PlayerList::iterator it = streamTrack.begin(); while(it != streamTrack.end()) { (*it).second->streamLoad(); ++it; } r = snd->mThreadEnd; } Sleep(10); } }
/** * Asks user to select a file with players in a plain text format: * Player, rating\nPlayer2, rating\n etc... */ void PlayerTable::mouseDoubleClickEvent( QMouseEvent * ) { QString fName = QFileDialog::getOpenFileName(this, tr("Open players list file"), QDir::homePath(), tr("Txt Files (*.txt)")); if ( !fName.isNull() ) { PlayerList players = loadPlayerList( fName ); if ( players.count() > 0 ) { setPlayerList( players ); } else { QMessageBox msg; msg.setText( tr( "I cannot find any player in '" ) + fName + "'" ); msg.exec(); } } }
/** should be called in constructor for basic setup of * table cells. */ void RatingsTable::setupCells() { PlayerList players = _group->const_validPlayers(); int plCnt = players.count(); setRowCount( plCnt + 1 ); setColumnCount( plCnt + 1 + 1 ); // 1 column for total rating results for ( int i = 0; i < rowCount(); i ++ ) { for ( int j = 0; j < plCnt + 1; j ++ ) { QTableWidgetItem *item = new QTableWidgetItem( ); QString text; if ( i == j ) { item->setBackground( palette().brush( QPalette::Disabled, QPalette::Background ) ); if ( i == 0 ) { text = _group->name(); } item->setFlags( Qt::NoItemFlags ); } else if ( i == 0 ) { // 0th row text = players.at( j - 1 ).name(); item->setFlags( Qt::NoItemFlags ); } else if ( j == 0 ) { // 0th column Player p = players.at( i - 1 ); text = p.name(); text += " (" + QString::number( p.rating(), 'f', 1 ) + ")"; item->setFlags( Qt::NoItemFlags ); } else { item->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled ); } item->setText( text ); setItem( i, j, item ); } QTableWidgetItem *item = new QTableWidgetItem( ); if ( i == 0 ) { item->setText( tr( "New rating" ) ); } item->setFlags( Qt::NoItemFlags ); setItem( i, plCnt + 1, item ); } }
bool LfgGroup::RemoveOfflinePlayers() // Return true if group is empty after check { sLfgMgr.LfgLog("Remove Offline %u, premade %u", GetId(), premadePlayers.empty() ? 0 : 1); if (m_memberSlots.empty()) { sLfgMgr.LfgLog("Group %u add to delete", GetId()); sLfgMgr.AddGroupToDelete(this); return true; } PlayerList toRemove; for(member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr) { sLfgMgr.LfgLog("guid %u", citr->guid); Player *plr = sObjectMgr.GetPlayer(citr->guid); if (!plr || (!plr->GetSession() && !plr->IsBeingTeleported()) || (plr->GetGroup() && plr->GetGroup() != this && plr->GetGroup()->isLfgGroup() && ((LfgGroup*)plr->GetGroup())->IsInDungeon())) { sLfgMgr.LfgLog("Add to remove"); toRemove.insert(citr->guid); } } for(PlayerList::iterator itr = toRemove.begin(); itr != toRemove.end(); ++itr) { sLfgMgr.LfgLog("Check for premade %u", *itr); PlayerList::iterator premade = premadePlayers.find(*itr); if(premade != premadePlayers.end()) { sLfgMgr.LfgLog("premade yes"); for(PlayerList::iterator prm = premadePlayers.begin(); prm != premadePlayers.end(); ++prm) { Player *plr = sObjectMgr.GetPlayer(*prm); if(!plr || !plr->GetSession()) continue; Group* group = plr->GetGroup(); if(group) { sLfgMgr.RemoveFromQueue(plr, false); return true; } } for(PlayerList::iterator prm = premadePlayers.begin(); prm != premadePlayers.end(); ++prm) RemoveMember(*prm, 0); } } for(PlayerList::iterator itr = toRemove.begin(); itr != toRemove.end(); ++itr) { sLfgMgr.LfgLog("Remove %u", *itr); RemoveMember(*itr, 0); } toRemove.clear(); //flush empty group if (GetMembersCount() == 0) { sLfgMgr.LfgLog("Group %u add to delete 2", GetId()); sLfgMgr.AddGroupToDelete(this); return true; } return false; }
void QBSoundMac::streamReset() { QBSoundLocker locker(&mMutex,"streamReset"); streamTrack.clear(); // PlayerList::iterator it = streamTrack.begin(); // while(it != streamTrack.end()) { // ++it; // } }
int Map::handleDeadPlayers () { int deadPlayers = 0; PlayerList list = _players; for (PlayerListIter i = list.begin(); i != list.end(); ++i) { Player* p = *i; if (!p->isDead()) { continue; } const ClientId clientId = p->getClientId(); info(LOG_MAP, "player " + p->getName() + " is dead"); p->onDeath(); disconnect(clientId); ++deadPlayers; } return deadPlayers; }
void Game::injectJoinAccept(NetworkMessage::JoinAccept *message){ mServerJoined = true; PlayerList *pl = message->getPlayerList(); OgrePlayer *tmp; mBombManager = new BombManager(mWorld); Ogre::LogManager::getSingletonPtr()->logMessage("Creating Local Map"); mLocalMap = new LocalMap( mWorld, mPlayerList, mBombManager, message->getMapHeight(), message->getMapWidth(), message->getSeed() ); Ogre::LogManager::getSingletonPtr()->logMessage("Filling player list"); for(unsigned int i = 0; i < pl->size(); i++){ if((*pl)[i]->getNickname() == mNickname){ Ogre::LogManager::getSingletonPtr()->logMessage("Creating Local Player"); mLocalPlayer = new LocalPlayer(mNickname, mWorld, mBombManager, mCameraManager); tmp = mLocalPlayer; } else tmp = new RemotePlayer((*pl)[i]->getNickname(), mWorld, mBombManager); tmp->setStartingPosition( (*pl)[i]->getX(), (*pl)[i]->getY(), (*pl)[i]->getZ() ); mPlayerList->addPlayer(tmp); } mLocalPlayer->setPlayerEventListener(this); mGameSetUp = true; }
/** Update total rating for each player */ void RatingsTable::updateTotalRatings() { PlayerList players = _group->const_validPlayers(); int plCnt = players.count(); int col = plCnt + 1; for ( int i = 1; i < rowCount(); i ++ ) { Player p = players.at( i - 1 ); double earned = _group->earnedRating( p ); double total = p.rating() + earned; QString text; text += QString().setNum( total, 'f', 1 ); text += " (+" + QString().setNum( earned, 'f', 1 ) + ")"; item( i, col )->setText( text ); item( i, col )->setBackground( SPRING_GREEN1 ); } }