}
}
-void ChatPrompt::nickCompletion(const std::list<std::wstring>& names, bool backwards)
+void ChatPrompt::nickCompletion(const std::list<std::string>& names, bool backwards)
{
// Two cases:
// (a) m_nick_completion_start == m_nick_completion_end == 0
// find all names that start with the selected prefix
std::vector<std::wstring> completions;
- for (std::list<std::wstring>::const_iterator
+ for (std::list<std::string>::const_iterator
i = names.begin();
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)
completion += L":";
completions.push_back(completion);
void historyNext();
// 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
void reformat(u32 cols);
<<std::endl;*/
}
-std::list<std::wstring> Client::getConnectedPlayerNames()
+std::list<std::string> Client::getConnectedPlayerNames()
{
- std::list<Player*> players = m_env.getPlayers(true);
- 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;
+ return m_env.getPlayerNames();
}
float Client::getAnimationTime()
// Prints a line or two of info
void printDebugInfo(std::ostream &os);
- std::list<std::wstring> getConnectedPlayerNames();
+ std::list<std::string> getConnectedPlayerNames();
float getAnimationTime();
if(player && player->isLocal()){
m_is_local_player = true;
}
+ m_env->addPlayerName(m_name.c_str());
}
}
~GenericCAO()
{
+ if(m_is_player){
+ m_env->removePlayerName(m_name.c_str());
+ }
}
static ClientActiveObject* create(IGameDef *gamedef, ClientEnvironment *env)
ClientEnvEvent getClientEvent();
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:
ClientMap *m_map;
Queue<ClientEnvEvent> m_client_event_queue;
IntervalLimiter m_active_object_light_update_interval;
IntervalLimiter m_lava_hurt_interval;
+ std::list<std::string> m_player_names;
};
#endif
{
// Tab or Shift-Tab pressed
// Nick completion
- std::list<std::wstring> names = m_client->getConnectedPlayerNames();
+ std::list<std::string> names = m_client->getConnectedPlayerNames();
bool backwards = event.KeyInput.Shift;
m_chat_backend->getPrompt().nickCompletion(names, backwards);
return true;