User::User(std::wstring str) { std::vector<std::wstring> v = wsplit(str, ':'); this->login = v[0]; this->isAdmin = std::stoi(v[1]); this->isBlocked = std::stoi(v[2]); this->isNew = std::stoi(v[3]); this->validatorData = std::stoi(v[4]); if (v.size() < 6) { this->hash = L""; } else { this->hash = v[5]; } }
// --------------------------------------------------------------------------- // MakeBBSMenuXML() // // --------------------------------------------------------------------------- bool O2Boards:: MakeBBSMenuXML(string &out, O2DatDB *db) { wstring xml; wstring category; wstring domain_bbsname; wstrarray token; wstrnummap::iterator nmit; O2BoardExMapIt exit; uint64 total; uint64 num; if (boards.empty()) return false; wstrnummap nummap; if (db) total = db->select_datcount(nummap); ExLock.Lock(); for (exit = exmap.begin(); exit != exmap.end(); exit++) { nummap.insert(wstrnummap::value_type(exit->first, 0)); } ExLock.Unlock(); for (size_t i = 0; i < boards.size(); i++) { if (category != boards[i].category) { category = boards[i].category; if (i != 0) xml += L"</category>" EOL; xml += L"<category>" EOL; xml_AddElement(xml, L"categoryname", NULL, category.c_str()); } xml += L"<board>" EOL; xml_AddElement(xml, L"bbsname", NULL, boards[i].bbsname.c_str()); xml_AddElement(xml, L"title", NULL, boards[i].title.c_str(), true); xml_AddElement(xml, L"host", NULL, boards[i].host.c_str()); xml_AddElement(xml, L"domain", NULL, boards[i].domain.c_str()); domain_bbsname = boards[i].domain + L":" + boards[i].bbsname; nmit = nummap.find(domain_bbsname); num = nmit == nummap.end() ? 0 : nmit->second; xml_AddElement(xml, L"datnum", NULL, num); //xml_AddElement(xml, L"ratio", NULL, total == 0 ? 0 : (uint)((double)num/total*100.0)); xml_AddElement(xml, L"ratio", NULL, num > 1000 ? 100 : (uint)((double)num/1000*100.0)); if (nmit != nummap.end()) nummap.erase(nmit); ExLock.Lock(); exit = exmap.find(domain_bbsname); xml_AddElement(xml, L"enable", NULL, exit != exmap.end() && exit->second->enable ? L"1" : L"0"); ExLock.Unlock(); xml += L"</board>" EOL; } xml += L"</category>" EOL; // xml += L"<category>" EOL; xml_AddElement(xml, L"categoryname", NULL, L"不明"); for (nmit = nummap.begin(); nmit != nummap.end(); nmit++) { wsplit(nmit->first.c_str(), L":", token); xml += L"<board>" EOL; xml_AddElement(xml, L"bbsname", NULL, token[1].c_str()); xml_AddElement(xml, L"title", NULL, token[1].c_str(), true); xml_AddElement(xml, L"host", NULL, L""); xml_AddElement(xml, L"domain", NULL, token[0].c_str()); xml_AddElement(xml, L"datnum", NULL, nmit->second); xml_AddElement(xml, L"ratio", NULL, total == 0 ? 0 : (uint)((double)nmit->second/total*100.0)); ExLock.Lock(); exit = exmap.find(nmit->first); xml_AddElement(xml, L"enable", NULL, exit != exmap.end() ? L"1" : L"0"); ExLock.Unlock(); xml += L"</board>" EOL; } xml += L"</category>" EOL; FromUnicode(_T(DEFAULT_XML_CHARSET), xml, out); return true; }
void MyMessageBox::Draw(int type,wchar_t *format, ...) { glEnable(GL_BLEND); glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); glColor4f(0, 0, 0, 0.5f); glBegin(GL_QUADS); { glVertex2f(29, 4); glVertex2f(271, 4); glVertex2f(271, 86); glVertex2f(29, 86); } glEnd(); message_box_image->changeImage(); glColor4f(0.7f, 0.7f, 0.7f, 1); glBegin(GL_QUADS); { glTexCoord2f(0.f, 0.f); glVertex2f(30, 85); glTexCoord2f(0.f, 1.f); glVertex2f(30, 5); glTexCoord2f(1.f, 1.f); glVertex2f(270, 5); glTexCoord2f(1.f, 0.f); glVertex2f(270, 85); } glEnd(); glColor4f(1, 1, 1, 1); if (type != NULL) { if (type == MESSAGE_TYPE_COLT) { koruto_image->changeImage(); } else if (type == MESSAGE_TYPE_COLT_KOMARIGAO) { koruto_komarigao_image->changeImage(); } glBegin(GL_QUADS); { glTexCoord2f(0.f, 0.f); glVertex2f(35, 110); glTexCoord2f(0.f, 1.f); glVertex2f(35, 5); glTexCoord2f(1.f, 1.f); glVertex2f(85, 5); glTexCoord2f(1.f, 0.f); glVertex2f(85, 110); } glEnd(); } glDisable(GL_TEXTURE_2D); glDisable(GL_BLEND); wchar_t buf[256]; std::vector <std::wstring> message; std::vector <const wchar_t*> message2; va_list args; if (format == NULL) return; va_start(args, format); vswprintf_s(buf, format, args); va_end(args); message = wsplit(buf, L'\n'); for (int i = 0; i < message.size(); i++) { message2.push_back(message[i].c_str()); } for (int i = 0; i < message2.size(); i++) { font->DrawStringW(88, 60-(i*22), message2[i]); } }