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

📄 filters.cpp

📁 空战游戏flacon源码
💻 CPP
字号:
//
//
// General UI Campaign Entity category stuff for
//
//		Big Map
//		Order of Battle
//
//
//

#include "campbase.h"
#include "objectiv.h"
#include "unit.h"
#include "classtbl.h"
#include "filters.h"

static char UI_VU_ANY=(unsigned char)VU_ANY; // Dont care about this category

FILTER_TABLE ObjectiveFilters[]=
{
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_RADAR,0,_OBTV_AIR_DEFENSE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_SAM_SITE,0,_OBTV_AIR_DEFENSE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_AIRBASE,0,_OBTV_AIR_FIELDS, OOB_AIRFORCE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_AIRSTRIP,0,_OBTV_AIR_FIELDS, OOB_AIRFORCE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_ARMYBASE,0,_OBTV_ARMY, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_FORTIFICATION,0,_OBTV_ARMY, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_HARTS,0,_OBTV_ARMY, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_COM_CONTROL,0,_OBTV_CCC, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_RADIO_TOWER,0,_OBTV_CCC, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_BRIDGE,0,_OBTV_INFRASTRUCTURE, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_POWERPLANT,0,_OBTV_WAR_PRODUCTION, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_RAIL_TERMINAL,0,_OBTV_INFRASTRUCTURE, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_RAILROAD,0,_OBTV_INFRASTRUCTURE, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_DEPOT,0,_OBTV_LOGISTICS, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_PORT,0,_OBTV_LOGISTICS, OOB_NAVY},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_BEACH,0,_OBTV_OTHER, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_FORD,0,_OBTV_OTHER, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_HILL_TOP,0,_OBTV_OTHER, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_PASS,0,_OBTV_OTHER, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_ROAD,0,_OBTV_OTHER, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_SEA,0,_OBTV_OTHER, OOB_NAVY},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_NAV_BEACON,0,_OBTV_NAVIGATION, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_BORDER,0,_OBTV_OTHER, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_CITY,0,_OBTV_POLITICAL, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_TOWN,0,_OBTV_POLITICAL, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_VILLAGE,0,_OBTV_POLITICAL, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_CHEMICAL,0,_OBTV_WAR_PRODUCTION, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_FACTORY,0,_OBTV_WAR_PRODUCTION, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_NUCLEAR,0,_OBTV_WAR_PRODUCTION, OOB_OBJECTIVE},
	{ DOMAIN_LAND,CLASS_OBJECTIVE,TYPE_REFINERY,0,_OBTV_WAR_PRODUCTION, OOB_OBJECTIVE},
	{ DOMAIN_AIR, CLASS_UNIT,     TYPE_SQUADRON,0,_UNIT_SQUADRON, 0},
	{ DOMAIN_AIR, CLASS_UNIT,     TYPE_PACKAGE, 0,_UNIT_PACKAGE, 0},
	{ 0,0,0,0,0,0},
};

