void GuiList::SetSelected(int child, bool selected) { Assert(child < GetNumChildren()); #ifdef LB_DEBUG GuiText* text = dynamic_cast<GuiText*>(GetChild(child)); if (text) { std::cout << "List box " << m_name << ": " << text->GetText() << (selected ? " selected" : " UNselected") << "\n"; } #endif if (selected && !IsMultiSel()) { // Not multi select, so at most one member in set. for (SelSet::iterator it = m_selset.begin(); it != m_selset.end(); ++it) { int i = *it; GetChild(i)->SetSelected(false); } m_selset.clear(); } GetChild(child)->SetSelected(selected); if (selected) { m_selset.insert(child); } else { m_selset.erase(child); } }
void Hud::Draw() { float dt = TheTimer::Instance()->GetDt(); static const char* SCORE_NAME[3] = { "p1-score-text", "p2-score-text", "hi-score-text" }; static const float origSize[3] = { dynamic_cast<GuiText*>(m_gui->GetElementByName(SCORE_NAME[0]))->GetFontSize(), dynamic_cast<GuiText*>(m_gui->GetElementByName(SCORE_NAME[1]))->GetFontSize(), dynamic_cast<GuiText*>(m_gui->GetElementByName(SCORE_NAME[2]))->GetFontSize() }; for (int i = 0; i < 3; i++) { if (s_scoreExpandTimer[i] > 0) { s_scoreExpandTimer[i] -= dt; if (s_scoreExpandTimer[i] < 0) { s_scoreExpandTimer[i] = 0; } GuiText* text = dynamic_cast<GuiText*>(m_gui->GetElementByName(SCORE_NAME[i])); Assert(text); static const float EXPAND_SCALE = ROConfig()->GetFloat("hud-expand-scale"); text->SetFontSize(origSize[i] * (s_scoreExpandTimer[i] * EXPAND_SCALE + 1.0f)); std::string s = text->GetText(); text->SetText(""); text->SetText(s); // force tri list rebuild } } if (s_lifeTimer > 0) { s_lifeTimer -= dt; if (s_lifeTimer < 0) { s_lifeTimer = 0; } static const char* GUI_NAME[4] = { "heart-img1", "p1-lives-text", "heart-img2", "p2-lives-text" }; float t = s_lifeTimer * 10; bool vis = (((int)t % 2) == 0); for (int i = 0; i < 4; i++) { GuiElement* elem = m_gui->GetElementByName(GUI_NAME[i]); Assert(elem); elem->SetVisible(vis); } } m_gui->Draw(); }