- flash the remote admin player# in lobby to indicate they are the admin user

This commit is contained in:
Mark Vejvoda 2012-06-22 14:30:48 +00:00
parent 0f5cb29919
commit b08e04fa70
7 changed files with 46 additions and 4 deletions

View File

@ -1168,6 +1168,7 @@ void Game::setupPopupMenus(bool checkClientAdminOverrideOnly) {
clientInterface->isMasterServerAdminOverride() == true))) {
if(checkClientAdminOverrideOnly == true) {
gameSettings.setMasterserver_admin(clientInterface->getSessionKey());
gameSettings.setMasterserver_admin_faction_index(clientInterface->getPlayerIndex());
}
//PopupMenu popupMenu;
std::vector<string> menuItems;

View File

@ -88,6 +88,8 @@ private:
int aiAcceptSwitchTeamPercentChance;
int masterserver_admin;
int masterserver_admin_factionIndex;
public:
static string playerDisconnectedText;
@ -128,6 +130,7 @@ public:
factionCRCList.clear();
aiAcceptSwitchTeamPercentChance = 30;
masterserver_admin = -1;
masterserver_admin_factionIndex = -1;
}
// default copy constructor will do fine, and will maintain itself ;)
@ -264,6 +267,9 @@ public:
int getMasterserver_admin() const { return masterserver_admin;}
void setMasterserver_admin(int value) { masterserver_admin = value; }
int getMasterserver_admin_faction_index() const { return masterserver_admin_factionIndex;}
void setMasterserver_admin_faction_index(int value) { masterserver_admin_factionIndex = value; }
string toString() const {
string result = "";
@ -310,6 +316,7 @@ public:
result += "aiAcceptSwitchTeamPercentChance = " + intToStr(aiAcceptSwitchTeamPercentChance) + "\n";
result += "masterserver_admin = " + intToStr(masterserver_admin) + "\n";
result += "masterserver_admin_factionIndex = " + intToStr(masterserver_admin_factionIndex) + "\n";
return result;
}
@ -434,6 +441,8 @@ public:
gameSettingsNode->addAttribute("aiAcceptSwitchTeamPercentChance",intToStr(aiAcceptSwitchTeamPercentChance), mapTagReplacements);
// int masterserver_admin;
gameSettingsNode->addAttribute("masterserver_admin",intToStr(masterserver_admin), mapTagReplacements);
gameSettingsNode->addAttribute("masterserver_admin_factionIndex",intToStr(masterserver_admin_factionIndex), mapTagReplacements);
}
void loadGame(const XmlNode *rootNode) {
@ -559,6 +568,10 @@ public:
aiAcceptSwitchTeamPercentChance = gameSettingsNode->getAttribute("aiAcceptSwitchTeamPercentChance")->getIntValue();
// int masterserver_admin;
masterserver_admin = gameSettingsNode->getAttribute("masterserver_admin")->getIntValue();
if(gameSettingsNode->hasAttribute("masterserver_admin_factionIndex") == true) {
masterserver_admin_factionIndex = gameSettingsNode->getAttribute("masterserver_admin_factionIndex")->getIntValue();
}
}
};

View File