FILTER_TABLE UnitFilters[]=
{
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_AIRBORNE,_UNIT_COMBAT|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_AIRMOBILE,_UNIT_COMBAT|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_AIR_DEFENSE,_UNIT_AIR_DEFENSE|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_ARMOR,_UNIT_COMBAT|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_ARMORED_CAV,_UNIT_COMBAT|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_ENGINEER,_UNIT_SUPPORT|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_HQ,_UNIT_SUPPORT|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_INFANTRY,_UNIT_COMBAT|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_MARINE,_UNIT_COMBAT|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_MECHANIZED,_UNIT_COMBAT|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_ROCKET,_UNIT_SUPPORT|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_SP_ARTILLERY,_UNIT_SUPPORT|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_SS_MISSILE,_UNIT_SUPPORT|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_SUPPLY,_UNIT_SUPPORT|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BATTALION,STYPE_UNIT_TOWED_ARTILLERY,_UNIT_SUPPORT|_UNIT_BATTALION, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_AIRBORNE,_UNIT_COMBAT|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_AIRMOBILE,_UNIT_COMBAT|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_AIR_DEFENSE,_UNIT_AIR_DEFENSE|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_ARMOR,_UNIT_COMBAT|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_ARMORED_CAV,_UNIT_COMBAT|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_ENGINEER,_UNIT_SUPPORT|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_HQ,_UNIT_SUPPORT|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_INFANTRY,_UNIT_COMBAT|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_MARINE,_UNIT_COMBAT|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_MECHANIZED,_UNIT_COMBAT|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_ROCKET,_UNIT_SUPPORT|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_SP_ARTILLERY,_UNIT_SUPPORT|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_SS_MISSILE,_UNIT_SUPPORT|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_SUPPLY,_UNIT_SUPPORT|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_LAND,CLASS_UNIT,TYPE_BRIGADE,STYPE_UNIT_TOWED_ARTILLERY,_UNIT_SUPPORT|_UNIT_BRIGADE, OOB_ARMY},
	{ DOMAIN_SEA,CLASS_UNIT,TYPE_TASKFORCE,STYPE_UNIT_AMPHIBIOUS,_UNIT_COMBAT|_UNIT_NAVAL, OOB_NAVY},
	{ DOMAIN_SEA,CLASS_UNIT,TYPE_TASKFORCE,STYPE_UNIT_CARRIER,_UNIT_COMBAT|_UNIT_NAVAL, OOB_NAVY},
	{ DOMAIN_SEA,CLASS_UNIT,TYPE_TASKFORCE,STYPE_UNIT_CRUISER,_UNIT_COMBAT|_UNIT_NAVAL, OOB_NAVY},
	{ DOMAIN_SEA,CLASS_UNIT,TYPE_TASKFORCE,STYPE_UNIT_DESTROYER,_UNIT_COMBAT|_UNIT_NAVAL, OOB_NAVY},
	{ DOMAIN_SEA,CLASS_UNIT,TYPE_TASKFORCE,STYPE_UNIT_FRIGATE,_UNIT_COMBAT|_UNIT_NAVAL, OOB_NAVY},
	{ DOMAIN_SEA,CLASS_UNIT,TYPE_TASKFORCE,STYPE_UNIT_PATROL,_UNIT_COMBAT|_UNIT_NAVAL, OOB_NAVY},
	{ DOMAIN_SEA,CLASS_UNIT,TYPE_TASKFORCE,STYPE_UNIT_SEA_SUPPLY,_UNIT_SUPPORT|_UNIT_NAVAL, OOB_NAVY},
	{ DOMAIN_SEA,CLASS_UNIT,TYPE_TASKFORCE,STYPE_UNIT_SEA_TANKER,_UNIT_SUPPORT|_UNIT_NAVAL, OOB_NAVY},
	{ DOMAIN_AIR,CLASS_UNIT,TYPE_SQUADRON, UI_VU_ANY,            0,                         OOB_AIRFORCE},
	{ 0,0,0,0,0,0},
};


AIR_ICONS AirIcons[]=
{
	{ STYPE_UNIT_AIR_TRANSPORT,	0, 0, 0, _UNIT_SUPPORT,},
	{ STYPE_UNIT_ASW,				0, 0, 0, _UNIT_SUPPORT,},
	{ STYPE_UNIT_ATTACK,			0, 0, 0, _UNIT_ATTACK},
	{ STYPE_UNIT_ATTACK_HELO,		0, 0, 0, _UNIT_HELICOPTER},
	{ STYPE_UNIT_AWACS,			0, 0, 0, _UNIT_SUPPORT},
	{ STYPE_UNIT_BOMBER,			0, 0, 0, _UNIT_BOMBER,},
	{ STYPE_UNIT_ECM,				0, 0, 0, _UNIT_SUPPORT},
	{ STYPE_UNIT_FIGHTER,			0, 0, 0, _UNIT_FIGHTER},
	{ STYPE_UNIT_FIGHTER_BOMBER,	0, 0, 0, _UNIT_FIGHTER},
	{ STYPE_UNIT_JSTAR,			0, 0, 0, _UNIT_SUPPORT},
	{ STYPE_UNIT_RECON,			0, 0, 0, _UNIT_SUPPORT},
	{ STYPE_UNIT_RECON_HELO,		0, 0, 0, _UNIT_HELICOPTER},
	{ STYPE_UNIT_TANKER,			0, 0, 0, _UNIT_SUPPORT},
	{ STYPE_UNIT_TRANSPORT_HELO,	0, 0, 0, _UNIT_HELICOPTER},
	{ 0,0,0,0,0 },
};

