⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 missions.cpp

📁 打飞机的过关游戏(linux)
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			missions[i].completed2[j] = complete;
		}

		fscanf(fp, "%d", &add);

		missions[i].addAliens = add;

		fclose(fp);
	}
}

void initMissions(){loadMissions();}

#else

void saveMissions()
{
	FILE *fp;
	char filename[65];

	for (int i = 0 ; i < MAX_MISSIONS ; i++)
	{
		strcpy(filename, "");
		sprintf(filename, "data/mission%.2d.dat", i);

		//WRITE MISSION DATA
		fp = fopen(filename, "wb");
		if (fp == NULL)
		{
			printf("Unable to write Mission Data File (%s)\n", filename);
			exit(1);
		}

		for (int j = 0 ; j < 3 ; j++)
		{
			fprintf(fp, "%s\n", missions[i].primaryObjective[j]);
			fprintf(fp, "%d ", missions[i].primaryType[j]);
			fprintf(fp, "%d ", missions[i].target1[j]);
			fprintf(fp, "%d ", missions[i].targetValue1[j]);
			fprintf(fp, "%d ", missions[i].timeLimit1[j]);
			fprintf(fp, "%d\n", missions[i].completed1[j]);
		}

		for (int j = 0 ; j < 3 ; j++)
		{
			fprintf(fp, "%s\n", missions[i].secondaryObjective[j]);
			fprintf(fp, "%d ", missions[i].secondaryType[j]);
			fprintf(fp, "%d ", missions[i].target2[j]);
			fprintf(fp, "%d ", missions[i].targetValue2[j]);
			fprintf(fp, "%d ", missions[i].timeLimit2[j]);
			fprintf(fp, "%d\n", missions[i].completed2[j]);
		}

		fprintf(fp, "%d ", missions[i].addAliens);

		// Put an extra line for the PAK file "just in case"
		fprintf(fp, "\n");

		fclose(fp);
	}
}