@ -1745,6 +1745,8 @@ void MenuStateConnectedGame::render() {
renderer.renderListBox(&listBoxPlayerStatus);
NetworkManager &networkManager= NetworkManager::getInstance();
ClientInterface *clientInterface = networkManager.getClientInterface();
for(int i = 0; i < GameConstants::maxPlayers; ++i) {
if(listBoxControls[i].getSelectedItemIndex() == ctNetworkUnassigned) {
//printf("Player #%d [%s] control = %d\n",i,labelPlayerNames[i].getText().c_str(),listBoxControls[i].getSelectedItemIndex());
@ -1763,8 +1765,26 @@ void MenuStateConnectedGame::render() {
if(crcPlayerTextureCache[i] != NULL) {
// Render the player # label the player's color
//printf("clientInterface->getGameSettings()->getMasterserver_admin_faction_index() = %d\n",clientInterface->getGameSettings()->getMasterserver_admin_faction_index());
Vec3f playerColor = crcPlayerTextureCache[i]->getPixmap()->getPixel3f(0, 0);
renderer.renderLabel(&labelPlayers[i],&playerColor);
if(clientInterface != NULL &&
clientInterface->getGameSettings() != NULL &&
clientInterface->getGameSettings()->getMasterserver_admin() > 0 &&
clientInterface->getGameSettings()->getMasterserver_admin_faction_index() == i) {
if(difftime(time(NULL),timerLabelFlash) < 1) {
renderer.renderLabel(&labelPlayers[i],&playerColor);
}
else {
Vec4f flashColor=Vec4f(playerColor.x, playerColor.y, playerColor.z, 0.45f);
renderer.renderLabel(&labelPlayers[i],&flashColor);
}
}
else {
renderer.renderLabel(&labelPlayers[i],&playerColor);
}
// Blend the color with white so make it more readable
//Vec4f newColor(1.f, 1.f, 1.f, 0.57f);
@ -1816,9 +1836,6 @@ void MenuStateConnectedGame::render() {
}
else {
renderer.renderLabel(&labelDataSynchInfo,&WHITE);
if(difftime(time(NULL),timerLabelFlash) > 2) {
timerLabelFlash = time(NULL);
}
}
renderer.renderLabel(&labelMap);
@ -1915,6 +1932,10 @@ void MenuStateConnectedGame::render() {
}
renderer.renderChatManager(&chatManager);
renderer.renderConsole(&console,showFullConsole,true);
if(difftime(time(NULL),timerLabelFlash) > 2) {
timerLabelFlash = time(NULL);
}
}
catch(const std::exception &ex) {
char szBuf[8096]="";

View File

@ -3213,6 +3213,7 @@ void MenuStateCustomGame::loadGameSettings(GameSettings *gameSettings,bool force
(serverInterface->getSlot(i)->getConnectedTime() > 0 && serverInterface->getSlot(i)->getConnectedTime() < clientConnectedTime)) {
clientConnectedTime = serverInterface->getSlot(i)->getConnectedTime();
gameSettings->setMasterserver_admin(serverInterface->getSlot(i)->getSessionKey());
gameSettings->setMasterserver_admin_faction_index(serverInterface->getSlot(i)->getPlayerIndex());
labelGameName.setText(serverInterface->getSlot(i)->getName()+" controls");
//printf("slot = %d, admin key [%d] slot connected time[%lu] clientConnectedTime [%lu]\n",i,gameSettings->getMasterserver_admin(),serverInterface->getSlot(i)->getConnectedTime(),clientConnectedTime);
}

View File

@ -182,6 +182,7 @@ NetworkMessageLaunch::NetworkMessageLaunch() {
}
data.aiAcceptSwitchTeamPercentChance = 0;
data.masterserver_admin = -1;
data.masterserver_admin_factionIndex = -1;
}
NetworkMessageLaunch::NetworkMessageLaunch(const GameSettings *gameSettings,int8 messageType) {
@ -244,6 +245,7 @@ NetworkMessageLaunch::NetworkMessageLaunch(const GameSettings *gameSettings,int8
data.aiAcceptSwitchTeamPercentChance = gameSettings->getAiAcceptSwitchTeamPercentChance();
data.masterserver_admin = gameSettings->getMasterserver_admin();
data.masterserver_admin_factionIndex = gameSettings->getMasterserver_admin_faction_index();
data.scenario = gameSettings->getScenario();
}
@ -294,6 +296,7 @@ void NetworkMessageLaunch::buildGameSettings(GameSettings *gameSettings) const {
gameSettings->setAiAcceptSwitchTeamPercentChance(data.aiAcceptSwitchTeamPercentChance);
gameSettings->setMasterserver_admin(data.masterserver_admin);
gameSettings->setMasterserver_admin_faction_index(data.masterserver_admin_factionIndex);
gameSettings->setScenario(data.scenario.getString());
}

View File

@ -237,6 +237,7 @@ private:
int8 aiAcceptSwitchTeamPercentChance;
int32 masterserver_admin;
int32 masterserver_admin_factionIndex;
NetworkString<maxStringSize> scenario;
};

View File

@ -1296,6 +1296,8 @@ void ServerInterface::update() {
sendTextMessage(sMsg,-1, true,"");
this->gameSettings.setMasterserver_admin(slots[iFirstConnectedSlot]->getSessionKey());
this->gameSettings.setMasterserver_admin_faction_index(slots[iFirstConnectedSlot]->getPlayerIndex());
this->broadcastGameSetup(&this->gameSettings);
}
}