BattleClientLog::BattleClientLog(battledata *dat, BattleDefaultTheme *theme, bool lognames) : mData(dat), mTheme(theme), mLogNames(lognames)
{
    hasLoggedTeams = false;
    blankMessage = false;

    bool spectator = !(data()->role(battledata::Player1) == BattleConfiguration::Player || data()->role(battledata::Player2) == BattleConfiguration::Player);
    pushHtml("<!DOCTYPE html>");
    pushHtml(QString("<!-- Pokemon Online battle%1 log (version 3.0) -->\n").arg(spectator ? " spectator": ""));
    pushHtml(QString("<head>\n\t<title>%1 vs %2</title>\n</head>").arg(data()->name(battledata::Player1), data()->name(battledata::Player2)));
    pushHtml("<body>");

    if (!spectator) {
        printHtml("BattleStart", toBoldColor(tr("Battle between %1 and %2 started!"), Qt::blue).arg(data()->name(battledata::Player1), data()->name(battledata::Player2)));
    } else {
        printHtml("BattleStart", toBoldColor(tr("Battle between %1 and %2 is underway!"), Qt::blue).arg(data()->name(battledata::Player1), data()->name(battledata::Player2)));
    }

    onBlankMessage();
}
BattleServerLog::BattleServerLog(BattleData<DataContainer> *data, BattleDefaultTheme *theme)
                :BattleClientLog(data, theme)
{
    for (int i = 0; i < 2; i++) {
        QStringList roster;
        for (int j=0; j<6; j++) {
            Pokemon::uniqueId num = data->team(i).poke(j)->num();

            if (num != Pokemon::NoPoke) {
                roster+=PokemonInfo::Name(num);
            }
        }
        printHtml("Teams",toBoldColor(tr("%1's team:"), Qt::blue).arg(data->name(i)) + roster.join(" / "));
    }
}
Exemple #3
0
// generate a .html file for one page
void genPageDocFromTemplate(PageData *page) {
	char *pageTpl=loadTextFile("samples/doctcod/page.tpl");
	if (! pageTpl) return;
	FILE *f = fopen(page->url,"wt");
	while (*pageTpl) {
		if ( strncmp(pageTpl,"${TITLE}",8) == 0 ) {
			// navigator window's title
			fprintf(f,page->title);
			pageTpl+=8;
		} else if ( strncmp(pageTpl,"${SCRIPT}",9) == 0 ) {
			// javascript file (not the same for index.html and other pages)
			if (page == root) fprintf(f,"js/doctcod.js"); else fprintf(f,"../js/doctcod.js");
			pageTpl+=9;
		} else if ( strncmp(pageTpl,"${STYLESHEET}",13) == 0 ) {
			// css file (not the same for index.html and other pages)
			if (page == root) fprintf(f,"css/style.css"); else fprintf(f,"../css/style.css");
			pageTpl+=13;
		} else if ( strncmp(pageTpl,"${LOCATION}",11) == 0 ) {
			// breadcrumb
			fprintf(f,page->breadCrumb);
			pageTpl+=11;
	 	} else if ( strncmp(pageTpl,"${FILTER_FORM}",14) == 0 ) {
			printLanguageFilterForm(f,"c","C",config.generateC);
			printLanguageFilterForm(f,"cpp","C++",config.generateCpp);
			printLanguageFilterForm(f,"py","Py",config.generatePy);
			printLanguageFilterForm(f,"lua","Lua",config.generateLua);
			printLanguageFilterForm(f,"cs","C#",config.generateCs);
			pageTpl+=14;
		} else if ( strncmp(pageTpl,"${PREV_LINK}",12) == 0 ) {
			// prev page link
			fprintf(f,page->prevLink);
			pageTpl+=12;
		} else if ( strncmp(pageTpl,"${NEXT_LINK}",12) == 0 ) {
			// next page link
			fprintf(f,page->nextLink);
			pageTpl+=12;
		} else if ( strncmp(pageTpl,"${PAGE_TITLE}",13) == 0 ) {
			// page title
			if ( page == root ) fprintf(f,page->desc);
			else fprintf(f,"%s. %s",page->pageNum, page->title);
			pageTpl+=13;
		} else if ( strncmp(pageTpl,"${PAGE_CONTENT}",15) == 0 ) {
			pageTpl+=15;
			// sub pages toc
			if ( page == root ) printRootPageToc(f,page);
			else printStandardPageToc(f,page);
			// functions toc
			if ( page->funcs.size() > 1 ) {
				fprintf(f,"<div id=\"toc\"><ul>\n");
				int i=0;
				for ( FuncData **fit=page->funcs.begin(); fit != page->funcs.end(); fit++,i++) {
					FuncData *funcData=*fit;
					if ( funcData->title ) {
						fprintf(f, "<li><a href=\"#%d\">%s</a></li>",
							i,funcData->title);
					}
				}		
				fprintf(f,"</ul></div>\n");
			}
			// page description
			if ( page != root && page->desc ) {
				fprintf(f,"<p>");
				printHtml(f,page->desc);
				fprintf(f,"</p>\n");
				if ( page->colorTable ) printColorTable(f);
			}
			// functions
			int i=0;
			for ( FuncData **fit=page->funcs.begin(); fit != page->funcs.end(); fit++,i++) {
				FuncData *funcData=*fit;
				// title and description
				fprintf(f,"<a name=\"%d\"></a>",i);
				if (funcData->title) fprintf(f,"<h3>%s</h3>\n",funcData->title);
				if (funcData->desc) {
					fprintf(f,"<p>");
					printHtml(f,funcData->desc);
					fprintf(f,"</p>\n");
				}
				// functions for each language
				fprintf(f,"<div class=\"code\">");
				if (config.generateCpp && funcData->cpp) {
					fprintf(f,"<p class=\"cpp\">");
					printCppCode(f,funcData->cpp);
					fprintf(f,"</p>\n");
				}
				if (config.generateC && funcData->c) {
					fprintf(f,"<p class=\"c\">");
					printCCode(f,funcData->c);
					fprintf(f,"</p>\n");
				}
				if (config.generatePy && funcData->py) {
					fprintf(f,"<p class=\"py\">");
					printPyCode(f,funcData->py);
					fprintf(f,"</p>\n");
				}
				if (config.generateCs && funcData->cs) {
					fprintf(f,"<p class=\"cs\">");
					printCSCode(f,funcData->cs);
					fprintf(f,"</p>\n");
				}
				if (config.generateLua && funcData->lua) {
					fprintf(f,"<p class=\"lua\">");
					printLuaCode(f,funcData->lua);
					fprintf(f,"</p>\n");
				}
				fprintf(f,"</div>\n");
				// parameters table
				if ( !funcData->params.isEmpty()) {
					fprintf(f,"<table class=\"param\"><tbody><tr><th>Parameter</th><th>Description</th></tr>");
					bool hilite=true;
					for ( ParamData **pit = funcData->params.begin(); pit != funcData->params.end(); pit++) {
						if ( hilite ) fprintf(f,"<tr class=\"hilite\">");
						else fprintf(f,"<tr>");
						fprintf(f,"<td>%s</td><td>",(*pit)->name);
						printHtml(f,(*pit)->desc);
						fprintf(f,"</td></tr>\n");
						hilite=!hilite;
					}
					fprintf(f,"</tbody></table>");
				}
				// examples
				if ( funcData->cppEx || funcData->cEx || funcData->pyEx ) {
					fprintf(f,"<h6>Example:</h6><div class=\"code\">\n");
					if (config.generateCpp && funcData->cppEx) {
						fprintf(f,"<p class=\"cpp\">");
						printCppCode(f,funcData->cppEx);
						fprintf(f,"</p>\n");
					}
					if (config.generateC && funcData->cEx) {
						fprintf(f,"<p class=\"c\">");
						printCCode(f,funcData->cEx);
						fprintf(f,"</p>\n");
					}
					if (config.generatePy && funcData->pyEx) {
						fprintf(f,"<p class=\"py\">");
						printPyCode(f,funcData->pyEx);
						fprintf(f,"</p>\n");
					}
					if (config.generateCs && funcData->csEx) {
						fprintf(f,"<p class=\"cs\">");
						printCSCode(f,funcData->csEx);
						fprintf(f,"</p>\n");
					}
					if (config.generateLua && funcData->luaEx) {
						fprintf(f,"<p class=\"lua\">");
						printLuaCode(f,funcData->luaEx);
						fprintf(f,"</p>\n");
					}
					fprintf(f,"</div><hr>\n");
				}
			}
		} else {
			fputc(*pageTpl,f);
			pageTpl++;
		}
	}
	fclose(f);	
}
void BattleServerLog::onVariation(int player, int bonus, int malus)
{
    printHtml("Variation", tr("%1+%2, %3").arg(toBoldColor(tr("%1's variation: ").arg(data()->name(player)), Qt::blue)).arg(bonus).arg(malus));
}