mirror of
https://github.com/vcmi/vcmi.git
synced 2025-03-25 21:38:59 +02:00
option for allowing cheats
This commit is contained in:
parent
bb6179d05e
commit
fc4827c89c
@ -264,9 +264,11 @@
|
||||
"vcmi.optionsTab.simturnsMin.hover" : "At least for",
|
||||
"vcmi.optionsTab.simturnsMax.hover" : "At most for",
|
||||
"vcmi.optionsTab.simturnsAI.hover" : "(Experimental) Simultaneous AI Turns",
|
||||
"vcmi.optionsTab.cheatAllowed.hover" : "Allow cheats",
|
||||
"vcmi.optionsTab.simturnsMin.help" : "Play simultaneously for specified number of days. Contacts between players during this period are blocked",
|
||||
"vcmi.optionsTab.simturnsMax.help" : "Play simultaneously for specified number of days or until contact with another player",
|
||||
"vcmi.optionsTab.simturnsAI.help" : "{Simultaneous AI Turns}\nExperimental option. Allows AI players to act at the same time as human player when simultaneous turns are enabled.",
|
||||
"vcmi.optionsTab.cheatAllowed.help" : "{Allow cheats}\nAllows the inputs of cheats during the game.",
|
||||
|
||||
"vcmi.optionsTab.turnTime.select" : "Select turn timer preset",
|
||||
"vcmi.optionsTab.turnTime.unlimited" : "Unlimited turn time",
|
||||
|
@ -283,9 +283,11 @@
|
||||
"vcmi.optionsTab.simturnsMin.hover" : "Zumindest für",
|
||||
"vcmi.optionsTab.simturnsMax.hover" : "Höchstens für",
|
||||
"vcmi.optionsTab.simturnsAI.hover" : "(Experimentell) Simultane KI Züge",
|
||||
"vcmi.optionsTab.cheatAllowed.hover" : "Cheats erlauben",
|
||||
"vcmi.optionsTab.simturnsMin.help" : "Spielt gleichzeitig für eine bestimmte Anzahl von Tagen. Die Kontakte zwischen den Spielern sind während dieser Zeit blockiert",
|
||||
"vcmi.optionsTab.simturnsMax.help" : "Spielt gleichzeitig für eine bestimmte Anzahl von Tagen oder bis zum Kontakt mit einem anderen Spieler",
|
||||
"vcmi.optionsTab.simturnsAI.help" : "{Simultane KI Züge}\nExperimentelle Option. Ermöglicht es den KI-Spielern, gleichzeitig mit dem menschlichen Spieler zu agieren, wenn simultane Spielzüge aktiviert sind.",
|
||||
"vcmi.optionsTab.cheatAllowed.help" : "{Cheats erlauben}\nErlaubt die Eingabe von Cheats während des Spiels.",
|
||||
|
||||
// Translation note: translate strings below using form that is correct for "0 days", "1 day" and "2 days" in your language
|
||||
// Using this information, VCMI will automatically select correct plural form for every possible amount
|
||||
|
@ -507,6 +507,13 @@ void CServerHandler::setTurnTimerInfo(const TurnTimerInfo & info) const
|
||||
sendLobbyPack(lstt);
|
||||
}
|
||||
|
||||
void CServerHandler::setCheatAllowedInfo(bool allowed) const
|
||||
{
|
||||
LobbySetCheatAllowed lsca;
|
||||
lsca.allowed = allowed;
|
||||
sendLobbyPack(lsca);
|
||||
}
|
||||
|
||||
void CServerHandler::sendMessage(const std::string & txt) const
|
||||
{
|
||||
std::istringstream readed;
|
||||
|
@ -72,6 +72,7 @@ public:
|
||||
virtual void setDifficulty(int to) const = 0;
|
||||
virtual void setTurnTimerInfo(const TurnTimerInfo &) const = 0;
|
||||
virtual void setSimturnsInfo(const SimturnsInfo &) const = 0;
|
||||
virtual void setCheatAllowedInfo(bool allowed) const = 0;
|
||||
virtual void sendMessage(const std::string & txt) const = 0;
|
||||
virtual void sendGuiAction(ui8 action) const = 0; // TODO: possibly get rid of it?
|
||||
virtual void sendStartGame(bool allowOnlyAI = false) const = 0;
|
||||
@ -158,6 +159,7 @@ public:
|
||||
void setDifficulty(int to) const override;
|
||||
void setTurnTimerInfo(const TurnTimerInfo &) const override;
|
||||
void setSimturnsInfo(const SimturnsInfo &) const override;
|
||||
void setCheatAllowedInfo(bool allowed) const override;
|
||||
void sendMessage(const std::string & txt) const override;
|
||||
void sendGuiAction(ui8 action) const override;
|
||||
void sendRestartGame() const override;
|
||||
|
@ -90,6 +90,10 @@ OptionsTabBase::OptionsTabBase(const JsonPath & configPath)
|
||||
CSH->setSimturnsInfo(info);
|
||||
});
|
||||
|
||||
addCallback("setCheatAllowed", [&](int index){
|
||||
CSH->setCheatAllowedInfo(index);
|
||||
});
|
||||
|
||||
addCallback("setTurnTimerAccumulate", [&](int index){
|
||||
TurnTimerInfo info = SEL->getStartInfo()->turnTimerInfo;
|
||||
info.accumulatingTurnTimer = index;
|
||||
|
@ -316,7 +316,7 @@
|
||||
},
|
||||
{
|
||||
"name": "buttonSimturnsAI",
|
||||
"position": {"x": 70, "y": 535},
|
||||
"position": {"x": 70, "y": 530},
|
||||
"type": "toggleButton",
|
||||
"image": "lobby/checkbox",
|
||||
"callback" : "setSimturnAI"
|
||||
@ -328,7 +328,24 @@
|
||||
"alignment": "left",
|
||||
"color": "yellow",
|
||||
"text": "vcmi.optionsTab.simturnsAI.hover",
|
||||
"position": {"x": 110, "y": 540}
|
||||
"position": {"x": 110, "y": 533}
|
||||
},
|
||||
{
|
||||
"name": "buttonCheatAllowed",
|
||||
"position": {"x": 70, "y": 555},
|
||||
"type": "toggleButton",
|
||||
"image": "lobby/checkbox",
|
||||
"callback" : "setCheatAllowed",
|
||||
"selected" : true
|
||||
},
|
||||
{
|
||||
"name": "labelCheatAllowed",
|
||||
"type": "label",
|
||||
"font": "small",
|
||||
"alignment": "left",
|
||||
"color": "yellow",
|
||||
"text": "vcmi.optionsTab.cheatAllowed.hover",
|
||||
"position": {"x": 110, "y": 558}
|
||||
}
|
||||
],
|
||||
|
||||
|
@ -105,6 +105,8 @@ struct DLL_LINKAGE StartInfo
|
||||
EMode mode;
|
||||
ui8 difficulty; //0=easy; 4=impossible
|
||||
|
||||
bool cheatAllowed;
|
||||
|
||||
using TPlayerInfos = std::map<PlayerColor, PlayerSettings>;
|
||||
TPlayerInfos playerInfos; //color indexed
|
||||
|
||||
@ -141,13 +143,14 @@ struct DLL_LINKAGE StartInfo
|
||||
h & fileURI;
|
||||
h & simturnsInfo;
|
||||
h & turnTimerInfo;
|
||||
h & cheatAllowed;
|
||||
h & mapname;
|
||||
h & mapGenOptions;
|
||||
h & campState;
|
||||
}
|
||||
|
||||
StartInfo() : mode(INVALID), difficulty(1), seedToBeUsed(0), seedPostInit(0),
|
||||
mapfileChecksum(0), startTimeIso8601(vstd::getDateTimeISO8601Basic(std::time(nullptr))), fileURI("")
|
||||
mapfileChecksum(0), startTimeIso8601(vstd::getDateTimeISO8601Basic(std::time(nullptr))), fileURI(""), cheatAllowed(true)
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -164,6 +164,7 @@ public:
|
||||
virtual void visitLobbySetPlayerName(LobbySetPlayerName & pack) {}
|
||||
virtual void visitLobbySetSimturns(LobbySetSimturns & pack) {}
|
||||
virtual void visitLobbySetTurnTime(LobbySetTurnTime & pack) {}
|
||||
virtual void visitLobbySetCheatAllowed(LobbySetCheatAllowed & pack) {}
|
||||
virtual void visitLobbySetDifficulty(LobbySetDifficulty & pack) {}
|
||||
virtual void visitLobbyForceSetPlayer(LobbyForceSetPlayer & pack) {}
|
||||
virtual void visitLobbyShowMessage(LobbyShowMessage & pack) {}
|
||||
|
@ -770,6 +770,11 @@ void LobbySetTurnTime::visitTyped(ICPackVisitor & visitor)
|
||||
visitor.visitLobbySetTurnTime(*this);
|
||||
}
|
||||
|
||||
void LobbySetCheatAllowed::visitTyped(ICPackVisitor & visitor)
|
||||
{
|
||||
visitor.visitLobbySetCheatAllowed(*this);
|
||||
}
|
||||
|
||||
void LobbySetDifficulty::visitTyped(ICPackVisitor & visitor)
|
||||
{
|
||||
visitor.visitLobbySetDifficulty(*this);
|
||||
|
@ -287,6 +287,18 @@ struct DLL_LINKAGE LobbySetTurnTime : public CLobbyPackToServer
|
||||
}
|
||||
};
|
||||
|
||||
struct DLL_LINKAGE LobbySetCheatAllowed : public CLobbyPackToServer
|
||||
{
|
||||
bool allowed;
|
||||
|
||||
void visitTyped(ICPackVisitor & visitor) override;
|
||||
|
||||
template <typename Handler> void serialize(Handler &h, const int version)
|
||||
{
|
||||
h & allowed;
|
||||
}
|
||||
};
|
||||
|
||||
struct DLL_LINKAGE LobbySetDifficulty : public CLobbyPackToServer
|
||||
{
|
||||
ui8 difficulty = 0;
|
||||
|
@ -54,6 +54,7 @@ void registerTypesLobbyPacks(Serializer &s)
|
||||
s.template registerType<CLobbyPackToServer, LobbySetPlayer>();
|
||||
s.template registerType<CLobbyPackToServer, LobbySetPlayerName>();
|
||||
s.template registerType<CLobbyPackToServer, LobbySetTurnTime>();
|
||||
s.template registerType<CLobbyPackToServer, LobbySetCheatAllowed>();
|
||||
s.template registerType<CLobbyPackToServer, LobbySetSimturns>();
|
||||
s.template registerType<CLobbyPackToServer, LobbySetDifficulty>();
|
||||
s.template registerType<CLobbyPackToServer, LobbyForceSetPlayer>();
|
||||
|
@ -88,6 +88,7 @@ public:
|
||||
virtual void visitLobbySetPlayer(LobbySetPlayer & pack) override;
|
||||
virtual void visitLobbySetPlayerName(LobbySetPlayerName & pack) override;
|
||||
virtual void visitLobbySetTurnTime(LobbySetTurnTime & pack) override;
|
||||
virtual void visitLobbySetCheatAllowed(LobbySetCheatAllowed & pack) override;
|
||||
virtual void visitLobbySetSimturns(LobbySetSimturns & pack) override;
|
||||
virtual void visitLobbySetDifficulty(LobbySetDifficulty & pack) override;
|
||||
virtual void visitLobbyForceSetPlayer(LobbyForceSetPlayer & pack) override;
|
||||
|
@ -414,6 +414,12 @@ void ApplyOnServerNetPackVisitor::visitLobbySetTurnTime(LobbySetTurnTime & pack)
|
||||
result = true;
|
||||
}
|
||||
|
||||
void ApplyOnServerNetPackVisitor::visitLobbySetCheatAllowed(LobbySetCheatAllowed & pack)
|
||||
{
|
||||
srv.si->cheatAllowed = pack.allowed;
|
||||
result = true;
|
||||
}
|
||||
|
||||
void ApplyOnServerNetPackVisitor::visitLobbySetDifficulty(LobbySetDifficulty & pack)
|
||||
{
|
||||
srv.si->difficulty = std::clamp<uint8_t>(pack.difficulty, 0, 4);
|
||||
|
@ -440,7 +440,7 @@ bool PlayerMessageProcessor::handleCheatCode(const std::string & cheat, PlayerCo
|
||||
std::vector<std::string> words;
|
||||
boost::split(words, cheat, boost::is_any_of("\t\r\n "));
|
||||
|
||||
if (words.empty())
|
||||
if (words.empty() || !gameHandler->getStartInfo()->cheatAllowed)
|
||||
return false;
|
||||
|
||||
//Make cheat name case-insensitive, but keep words/parameters (e.g. creature name) as it
|
||||
|
Loading…
x
Reference in New Issue
Block a user