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

📄 priority.cpp

📁 空战游戏flacon源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
						TeamInfo[team]->GetMissionPriority(AMIS_BARCAP2) +
						TeamInfo[team]->GetMissionPriority(AMIS_HAVCAP) +
						TeamInfo[team]->GetMissionPriority(AMIS_TARCAP) +
						TeamInfo[team]->GetMissionPriority(AMIS_RESCAP) +
						TeamInfo[team]->GetMissionPriority(AMIS_AMBUSHCAP) +
						TeamInfo[team]->GetMissionPriority(AMIS_INTERCEPT)) / 7;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Recon
		sldr=(C_Slider*)win->FindControl(MISSION_8);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetMissionPriority(AMIS_BDA) +
						TeamInfo[team]->GetMissionPriority(AMIS_RECON) +
						TeamInfo[team]->GetMissionPriority(AMIS_RECONPATROL)) / 3;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
	}
}

void LoadPAKPriorities()
{
	long i,idx;
	POData POD;
	short teamid;
	WORD *Pal;
	short CampControl=1;

	if(!PAKMap)
		return;

	teamid=FalconLocalSession->GetTeam();
	Pal=(WORD*)((char *)(PAKMap->Owner->GetData() + PAKMap->Header->paletteoffset));

	memset(PAKPriorities,0,sizeof(PAKPriorities));

	VuListIterator poit(POList);
	Objective o;

	idx=1;
	o = (Objective) poit.GetFirst();
	while(o)
	{
		POD=GetPOData(o);
		if(POD)
		{
			for(i=0;i<NUM_TEAMS;i++)
				{
				if (POD->player_priority[i] >= 0)
					{
					PAKPriorities[idx][i][0]=(uchar)POD->player_priority[i];
					CampControl = 0;
					}
				else
					PAKPriorities[idx][i][0]=(uchar)POD->air_priority[i];
				}

			Pal[idx]=PAKPalette[PAKPriorities[idx][teamid][0]];

			if(CampControl && POD->flags & GTMOBJ_PLAYER_SET_PRIORITY)
				CampControl=0;
		}

		o = (Objective) poit.GetNext();
		idx++;
	}

	if(CampControl)
		TurnOnHQButton();
	else
		TurnOffHQButton();
}

////////////////////////////
// Copies Kevin's priority stuff into the Window's controls
void LoadDefaultTargetPriorities()
{
	C_Window *win;
	C_Slider *sldr;
	long value;
	int team = FalconLocalSession->GetTeam();

	win=gMainHandler->FindWindow(STRAT_WIN);
	if(win)
	{
		// Target Type priorities
		// Aircraft
		sldr=(C_Slider*)win->FindControl(TARGET_1);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = TeamInfo[team]->GetMissionPriority(AMIS_ESCORT);
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Air fields
		sldr=(C_Slider*)win->FindControl(TARGET_2);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = TeamInfo[team]->GetObjTypePriority(TYPE_AIRBASE);
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Air defense
		sldr=(C_Slider*)win->FindControl(TARGET_3);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_AIR_DEFENSE);
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Radar
		sldr=(C_Slider*)win->FindControl(TARGET_4);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = TeamInfo[team]->GetObjTypePriority(TYPE_RADAR);
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Army
		sldr=(C_Slider*)win->FindControl(TARGET_5);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (TeamInfo[team]->GetObjTypePriority(TYPE_ARMYBASE) + TeamInfo[team]->GetObjTypePriority(TYPE_FORTIFICATION))/2;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// CCC
		sldr=(C_Slider*)win->FindControl(TARGET_6);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = TeamInfo[team]->GetObjTypePriority(TYPE_COM_CONTROL);
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Infrastructure
		sldr=(C_Slider*)win->FindControl(TARGET_7);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetObjTypePriority(TYPE_ROAD) + 
						TeamInfo[team]->GetObjTypePriority(TYPE_BRIDGE) +
						TeamInfo[team]->GetObjTypePriority(TYPE_RAIL_TERMINAL)  ) / 3;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Logistics
		sldr=(C_Slider*)win->FindControl(TARGET_8);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = TeamInfo[team]->GetObjTypePriority(TYPE_DEPOT);
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// War production
		sldr=(C_Slider*)win->FindControl(TARGET_9);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetObjTypePriority(TYPE_CHEMICAL) + 
						TeamInfo[team]->GetObjTypePriority(TYPE_FACTORY) +
						TeamInfo[team]->GetObjTypePriority(TYPE_NUCLEAR) +
						TeamInfo[team]->GetObjTypePriority(TYPE_POWERPLANT) +
						TeamInfo[team]->GetObjTypePriority(TYPE_REFINERY)  ) / 5;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Naval bases
		sldr=(C_Slider*)win->FindControl(TARGET_10);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = TeamInfo[team]->GetObjTypePriority(TYPE_PORT);
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Armored Units
		sldr=(C_Slider*)win->FindControl(TARGET_11);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_ARMOR) + 
						TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_ARMORED_CAV) ) / 2;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Infantry Units
		sldr=(C_Slider*)win->FindControl(TARGET_12);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_INFANTRY) + 
						TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_MARINE) +
						TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_MECHANIZED) +
						TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_AIRMOBILE) +
						TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_RESERVE) ) / 5;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Artillery Units
		sldr=(C_Slider*)win->FindControl(TARGET_13);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_ROCKET) + 
						TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_SP_ARTILLERY) +
						TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_SS_MISSILE) +
						TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_TOWED_ARTILLERY) ) / 4;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Support units
		sldr=(C_Slider*)win->FindControl(TARGET_14);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_ENGINEER) + 
						TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_HQ) ) / 2;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Naval Units
		sldr=(C_Slider*)win->FindControl(TARGET_15);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = TeamInfo[team]->GetUnitTypePriority(MAX_UNITTYPE-1); 
