📄 filters.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 + -