- 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))) { clientInterface->isMasterServerAdminOverride() == true))) {
if(checkClientAdminOverrideOnly == true) { if(checkClientAdminOverrideOnly == true) {
gameSettings.setMasterserver_admin(clientInterface->getSessionKey()); gameSettings.setMasterserver_admin(clientInterface->getSessionKey());
gameSettings.setMasterserver_admin_faction_index(clientInterface->getPlayerIndex());
} }
//PopupMenu popupMenu; //PopupMenu popupMenu;
std::vector<string> menuItems; std::vector<string> menuItems;

View File

@@ -88,6 +88,8 @@ private:
int aiAcceptSwitchTeamPercentChance; int aiAcceptSwitchTeamPercentChance;
int masterserver_admin; int masterserver_admin;
int masterserver_admin_factionIndex;
public: public:
static string playerDisconnectedText; static string playerDisconnectedText;
@@ -128,6 +130,7 @@ public:
factionCRCList.clear(); factionCRCList.clear();
aiAcceptSwitchTeamPercentChance = 30; aiAcceptSwitchTeamPercentChance = 30;
masterserver_admin = -1; masterserver_admin = -1;
masterserver_admin_factionIndex = -1;
} }
// default copy constructor will do fine, and will maintain itself ;) // default copy constructor will do fine, and will maintain itself ;)
@@ -264,6 +267,9 @@ public:
int getMasterserver_admin() const { return masterserver_admin;} int getMasterserver_admin() const { return masterserver_admin;}
void setMasterserver_admin(int value) { masterserver_admin = value; } 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 toString() const {
string result = ""; string result = "";
@@ -310,6 +316,7 @@ public:
result += "aiAcceptSwitchTeamPercentChance = " + intToStr(aiAcceptSwitchTeamPercentChance) + "\n"; result += "aiAcceptSwitchTeamPercentChance = " + intToStr(aiAcceptSwitchTeamPercentChance) + "\n";
result += "masterserver_admin = " + intToStr(masterserver_admin) + "\n"; result += "masterserver_admin = " + intToStr(masterserver_admin) + "\n";
result += "masterserver_admin_factionIndex = " + intToStr(masterserver_admin_factionIndex) + "\n";
return result; return result;
} }
@@ -434,6 +441,8 @@ public:
gameSettingsNode->addAttribute("aiAcceptSwitchTeamPercentChance",intToStr(aiAcceptSwitchTeamPercentChance), mapTagReplacements); gameSettingsNode->addAttribute("aiAcceptSwitchTeamPercentChance",intToStr(aiAcceptSwitchTeamPercentChance), mapTagReplacements);
// int masterserver_admin; // int masterserver_admin;
gameSettingsNode->addAttribute("masterserver_admin",intToStr(masterserver_admin), mapTagReplacements); gameSettingsNode->addAttribute("masterserver_admin",intToStr(masterserver_admin), mapTagReplacements);
gameSettingsNode->addAttribute("masterserver_admin_factionIndex",intToStr(masterserver_admin_factionIndex), mapTagReplacements);
} }
void loadGame(const XmlNode *rootNode) { void loadGame(const XmlNode *rootNode) {
@@ -559,6 +568,10 @@ public:
aiAcceptSwitchTeamPercentChance = gameSettingsNode->getAttribute("aiAcceptSwitchTeamPercentChance")->getIntValue(); aiAcceptSwitchTeamPercentChance = gameSettingsNode->getAttribute("aiAcceptSwitchTeamPercentChance")->getIntValue();
// int masterserver_admin; // int masterserver_admin;
masterserver_admin = gameSettingsNode->getAttribute("masterserver_admin")->getIntValue(); 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); renderer.renderListBox(&listBoxPlayerStatus);
NetworkManager &networkManager= NetworkManager::getInstance();
ClientInterface *clientInterface = networkManager.getClientInterface();
for(int i = 0; i < GameConstants::maxPlayers; ++i) { for(int i = 0; i < GameConstants::maxPlayers; ++i) {
if(listBoxControls[i].getSelectedItemIndex() == ctNetworkUnassigned) { if(listBoxControls[i].getSelectedItemIndex() == ctNetworkUnassigned) {
//printf("Player #%d [%s] control = %d\n",i,labelPlayerNames[i].getText().c_str(),listBoxControls[i].getSelectedItemIndex()); //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) { if(crcPlayerTextureCache[i] != NULL) {
// Render the player # label the player's color // 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); 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 // Blend the color with white so make it more readable
//Vec4f newColor(1.f, 1.f, 1.f, 0.57f); //Vec4f newColor(1.f, 1.f, 1.f, 0.57f);
@@ -1816,9 +1836,6 @@ void MenuStateConnectedGame::render() {
} }
else { else {
renderer.renderLabel(&labelDataSynchInfo,&WHITE); renderer.renderLabel(&labelDataSynchInfo,&WHITE);
if(difftime(time(NULL),timerLabelFlash) > 2) {
timerLabelFlash = time(NULL);
}
} }
renderer.renderLabel(&labelMap); renderer.renderLabel(&labelMap);
@@ -1915,6 +1932,10 @@ void MenuStateConnectedGame::render() {
} }
renderer.renderChatManager(&chatManager); renderer.renderChatManager(&chatManager);
renderer.renderConsole(&console,showFullConsole,true); renderer.renderConsole(&console,showFullConsole,true);
if(difftime(time(NULL),timerLabelFlash) > 2) {
timerLabelFlash = time(NULL);
}
} }
catch(const std::exception &ex) { catch(const std::exception &ex) {
char szBuf[8096]=""; 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)) { (serverInterface->getSlot(i)->getConnectedTime() > 0 && serverInterface->getSlot(i)->getConnectedTime() < clientConnectedTime)) {
clientConnectedTime = serverInterface->getSlot(i)->getConnectedTime(); clientConnectedTime = serverInterface->getSlot(i)->getConnectedTime();
gameSettings->setMasterserver_admin(serverInterface->getSlot(i)->getSessionKey()); gameSettings->setMasterserver_admin(serverInterface->getSlot(i)->getSessionKey());
gameSettings->setMasterserver_admin_faction_index(serverInterface->getSlot(i)->getPlayerIndex());
labelGameName.setText(serverInterface->getSlot(i)->getName()+" controls"); 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); //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.aiAcceptSwitchTeamPercentChance = 0;
data.masterserver_admin = -1; data.masterserver_admin = -1;
data.masterserver_admin_factionIndex = -1;
} }
NetworkMessageLaunch::NetworkMessageLaunch(const GameSettings *gameSettings,int8 messageType) { NetworkMessageLaunch::NetworkMessageLaunch(const GameSettings *gameSettings,int8 messageType) {
@@ -244,6 +245,7 @@ NetworkMessageLaunch::NetworkMessageLaunch(const GameSettings *gameSettings,int8
data.aiAcceptSwitchTeamPercentChance = gameSettings->getAiAcceptSwitchTeamPercentChance(); data.aiAcceptSwitchTeamPercentChance = gameSettings->getAiAcceptSwitchTeamPercentChance();
data.masterserver_admin = gameSettings->getMasterserver_admin(); data.masterserver_admin = gameSettings->getMasterserver_admin();
data.masterserver_admin_factionIndex = gameSettings->getMasterserver_admin_faction_index();
data.scenario = gameSettings->getScenario(); data.scenario = gameSettings->getScenario();
} }
@@ -294,6 +296,7 @@ void NetworkMessageLaunch::buildGameSettings(GameSettings *gameSettings) const {
gameSettings->setAiAcceptSwitchTeamPercentChance(data.aiAcceptSwitchTeamPercentChance); gameSettings->setAiAcceptSwitchTeamPercentChance(data.aiAcceptSwitchTeamPercentChance);
gameSettings->setMasterserver_admin(data.masterserver_admin); gameSettings->setMasterserver_admin(data.masterserver_admin);
gameSettings->setMasterserver_admin_faction_index(data.masterserver_admin_factionIndex);
gameSettings->setScenario(data.scenario.getString()); gameSettings->setScenario(data.scenario.getString());
} }

View File

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

View File

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