//			value = TeamInfo[team]->GetMissionPriority(AMIS_ASHIP);		// Conflicts with mission priorities
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
	}
}

// Copies Kevin's priority stuff into the Window's controls
void LoadDefaultMissionPriorities()
{
	C_Window *win;
	C_Slider *sldr;
	long value;
	int team = FalconLocalSession->GetTeam();

	win=gMainHandler->FindWindow(STRAT_WIN);
	if(win)
	{
		// Mission Types
		// OCA
		sldr=(C_Slider*)win->FindControl(MISSION_1);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetMissionPriority(AMIS_OCASTRIKE) +
						TeamInfo[team]->GetMissionPriority(AMIS_SWEEP) ) / 2;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// SAM Suppression
		sldr=(C_Slider*)win->FindControl(MISSION_2);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetMissionPriority(AMIS_SEADSTRIKE) +
						TeamInfo[team]->GetMissionPriority(AMIS_SEADESCORT) ) / 2;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Interdiction
		sldr=(C_Slider*)win->FindControl(MISSION_3);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetMissionPriority(AMIS_SAD) +
						TeamInfo[team]->GetMissionPriority(AMIS_INT) +
						TeamInfo[team]->GetMissionPriority(AMIS_BAI)) / 3;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// CAS
		sldr=(C_Slider*)win->FindControl(MISSION_4);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetMissionPriority(AMIS_ONCALLCAS) +
						TeamInfo[team]->GetMissionPriority(AMIS_PRPLANCAS) +
						TeamInfo[team]->GetMissionPriority(AMIS_CAS)) / 3;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Strategic Strikes
		sldr=(C_Slider*)win->FindControl(MISSION_5);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetMissionPriority(AMIS_INTSTRIKE) +
						TeamInfo[team]->GetMissionPriority(AMIS_STRIKE) +
						TeamInfo[team]->GetMissionPriority(AMIS_DEEPSTRIKE)) / 3;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Anti shipping
		sldr=(C_Slider*)win->FindControl(MISSION_6);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetMissionPriority(AMIS_ASW) +
						TeamInfo[team]->GetMissionPriority(AMIS_ASHIP)) / 3;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// DCA
		sldr=(C_Slider*)win->FindControl(MISSION_7);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetMissionPriority(AMIS_BARCAP) +
						TeamInfo[team]->GetMissionPriority(AMIS_BARCAP2) +
						TeamInfo[team]->GetMissionPriority(AMIS_HAVCAP) +
						TeamInfo[team]->GetMissionPriority(AMIS_TARCAP) +
						TeamInfo[team]->GetMissionPriority(AMIS_RESCAP) +
						TeamInfo[team]->GetMissionPriority(AMIS_AMBUSHCAP) +
						TeamInfo[team]->GetMissionPriority(AMIS_INTERCEPT)) / 7;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
		// Recon
		sldr=(C_Slider*)win->FindControl(MISSION_8);
		if(sldr)
		{
			sldr->SetCallback(PriSliderCB);
			value = (	TeamInfo[team]->GetMissionPriority(AMIS_BDA) +
						TeamInfo[team]->GetMissionPriority(AMIS_RECON) +
						TeamInfo[team]->GetMissionPriority(AMIS_RECONPATROL)) / 3;
			PositionSlider(value,sldr); // Value is in range of 0 -> 100
		}
	}
}

