コード例 #1
0
/**
 * @brief CG_LocateCampaign
 */
void CG_LocateCampaign(void)
{
	int          numdirs;
	char         filename[MAX_QPATH];
	char         dirlist[1024];
	char         *dirptr;
	int          i;
	unsigned int dirlen;
	qboolean     found = qfalse;

	// get all campaigns from .campaign files
	numdirs = trap_FS_GetFileList("scripts", ".campaign", dirlist, 1024);
	dirptr  = dirlist;
	for (i = 0; i < numdirs; i++, dirptr += dirlen + 1)
	{
		dirlen = strlen(dirptr);
		Q_strncpyz(filename, "scripts/", MAX_QPATH);
		Q_strcat(filename, MAX_QPATH, dirptr);
		if (CG_FindCampaignInFile(filename, cgs.currentCampaign, &cgs.campaignData))
		{
			found = qtrue;
			break;
		}
	}

	if (!found)
	{
		return;
	}

	for (i = 0; i < cgs.campaignData.mapCount; i++)
	{
		Com_sprintf(filename, sizeof(filename), "scripts/%s.arena", cgs.campaignData.mapnames[i]);

		if (!CG_FindArenaInfo(filename, cgs.campaignData.mapnames[i], &cgs.campaignData.arenas[i]))
		{
			return;
		}
	}

	cgs.campaignInfoLoaded = qtrue;
}
コード例 #2
0
ファイル: cg_missionbriefing.c プロジェクト: morsik/warpig
void CG_LocateCampaign(void)
{
	/*	int			numdirs;
		char		filename[MAX_QPATH];
		char		dirlist[1024];
		char*		dirptr;
		int			i, dirlen;
		qboolean	found = qfalse;

		// get all campaigns from .campaign files
		numdirs = trap_FS_GetFileList( "scripts", ".campaign", dirlist, 1024 );
		dirptr  = dirlist;
		for (i = 0; i < numdirs; i++, dirptr += dirlen+1) {
			dirlen = strlen(dirptr);
			strcpy(filename, "scripts/");
			strcat(filename, dirptr);
			if(CG_FindCurrentCampaignInFile(filename, &cgs.campaignData)) {
				found = qtrue;
				break;
			}
		}

		if(!found) {
			return;
		}

		for(i = 0; i < cgs.campaignData.mapCount; i++ ) {
			Com_sprintf( filename, sizeof(filename), "scripts/%s.arena", cgs.campaignData.mapnames[i] );
			// Gordon: horrible hack, but i dont plan to parse EVERY .arena to get a map briefing...
			if(	!CG_FindArenaInfo( "scripts/wolfmp.arena", cgs.campaignData.mapnames[i], &cgs.campaignData.arenas[i] ) &&
				!CG_FindArenaInfo( "scripts/wolfxp.arena", cgs.campaignData.mapnames[i], &cgs.campaignData.arenas[i] ) &&
				!CG_FindArenaInfo( filename, cgs.campaignData.mapnames[i], &cgs.campaignData.arenas[i] )) {
				return;
			}
		}

		cgs.campaignInfoLoaded = qtrue;*/

	int             numdirs;
	char            filename[MAX_QPATH];
	char            dirlist[1024];
	char           *dirptr;
	int             i, dirlen;
	qboolean        found = qfalse;

	// get all campaigns from .campaign files
	numdirs = trap_FS_GetFileList("scripts", ".campaign", dirlist, 1024);
	dirptr = dirlist;

	for (i = 0; i < numdirs; i++, dirptr += dirlen + 1)
	{
		dirlen = strlen(dirptr);
		Q_strncpyz(filename, "scripts/", MAX_QPATH);
		Q_strcat(filename, MAX_QPATH, dirptr);

		if (CG_FindCampaignInFile(filename, cgs.currentCampaign, &cgs.campaignData))
		{
			found = qtrue;
			break;
		}
	}

	if (!found)
	{
		return;
	}

	for (i = 0; i < cgs.campaignData.mapCount; i++)
	{
		Com_sprintf(filename, sizeof(filename), "scripts/%s.arena", cgs.campaignData.mapnames[i]);

		// Gordon: horrible hack, but i dont plan to parse EVERY .arena to get a map briefing...
		if (/*!CG_FindArenaInfo( "scripts/wolfmp.arena", cgs.campaignData.mapnames[i], &cgs.campaignData.arenas[i] ) &&
								   !CG_FindArenaInfo( "scripts/wolfxp.arena", cgs.campaignData.mapnames[i], &cgs.campaignData.arenas[i] ) && */
		    !CG_FindArenaInfo(filename, cgs.campaignData.mapnames[i], &cgs.campaignData.arenas[i]))
		{
			return;
		}
	}

	cgs.campaignInfoLoaded = qtrue;
}