Esempio n. 1
0
void GroupObject::changeLeader(Player* player)
{
    mMasterLooter = player->getCharId();
    // we create a new list containing the new hierarchy
    PlayerList tempList;
    tempList.reserve(20);

    tempList.push_back(player); // new leader
    tempList.push_back(getLeader()); // old leader

    // iterate trough old list
    PlayerList::iterator listIt = mMembers.begin() + 1; // starting at position 1 ( 0 is the old leader)

    while(listIt != mMembers.end())
    {
        // if not the new leader (its in position of new list 1 already)
        if((*listIt) != player)
        {
            tempList.push_back((*listIt)); // add to the new list
        }
        ++listIt;
    }

    // do i need this ? =0
    mMembers.empty();

    // assign the new list
    mMembers = tempList;

    // recalculate member indexes
    resetIndexes();

    // send the delta to everyone
    broadcastDeltaResetAll();

    // send the sys message to everyone
    gChatMessageLib->sendGroupSystemMessage(getLeader()->getName(), BString("new_leader"), NULL, this, true);
}