void LoadDefaultPAKPriorities()
{
	long i,idx;
	POData POD;
	short teamid;
	WORD *Pal;

	if(!PAKMap)
		return;

	teamid=FalconLocalSession->GetTeam();
	Pal=(WORD*)((char *)(PAKMap->Owner->GetData() + PAKMap->Header->paletteoffset));

	memset(PAKPriorities,0,sizeof(PAKPriorities));

	VuListIterator poit(POList);
	Objective o;

	idx=1;
	o = (Objective) poit.GetFirst();
	while(o)
	{
		POD=GetPOData(o);
		if(POD)
		{
			for(i=0;i<NUM_TEAMS;i++)
				PAKPriorities[idx][i][0]=(uchar)POD->air_priority[i];

			Pal[idx]=PAKPalette[PAKPriorities[idx][teamid][0]];
		}

		o = (Objective) poit.GetNext();
		idx++;
	}
}

// Retrieves the Window's control values, and put's them in Kevin's structures
void SaveTargetPriorities()
{
	C_Window *win;
	C_Slider *sldr;
	uchar value;
	int team = FalconLocalSession->GetTeam();

	win=gMainHandler->FindWindow(STRAT_WIN);
	if(win)
	{
		// Target Type priorities
		// Aircraft
		sldr=(C_Slider*)win->FindControl(TARGET_1);
		if(sldr)
		{
			value=static_cast<uchar>(SliderValue(sldr));
			TeamInfo[team]->SetMissionPriority(AMIS_ESCORT, value);
		}
		// Air fields
		sldr=(C_Slider*)win->FindControl(TARGET_2);
		if(sldr)
		{
			value=static_cast<uchar>(SliderValue(sldr));
			TeamInfo[team]->SetObjTypePriority(TYPE_AIRBASE, value);
		}
		// Air defense
		sldr=(C_Slider*)win->FindControl(TARGET_3);
		if(sldr)
		{
			value=static_cast<uchar>(SliderValue(sldr));
			TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_AIR_DEFENSE, value);
		}
		// Radar
		sldr=(C_Slider*)win->FindControl(TARGET_4);
		if(sldr)
		{
			value=static_cast<uchar>(SliderValue(sldr));
			TeamInfo[team]->SetObjTypePriority(TYPE_RADAR, value);
		}
		// Army
		sldr=(C_Slider*)win->FindControl(TARGET_5);
		if(sldr)
		{
			value=static_cast<uchar>(SliderValue(sldr));
			TeamInfo[team]->SetObjTypePriority(TYPE_ARMYBASE, value);
			TeamInfo[team]->SetObjTypePriority(TYPE_FORTIFICATION, value);
		}
		// CCC
		sldr=(C_Slider*)win->FindControl(TARGET_6);
		if(sldr)
		{
			value=static_cast<uchar>(SliderValue(sldr));
			TeamInfo[team]->SetObjTypePriority(TYPE_COM_CONTROL, value);
		}
		// Infrastructure
		sldr=(C_Slider*)win->FindControl(TARGET_7);
		if(sldr)
		{
			value=static_cast<uchar>(SliderValue(sldr));
			TeamInfo[team]->SetObjTypePriority(TYPE_ROAD, value);
			TeamInfo[team]->SetObjTypePriority(TYPE_BRIDGE, value);
			TeamInfo[team]->SetObjTypePriority(TYPE_RAIL_TERMINAL, value);
			}
		// Logistics
		sldr=(C_Slider*)win->FindControl(TARGET_8);
		if(sldr)
		{
			value=static_cast<uchar>(SliderValue(sldr));
			TeamInfo[team]->SetObjTypePriority(TYPE_DEPOT, value);
		}
		// War production
		sldr=(C_Slider*)win->FindControl(TARGET_9);
		if(sldr)
		{
			value=static_cast<uchar>(SliderValue(sldr));
			TeamInfo[team]->SetObjTypePriority(TYPE_CHEMICAL, value); 
			TeamInfo[team]->SetObjTypePriority(TYPE_FACTORY, value);
			TeamInfo[team]->SetObjTypePriority(TYPE_NUCLEAR, value);
			TeamInfo[team]->SetObjTypePriority(TYPE_POWERPLANT, value);

⌨️ 快捷键说明

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