mirror of
https://github.com/vcmi/vcmi.git
synced 2024-11-24 08:32:34 +02:00
possibility to change name
This commit is contained in:
parent
802e1bb961
commit
0c6b1ca3c8
@ -499,6 +499,14 @@ void CServerHandler::setPlayer(PlayerColor color) const
|
|||||||
sendLobbyPack(lsp);
|
sendLobbyPack(lsp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CServerHandler::setPlayerName(PlayerColor color, std::string name) const
|
||||||
|
{
|
||||||
|
LobbySetPlayerName lspn;
|
||||||
|
lspn.color = color;
|
||||||
|
lspn.name = name;
|
||||||
|
sendLobbyPack(lspn);
|
||||||
|
}
|
||||||
|
|
||||||
void CServerHandler::setPlayerOption(ui8 what, int32_t value, PlayerColor player) const
|
void CServerHandler::setPlayerOption(ui8 what, int32_t value, PlayerColor player) const
|
||||||
{
|
{
|
||||||
LobbyChangePlayerOption lcpo;
|
LobbyChangePlayerOption lcpo;
|
||||||
|
@ -67,6 +67,7 @@ public:
|
|||||||
virtual void setCampaignBonus(int bonusId) const = 0;
|
virtual void setCampaignBonus(int bonusId) const = 0;
|
||||||
virtual void setMapInfo(std::shared_ptr<CMapInfo> to, std::shared_ptr<CMapGenOptions> mapGenOpts = {}) const = 0;
|
virtual void setMapInfo(std::shared_ptr<CMapInfo> to, std::shared_ptr<CMapGenOptions> mapGenOpts = {}) const = 0;
|
||||||
virtual void setPlayer(PlayerColor color) const = 0;
|
virtual void setPlayer(PlayerColor color) const = 0;
|
||||||
|
virtual void setPlayerName(PlayerColor color, std::string name) const = 0;
|
||||||
virtual void setPlayerOption(ui8 what, int32_t value, PlayerColor player) const = 0;
|
virtual void setPlayerOption(ui8 what, int32_t value, PlayerColor player) const = 0;
|
||||||
virtual void setDifficulty(int to) const = 0;
|
virtual void setDifficulty(int to) const = 0;
|
||||||
virtual void setTurnTimerInfo(const TurnTimerInfo &) const = 0;
|
virtual void setTurnTimerInfo(const TurnTimerInfo &) const = 0;
|
||||||
@ -152,6 +153,7 @@ public:
|
|||||||
void setCampaignBonus(int bonusId) const override;
|
void setCampaignBonus(int bonusId) const override;
|
||||||
void setMapInfo(std::shared_ptr<CMapInfo> to, std::shared_ptr<CMapGenOptions> mapGenOpts = {}) const override;
|
void setMapInfo(std::shared_ptr<CMapInfo> to, std::shared_ptr<CMapGenOptions> mapGenOpts = {}) const override;
|
||||||
void setPlayer(PlayerColor color) const override;
|
void setPlayer(PlayerColor color) const override;
|
||||||
|
void setPlayerName(PlayerColor color, std::string name) const override;
|
||||||
void setPlayerOption(ui8 what, int32_t value, PlayerColor player) const override;
|
void setPlayerOption(ui8 what, int32_t value, PlayerColor player) const override;
|
||||||
void setDifficulty(int to) const override;
|
void setDifficulty(int to) const override;
|
||||||
void setTurnTimerInfo(const TurnTimerInfo &) const override;
|
void setTurnTimerInfo(const TurnTimerInfo &) const override;
|
||||||
|
@ -1041,7 +1041,8 @@ void OptionsTab::SelectedBox::scrollBy(int distance)
|
|||||||
}
|
}
|
||||||
|
|
||||||
OptionsTab::PlayerOptionsEntry::PlayerOptionsEntry(const PlayerSettings & S, const OptionsTab & parent)
|
OptionsTab::PlayerOptionsEntry::PlayerOptionsEntry(const PlayerSettings & S, const OptionsTab & parent)
|
||||||
: pi(std::make_unique<PlayerInfo>(SEL->getPlayerInfo(S.color)))
|
: CIntObject(KEYBOARD | TEXTINPUT)
|
||||||
|
, pi(std::make_unique<PlayerInfo>(SEL->getPlayerInfo(S.color)))
|
||||||
, s(std::make_unique<PlayerSettings>(S))
|
, s(std::make_unique<PlayerSettings>(S))
|
||||||
, parentTab(parent)
|
, parentTab(parent)
|
||||||
{
|
{
|
||||||
@ -1081,7 +1082,13 @@ OptionsTab::PlayerOptionsEntry::PlayerOptionsEntry(const PlayerSettings & S, con
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
background = std::make_shared<CPicture>(ImagePath::builtin(bgs[s->color]), 0, 0);
|
background = std::make_shared<CPicture>(ImagePath::builtin(bgs[s->color]), 0, 0);
|
||||||
labelPlayerName = std::make_shared<CLabel>(55, 10, EFonts::FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, s->name);
|
if(!CSH->isMyColor(s->color) || CSH->isGuest())
|
||||||
|
labelPlayerName = std::make_shared<CLabel>(55, 10, EFonts::FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, s->name);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
labelPlayerNameEdit = std::make_shared<CTextInput>(Rect(6, 3, 95, 15), EFonts::FONT_SMALL, nullptr, false);
|
||||||
|
labelPlayerNameEdit->setText(s->name);
|
||||||
|
}
|
||||||
labelWhoCanPlay = std::make_shared<CMultiLineLabel>(Rect(6, 23, 45, (int)graphics->fonts[EFonts::FONT_TINY]->getLineHeight()*2), EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, CGI->generaltexth->arraytxt[206 + whoCanPlay]);
|
labelWhoCanPlay = std::make_shared<CMultiLineLabel>(Rect(6, 23, 45, (int)graphics->fonts[EFonts::FONT_TINY]->getLineHeight()*2), EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, CGI->generaltexth->arraytxt[206 + whoCanPlay]);
|
||||||
|
|
||||||
if(SEL->screenType == ESelectionScreen::newGame)
|
if(SEL->screenType == ESelectionScreen::newGame)
|
||||||
@ -1115,6 +1122,24 @@ OptionsTab::PlayerOptionsEntry::PlayerOptionsEntry(const PlayerSettings & S, con
|
|||||||
bonus = std::make_shared<SelectedBox>(Point(271, 2), *s, BONUS);
|
bonus = std::make_shared<SelectedBox>(Point(271, 2), *s, BONUS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool OptionsTab::PlayerOptionsEntry::captureThisKey(EShortcut key)
|
||||||
|
{
|
||||||
|
return labelPlayerNameEdit && labelPlayerNameEdit->hasFocus() && key == EShortcut::GLOBAL_ACCEPT;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OptionsTab::PlayerOptionsEntry::keyPressed(EShortcut key)
|
||||||
|
{
|
||||||
|
if(labelPlayerNameEdit)
|
||||||
|
{
|
||||||
|
if(key == EShortcut::GLOBAL_ACCEPT)
|
||||||
|
{
|
||||||
|
CSH->setPlayerName(s->color, labelPlayerNameEdit->getText());
|
||||||
|
Settings name = settings.write["general"]["playerName"];
|
||||||
|
name->String() = labelPlayerNameEdit->getText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void OptionsTab::onSetPlayerClicked(const PlayerSettings & ps) const
|
void OptionsTab::onSetPlayerClicked(const PlayerSettings & ps) const
|
||||||
{
|
{
|
||||||
if(ps.isControlledByAI() || humanPlayers > 0)
|
if(ps.isControlledByAI() || humanPlayers > 0)
|
||||||
|
@ -170,6 +170,7 @@ private:
|
|||||||
std::unique_ptr<PlayerInfo> pi;
|
std::unique_ptr<PlayerInfo> pi;
|
||||||
std::unique_ptr<PlayerSettings> s;
|
std::unique_ptr<PlayerSettings> s;
|
||||||
std::shared_ptr<CLabel> labelPlayerName;
|
std::shared_ptr<CLabel> labelPlayerName;
|
||||||
|
std::shared_ptr<CTextInput> labelPlayerNameEdit;
|
||||||
std::shared_ptr<CMultiLineLabel> labelWhoCanPlay;
|
std::shared_ptr<CMultiLineLabel> labelWhoCanPlay;
|
||||||
std::shared_ptr<CPicture> background;
|
std::shared_ptr<CPicture> background;
|
||||||
std::shared_ptr<CButton> buttonTownLeft;
|
std::shared_ptr<CButton> buttonTownLeft;
|
||||||
@ -186,6 +187,8 @@ private:
|
|||||||
|
|
||||||
PlayerOptionsEntry(const PlayerSettings & S, const OptionsTab & parentTab);
|
PlayerOptionsEntry(const PlayerSettings & S, const OptionsTab & parentTab);
|
||||||
void hideUnavailableButtons();
|
void hideUnavailableButtons();
|
||||||
|
bool captureThisKey(EShortcut key) override;
|
||||||
|
void keyPressed(EShortcut key) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const OptionsTab & parentTab;
|
const OptionsTab & parentTab;
|
||||||
|
@ -532,7 +532,7 @@ Point CGStatusBar::getBorderSize()
|
|||||||
return Point();
|
return Point();
|
||||||
}
|
}
|
||||||
|
|
||||||
CTextInput::CTextInput(const Rect & Pos, EFonts font, const CFunctionList<void(const std::string &)> & CB)
|
CTextInput::CTextInput(const Rect & Pos, EFonts font, const CFunctionList<void(const std::string &)> & CB, bool giveFocusToInput)
|
||||||
: CLabel(Pos.x, Pos.y, font, ETextAlignment::CENTER),
|
: CLabel(Pos.x, Pos.y, font, ETextAlignment::CENTER),
|
||||||
cb(CB),
|
cb(CB),
|
||||||
CFocusable(std::make_shared<CKeyboardFocusListener>(this))
|
CFocusable(std::make_shared<CKeyboardFocusListener>(this))
|
||||||
@ -544,7 +544,8 @@ CTextInput::CTextInput(const Rect & Pos, EFonts font, const CFunctionList<void(c
|
|||||||
addUsedEvents(LCLICK | SHOW_POPUP | KEYBOARD | TEXTINPUT);
|
addUsedEvents(LCLICK | SHOW_POPUP | KEYBOARD | TEXTINPUT);
|
||||||
|
|
||||||
#if !defined(VCMI_MOBILE)
|
#if !defined(VCMI_MOBILE)
|
||||||
giveFocus();
|
if(giveFocusToInput)
|
||||||
|
giveFocus();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@ public:
|
|||||||
void setText(const std::string & nText, bool callCb);
|
void setText(const std::string & nText, bool callCb);
|
||||||
void setHelpText(const std::string &);
|
void setHelpText(const std::string &);
|
||||||
|
|
||||||
CTextInput(const Rect & Pos, EFonts font, const CFunctionList<void(const std::string &)> & CB);
|
CTextInput(const Rect & Pos, EFonts font, const CFunctionList<void(const std::string &)> & CB, bool giveFocusToInput = true);
|
||||||
CTextInput(const Rect & Pos, const Point & bgOffset, const ImagePath & bgName, const CFunctionList<void(const std::string &)> & CB);
|
CTextInput(const Rect & Pos, const Point & bgOffset, const ImagePath & bgName, const CFunctionList<void(const std::string &)> & CB);
|
||||||
CTextInput(const Rect & Pos, std::shared_ptr<IImage> srf);
|
CTextInput(const Rect & Pos, std::shared_ptr<IImage> srf);
|
||||||
|
|
||||||
|
@ -159,6 +159,7 @@ public:
|
|||||||
virtual void visitLobbySetCampaignBonus(LobbySetCampaignBonus & pack) {}
|
virtual void visitLobbySetCampaignBonus(LobbySetCampaignBonus & pack) {}
|
||||||
virtual void visitLobbyChangePlayerOption(LobbyChangePlayerOption & pack) {}
|
virtual void visitLobbyChangePlayerOption(LobbyChangePlayerOption & pack) {}
|
||||||
virtual void visitLobbySetPlayer(LobbySetPlayer & pack) {}
|
virtual void visitLobbySetPlayer(LobbySetPlayer & pack) {}
|
||||||
|
virtual void visitLobbySetPlayerName(LobbySetPlayerName & pack) {}
|
||||||
virtual void visitLobbySetSimturns(LobbySetSimturns & pack) {}
|
virtual void visitLobbySetSimturns(LobbySetSimturns & pack) {}
|
||||||
virtual void visitLobbySetTurnTime(LobbySetTurnTime & pack) {}
|
virtual void visitLobbySetTurnTime(LobbySetTurnTime & pack) {}
|
||||||
virtual void visitLobbySetDifficulty(LobbySetDifficulty & pack) {}
|
virtual void visitLobbySetDifficulty(LobbySetDifficulty & pack) {}
|
||||||
|
@ -755,6 +755,11 @@ void LobbySetPlayer::visitTyped(ICPackVisitor & visitor)
|
|||||||
visitor.visitLobbySetPlayer(*this);
|
visitor.visitLobbySetPlayer(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LobbySetPlayerName::visitTyped(ICPackVisitor & visitor)
|
||||||
|
{
|
||||||
|
visitor.visitLobbySetPlayerName(*this);
|
||||||
|
}
|
||||||
|
|
||||||
void LobbySetSimturns::visitTyped(ICPackVisitor & visitor)
|
void LobbySetSimturns::visitTyped(ICPackVisitor & visitor)
|
||||||
{
|
{
|
||||||
visitor.visitLobbySetSimturns(*this);
|
visitor.visitLobbySetSimturns(*this);
|
||||||
|
@ -250,6 +250,20 @@ struct DLL_LINKAGE LobbySetPlayer : public CLobbyPackToServer
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct DLL_LINKAGE LobbySetPlayerName : public CLobbyPackToServer
|
||||||
|
{
|
||||||
|
PlayerColor color = PlayerColor::CANNOT_DETERMINE;
|
||||||
|
std::string name = "";
|
||||||
|
|
||||||
|
virtual void visitTyped(ICPackVisitor & visitor) override;
|
||||||
|
|
||||||
|
template <typename Handler> void serialize(Handler &h, const int version)
|
||||||
|
{
|
||||||
|
h & color;
|
||||||
|
h & name;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct DLL_LINKAGE LobbySetSimturns : public CLobbyPackToServer
|
struct DLL_LINKAGE LobbySetSimturns : public CLobbyPackToServer
|
||||||
{
|
{
|
||||||
SimturnsInfo simturnsInfo;
|
SimturnsInfo simturnsInfo;
|
||||||
|
@ -399,6 +399,7 @@ void registerTypesLobbyPacks(Serializer &s)
|
|||||||
s.template registerType<CLobbyPackToServer, LobbySetCampaignMap>();
|
s.template registerType<CLobbyPackToServer, LobbySetCampaignMap>();
|
||||||
s.template registerType<CLobbyPackToServer, LobbySetCampaignBonus>();
|
s.template registerType<CLobbyPackToServer, LobbySetCampaignBonus>();
|
||||||
s.template registerType<CLobbyPackToServer, LobbySetPlayer>();
|
s.template registerType<CLobbyPackToServer, LobbySetPlayer>();
|
||||||
|
s.template registerType<CLobbyPackToServer, LobbySetPlayerName>();
|
||||||
s.template registerType<CLobbyPackToServer, LobbySetTurnTime>();
|
s.template registerType<CLobbyPackToServer, LobbySetTurnTime>();
|
||||||
s.template registerType<CLobbyPackToServer, LobbySetSimturns>();
|
s.template registerType<CLobbyPackToServer, LobbySetSimturns>();
|
||||||
s.template registerType<CLobbyPackToServer, LobbySetDifficulty>();
|
s.template registerType<CLobbyPackToServer, LobbySetDifficulty>();
|
||||||
|
@ -835,6 +835,19 @@ void CVCMIServer::setPlayer(PlayerColor clickedColor)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CVCMIServer::setPlayerName(PlayerColor color, std::string name)
|
||||||
|
{
|
||||||
|
PlayerSettings & player = si->playerInfos[color];
|
||||||
|
|
||||||
|
if(player.isControlledByHuman())
|
||||||
|
{
|
||||||
|
int nameID = *(player.connectedPlayerIDs.begin()); //if not AI - set appropiate ID
|
||||||
|
|
||||||
|
playerNames[nameID].name = name;
|
||||||
|
setPlayerConnectedId(player, nameID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CVCMIServer::optionNextCastle(PlayerColor player, int dir)
|
void CVCMIServer::optionNextCastle(PlayerColor player, int dir)
|
||||||
{
|
{
|
||||||
PlayerSettings & s = si->playerInfos[player];
|
PlayerSettings & s = si->playerInfos[player];
|
||||||
|
@ -107,6 +107,7 @@ public:
|
|||||||
|
|
||||||
// Work with LobbyInfo
|
// Work with LobbyInfo
|
||||||
void setPlayer(PlayerColor clickedColor);
|
void setPlayer(PlayerColor clickedColor);
|
||||||
|
void setPlayerName(PlayerColor player, std::string name);
|
||||||
void optionNextHero(PlayerColor player, int dir); //dir == -1 or +1
|
void optionNextHero(PlayerColor player, int dir); //dir == -1 or +1
|
||||||
void optionSetHero(PlayerColor player, HeroTypeID id);
|
void optionSetHero(PlayerColor player, HeroTypeID id);
|
||||||
HeroTypeID nextAllowedHero(PlayerColor player, HeroTypeID id, int direction);
|
HeroTypeID nextAllowedHero(PlayerColor player, HeroTypeID id, int direction);
|
||||||
|
@ -86,6 +86,7 @@ public:
|
|||||||
virtual void visitLobbyChangeHost(LobbyChangeHost & pack) override;
|
virtual void visitLobbyChangeHost(LobbyChangeHost & pack) override;
|
||||||
virtual void visitLobbyChangePlayerOption(LobbyChangePlayerOption & pack) override;
|
virtual void visitLobbyChangePlayerOption(LobbyChangePlayerOption & pack) override;
|
||||||
virtual void visitLobbySetPlayer(LobbySetPlayer & pack) override;
|
virtual void visitLobbySetPlayer(LobbySetPlayer & pack) override;
|
||||||
|
virtual void visitLobbySetPlayerName(LobbySetPlayerName & pack) override;
|
||||||
virtual void visitLobbySetTurnTime(LobbySetTurnTime & pack) override;
|
virtual void visitLobbySetTurnTime(LobbySetTurnTime & pack) override;
|
||||||
virtual void visitLobbySetSimturns(LobbySetSimturns & pack) override;
|
virtual void visitLobbySetSimturns(LobbySetSimturns & pack) override;
|
||||||
virtual void visitLobbySetDifficulty(LobbySetDifficulty & pack) override;
|
virtual void visitLobbySetDifficulty(LobbySetDifficulty & pack) override;
|
||||||
|
@ -397,6 +397,12 @@ void ApplyOnServerNetPackVisitor::visitLobbySetPlayer(LobbySetPlayer & pack)
|
|||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ApplyOnServerNetPackVisitor::visitLobbySetPlayerName(LobbySetPlayerName & pack)
|
||||||
|
{
|
||||||
|
srv.setPlayerName(pack.color, pack.name);
|
||||||
|
result = true;
|
||||||
|
}
|
||||||
|
|
||||||
void ApplyOnServerNetPackVisitor::visitLobbySetSimturns(LobbySetSimturns & pack)
|
void ApplyOnServerNetPackVisitor::visitLobbySetSimturns(LobbySetSimturns & pack)
|
||||||
{
|
{
|
||||||
srv.si->simturnsInfo = pack.simturnsInfo;
|
srv.si->simturnsInfo = pack.simturnsInfo;
|
||||||
|
Loading…
Reference in New Issue
Block a user