long OBJ_TypeList[_MAP_NUM_OBJ_TYPES_]=
{
	_VC_CONDITION_,
	_OBTV_AIR_DEFENSE,
	_OBTV_AIR_FIELDS,
	_OBTV_ARMY,
	_OBTV_CCC,
	_OBTV_INFRASTRUCTURE,
	_OBTV_LOGISTICS,
	_OBTV_OTHER,
	_OBTV_NAVIGATION,
	_OBTV_POLITICAL,
	_OBTV_WAR_PRODUCTION,
	_OBTV_NAVAL,
	_UNIT_PACKAGE,
	_UNIT_SQUADRON,
};

long NAV_TypeList[_MAP_NUM_NAV_TYPES_]=
{
	_UNIT_COMBAT,
	_UNIT_SUPPORT,
};

long AIR_TypeList[_MAP_NUM_AIR_TYPES_]=
{
	_UNIT_SUPPORT,
	_UNIT_ATTACK,
	_UNIT_HELICOPTER,
	_UNIT_BOMBER,
	_UNIT_FIGHTER,
};

long GND_TypeList[_MAP_NUM_GND_TYPES_]=
{
	_UNIT_AIR_DEFENSE,
	_UNIT_COMBAT,
	_UNIT_SUPPORT,
	_UNIT_ARTILLERY,
};

long GND_LevelList[_MAP_NUM_GND_LEVELS_]=
{
	_UNIT_DIVISION,
	_UNIT_BRIGADE,
	_UNIT_BATTALION,
};

long THR_TypeList[_MAP_NUM_THREAT_TYPES_]=
{
	_THR_SAM_LOW,
	_THR_SAM_HIGH,
	_THR_RADAR_LOW,
	_THR_RADAR_HIGH,
};

// in feet
#define BE_RAD 190.0f
float BullsEyeLines[NUM_BE_LINES][4]=
{
	{ 0.0000000f * BE_RAD * NM_TO_FT, -1.0000000f * BE_RAD * NM_TO_FT,  0.0000000f * BE_RAD * NM_TO_FT,  1.0000000f * BE_RAD * NM_TO_FT }, // 0
	{ 0.3420201f * BE_RAD * NM_TO_FT, -0.9396926f * BE_RAD * NM_TO_FT, -0.3420201f * BE_RAD * NM_TO_FT,  0.9396926f * BE_RAD * NM_TO_FT }, // 20
	{ 0.6427876f * BE_RAD * NM_TO_FT, -0.7660444f * BE_RAD * NM_TO_FT, -0.6427876f * BE_RAD * NM_TO_FT,  0.7660444f * BE_RAD * NM_TO_FT }, // 40
	{ 0.8660254f * BE_RAD * NM_TO_FT, -0.5000000f * BE_RAD * NM_TO_FT, -0.8660254f * BE_RAD * NM_TO_FT,  0.5000000f * BE_RAD * NM_TO_FT }, // 60
	{ 0.9848077f * BE_RAD * NM_TO_FT, -0.1736481f * BE_RAD * NM_TO_FT, -0.9848077f * BE_RAD * NM_TO_FT,  0.1736481f * BE_RAD * NM_TO_FT }, // 80
	{ 0.9848077f * BE_RAD * NM_TO_FT,  0.1736481f * BE_RAD * NM_TO_FT, -0.9848077f * BE_RAD * NM_TO_FT, -0.1736481f * BE_RAD * NM_TO_FT }, // 100
	{ 0.8660254f * BE_RAD * NM_TO_FT,  0.5000000f * BE_RAD * NM_TO_FT, -0.8660254f * BE_RAD * NM_TO_FT, -0.5000000f * BE_RAD * NM_TO_FT }, // 120
	{ 0.6427876f * BE_RAD * NM_TO_FT,  0.7660444f * BE_RAD * NM_TO_FT, -0.6427876f * BE_RAD * NM_TO_FT, -0.7660444f * BE_RAD * NM_TO_FT }, // 140
	{ 0.3420201f * BE_RAD * NM_TO_FT,  0.9396926f * BE_RAD * NM_TO_FT, -0.3420201f * BE_RAD * NM_TO_FT, -0.9396926f * BE_RAD * NM_TO_FT }, // 160
};