/*
This is where all the missions are defined. This will be placed
into a data file when the game is finished.
*/
void initMissions()
{
	clearAllMissions();

	// Seconds to wait between attempting to add an enemy
	int SOMETIMES    = 40 * 60;
	int NORMAL       = 15 * 60;
	int FREQUENT     = 5 * 60;
	int ALWAYS       = 1 * 60;
	int NEVER		  = -1;

	// Mission 0
	sprintf(missions[0].primaryObjective[0], "Escape from WEAPCO Persuit");
	missions[0].primaryType[0] = M_DESTROY_ALL_TARGETS;
	missions[0].completed1[0] = OB_INCOMPLETE;

	// Mission 1
	sprintf(missions[1].primaryObjective[0], "Collect $500 to pay Mercenary for FIREFLY");
	missions[1].primaryType[0] = M_COLLECT;
	missions[1].target1[0] = P_CASH;
	missions[1].targetValue1[0] = 500;
	missions[1].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[1].primaryObjective[1], "Destroy all remaining WEAPCO fighters");
	missions[1].primaryType[1] = M_DESTROY_ALL_TARGETS;
	missions[1].completed1[1] = OB_INCOMPLETE;

	missions[1].addAliens = FREQUENT;

	// Mission 2
	sprintf(missions[2].primaryObjective[0], "Collect 6 Cargo Pods");
	missions[2].primaryType[0] = M_COLLECT;
	missions[2].target1[0] = P_CARGO;
	missions[2].targetValue1[0] = 6;
	missions[2].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[2].primaryObjective[1], "Do not destroy *ANY* Cargo Pods");
	missions[2].primaryType[1] = M_PROTECT_PICKUP;
	missions[2].target1[1] = P_CARGO;
	missions[2].targetValue1[1] = 0;
	missions[2].completed1[1] = OB_CONDITION;

	sprintf(missions[2].secondaryObjective[0], "Destroy all remaining WEAPCO fighters");
	missions[2].secondaryType[0] = M_DESTROY_ALL_TARGETS;
	missions[2].completed2[0] = OB_INCOMPLETE;

	missions[2].addAliens = FREQUENT;

	// Mission 3
	sprintf(missions[3].primaryObjective[0], "Destroy 5 WEAPCO Missile Boats");
	missions[3].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[3].target1[0] = CD_MISSILEBOAT;
	missions[3].targetValue1[0] = 5;
	missions[3].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[3].secondaryObjective[0], "Destroy all remaining WEAPCO fighters");
	missions[3].secondaryType[0] = M_DESTROY_ALL_TARGETS;
	missions[3].completed2[0] = OB_INCOMPLETE;

	missions[3].addAliens = NORMAL;

	// Mission 4
	sprintf(missions[4].primaryObjective[0], "Destroy 9 WEAPCO Miners");
	missions[4].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[4].target1[0] = CD_MINER;
	missions[4].targetValue1[0] = 9;
	missions[4].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[4].secondaryObjective[0], "Destroy all remaining WEAPCO fighters");
	missions[4].secondaryType[0] = M_DESTROY_ALL_TARGETS;
	missions[4].completed2[0] = OB_INCOMPLETE;

	missions[4].addAliens = NORMAL;

	// Mission 5
	sprintf(missions[5].primaryObjective[0], "Destroy WEAPCO Frigate");
	missions[5].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[5].target1[0] = CD_BOSS;
	missions[5].targetValue1[0] = 1;
	missions[5].completed1[0] = OB_INCOMPLETE;
	
	missions[5].timeLimit1[0] = 3;

	missions[5].addAliens = SOMETIMES;

	/*
		Mission 6 is the rescue 250 slaves mission. It doesn't actually
		count in this list. This is just here as a place holder
	*/

	// Mission 7
	sprintf(missions[7].primaryObjective[0], "Rescue Phoebe Lexx");
	missions[7].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[7].target1[0] = CD_CARGOSHIP;
	missions[7].targetValue1[0] = 1;
	missions[7].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[7].primaryObjective[1], "Do not allow Phoebe to be killed");
	missions[7].primaryType[1] = M_PROTECT_TARGET;
	missions[7].target1[1] = CD_PHOEBE;
	missions[7].targetValue1[1] = 0;
	missions[7].completed1[1] = OB_CONDITION;

	sprintf(missions[7].primaryObjective[2], "Destroy all WEAPCO forces");
	missions[7].primaryType[2] = M_DESTROY_TARGET_TYPE;
	missions[7].target1[2] = CD_ANY;
	missions[7].targetValue1[2] = 35;
	missions[7].completed1[2] = OB_INCOMPLETE;

	missions[7].addAliens = ALWAYS;

	// Mission 8
	sprintf(missions[8].primaryObjective[0], "Assist medical supply craft");
	missions[8].primaryType[0] = M_ESCAPE_TARGET;
	missions[8].target1[0] = CD_GOODTRANSPORT;
	missions[8].targetValue1[0] = 0;
	missions[8].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[8].primaryObjective[1], "Do not allow supply craft to be destroyed");
	missions[8].primaryType[1] = M_PROTECT_TARGET;
	missions[8].target1[1] = CD_GOODTRANSPORT;
	missions[8].targetValue1[1] = 0;
	missions[8].completed1[1] = OB_CONDITION;
	
	sprintf(missions[8].secondaryObjective[0], "Destroy all remaining WEAPCO fighters");
	missions[8].secondaryType[0] = M_DESTROY_ALL_TARGETS;
	missions[8].completed2[0] = OB_INCOMPLETE;

	missions[8].addAliens = FREQUENT;

	// Mission 9
	sprintf(missions[9].primaryObjective[0], "Disable five WEAPCO supply craft");
	missions[9].primaryType[0] = M_DISABLE_TARGET;
	missions[9].target1[0] = CD_CARGOSHIP;
	missions[9].targetValue1[0] = 5;
	missions[9].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[9].primaryObjective[1], "Destroy all remaining WEAPCO fighters");
	missions[9].primaryType[1] = M_DESTROY_ALL_TARGETS;
	missions[9].completed1[1] = OB_INCOMPLETE;

	sprintf(missions[9].primaryObjective[2], "Protect supply craft AND Sid Wilson");
	missions[9].primaryType[2] = M_PROTECT_TARGET;
	missions[9].target1[2] = CD_CARGOSHIP;
	missions[9].targetValue1[2] = 0;
	missions[9].completed1[2] = OB_CONDITION;

	missions[9].addAliens = FREQUENT;

	// Mission 10
	sprintf(missions[10].primaryObjective[0], "Locate doctor's escape pod");
	missions[10].primaryType[0] = M_COLLECT;
	missions[10].target1[0] = P_ESCAPEPOD;
	missions[10].targetValue1[0] = 1;
	missions[10].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[10].primaryObjective[1], "Do not destroy doctor's escape pod");
	missions[10].primaryType[1] = M_PROTECT_PICKUP;
	missions[10].target1[1] = P_ESCAPEPOD;
	missions[10].targetValue1[1] = 1; // DONE ON PURPOSE!! DO NOT CHANGE THIS!!!!
	missions[10].completed1[1] = OB_CONDITION;

	sprintf(missions[10].secondaryObjective[0], "Collect 10 pieces of Ore");
	missions[10].secondaryType[0] = M_COLLECT;
	missions[10].target2[0] = P_ORE;
	missions[10].targetValue2[0] = 10;
	missions[10].completed2[0] = OB_INCOMPLETE;

	missions[10].addAliens = ALWAYS;

	missions[10].timeLimit1[0] = 3;
	missions[10].timeLimit2[0] = 3;

	// Mission 11 (hmmm, that was too easy...)
	sprintf(missions[11].primaryObjective[0], "Destroy WEAPCO ore mining craft");
	missions[11].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[11].target1[0] = CD_BOSS;
	missions[11].targetValue1[0] = 1;
	missions[11].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[11].secondaryObjective[0], "Save present slaves");
	missions[11].secondaryType[0] = M_PROTECT_PICKUP;
	missions[11].target2[0] = P_SLAVES;
	missions[11].completed2[0] = OB_CONDITION;

	sprintf(missions[11].primaryObjective[1], "Battle Kline");
	missions[11].primaryType[1] = M_ESCAPE_TARGET;
	missions[11].target1[1] = CD_KLINE;
	missions[11].targetValue1[1] = 1;
	missions[11].completed1[1] = OB_HIDDEN;

	missions[11].addAliens = NEVER;

	/*
		Mission 12 is the Destroy Experimental Fighter mission
		this is just a place holder
	*/

	// Mission 13
	sprintf(missions[13].primaryObjective[0], "Destroy Ursula's ship");
	missions[13].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[13].target1[0] = CD_EVILURSULA;
	missions[13].targetValue1[0] = 0;
	missions[13].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[13].primaryObjective[1], "Capture Ursula's escape pod");
	missions[13].primaryType[1] = M_COLLECT;
	missions[13].target1[1] = P_ESCAPEPOD;
	missions[13].targetValue1[1] = 1;
	missions[13].completed1[1] = OB_INCOMPLETE;

	sprintf(missions[13].primaryObjective[2], "Do not kill Ursula");
	missions[13].primaryType[2] = M_PROTECT_PICKUP;
	missions[13].target1[2] = P_ESCAPEPOD;
	missions[13].targetValue1[2] = 0;
	missions[13].completed1[2] = OB_CONDITION;

	sprintf(missions[13].secondaryObjective[0], "Destroy all remaining WEAPCO fighters");
	missions[13].secondaryType[0] = M_DESTROY_ALL_TARGETS;
	missions[13].completed2[0] = OB_INCOMPLETE;

	missions[13].addAliens = FREQUENT;

	// Mission 14
	sprintf(missions[14].primaryObjective[0], "Assist attack on WEAPCO ore mining craft");
	missions[14].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[14].target1[0] = CD_BOSS;
	missions[14].targetValue1[0] = 1;
	missions[14].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[14].primaryObjective[1], "At least 1 rebel craft must survive");
	missions[14].primaryType[1] = M_PROTECT_TARGET;
	missions[14].target1[1] = CD_REBELCARRIER;
	missions[14].targetValue1[1] = 2;
	missions[14].completed1[1] = OB_CONDITION;

	sprintf(missions[14].primaryObjective[2], "Destroy all present WEAPCO forces");
	missions[14].primaryType[2] = M_DESTROY_ALL_TARGETS;
	missions[14].completed1[2] = OB_INCOMPLETE;

	missions[14].addAliens = ALWAYS;

	// Mission 15
	sprintf(missions[15].primaryObjective[0], "Collect 25 pieces of Ore");
	missions[15].primaryType[0] = M_COLLECT;
	missions[15].target1[0] = P_ORE;
	missions[15].targetValue1[0] = 25;
	missions[15].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[15].secondaryObjective[0], "Collect 25 pieces of Ore");
	missions[15].secondaryType[0] = M_COLLECT;
	missions[15].target2[0] = P_ORE;
	missions[15].targetValue2[0] = 25;
	missions[15].completed2[0] = OB_INCOMPLETE;

	missions[15].addAliens = ALWAYS;

	// Mission 16
	sprintf(missions[16].primaryObjective[0], "Collect $2000 to pay mercenary");
	missions[16].primaryType[0] = M_COLLECT;
	missions[16].target1[0] = P_CASH;
	missions[16].targetValue1[0] = 2000;
	missions[16].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[16].primaryObjective[1], "Destroy all remaining WEAPCO fighters");
	missions[16].primaryType[1] = M_DESTROY_ALL_TARGETS;
	missions[16].completed1[1] = OB_INCOMPLETE;

	missions[16].addAliens = ALWAYS;

	// Mission 17
	sprintf(missions[17].primaryObjective[0], "Destroy escorts");
	missions[17].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[17].target1[0] = CD_ESCORT;
	missions[17].targetValue1[0] = 5;
	missions[17].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[17].primaryObjective[1], "Disable executive transport");
	missions[17].primaryType[1] = M_ESCAPE_TARGET;
	missions[17].target1[1] = CD_BOSS;
	missions[17].targetValue1[1] = 1;
	missions[17].completed1[1] = OB_INCOMPLETE;

	sprintf(missions[17].primaryObjective[2], "Destroy all remaining WEAPCO fighters");
	missions[17].primaryType[2] = M_DESTROY_ALL_TARGETS;
	missions[17].completed1[2] = OB_INCOMPLETE;

	missions[17].addAliens = NORMAL;

	// Mission 18
	sprintf(missions[18].primaryObjective[0], "Destroy executive transport");
	missions[18].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[18].target1[0] = CD_BOSS;
	missions[18].targetValue1[0] = 1;
	missions[18].completed1[0] = OB_INCOMPLETE;

	missions[18].addAliens = ALWAYS;

	// Mission 19
	sprintf(missions[19].primaryObjective[0], "Destroy planetary guardian");
	missions[19].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[19].target1[0] = CD_PLUTOBOSS;
	missions[19].targetValue1[0] = 1;
	missions[19].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[19].primaryObjective[1], "Destroy all remaining WEAPCO fighters");
	missions[19].primaryType[1] = M_DESTROY_ALL_TARGETS;
	missions[19].completed1[1] = OB_INCOMPLETE;

	missions[19].timeLimit1[0] = 5;
	missions[19].timeLimit1[1] = 5;

	missions[19].addAliens = ALWAYS;

	// Mission 20
	sprintf(missions[20].primaryObjective[0], "Destroy planetary guardian");
	missions[20].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[20].target1[0] = CD_NEPTUNEBOSS;
	missions[20].targetValue1[0] = 1;
	missions[20].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[20].primaryObjective[1], "Destroy all remaining WEAPCO fighters");
	missions[20].primaryType[1] = M_DESTROY_ALL_TARGETS;
	missions[20].completed1[1] = OB_INCOMPLETE;

	missions[20].timeLimit1[0] = 5;
	missions[20].timeLimit1[1] = 5;

	missions[20].addAliens = ALWAYS;

	// Mission 21
	sprintf(missions[21].primaryObjective[0], "Destroy all present WEAPCO forces");
	missions[21].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[21].target1[0] = CD_URANUSBOSS;
	missions[21].targetValue1[0] = 1;
	missions[21].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[21].primaryObjective[1], "Destroy all remaining WEAPCO fighters");
	missions[21].primaryType[1] = M_DESTROY_ALL_TARGETS;
	missions[21].completed1[1] = OB_INCOMPLETE;

	missions[21].timeLimit1[0] = 5;
	missions[21].timeLimit1[1] = 5;

	missions[21].addAliens = ALWAYS;

	// Mission 22
	sprintf(missions[22].primaryObjective[0], "Destroy outer defence systems");
	missions[22].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[22].target1[0] = CD_MOBILE_RAY;
	missions[22].targetValue1[0] = 6;
	missions[22].completed1[0] = OB_INCOMPLETE;

	sprintf(missions[22].primaryObjective[1], "Destroy all remaining WEAPCO craft");
	missions[22].primaryType[1] = M_DESTROY_ALL_TARGETS;
	missions[22].completed1[1] = OB_INCOMPLETE;

	missions[22].addAliens = NORMAL;

	// Mission 23
	sprintf(missions[23].primaryObjective[0], "Investigate distress call");
	missions[23].primaryType[0] = M_DESTROY_ALL_TARGETS;
	missions[23].completed1[0] = OB_CONDITION;

	sprintf(missions[23].primaryObjective[1], "Defeat Krass Tyler");
	missions[23].primaryType[1] = M_DESTROY_TARGET_TYPE;
	missions[23].target1[1] = CD_KRASS;
	missions[23].targetValue1[1] = 1;
	missions[23].completed1[1] = OB_HIDDEN;

	sprintf(missions[23].primaryObjective[2], "Destroy Krass' support group");
	missions[23].primaryType[2] = M_DESTROY_ALL_TARGETS;
	missions[23].target1[1] = CD_FIREFLY;
	missions[23].targetValue1[1] = 4;
	missions[23].completed1[2] = OB_HIDDEN;

	missions[23].addAliens = ALWAYS;

	// Mission 24
	sprintf(missions[24].primaryObjective[0], "Navigate asteroid belt");
	missions[24].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[24].target1[0] = CD_BOSS;
	missions[24].targetValue1[0] = 1;
	missions[24].completed1[0] = OB_INCOMPLETE;

	missions[24].timeLimit1[0] = 2;

	missions[24].addAliens = ALWAYS;

	// Mission 25
	sprintf(missions[25].primaryObjective[0], "Destroy WEAPCO frontline forces");
	missions[25].primaryType[0] = M_DESTROY_TARGET_TYPE;
	missions[25].target1[0] = CD_ANY;
	missions[25].targetValue1[0] = 100;
	missions[25].completed1[0] = OB_INCOMPLETE;

	missions[25].addAliens = ALWAYS;

	// Mission 26
	sprintf(missions[26].primaryObjective[0], "Defeat Kline");
	missions[26].primaryType[0] = M_DESTROY_ALL_TARGETS;
	missions[26].completed1[0] = OB_INCOMPLETE;

	// Interception Mission
	strcpy(missions[MAX_MISSIONS - 1].primaryObjective[0], "");
	missions[MAX_MISSIONS - 1].primaryType[0] = M_DESTROY_ALL_TARGETS;
	missions[MAX_MISSIONS - 1].completed1[0] = OB_INCOMPLETE;

	saveMissions();
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -