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

📄 instant.cpp

📁 空战游戏flacon源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			txt->Setup(C_DONT_CARE,C_TYPE_RIGHT);
			txt->SetFixedWidth(_tcsclen(buffer)+1);
			txt->SetText(buffer);
			txt->SetXY(215,y);
			txt->SetFGColor(0x00ff00);
			txt->SetFont(UseFont);
			txt->SetFlagBitOn(C_BIT_RIGHT);
			txt->SetClient(2);
			win->AddControl(txt);

			TotalScore+=cur->points;

			y+=fh;
			cur=cur->next;
		}
		RemoveObjectKillsList();
	}

	txt=(C_Text *)win->FindControl(IA_DBRF_BONUS_FIELD);
	if(txt)
	{
		sprintf(buffer,"%1ld",Bonus - Penalty + LivingBonus + LandingBonus);
		AddCommas(buffer);
		txt->SetText(buffer);
	}
	txt=(C_Text *)win->FindControl(REALISM_MULTIPLIER);
	if(txt)
	{
		sprintf(buffer,"%1ld%%",(long)(PlayerOptions.Realism * 100.00f + 0.5f));
		txt->SetText(buffer);
	}

	TotalScore *= static_cast<long>(PlayerOptions.Realism);
	txt=(C_Text *)win->FindControl(IA_DBRF_SCORE_FIELD);
	if(txt)
	{
		sprintf(buffer,"%1ld",TotalScore);
		AddCommas(buffer);
		txt->SetText(buffer);
	}
	win->RefreshWindow();

/*

	int i,j,index;
	int y,fh;
	C_Text *txt;
	long UseFont;
	_TCHAR buffer[100];
	KillList *airList,*gndList;
	int aircnt,gndcnt;
	VehicleClassDataType	*vc;

	y=0;
	UseFont=win->Font_;
	fh=gFontList->GetHeight(UseFont);
	aircnt=0;
	gndcnt=0;

	if(instant_action::get_num_aa_kills ())
	{
		airList=new KillList[instant_action::get_num_air_target_types () + instant_action::get_num_air_threat_types ()];
		for(i=0;i<instant_action::get_num_air_target_types ();i++)
		{
			airList[aircnt].descriptionIndex=instant_action::get_air_target_description_index(0, i);
			airList[aircnt].numKilled=0;
			airList[aircnt].points=0;
			for(j=0;j<=instant_action::get_num_levels();j++)
			{
				airList[aircnt].numKilled+=instant_action::get_air_target_num_killed(j,i);
				airList[aircnt].points+=instant_action::get_air_target_points(j,i);
			}
			aircnt++;
		}

		for(i=0;i<instant_action::get_num_air_threat_types ();i++)
		{
			index=-1;
			for(j=0;j<aircnt;j++)
				if(airList[j].descriptionIndex == instant_action::get_air_threat_description_index (0, i))
					index=j;

			if(index >= 0)
			{
				for(j=0;j<=instant_action::get_num_levels();j++)
				{
					airList[aircnt].numKilled+=instant_action::get_air_threat_num_killed(j, i);
					airList[aircnt].points+=instant_action::get_air_threat_points (j, i);
				}
			}
			else
			{
				airList[aircnt].descriptionIndex=instant_action::get_air_threat_description_index (0, i);
				airList[aircnt].numKilled=0;
				airList[aircnt].points=0;
				for(j=0;j<=instant_action::get_num_levels();j++)
				{
					airList[aircnt].numKilled+=instant_action::get_air_threat_num_killed (j,i);
					airList[aircnt].points+=instant_action::get_air_threat_points (j,i);
				}
				aircnt++;
			}
		}

		for(i=0;i<aircnt;i++)
		{
			if(airList[i].numKilled > 0)
			{
				_stprintf(buffer,"%1d",airList[i].numKilled);
				txt=new C_Text;
				txt->Setup(C_DONT_CARE,C_TYPE_RIGHT);
				txt->SetFixedWidth(_tcsclen(buffer)+1);
				txt->SetText(buffer);
				txt->SetXY(35,y);
				txt->SetFGColor(0xf0f0f0);
				txt->SetFont(UseFont);
				txt->SetFlagBitOn(C_BIT_RIGHT);
				txt->SetClient(2);
				win->AddControl(txt);

				vc = GetVehicleClassData (airList[i].descriptionIndex);
				_stprintf(buffer,"%s",vc->Name);
				txt=new C_Text;
				txt->Setup(C_DONT_CARE,C_TYPE_LEFT);
				txt->SetText(buffer);
				txt->SetXY(45,y);
				txt->SetFGColor(0xf0f0f0);
				txt->SetFont(UseFont);
				txt->SetFlagBitOn(C_BIT_LEFT);
				txt->SetClient(2);
				win->AddControl(txt);

				_stprintf(buffer,"%1ld",airList[i].points);
				AddCommas(buffer);
				txt=new C_Text;
				txt->Setup(C_DONT_CARE,C_TYPE_RIGHT);
				txt->SetFixedWidth(_tcsclen(buffer)+1);
				txt->SetText(buffer);
				txt->SetXY(215,y);
				txt->SetFGColor(0x00ff00);
				txt->SetFont(UseFont);
				txt->SetFlagBitOn(C_BIT_RIGHT);
				txt->SetClient(2);
				win->AddControl(txt);

				TotalScore+=airList[i].points;

				y+=fh;
			}
		}
		delete airList;
	}
	if(instant_action::get_num_ag_kills ())
	{
		gndList=new KillList[instant_action::get_num_gnd_target_types () + instant_action::get_num_gnd_threat_types ()];
		for(i=0;i<instant_action::get_num_gnd_target_types ();i++)
		{
			gndList[gndcnt].descriptionIndex=instant_action::get_gnd_target_description_index(0,i);
			gndList[gndcnt].numKilled=0;
			gndList[gndcnt].points=0;
			for(j=0;j<=instant_action::get_num_levels();j++)
			{
				gndList[gndcnt].numKilled+=instant_action::get_gnd_target_num_killed (j,i);
				gndList[gndcnt].points+=instant_action::get_gnd_target_points (j,i);
			}
			gndcnt++;
		}

		for(i=0;i<instant_action::get_num_gnd_threat_types ();i++)
		{
			index=-1;
			for(j=0;j<gndcnt;j++)
				if(gndList[j].descriptionIndex == instant_action::get_gnd_threat_description_index(0,i))
					index=j;

			if(index >= 0)
			{
				for(j=0;j<=instant_action::get_num_levels();j++)
				{
					gndList[index].numKilled+=instant_action::get_gnd_threat_num_killed (j,i);
					gndList[index].points+=instant_action::get_gnd_threat_points (j,i);
				}
			}
			else
			{
				gndList[gndcnt].descriptionIndex=instant_action::get_gnd_threat_description_index (0,i);
				gndList[gndcnt].numKilled=0;
				gndList[gndcnt].points=0;
				for(j=0;j<=instant_action::get_num_levels();j++)
				{
					gndList[gndcnt].numKilled+=instant_action::get_gnd_threat_num_killed (j,i);
					gndList[gndcnt].points+=instant_action::get_gnd_threat_points (j,i);
				}
				gndcnt++;
			}
		}

		for(i=0;i<gndcnt;i++)
		{
			if(gndList[i].numKilled > 0)
			{
				_stprintf(buffer,"%1d",gndList[i].numKilled);
				txt=new C_Text;
				txt->Setup(C_DONT_CARE,C_TYPE_RIGHT);
				txt->SetFixedWidth(_tcsclen(buffer)+1);
				txt->SetText(buffer);
				txt->SetXY(35,y);
				txt->SetFGColor(0xf0f0f0);
				txt->SetFont(UseFont);
				txt->SetFlagBitOn(C_BIT_RIGHT);
				txt->SetClient(2);
				win->AddControl(txt);

				vc = GetVehicleClassData (gndList[i].descriptionIndex);
				_stprintf(buffer,"%s",vc->Name);
				txt=new C_Text;
				txt->Setup(C_DONT_CARE,C_TYPE_LEFT);
				txt->SetText(buffer);
				txt->SetXY(45,y);
				txt->SetFGColor(0xf0f0f0);
				txt->SetFont(UseFont);
				txt->SetFlagBitOn(C_BIT_LEFT);
				txt->SetClient(2);
				win->AddControl(txt);

				_stprintf(buffer,"%1ld",gndList[i].points);
				AddCommas(buffer);
				txt=new C_Text;
				txt->Setup(C_DONT_CARE,C_TYPE_RIGHT);
				txt->SetFixedWidth(_tcsclen(buffer)+1);
				txt->SetText(buffer);
				txt->SetXY(215,y);
				txt->SetFGColor(0x00ff00);
				txt->SetFont(UseFont);
				txt->SetFlagBitOn(C_BIT_RIGHT);
				txt->SetClient(2);
				win->AddControl(txt);

				TotalScore+=gndList[i].points;

				y+=fh;
			}
		}
		delete gndList;
	}
	
	TotalScore *= PlayerOptions.Realism;
	txt=(C_Text *)win->FindControl(IA_DBRF_SCORE_FIELD);
	if(txt)
	{
		sprintf(buffer,"%1ld",TotalScore);
		AddCommas(buffer);
		txt->SetText(buffer);
	}
	win->RefreshWindow();
*/
}

