mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-22 22:13:35 +02:00
Merge pull request #5018 from Laserlicht/translate
Added missing translation strings
This commit is contained in:
commit
865a6c1aa0
@ -120,6 +120,44 @@
|
||||
"vcmi.lobby.deleteFile" : "Do you want to delete following file?",
|
||||
"vcmi.lobby.deleteFolder" : "Do you want to delete following folder?",
|
||||
"vcmi.lobby.deleteMode" : "Switch to delete mode and back",
|
||||
|
||||
"vcmi.broadcast.failedLoadGame" : "Failed to load game",
|
||||
"vcmi.broadcast.command" : "Use '!help' to list available commands",
|
||||
"vcmi.broadcast.simturn.end" : "Simultaneous turns have ended",
|
||||
"vcmi.broadcast.simturn.endBetween" : "Simultaneous turns between players %s and %s have ended",
|
||||
"vcmi.broadcast.serverProblem" : "Server encountered a problem",
|
||||
"vcmi.broadcast.gameTerminated" : "game was terminated",
|
||||
"vcmi.broadcast.gameSavedAs" : "game saved as",
|
||||
"vcmi.broadcast.noCheater" : "No cheaters registered!",
|
||||
"vcmi.broadcast.playerCheater" : "Player %s is cheater!",
|
||||
"vcmi.broadcast.statisticFile" : "Statistic files can be found in %s directory",
|
||||
"vcmi.broadcast.help.commands" : "Available commands to host:",
|
||||
"vcmi.broadcast.help.exit" : "'!exit' - immediately ends current game",
|
||||
"vcmi.broadcast.help.kick" : "'!kick <player>' - kick specified player from the game",
|
||||
"vcmi.broadcast.help.save" : "'!save <filename>' - save game under specified filename",
|
||||
"vcmi.broadcast.help.statistic" : "'!statistic' - save game statistics as csv file",
|
||||
"vcmi.broadcast.help.commandsAll" : "Available commands to all players:",
|
||||
"vcmi.broadcast.help.help" : "'!help' - display this help",
|
||||
"vcmi.broadcast.help.cheaters" : "'!cheaters' - list players that entered cheat command during game",
|
||||
"vcmi.broadcast.help.vote" : "'!vote' - allows to change some game settings if all players vote for it",
|
||||
"vcmi.broadcast.vote.allow" : "'!vote simturns allow X' - allow simultaneous turns for specified number of days, or until contact",
|
||||
"vcmi.broadcast.vote.force" : "'!vote simturns force X' - force simultaneous turns for specified number of days, blocking player contacts",
|
||||
"vcmi.broadcast.vote.abort" : "'!vote simturns abort' - abort simultaneous turns once this turn ends",
|
||||
"vcmi.broadcast.vote.timer" : "'!vote timer prolong X' - prolong base timer for all players by specified number of seconds",
|
||||
"vcmi.broadcast.vote.noActive" : "No active voting!",
|
||||
"vcmi.broadcast.vote.yes" : "yes",
|
||||
"vcmi.broadcast.vote.no" : "no",
|
||||
"vcmi.broadcast.vote.notRecognized" : "Voting command not recognized!",
|
||||
"vcmi.broadcast.vote.success.untilContacts" : "Voting successful. Simultaneous turns will run for %s more days, or until contact",
|
||||
"vcmi.broadcast.vote.success.contactsBlocked" : "Voting successful. Simultaneous turns will run for %s more days. Contacts are blocked",
|
||||
"vcmi.broadcast.vote.success.nextDay" : "Voting successful. Simultaneous turns will end on next day",
|
||||
"vcmi.broadcast.vote.success.timer" : "Voting successful. Timer for all players has been prolonger for %s seconds",
|
||||
"vcmi.broadcast.vote.aborted" : "Player voted against change. Voting aborted",
|
||||
"vcmi.broadcast.vote.start.untilContacts" : "Started voting to allow simultaneous turns for %s more days",
|
||||
"vcmi.broadcast.vote.start.contactsBlocked" : "Started voting to force simultaneous turns for %s more days",
|
||||
"vcmi.broadcast.vote.start.nextDay" : "Started voting to end simultaneous turns starting from next day",
|
||||
"vcmi.broadcast.vote.start.timer" : "Started voting to prolong timer for all players by %s seconds",
|
||||
"vcmi.broadcast.vote.hint" : "Type '!vote yes' to agree to this change or '!vote no' to vote against it",
|
||||
|
||||
"vcmi.lobby.login.title" : "VCMI Online Lobby",
|
||||
"vcmi.lobby.login.username" : "Username:",
|
||||
@ -128,6 +166,7 @@
|
||||
"vcmi.lobby.login.create" : "New Account",
|
||||
"vcmi.lobby.login.login" : "Login",
|
||||
"vcmi.lobby.login.as" : "Login as %s",
|
||||
"vcmi.lobby.login.spectator" : "Spectator",
|
||||
"vcmi.lobby.header.rooms" : "Game Rooms - %d",
|
||||
"vcmi.lobby.header.channels" : "Chat Channels",
|
||||
"vcmi.lobby.header.chat.global" : "Global Game Chat - %s", // %s -> language name
|
||||
@ -189,6 +228,8 @@
|
||||
"vcmi.server.errors.modsToEnable" : "{Following mods are required}",
|
||||
"vcmi.server.errors.modsToDisable" : "{Following mods must be disabled}",
|
||||
"vcmi.server.errors.unknownEntity" : "Failed to load save! Unknown entity '%s' found in saved game! Save may not be compatible with currently installed version of mods!",
|
||||
"vcmi.server.errors.wrongIdentified" : "You were identified as player %s while expecting %s",
|
||||
"vcmi.server.errors.notAllowed" : "You are not allowed to perform this action!",
|
||||
|
||||
"vcmi.dimensionDoor.seaToLandError" : "It's not possible to teleport from sea to land or vice versa with a Dimension Door.",
|
||||
|
||||
|
@ -120,6 +120,8 @@
|
||||
"vcmi.lobby.deleteFile" : "Möchtet Ihr folgende Datei löschen?",
|
||||
"vcmi.lobby.deleteFolder" : "Möchtet Ihr folgenden Ordner löschen?",
|
||||
"vcmi.lobby.deleteMode" : "In den Löschmodus wechseln und zurück",
|
||||
|
||||
"vcmi.broadcast.command" : "Benutze '!help' um alle verfügbaren Befehle aufzulisten",
|
||||
|
||||
"vcmi.lobby.login.title" : "VCMI Online Lobby",
|
||||
"vcmi.lobby.login.username" : "Benutzername:",
|
||||
|
@ -93,7 +93,7 @@ void GameChatHandler::onNewGameMessageReceived(PlayerColor sender, const std::st
|
||||
playerName = LOCPLINT->cb->getStartInfo()->playerInfos.at(sender).name;
|
||||
|
||||
if (sender.isSpectator())
|
||||
playerName = "Spectator"; // FIXME: translate? Provide nickname somewhere?
|
||||
playerName = VLC->generaltexth->translate("vcmi.lobby.login.spectator");
|
||||
|
||||
chatHistory.push_back({playerName, messageText, timeFormatted});
|
||||
|
||||
|
@ -77,23 +77,23 @@ inline const auto & getLanguageList()
|
||||
{
|
||||
static const std::array<Options, 17> languages
|
||||
{ {
|
||||
{ "czech", "Czech", "Čeština", "CP1250", "cs", "cze", "%d.%m.%Y %H:%M:%S", EPluralForms::CZ_3 },
|
||||
{ "chinese", "Chinese", "简体中文", "GBK", "zh", "chi", "%Y-%m-%d %H:%M:%S", EPluralForms::VI_1 }, // Note: actually Simplified Chinese
|
||||
{ "english", "English", "English", "CP1252", "en", "eng", "%Y-%m-%d %H:%M:%S", EPluralForms::EN_2 }, // English uses international date/time format here
|
||||
{ "finnish", "Finnish", "Suomi", "CP1252", "fi", "fin", "%d.%m.%Y %H:%M:%S", EPluralForms::EN_2, },
|
||||
{ "french", "French", "Français", "CP1252", "fr", "fre", "%d/%m/%Y %H:%M:%S", EPluralForms::FR_2, },
|
||||
{ "german", "German", "Deutsch", "CP1252", "de", "ger", "%d.%m.%Y %H:%M:%S", EPluralForms::EN_2, },
|
||||
{ "hungarian", "Hungarian", "Magyar", "CP1250", "hu", "hun", "%Y. %m. %d. %H:%M:%S", EPluralForms::EN_2 },
|
||||
{ "italian", "Italian", "Italiano", "CP1250", "it", "ita", "%d/%m/%Y %H:%M:%S", EPluralForms::EN_2 },
|
||||
{ "korean", "Korean", "한국어", "CP949", "ko", "kor", "%Y-%m-%d %H:%M:%S", EPluralForms::VI_1 },
|
||||
{ "polish", "Polish", "Polski", "CP1250", "pl", "pol", "%d.%m.%Y %H:%M:%S", EPluralForms::PL_3 },
|
||||
{ "portuguese", "Portuguese", "Português", "CP1252", "pt", "por", "%d/%m/%Y %H:%M:%S", EPluralForms::EN_2 }, // Note: actually Brazilian Portuguese
|
||||
{ "russian", "Russian", "Русский", "CP1251", "ru", "rus", "%d.%m.%Y %H:%M:%S", EPluralForms::UK_3 },
|
||||
{ "spanish", "Spanish", "Español", "CP1252", "es", "spa", "%d/%m/%Y %H:%M:%S", EPluralForms::EN_2 },
|
||||
{ "swedish", "Swedish", "Svenska", "CP1252", "sv", "swe", "%Y-%m-%d %H:%M:%S", EPluralForms::EN_2 },
|
||||
{ "turkish", "Turkish", "Türkçe", "CP1254", "tr", "tur", "%d.%m.%Y %H:%M:%S", EPluralForms::EN_2 },
|
||||
{ "ukrainian", "Ukrainian", "Українська", "CP1251", "uk", "ukr", "%d.%m.%Y %H:%M:%S", EPluralForms::UK_3 },
|
||||
{ "vietnamese", "Vietnamese", "Tiếng Việt", "UTF-8", "vi", "vie", "%d/%m/%Y %H:%M:%S", EPluralForms::VI_1 }, // Fan translation uses special encoding
|
||||
{ "czech", "Czech", "Čeština", "CP1250", "cs", "cze", "%d.%m.%Y %H:%M", EPluralForms::CZ_3 },
|
||||
{ "chinese", "Chinese", "简体中文", "GBK", "zh", "chi", "%Y-%m-%d %H:%M", EPluralForms::VI_1 }, // Note: actually Simplified Chinese
|
||||
{ "english", "English", "English", "CP1252", "en", "eng", "%Y-%m-%d %H:%M", EPluralForms::EN_2 }, // English uses international date/time format here
|
||||
{ "finnish", "Finnish", "Suomi", "CP1252", "fi", "fin", "%d.%m.%Y %H:%M", EPluralForms::EN_2, },
|
||||
{ "french", "French", "Français", "CP1252", "fr", "fre", "%d/%m/%Y %H:%M", EPluralForms::FR_2, },
|
||||
{ "german", "German", "Deutsch", "CP1252", "de", "ger", "%d.%m.%Y %H:%M", EPluralForms::EN_2, },
|
||||
{ "hungarian", "Hungarian", "Magyar", "CP1250", "hu", "hun", "%Y. %m. %d. %H:%M", EPluralForms::EN_2 },
|
||||
{ "italian", "Italian", "Italiano", "CP1250", "it", "ita", "%d/%m/%Y %H:%M", EPluralForms::EN_2 },
|
||||
{ "korean", "Korean", "한국어", "CP949", "ko", "kor", "%Y-%m-%d %H:%M", EPluralForms::VI_1 },
|
||||
{ "polish", "Polish", "Polski", "CP1250", "pl", "pol", "%d.%m.%Y %H:%M", EPluralForms::PL_3 },
|
||||
{ "portuguese", "Portuguese", "Português", "CP1252", "pt", "por", "%d/%m/%Y %H:%M", EPluralForms::EN_2 }, // Note: actually Brazilian Portuguese
|
||||
{ "russian", "Russian", "Русский", "CP1251", "ru", "rus", "%d.%m.%Y %H:%M", EPluralForms::UK_3 },
|
||||
{ "spanish", "Spanish", "Español", "CP1252", "es", "spa", "%d/%m/%Y %H:%M", EPluralForms::EN_2 },
|
||||
{ "swedish", "Swedish", "Svenska", "CP1252", "sv", "swe", "%Y-%m-%d %H:%M", EPluralForms::EN_2 },
|
||||
{ "turkish", "Turkish", "Türkçe", "CP1254", "tr", "tur", "%d.%m.%Y %H:%M", EPluralForms::EN_2 },
|
||||
{ "ukrainian", "Ukrainian", "Українська", "CP1251", "uk", "ukr", "%d.%m.%Y %H:%M", EPluralForms::UK_3 },
|
||||
{ "vietnamese", "Vietnamese", "Tiếng Việt", "UTF-8", "vi", "vie", "%d/%m/%Y %H:%M", EPluralForms::VI_1 }, // Fan translation uses special encoding
|
||||
} };
|
||||
static_assert(languages.size() == static_cast<size_t>(ELanguages::COUNT), "Languages array is missing a value!");
|
||||
|
||||
|
@ -1473,7 +1473,7 @@ bool CGameHandler::isPlayerOwns(CPackForServer * pack, ObjectInstanceID id)
|
||||
void CGameHandler::throwNotAllowedAction(CPackForServer * pack)
|
||||
{
|
||||
if(pack->c)
|
||||
playerMessages->sendSystemMessage(pack->c, "You are not allowed to perform this action!");
|
||||
playerMessages->sendSystemMessage(pack->c, MetaString::createFromTextID("vcmi.server.errors.notAllowed"));
|
||||
|
||||
logNetwork->error("Player is not allowed to perform this action!");
|
||||
throw ExceptionNotAllowedAction();
|
||||
@ -1481,12 +1481,13 @@ void CGameHandler::throwNotAllowedAction(CPackForServer * pack)
|
||||
|
||||
void CGameHandler::wrongPlayerMessage(CPackForServer * pack, PlayerColor expectedplayer)
|
||||
{
|
||||
std::ostringstream oss;
|
||||
oss << "You were identified as player " << pack->player << " while expecting " << expectedplayer;
|
||||
logNetwork->error(oss.str());
|
||||
auto str = MetaString::createFromTextID("vcmi.server.errors.wrongIdentified");
|
||||
str.appendName(pack->player);
|
||||
str.appendName(expectedplayer);
|
||||
logNetwork->error(str.toString());
|
||||
|
||||
if(pack->c)
|
||||
playerMessages->sendSystemMessage(pack->c, oss.str());
|
||||
playerMessages->sendSystemMessage(pack->c, str);
|
||||
}
|
||||
|
||||
void CGameHandler::throwIfWrongOwner(CPackForServer * pack, ObjectInstanceID id)
|
||||
@ -1569,16 +1570,18 @@ bool CGameHandler::load(const std::string & filename)
|
||||
catch(const ModIncompatibility & e)
|
||||
{
|
||||
logGlobal->error("Failed to load game: %s", e.what());
|
||||
std::string errorMsg;
|
||||
MetaString errorMsg;
|
||||
if(!e.whatMissing().empty())
|
||||
{
|
||||
errorMsg += VLC->generaltexth->translate("vcmi.server.errors.modsToEnable") + '\n';
|
||||
errorMsg += e.whatMissing();
|
||||
errorMsg.appendTextID("vcmi.server.errors.modsToEnable");
|
||||
errorMsg.appendRawString("\n");
|
||||
errorMsg.appendRawString(e.whatMissing());
|
||||
}
|
||||
if(!e.whatExcessive().empty())
|
||||
{
|
||||
errorMsg += VLC->generaltexth->translate("vcmi.server.errors.modsToDisable") + '\n';
|
||||
errorMsg += e.whatExcessive();
|
||||
errorMsg.appendTextID("vcmi.server.errors.modsToDisable");
|
||||
errorMsg.appendRawString("\n");
|
||||
errorMsg.appendRawString(e.whatExcessive());
|
||||
}
|
||||
lobby->announceMessage(errorMsg);
|
||||
return false;
|
||||
@ -1589,14 +1592,17 @@ bool CGameHandler::load(const std::string & filename)
|
||||
MetaString errorMsg;
|
||||
errorMsg.appendTextID("vcmi.server.errors.unknownEntity");
|
||||
errorMsg.replaceRawString(e.identifierName);
|
||||
lobby->announceMessage(errorMsg.toString());//FIXME: should be localized on client side
|
||||
lobby->announceMessage(errorMsg);
|
||||
return false;
|
||||
}
|
||||
|
||||
catch(const std::exception & e)
|
||||
{
|
||||
logGlobal->error("Failed to load game: %s", e.what());
|
||||
lobby->announceMessage(std::string("Failed to load game: ") + e.what());
|
||||
auto str = MetaString::createFromTextID("vcmi.broadcast.failedLoadGame");
|
||||
str.appendRawString(": ");
|
||||
str.appendRawString(e.what());
|
||||
lobby->announceMessage(str);
|
||||
return false;
|
||||
}
|
||||
gs->preInit(VLC, this);
|
||||
@ -3264,7 +3270,11 @@ bool CGameHandler::queryReply(QueryID qid, std::optional<int32_t> answer, Player
|
||||
bool CGameHandler::complain(const std::string &problem)
|
||||
{
|
||||
#ifndef ENABLE_GOLDMASTER
|
||||
playerMessages->broadcastSystemMessage("Server encountered a problem: " + problem);
|
||||
MetaString str;
|
||||
str.appendTextID("vcmi.broadcast.serverProblem");
|
||||
str.appendRawString(": ");
|
||||
str.appendRawString(problem);
|
||||
playerMessages->broadcastSystemMessage(str);
|
||||
#endif
|
||||
logGlobal->error(problem);
|
||||
return true;
|
||||
|
@ -1016,7 +1016,7 @@ void CVCMIServer::multiplayerWelcomeMessage()
|
||||
if(humanPlayer < 2) // Singleplayer
|
||||
return;
|
||||
|
||||
gh->playerMessages->broadcastSystemMessage("Use '!help' to list available commands");
|
||||
gh->playerMessages->broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.command"));
|
||||
|
||||
for (const auto & pi : si->playerInfos)
|
||||
if(!pi.second.handicap.startBonus.empty() || pi.second.handicap.percentIncome != 100 || pi.second.handicap.percentGrowth != 100)
|
||||
|
@ -70,7 +70,7 @@ void PlayerMessageProcessor::commandExit(PlayerColor player, const std::vector<s
|
||||
if(!isHost)
|
||||
return;
|
||||
|
||||
broadcastSystemMessage("game was terminated");
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.gameTerminated"));
|
||||
gameHandler->gameLobby()->setState(EServerState::SHUTDOWN);
|
||||
}
|
||||
|
||||
@ -115,7 +115,11 @@ void PlayerMessageProcessor::commandSave(PlayerColor player, const std::vector<s
|
||||
if(words.size() == 2)
|
||||
{
|
||||
gameHandler->save("Saves/" + words[1]);
|
||||
broadcastSystemMessage("game saved as " + words[1]);
|
||||
MetaString str;
|
||||
str.appendTextID("vcmi.broadcast.gameSavedAs");
|
||||
str.appendRawString(" ");
|
||||
str.appendRawString(words[1]);
|
||||
broadcastSystemMessage(str);
|
||||
}
|
||||
}
|
||||
|
||||
@ -126,13 +130,15 @@ void PlayerMessageProcessor::commandCheaters(PlayerColor player, const std::vect
|
||||
{
|
||||
if(player.second.cheated)
|
||||
{
|
||||
broadcastSystemMessage("Player " + player.first.toString() + " is cheater!");
|
||||
auto str = MetaString::createFromTextID("vcmi.broadcast.playerCheater");
|
||||
str.replaceName(player.first);
|
||||
broadcastSystemMessage(str);
|
||||
playersCheated++;
|
||||
}
|
||||
}
|
||||
|
||||
if(!playersCheated)
|
||||
broadcastSystemMessage("No cheaters registered!");
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.noCheater"));
|
||||
}
|
||||
|
||||
void PlayerMessageProcessor::commandStatistic(PlayerColor player, const std::vector<std::string> & words)
|
||||
@ -143,49 +149,51 @@ void PlayerMessageProcessor::commandStatistic(PlayerColor player, const std::vec
|
||||
|
||||
std::string path = gameHandler->gameState()->statistic.writeCsv();
|
||||
|
||||
broadcastSystemMessage("Statistic files can be found in " + path + " directory\n");
|
||||
auto str = MetaString::createFromTextID("vcmi.broadcast.statisticFile");
|
||||
str.replaceRawString(path);
|
||||
broadcastSystemMessage(str);
|
||||
}
|
||||
|
||||
void PlayerMessageProcessor::commandHelp(PlayerColor player, const std::vector<std::string> & words)
|
||||
{
|
||||
broadcastSystemMessage("Available commands to host:");
|
||||
broadcastSystemMessage("'!exit' - immediately ends current game");
|
||||
broadcastSystemMessage("'!kick <player>' - kick specified player from the game");
|
||||
broadcastSystemMessage("'!save <filename>' - save game under specified filename");
|
||||
broadcastSystemMessage("'!statistic' - save game statistics as csv file");
|
||||
broadcastSystemMessage("Available commands to all players:");
|
||||
broadcastSystemMessage("'!help' - display this help");
|
||||
broadcastSystemMessage("'!cheaters' - list players that entered cheat command during game");
|
||||
broadcastSystemMessage("'!vote' - allows to change some game settings if all players vote for it");
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.help.commands"));
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.help.exit"));
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.help.kick"));
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.help.save"));
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.help.statistic"));
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.help.commandsAll"));
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.help.help"));
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.help.cheaters"));
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.help.vote"));
|
||||
}
|
||||
|
||||
void PlayerMessageProcessor::commandVote(PlayerColor player, const std::vector<std::string> & words)
|
||||
{
|
||||
if(words.size() < 2)
|
||||
{
|
||||
broadcastSystemMessage("'!vote simturns allow X' - allow simultaneous turns for specified number of days, or until contact");
|
||||
broadcastSystemMessage("'!vote simturns force X' - force simultaneous turns for specified number of days, blocking player contacts");
|
||||
broadcastSystemMessage("'!vote simturns abort' - abort simultaneous turns once this turn ends");
|
||||
broadcastSystemMessage("'!vote timer prolong X' - prolong base timer for all players by specified number of seconds");
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.vote.allow"));
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.vote.force"));
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.vote.abort"));
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.vote.timer"));
|
||||
return;
|
||||
}
|
||||
|
||||
if(words[1] == "yes" || words[1] == "no")
|
||||
if(words[1] == "yes" || words[1] == "no" || words[1] == MetaString::createFromTextID("vcmi.broadcast.vote.yes").toString() || words[1] == MetaString::createFromTextID("vcmi.broadcast.vote.no").toString())
|
||||
{
|
||||
if(currentVote == ECurrentChatVote::NONE)
|
||||
{
|
||||
broadcastSystemMessage("No active voting!");
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.vote.noActive"));
|
||||
return;
|
||||
}
|
||||
|
||||
if(words[1] == "yes")
|
||||
if(words[1] == "yes" || words[1] == MetaString::createFromTextID("vcmi.broadcast.vote.yes").toString())
|
||||
{
|
||||
awaitingPlayers.erase(player);
|
||||
if(awaitingPlayers.empty())
|
||||
finishVoting();
|
||||
return;
|
||||
}
|
||||
if(words[1] == "no")
|
||||
if(words[1] == "no" || words[1] == MetaString::createFromTextID("vcmi.broadcast.vote.no").toString())
|
||||
{
|
||||
abortVoting();
|
||||
return;
|
||||
@ -240,28 +248,36 @@ void PlayerMessageProcessor::commandVote(PlayerColor player, const std::vector<s
|
||||
}
|
||||
}
|
||||
|
||||
broadcastSystemMessage("Voting command not recognized!");
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.vote.notRecognized"));
|
||||
}
|
||||
|
||||
void PlayerMessageProcessor::finishVoting()
|
||||
{
|
||||
MetaString msg;
|
||||
switch(currentVote)
|
||||
{
|
||||
case ECurrentChatVote::SIMTURNS_ALLOW:
|
||||
broadcastSystemMessage("Voting successful. Simultaneous turns will run for " + std::to_string(currentVoteParameter) + " more days, or until contact");
|
||||
msg.appendTextID("vcmi.broadcast.vote.success.untilContacts");
|
||||
msg.replaceRawString(std::to_string(currentVoteParameter));
|
||||
broadcastSystemMessage(msg);
|
||||
gameHandler->turnOrder->setMaxSimturnsDuration(currentVoteParameter);
|
||||
break;
|
||||
case ECurrentChatVote::SIMTURNS_FORCE:
|
||||
broadcastSystemMessage("Voting successful. Simultaneous turns will run for " + std::to_string(currentVoteParameter) + " more days. Contacts are blocked");
|
||||
msg.appendTextID("vcmi.broadcast.vote.success.contactsBlocked");
|
||||
msg.replaceRawString(std::to_string(currentVoteParameter));
|
||||
broadcastSystemMessage(msg);
|
||||
gameHandler->turnOrder->setMinSimturnsDuration(currentVoteParameter);
|
||||
break;
|
||||
case ECurrentChatVote::SIMTURNS_ABORT:
|
||||
broadcastSystemMessage("Voting successful. Simultaneous turns will end on next day");
|
||||
msg.appendTextID("vcmi.broadcast.vote.success.nextDay");
|
||||
broadcastSystemMessage(msg);
|
||||
gameHandler->turnOrder->setMinSimturnsDuration(0);
|
||||
gameHandler->turnOrder->setMaxSimturnsDuration(0);
|
||||
break;
|
||||
case ECurrentChatVote::TIMER_PROLONG:
|
||||
broadcastSystemMessage("Voting successful. Timer for all players has been prolonger for " + std::to_string(currentVoteParameter) + " seconds");
|
||||
msg.appendTextID("vcmi.broadcast.vote.success.timer");
|
||||
msg.replaceRawString(std::to_string(currentVoteParameter));
|
||||
broadcastSystemMessage(msg);
|
||||
gameHandler->turnTimerHandler->prolongTimers(currentVoteParameter * 1000);
|
||||
break;
|
||||
}
|
||||
@ -272,7 +288,7 @@ void PlayerMessageProcessor::finishVoting()
|
||||
|
||||
void PlayerMessageProcessor::abortVoting()
|
||||
{
|
||||
broadcastSystemMessage("Player voted against change. Voting aborted");
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.vote.aborted"));
|
||||
currentVote = ECurrentChatVote::NONE;
|
||||
}
|
||||
|
||||
@ -281,25 +297,33 @@ void PlayerMessageProcessor::startVoting(PlayerColor initiator, ECurrentChatVote
|
||||
currentVote = what;
|
||||
currentVoteParameter = parameter;
|
||||
|
||||
MetaString msg;
|
||||
switch(currentVote)
|
||||
{
|
||||
case ECurrentChatVote::SIMTURNS_ALLOW:
|
||||
broadcastSystemMessage("Started voting to allow simultaneous turns for " + std::to_string(parameter) + " more days");
|
||||
msg.appendTextID("vcmi.broadcast.vote.start.untilContacts");
|
||||
msg.replaceRawString(std::to_string(parameter));
|
||||
broadcastSystemMessage(msg);
|
||||
break;
|
||||
case ECurrentChatVote::SIMTURNS_FORCE:
|
||||
broadcastSystemMessage("Started voting to force simultaneous turns for " + std::to_string(parameter) + " more days");
|
||||
msg.appendTextID("vcmi.broadcast.vote.start.contactsBlocked");
|
||||
msg.replaceRawString(std::to_string(parameter));
|
||||
broadcastSystemMessage(msg);
|
||||
break;
|
||||
case ECurrentChatVote::SIMTURNS_ABORT:
|
||||
broadcastSystemMessage("Started voting to end simultaneous turns starting from next day");
|
||||
msg.appendTextID("vcmi.broadcast.vote.start.nextDay");
|
||||
broadcastSystemMessage(msg);
|
||||
break;
|
||||
case ECurrentChatVote::TIMER_PROLONG:
|
||||
broadcastSystemMessage("Started voting to prolong timer for all players by " + std::to_string(parameter) + " seconds");
|
||||
msg.appendTextID("vcmi.broadcast.vote.start.timer");
|
||||
msg.replaceRawString(std::to_string(parameter));
|
||||
broadcastSystemMessage(msg);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
broadcastSystemMessage("Type '!vote yes' to agree to this change or '!vote no' to vote against it");
|
||||
broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.vote.hint"));
|
||||
awaitingPlayers.clear();
|
||||
|
||||
for(PlayerColor player(0); player < PlayerColor::PLAYER_LIMIT; ++player)
|
||||
|
@ -72,7 +72,7 @@ void TurnOrderProcessor::updateAndNotifyContactStatus()
|
||||
{
|
||||
// Simturns between all players have ended - send single global notification
|
||||
if (!blockedContacts.empty())
|
||||
gameHandler->playerMessages->broadcastSystemMessage("Simultaneous turns have ended");
|
||||
gameHandler->playerMessages->broadcastSystemMessage(MetaString::createFromTextID("vcmi.broadcast.simturn.end"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -83,11 +83,11 @@ void TurnOrderProcessor::updateAndNotifyContactStatus()
|
||||
continue;
|
||||
|
||||
MetaString message;
|
||||
message.appendRawString("Simultaneous turns between players %s and %s have ended"); // FIXME: we should send MetaString itself and localize it on client side
|
||||
message.appendTextID("vcmi.broadcast.simturn.endBetween");
|
||||
message.replaceName(contact.a);
|
||||
message.replaceName(contact.b);
|
||||
|
||||
gameHandler->playerMessages->broadcastSystemMessage(message.toString());
|
||||
gameHandler->playerMessages->broadcastSystemMessage(message);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user