Configurable multiplayer game name

This commit is contained in:
Titus Tscharntke 2011-10-20 22:30:09 +00:00
parent 8a87d26863
commit 900f08e02f
2 changed files with 50 additions and 45 deletions

View File

@ -382,6 +382,16 @@ MenuStateCustomGame::MenuStateCustomGame(Program *program, MainMenu *mainMenu,
listBoxPublishServer.setSelectedItemIndex(1);
}
labelGameNameLabel.registerGraphicComponent(containerName,"labelGameNameLabel");
labelGameNameLabel.init(50, networkHeadPos-2*labelOffset-3,100);
labelGameNameLabel.setText(lang.get("MGGameTitle")+":");
labelGameName.registerGraphicComponent(containerName,"labelGameName");
labelGameName.init(110, networkHeadPos-2*labelOffset,100);
labelGameName.setFont(CoreData::getInstance().getMenuFontBig());
labelGameName.setFont3D(CoreData::getInstance().getMenuFontBig3D());
labelGameName.setText(defaultPlayerName+"'s game");
// Network Frame Period
//labelNetworkFramePeriod.registerGraphicComponent(containerName,"labelNetworkFramePeriod");
//labelNetworkFramePeriod.init(xoffset+230, networkHeadPos, 80);
@ -731,6 +741,10 @@ void MenuStateCustomGame::mouseClick(int x, int y, MouseButton mouseButton) {
}
}
}
else if(activeInputLabel!=NULL && !(activeInputLabel->mouseClick(x,y)))
{
setActiveInputLabel(NULL);
}
else if(buttonReturn.mouseClick(x,y) || serverInitError == true) {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);
@ -915,6 +929,9 @@ void MenuStateCustomGame::mouseClick(int x, int y, MouseButton mouseButton) {
ServerInterface* serverInterface= NetworkManager::getInstance().getServerInterface();
serverInterface->setPublishEnabled(listBoxPublishServer.getSelectedItemIndex() == 0);
}
else if(labelGameName.mouseClick(x, y) && listBoxPublishServer.getEditable()){
setActiveInputLabel(&labelGameName);
}
else if(listBoxAdvanced.getSelectedItemIndex() == 1 && listBoxNetworkPauseGameForLaggedClients.mouseClick(x, y)){
MutexSafeWrapper safeMutex((publishToMasterserverThread != NULL ? publishToMasterserverThread->getMutexThreadObjectAccessor() : NULL),string(__FILE__) + "_" + intToStr(__LINE__));
@ -1072,7 +1089,11 @@ void MenuStateCustomGame::mouseClick(int x, int y, MouseButton mouseButton) {
}
}
else if(labelPlayerNames[i].mouseClick(x, y)) {
SetActivePlayerNameEditor();
ControlType ct= static_cast<ControlType>(listBoxControls[i].getSelectedItemIndex());
if(ct == ctHuman) {
setActiveInputLabel(&labelPlayerNames[i]);
break;
}
}
}
}
@ -1156,19 +1177,6 @@ void MenuStateCustomGame::updateResourceMultiplier(const int index) {
listBoxRMultiplier[index].setVisible(listBoxRMultiplier[index].getEnabled());
}
void MenuStateCustomGame::SetActivePlayerNameEditor() {
for(int i = 0; i < mapInfo.players; ++i) {
ControlType ct= static_cast<ControlType>(listBoxControls[i].getSelectedItemIndex());
if(ct == ctHuman) {
setActiveInputLabel(&labelPlayerNames[i]);
break;
}
}
}
void MenuStateCustomGame::RestoreLastGameSettings() {
// Ensure we have set the gamesettings at least once
GameSettings gameSettings = loadGameSettingsFromFile("lastCustomGamSettings.mgg");
@ -1404,21 +1412,14 @@ void MenuStateCustomGame::mouseMove(int x, int y, const MouseState *ms) {
buttonRestoreLastSettings.mouseMove(x, y);
buttonClearBlockedPlayers.mouseMove(x, y);
bool editingPlayerName = false;
for(int i = 0; i < GameConstants::maxPlayers; ++i) {
listBoxRMultiplier[i].mouseMove(x, y);
listBoxControls[i].mouseMove(x, y);
buttonBlockPlayers[i].mouseMove(x, y);
listBoxFactions[i].mouseMove(x, y);
listBoxTeams[i].mouseMove(x, y);
if(labelPlayerNames[i].mouseMove(x, y) == true) {
editingPlayerName = true;
}
}
if(editingPlayerName == false) {
setActiveInputLabel(NULL);
}
listBoxMap.mouseMove(x, y);
if(listBoxAdvanced.getSelectedItemIndex() == 1) {
listBoxFogOfWar.mouseMove(x, y);
@ -1601,7 +1602,8 @@ void MenuStateCustomGame::render() {
{
renderer.renderListBox(&listBoxPublishServer);
renderer.renderLabel(&labelPublishServer);
renderer.renderLabel(&labelGameName);
renderer.renderLabel(&labelGameNameLabel);
if(listBoxAdvanced.getSelectedItemIndex() == 1) {
//renderer.renderListBox(&listBoxEnableServerControlledAI);
//renderer.renderLabel(&labelEnableServerControlledAI);
@ -2300,6 +2302,7 @@ void MenuStateCustomGame::publishToMasterserver() {
//game info:
publishToServerInfo["serverTitle"] = getHumanPlayerName() + "'s game";
publishToServerInfo["serverTitle"] = labelGameName.getText();
//ip is automatically set
//game setup info:
@ -3430,32 +3433,33 @@ void MenuStateCustomGame::keyPress(SDL_KeyboardEvent c) {
if(activeInputLabel != NULL) {
int maxTextSize= 16;
for(int i = 0; i < GameConstants::maxPlayers; ++i) {
if(&labelPlayerNames[i] == activeInputLabel) {
SDLKey key = extractKeyPressed(c);
//if((c>='0' && c<='9') || (c>='a' && c<='z') || (c>='A' && c<='Z') ||
// (c=='-') || (c=='(') || (c==')')) {
if(isAllowedInputTextKey(key)) {
if(activeInputLabel->getText().size() < maxTextSize) {
string text= activeInputLabel->getText();
//text.insert(text.end()-1, key);
char szCharText[20]="";
sprintf(szCharText,"%c",key);
char *utfStr = String::ConvertToUTF8(&szCharText[0]);
text.insert(text.end() -1, utfStr[0]);
delete [] utfStr;
if(&labelGameName == activeInputLabel) {
maxTextSize= 20;
}
activeInputLabel->setText(text);
SDLKey key = extractKeyPressed(c);
//if((c>='0' && c<='9') || (c>='a' && c<='z') || (c>='A' && c<='Z') ||
// (c=='-') || (c=='(') || (c==')')) {
if(isAllowedInputTextKey(key)) {
if(activeInputLabel->getText().size() < maxTextSize) {
string text= activeInputLabel->getText();
//text.insert(text.end()-1, key);
char szCharText[20]="";
sprintf(szCharText,"%c",key);
char *utfStr = String::ConvertToUTF8(&szCharText[0]);
text.insert(text.end() -1, utfStr[0]);
delete [] utfStr;
MutexSafeWrapper safeMutex((publishToMasterserverThread != NULL ? publishToMasterserverThread->getMutexThreadObjectAccessor() : NULL),string(__FILE__) + "_" + intToStr(__LINE__));
if(hasNetworkGameSettings() == true) {
needToSetChangedGameSettings = true;
lastSetChangedGameSettings = time(NULL);
}
activeInputLabel->setText(text);
if(&labelGameName != activeInputLabel){
MutexSafeWrapper safeMutex((publishToMasterserverThread != NULL ? publishToMasterserverThread->getMutexThreadObjectAccessor() : NULL),string(__FILE__) + "_" + intToStr(__LINE__));
if(hasNetworkGameSettings() == true) {
needToSetChangedGameSettings = true;
lastSetChangedGameSettings = time(NULL);
}
}
}
}
}
}
else {
if(hasNetworkGameSettings() == true) {

View File

@ -46,7 +46,8 @@ private:
GraphicLabel labelEnableObserverMode;
//GraphicLabel labelEnableServerControlledAI;
GraphicLabel labelLocalIP;
GraphicLabel labelGameName;
GraphicLabel labelGameNameLabel;
GraphicListBox listBoxMap;
GraphicListBox listBoxFogOfWar;