static void ProcessBonus (void)
{
	kill_list *cur;

	cur = BonusList;

	while (cur)
	{
		Bonus += cur->points;

		cur = cur->next;
	}

	RemoveBonusList ();
}

static void ProcessWeapons(C_Window *win)
{
	int y,fh;
	C_Text *txt;
	_TCHAR buffer[100];
	WeaponClassDataType		*wc;
	kill_list *cur;
	long UseFont;

	y=0;
	UseFont=win->Font_;
	fh=gFontList->GetHeight(UseFont);

	if(WeaponUsage)
	{
		cur=WeaponUsage;
		while(cur)
		{
			wc=(WeaponClassDataType *)Falcon4ClassTable[cur->id].dataPtr;
			_stprintf(buffer,"%s",wc->Name);
			txt=new C_Text;
			txt->Setup(C_DONT_CARE,C_TYPE_LEFT);
			txt->SetText(buffer);
			txt->SetXY(20,y);
			txt->SetFGColor(0xf0f0f0);
			txt->SetFont(UseFont);
			txt->SetFlagBitOn(C_BIT_LEFT);
			txt->SetClient(3);
			win->AddControl(txt);

			_stprintf(buffer,"(%1d)",cur->num);
			txt=new C_Text;
			txt->Setup(C_DONT_CARE,C_TYPE_LEFT);
			txt->SetFixedWidth(_tcsclen(buffer)+1);
			txt->SetText(buffer);
			txt->SetXY(130,y);
			txt->SetFGColor(0xf0f0f0);
			txt->SetFont(UseFont);
			txt->SetFlagBitOn(C_BIT_LEFT);
			txt->SetClient(3);
			win->AddControl(txt);

			_stprintf(buffer,"%1ld",cur->points);
			AddCommas(buffer);
			txt=new C_Text;
			txt->Setup(C_DONT_CARE,C_TYPE_RIGHT);
			txt->SetFixedWidth(_tcsclen(buffer)+1);
			txt->SetText(buffer);
			txt->SetXY(215,y);
			txt->SetFGColor(0x00ff00);
			txt->SetFont(UseFont);
			txt->SetFlagBitOn(C_BIT_RIGHT);
			txt->SetClient(3);
			win->AddControl(txt);

			TotalScore+=cur->points;

			y+=fh;
			cur=cur->next;
		}
		RemoveWeaponUsageList();
	}
	else
	{
		txt=new C_Text;
		txt->Setup(C_DONT_CARE,C_TYPE_LEFT);
		txt->SetText(TXT_NO_WEAPONS_USED);
		txt->SetXY(20,y);
		txt->SetFGColor(0xf0f0f0);
		txt->SetFont(UseFont);
		txt->SetFlagBitOn(C_BIT_LEFT);
		txt->SetClient(3);
		win->AddControl(txt);
	}
	txt=(C_Text *)win->FindControl(IA_DBRF_BONUS_FIELD);
	if(txt)
	{
		sprintf(buffer,"%1ld",Bonus - Penalty + LivingBonus + LandingBonus);
		AddCommas(buffer);
		txt->SetText(buffer);
	}
	txt=(C_Text *)win->FindControl(REALISM_MULTIPLIER);
	if(txt)
	{
		sprintf(buffer,"%1ld%%",(long)(PlayerOptions.Realism * 100.00f + 0.5f));
		txt->SetText(buffer);
	}
	win->RefreshWindow();
}

