Add ready status to player icon

This commit is contained in:
Benau 2018-11-16 20:56:21 +08:00
parent eb8b68dcb6
commit f94e226e22
3 changed files with 17 additions and 1 deletions

View File

@ -697,6 +697,9 @@ void ClientLobby::updatePlayerList(Event* event)
if (d == PLAYER_DIFFICULTY_HANDICAP)
std::get<3>(pl) = _("%s (handicapped)", std::get<3>(pl));
std::get<5>(pl) = (KartTeam)data.getUInt8();
bool ready = data.getUInt8() == 1;
if (ready)
std::get<4>(pl) = 4;
players.push_back(pl);
}

View File

@ -460,6 +460,8 @@ void ServerLobby::asynchronousUpdate()
!m_game_setup->isGrandPrixStarted())
{
resetPeersReady();
if (m_timeout.load() != std::numeric_limits<int64_t>::max())
updatePlayerList();
m_timeout.store(std::numeric_limits<int64_t>::max());
}
if (m_timeout.load() < (int64_t)StkTime::getRealTimeMs() ||
@ -833,7 +835,9 @@ void ServerLobby::startSelection(const Event *event)
}
if (ServerConfig::m_owner_less)
{
m_peers_ready.at(event->getPeerSP()) = true;
m_peers_ready.at(event->getPeerSP()) =
!m_peers_ready.at(event->getPeerSP());
updatePlayerList();
return;
}
if (event->getPeerSP() != m_server_owner.lock())
@ -1744,6 +1748,11 @@ void ServerLobby::updatePlayerList(bool update_when_reset_server)
pl->addUInt8(profile->getTeam());
else
pl->addUInt8(KART_TEAM_NONE);
std::shared_ptr<STKPeer> p = profile->getPeer();
uint8_t ready = (!game_started &&
m_peers_ready.find(p) != m_peers_ready.end() &&
m_peers_ready.at(p)) ? 1 : 0;
pl->addUInt8(ready);
}
// Don't send this message to in-game players
@ -2445,6 +2454,7 @@ void ServerLobby::addWaitingPlayersToGame()
void ServerLobby::resetServer()
{
addWaitingPlayersToGame();
resetPeersReady();
m_state = NetworkConfig::get()->isLAN() ?
WAITING_FOR_START_GAME : REGISTER_SELF_ADDRESS;
updatePlayerList(true/*update_when_reset_server*/);

View File

@ -114,10 +114,13 @@ void NetworkingLobby::loadedFromFile()
(file_manager->getAsset(FileManager::GUI_ICON, "main_help.png"));
video::ITexture* icon_4 = irr_driver->getTexture
(file_manager->getAsset(FileManager::GUI_ICON, "hourglass.png"));
video::ITexture* icon_5 = irr_driver->getTexture
(file_manager->getAsset(FileManager::GUI_ICON, "green_check.png"));
m_icon_bank->addTextureAsSprite(icon_1);
m_icon_bank->addTextureAsSprite(icon_2);
m_icon_bank->addTextureAsSprite(icon_3);
m_icon_bank->addTextureAsSprite(icon_4);
m_icon_bank->addTextureAsSprite(icon_5);
const int screen_width = irr_driver->getFrameSize().Width;
m_icon_bank->setScale(screen_width > 1280 ? 0.4f : 0.25f);
} // loadedFromFile