forked from Mirrorlandia_minetest/minetest
Fix nick completion
This commit is contained in:
parent
76b86c0368
commit
b0e6806077
@ -464,7 +464,7 @@ void ChatPrompt::historyNext()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatPrompt::nickCompletion(const std::list<std::wstring>& names, bool backwards)
|
void ChatPrompt::nickCompletion(const std::list<std::string>& names, bool backwards)
|
||||||
{
|
{
|
||||||
// Two cases:
|
// Two cases:
|
||||||
// (a) m_nick_completion_start == m_nick_completion_end == 0
|
// (a) m_nick_completion_start == m_nick_completion_end == 0
|
||||||
@ -493,13 +493,13 @@ void ChatPrompt::nickCompletion(const std::list<std::wstring>& names, bool backw
|
|||||||
|
|
||||||
// find all names that start with the selected prefix
|
// find all names that start with the selected prefix
|
||||||
std::vector<std::wstring> completions;
|
std::vector<std::wstring> completions;
|
||||||
for (std::list<std::wstring>::const_iterator
|
for (std::list<std::string>::const_iterator
|
||||||
i = names.begin();
|
i = names.begin();
|
||||||
i != names.end(); ++i)
|
i != names.end(); ++i)
|
||||||
{
|
{
|
||||||
if (str_starts_with(*i, prefix, true))
|
if (str_starts_with(narrow_to_wide(*i), prefix, true))
|
||||||
{
|
{
|
||||||
std::wstring completion = *i;
|
std::wstring completion = narrow_to_wide(*i);
|
||||||
if (prefix_start == 0)
|
if (prefix_start == 0)
|
||||||
completion += L":";
|
completion += L":";
|
||||||
completions.push_back(completion);
|
completions.push_back(completion);
|
||||||
|
@ -160,7 +160,7 @@ public:
|
|||||||
void historyNext();
|
void historyNext();
|
||||||
|
|
||||||
// Nick completion
|
// Nick completion
|
||||||
void nickCompletion(const std::list<std::wstring>& names, bool backwards);
|
void nickCompletion(const std::list<std::string>& names, bool backwards);
|
||||||
|
|
||||||
// Update console size and reformat the visible portion of the prompt
|
// Update console size and reformat the visible portion of the prompt
|
||||||
void reformat(u32 cols);
|
void reformat(u32 cols);
|
||||||
|
@ -2501,18 +2501,9 @@ void Client::printDebugInfo(std::ostream &os)
|
|||||||
<<std::endl;*/
|
<<std::endl;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
std::list<std::wstring> Client::getConnectedPlayerNames()
|
std::list<std::string> Client::getConnectedPlayerNames()
|
||||||
{
|
{
|
||||||
std::list<Player*> players = m_env.getPlayers(true);
|
return m_env.getPlayerNames();
|
||||||
std::list<std::wstring> playerNames;
|
|
||||||
for(std::list<Player*>::iterator
|
|
||||||
i = players.begin();
|
|
||||||
i != players.end(); ++i)
|
|
||||||
{
|
|
||||||
Player *player = *i;
|
|
||||||
playerNames.push_back(narrow_to_wide(player->getName()));
|
|
||||||
}
|
|
||||||
return playerNames;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float Client::getAnimationTime()
|
float Client::getAnimationTime()
|
||||||
|
@ -315,7 +315,7 @@ public:
|
|||||||
// Prints a line or two of info
|
// Prints a line or two of info
|
||||||
void printDebugInfo(std::ostream &os);
|
void printDebugInfo(std::ostream &os);
|
||||||
|
|
||||||
std::list<std::wstring> getConnectedPlayerNames();
|
std::list<std::string> getConnectedPlayerNames();
|
||||||
|
|
||||||
float getAnimationTime();
|
float getAnimationTime();
|
||||||
|
|
||||||
|
@ -708,11 +708,15 @@ public:
|
|||||||
if(player && player->isLocal()){
|
if(player && player->isLocal()){
|
||||||
m_is_local_player = true;
|
m_is_local_player = true;
|
||||||
}
|
}
|
||||||
|
m_env->addPlayerName(m_name.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
~GenericCAO()
|
~GenericCAO()
|
||||||
{
|
{
|
||||||
|
if(m_is_player){
|
||||||
|
m_env->removePlayerName(m_name.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static ClientActiveObject* create(IGameDef *gamedef, ClientEnvironment *env)
|
static ClientActiveObject* create(IGameDef *gamedef, ClientEnvironment *env)
|
||||||
|
@ -470,6 +470,13 @@ public:
|
|||||||
ClientEnvEvent getClientEvent();
|
ClientEnvEvent getClientEvent();
|
||||||
|
|
||||||
std::vector<core::vector2d<int> > attachment_list; // X is child ID, Y is parent ID
|
std::vector<core::vector2d<int> > attachment_list; // X is child ID, Y is parent ID
|
||||||
|
|
||||||
|
std::list<std::string> getPlayerNames()
|
||||||
|
{ return m_player_names; }
|
||||||
|
void addPlayerName(std::string name)
|
||||||
|
{ m_player_names.push_back(name); }
|
||||||
|
void removePlayerName(std::string name)
|
||||||
|
{ m_player_names.remove(name); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ClientMap *m_map;
|
ClientMap *m_map;
|
||||||
@ -482,6 +489,7 @@ private:
|
|||||||
Queue<ClientEnvEvent> m_client_event_queue;
|
Queue<ClientEnvEvent> m_client_event_queue;
|
||||||
IntervalLimiter m_active_object_light_update_interval;
|
IntervalLimiter m_active_object_light_update_interval;
|
||||||
IntervalLimiter m_lava_hurt_interval;
|
IntervalLimiter m_lava_hurt_interval;
|
||||||
|
std::list<std::string> m_player_names;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -535,7 +535,7 @@ bool GUIChatConsole::OnEvent(const SEvent& event)
|
|||||||
{
|
{
|
||||||
// Tab or Shift-Tab pressed
|
// Tab or Shift-Tab pressed
|
||||||
// Nick completion
|
// Nick completion
|
||||||
std::list<std::wstring> names = m_client->getConnectedPlayerNames();
|
std::list<std::string> names = m_client->getConnectedPlayerNames();
|
||||||
bool backwards = event.KeyInput.Shift;
|
bool backwards = event.KeyInput.Shift;
|
||||||
m_chat_backend->getPrompt().nickCompletion(names, backwards);
|
m_chat_backend->getPrompt().nickCompletion(names, backwards);
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user