void CheckHighScore(long TotalScore)
{
	C_Window *win;
	int i;
	C_Text *txt;
	long SoundID;
	_TCHAR buffer[25];

	i=0;
	while(i < MAX_SCORES && TotalScore <= Scores.Scores[i].Score && Scores.Scores[i].Name[0] != 0)
		i++;

	if(TotalScore < 0)
	{
		SoundID=gInstantBites->Pick(IA1);
		if(SoundID)
			gSoundMgr->PlaySound(SoundID);
	}
	else if(TotalScore < _A_LOW_SCORE_)
	{
		SoundID=gInstantBites->Pick(IA2);
		if(SoundID)
			gSoundMgr->PlaySound(SoundID);
	}
	else if(TotalScore < _A_MEDIUM_SCORE_)
	{
		SoundID=gInstantBites->Pick(IA3);
		if(SoundID)
			gSoundMgr->PlaySound(SoundID);
	}
	else if(!i)
	{
		SoundID=gInstantBites->Pick(IA8);
		if(SoundID)
			gSoundMgr->PlaySound(SoundID);
	}
	else if(i == 1 )
	{
		SoundID=gInstantBites->Pick(IA7);
		if(SoundID)
			gSoundMgr->PlaySound(SoundID);
	}
	else if(i >= 2 && i <= 6)
	{
		SoundID=gInstantBites->Pick(IA6);
		if(SoundID)
			gSoundMgr->PlaySound(SoundID);
	}
	else if(i >= 7 && i <= 11)
	{
		SoundID=gInstantBites->Pick(IA5);
		if(SoundID)
			gSoundMgr->PlaySound(SoundID);
	}
	else
	{
		SoundID=gInstantBites->Pick(IA4);
		if(SoundID)
			gSoundMgr->PlaySound(SoundID);
	}

	if(i < MAX_SCORES)
	{
		win=gMainHandler->FindWindow(IA_HS_WIN);
		if(win)
		{
			gMainHandler->EnableWindowGroup(win->GetGroup());
			txt=(C_Text *)win->FindControl(IA_HS_FIELD);
			if(txt)
			{
				_stprintf(buffer,"%1ld",TotalScore);
				AddCommas(buffer);
				txt->SetText(buffer);
			}
			gMainHandler->WindowToFront(win);
			win->RefreshWindow();
			win->SetControl(IA_HS_NAME_EDIT);
		}
	}
	else
	{
		win=gMainHandler->FindWindow(IA_DBRF_WIN);
		gMainHandler->EnableWindowGroup(win->GetGroup());
	}
}

static void SetupInstantAction()
{
	C_Window *win;
	C_Text *txt;
	_TCHAR buf[20];
	int i;

	win=gMainHandler->FindWindow(IA_SETTINGS_WIN);
	if(win)
	{
		SetIAStartup(win);
		win->RefreshWindow();
	}

	GetHighScores();

	win=gMainHandler->FindWindow(IA_SH_WIN);
	if(win)
	{
		for(i=0;i<MAX_SCORES;i++)
		{
			if(Scores.Scores[i].Name[0] != 0)
			{
				// Set Name
				txt=(C_Text *)win->FindControl(TEXT_1+i*2);
				if(txt)
				{
					txt->SetText(Scores.Scores[i].Name);
				}
				// Set Score
				txt=(C_Text *)win->FindControl(TEXT_1+i*2+1);
				if(txt)
				{
					_stprintf(buf,"%1ld",Scores.Scores[i].Score);
					txt->SetText(AddCommas(buf));
				}
			}
		}
		win->RefreshWindow();
	}
	win=gMainHandler->FindWindow(IA_MAP_WIN);
	if(win)
		SetMapStartup(win);
	
	if((MainLastGroup == 1000))
	{// these functions (with scoring) MUST be in this order to work properly
		TotalScore=0;
		Bonus=10000;
		Penalty=0;
		LivingBonus=0;
		LandingBonus=0;

		win=gMainHandler->FindWindow(IA_DBRF_WIN);
		if(win)
		{
			ProcessEventList(win,1);
		}
		//for(i=InstantAction.iaStartLevel;i<InstantAction.iaCurLevel;i++)
			//Bonus+=20000*i;
		win=gMainHandler->FindWindow(IA_DBRF_WIN);
		if(win)
		{
			ProcessBonus();
			ProcessWeapons(win); // Bonus is part of this window
			TotalScore+=Bonus-Penalty + LivingBonus + LandingBonus;
			ProcessKills(win); // TotalScore is part of this window
			win->ScanClientAreas();
			win->RefreshWindow();
		}

		CheckHighScore(TotalScore);

		TheCampaign.EndCampaign ();
	}
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

void OpenIAMunitionsCB (long ID, short hittype, C_Base *control)
{
	if(hittype != C_TYPE_LMOUSEUP)
		return;

	if (!TheCampaign.IsLoaded ())
	{
		// Load a campaign here
		strcpy(gUI_CampaignFile,"Instant");

		TheCampaign.SetOnlineStatus( 0 );
		TheCampaign.LoadCampaign(game_InstantAction, gUI_CampaignFile);

		instant_action::create_player_flight ();
	}

	OpenMunitionsWindowCB (ID, hittype, control);
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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