Exemple #1
0
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];
    }
}
Exemple #2
0
// ---------------------------------------------------------------------------
//	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]);
		}
		


		

	}