// in feet
float BullsEyeRadius[NUM_BE_CIRCLES]=
{
	 20.0f * NM_TO_FT,
	 40.0f * NM_TO_FT,
	 60.0f * NM_TO_FT,
	 80.0f * NM_TO_FT,
	100.0f * NM_TO_FT,
	120.0f * NM_TO_FT,
	140.0f * NM_TO_FT,
	160.0f * NM_TO_FT,
	180.0f * NM_TO_FT,
};

long FindTypeIndex(long type,long TypeList[],int size)
{
	int i;

	for(i=0;i<size;i++)
		if(type == TypeList[i])
			return(i);
	return(-1);
}

long FindObjectiveIndex(Objective Obj)
{
	int i;

	i=0;
	while(ObjectiveFilters[i].UIType)
	{
		if(Obj->GetClass() == ObjectiveFilters[i].Class && Obj->GetType() == ObjectiveFilters[i].Type)
			return(i);
		i++;
	}
	return(-1);
}

long GetObjectiveType(CampBaseClass *ent)
{
	int i;

	i=0;
	while(ObjectiveFilters[i].UIType)
	{
		if(ent->GetDomain() == ObjectiveFilters[i].Domain && ent->GetClass() == ObjectiveFilters[i].Class && ent->GetType() == ObjectiveFilters[i].Type)
			return(ObjectiveFilters[i].UIType);
		i++;
	}
	return(0);
}

long GetObjectiveCategory(Objective Obj)
{
	int i;

	i=0;
	while(ObjectiveFilters[i].UIType)
	{
		if(Obj->GetClass() == ObjectiveFilters[i].Class && Obj->GetType() == ObjectiveFilters[i].Type)
			return(ObjectiveFilters[i].OOBCategory);
		i++;
	}
	return(0);
}

long GetAirIcon(uchar STYPE)
{
	int i;

	i=0;
	while(AirIcons[i].SubType)
	{
		if(AirIcons[i].SubType == STYPE)
			return(i);
		i++;
	}
	return(0);
}

long FindDivisionType(uchar type)
{
	int i;

	i=0;
	while(UnitFilters[i].UIType)
	{
		if(type == (UnitFilters[i].SubType & 0x00ffffff))
			return((UnitFilters[i].UIType & 0x00ffffff) | _UNIT_DIVISION);
		i++;
	}
	return(0);
}

long FindUnitType(Unit unit)
{
	int i;

	i=0;
	while(UnitFilters[i].UIType)
	{
		if(unit->GetDomain() == UnitFilters[i].Domain && unit->GetClass() == UnitFilters[i].Class && unit->GetType() == UnitFilters[i].Type && unit->GetSType() == UnitFilters[i].SubType)
			return(UnitFilters[i].UIType);
		i++;
	}
	return(0);
}

long FindUnitCategory(Unit unit)
{
	int i;

	i=0;
	while(UnitFilters[i].Domain)
	{
		if(unit->GetDomain() == UnitFilters[i].Domain && unit->GetClass() == UnitFilters[i].Class && unit->GetType() == UnitFilters[i].Type && (unit->GetSType() == UnitFilters[i].SubType || UnitFilters[i].SubType == UI_VU_ANY))
			return(UnitFilters[i].OOBCategory);
		i++;
	}
	return(0);
}

⌨️ 快捷键说明

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